tsc-auto


Nametsc-auto JSON
Version 0.52 PyPI version JSON
download
home_pagehttps://github.com/aitsc/tsc-auto
SummaryAuto selector for GPU and CUDA, support the detection of tensorflow or torch
upload_time2024-01-08 03:47:34
maintainer
docs_urlNone
authortanshicheng
requires_python>=3.6
licenseGPLv3
keywords tools
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 安装
pip install tsc-auto

# 功能1: ta
## 介绍
- 可以自动检测 torch 和 tensorflow 版本, 并自动设置环境变量相应的 cuda, 同时自动选择占用显存最低的显卡运行.
- 可以实现自动后台运行运行并记录和查看日志/中止程序.
- 需要在 anaconda 环境下使用.
- 在程序终止时可以自动发送微信通知.

## 使用方式
- 查看帮助: ta --help
- 自动选择最低显存占用显卡跑 torch 的 cnn.py 程序: ta -p -a cnn.py
- 手动选择编号0和1的显卡跑 tensorflow 的 cnn.py 程序: ta -t -d 0,1 -a cnn.py
- 发送通知步骤(借助 [pushplus](https://pushplus.plus) 实现)
  1. 微信登录: https://pushplus.plus/login.html
  2. 激活微信公众号, 接收文章推送, 关闭消息免打扰
  3. 获取token: https://pushplus.plus/push1.html
  4. 测试: ta -x 你的token -o echo 成功
  5. 注意: 运行机需要联网; 不能使用ta自带的后台运行方式(可以手动nohup); 频率太高可能[封号](https://www.pushplus.plus/doc/help/limit.html#接口限制)/[封ip](https://www.pushplus.plus/doc/help/ip.html)
- ta --benchmark 可测试显卡性能
- ta --wait -c=0.1 -m=0.8 -t=10 -g=1,2 python test.py 可等待显卡1,2满足空闲条件(至少剩余10%gpu使用率+至少剩余80%显存+持续10秒钟)后再执行后面的命令
- ta --showp 可显示当前用户的所有运行程序(去重复)命令
- ta --show=120 显示当前系统资源信息,120代表显示一行最大长度

## cuda的位置默认在用户主目录 (可以使用 ln -s 软链接)
- ...
- ~/cuda/8.0
- ...
- ~/cuda/11.3
- ...

## 下载处理好的cuda
- 链接: https://pan.baidu.com/s/1tXzED_8GZjJzm_SFzMTbKA 提取码: 3edj

## 如果自行安装 cuda 和 cudnn, 需要处理的方式
- cd ~/cuda
- mv /usr/local/cuda-11.0/ 11.0
- cp cudnn-v8.2.0.53/include/cudnn.h 11.0/include/
- cp cudnn-v8.2.0.53/lib64/libcudnn* 11.0/lib64
- chmod a+r 11.0/include/cudnn.h 11.0/lib64/libcudnn*

# 功能2: tkill
## 介绍
- 用于限制linux系统的cpu/gpu资源使用, 例如可以针对以下内容进行限制:
```python
{
    's': 10,  # 多少秒检测一次
    'cpu_core_u': 2147483647,  # 一个用户-最多CPU占用(百分比,如100表示占满1个超线程)
    'gpu_card_u': 2,  # 一个用户-最多显卡(张)
    'gpu_mem_u': 24,  # 一个用户-最大显存(GB)
    'gpu_card': 2,  # 单进程-最多显卡(张)
    'gpu_mem': 21000,  # 单进程-最大显存(MB)
    'gpu_day': 15,  # 单进程-最长显卡占用时间(天)
    'cpu_day': 15,  # 单进程-最长cpu占用时间(天)
    'cpu_day_core_limit': 80,  # CPU占用百分比超过此值的进程才会使 cpu_day 配置生效
    'ignore_u': {'999',},  # 忽略的用户, 默认会包含 /etc/passwd 中路径不含有 /home/ 的用户
    'include_u': {'example_user',},  # 不可忽略的用户, 优先级高于 ignore_u
    # 针对每个特殊配置设置用户,没写的默认使用上述设置,越靠list后面的优先级越高会覆盖前面一样的用户配置
    'conf': [
        {  # 一组配置和对应的用户
            'gpu_mem': 24000,
            'conf_u': {'tsc'},  # 使用这组配置的用户
        },
    ],
    # 针对每个用户的额外配置, 没写的默认使用上述设置, 优先级最高
    'user': {
        'example_user': {
            'gpu_mem_u': 41,
            'gpu_card_u': 3,
        },
    },
}
```
- 退出某用户在显卡中的进程, 防止程序结束而显存没有释放: tkill --knp username

## 使用方式
- 查看帮助: tkill -h
- 首先, 运行 tkill -c 'kill.config' -t 再终止程序(ctrl+c), 用于生成默认配置文件
- 然后, 修改配置文件的内容
- 最后, 运行 tkill -c 'kill.config' 开启限制程序

# 功能3: ressh
## 介绍
- 用于在断网后自动重新连接ssh,也可以在一行命令行中直接输入密码登录

## 使用方式
- 查看帮助: ressh -h
- 登录: ressh user@ip -p port
- 登录后自动输入密码并自动进入tmux: ressh user@ip -p port --tmux --password=你的密码


# 功能4: tp
## 介绍
- 服务器代理

## 使用方式
- 服务器和客户端都需要安装包: pip install tsc-auto
- 本地打开http代理开放到端口 7890, 可借助 [clash](https://github.com/Fndroid/clash_for_windows_pkg/releases)
- 登录服务器: ressh ssh参数 --tp
- 登录后使用代理: tp curl google.com

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/aitsc/tsc-auto",
    "name": "tsc-auto",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "tools",
    "author": "tanshicheng",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/6b/fc/a1afe064bfbc84f26edcb6ff7670e4d449e19e9bfe3f48ded688e5805bc4/tsc-auto-0.52.tar.gz",
    "platform": null,
    "description": "# \u5b89\u88c5\npip install tsc-auto\n\n# \u529f\u80fd1: ta\n## \u4ecb\u7ecd\n- \u53ef\u4ee5\u81ea\u52a8\u68c0\u6d4b torch \u548c tensorflow \u7248\u672c, \u5e76\u81ea\u52a8\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf\u76f8\u5e94\u7684 cuda, \u540c\u65f6\u81ea\u52a8\u9009\u62e9\u5360\u7528\u663e\u5b58\u6700\u4f4e\u7684\u663e\u5361\u8fd0\u884c.\n- \u53ef\u4ee5\u5b9e\u73b0\u81ea\u52a8\u540e\u53f0\u8fd0\u884c\u8fd0\u884c\u5e76\u8bb0\u5f55\u548c\u67e5\u770b\u65e5\u5fd7/\u4e2d\u6b62\u7a0b\u5e8f.\n- \u9700\u8981\u5728 anaconda \u73af\u5883\u4e0b\u4f7f\u7528.\n- \u5728\u7a0b\u5e8f\u7ec8\u6b62\u65f6\u53ef\u4ee5\u81ea\u52a8\u53d1\u9001\u5fae\u4fe1\u901a\u77e5.\n\n## \u4f7f\u7528\u65b9\u5f0f\n- \u67e5\u770b\u5e2e\u52a9: ta --help\n- \u81ea\u52a8\u9009\u62e9\u6700\u4f4e\u663e\u5b58\u5360\u7528\u663e\u5361\u8dd1 torch \u7684 cnn.py \u7a0b\u5e8f: ta -p -a cnn.py\n- \u624b\u52a8\u9009\u62e9\u7f16\u53f70\u548c1\u7684\u663e\u5361\u8dd1 tensorflow \u7684 cnn.py \u7a0b\u5e8f: ta -t -d 0,1 -a cnn.py\n- \u53d1\u9001\u901a\u77e5\u6b65\u9aa4\uff08\u501f\u52a9 [pushplus](https://pushplus.plus) \u5b9e\u73b0)\n  1. \u5fae\u4fe1\u767b\u5f55: https://pushplus.plus/login.html\n  2. \u6fc0\u6d3b\u5fae\u4fe1\u516c\u4f17\u53f7, \u63a5\u6536\u6587\u7ae0\u63a8\u9001, \u5173\u95ed\u6d88\u606f\u514d\u6253\u6270\n  3. \u83b7\u53d6token: https://pushplus.plus/push1.html\n  4. \u6d4b\u8bd5: ta -x \u4f60\u7684token -o echo \u6210\u529f\n  5. \u6ce8\u610f: \u8fd0\u884c\u673a\u9700\u8981\u8054\u7f51; \u4e0d\u80fd\u4f7f\u7528ta\u81ea\u5e26\u7684\u540e\u53f0\u8fd0\u884c\u65b9\u5f0f(\u53ef\u4ee5\u624b\u52a8nohup); \u9891\u7387\u592a\u9ad8\u53ef\u80fd[\u5c01\u53f7](https://www.pushplus.plus/doc/help/limit.html#\u63a5\u53e3\u9650\u5236)/[\u5c01ip](https://www.pushplus.plus/doc/help/ip.html)\n- ta --benchmark \u53ef\u6d4b\u8bd5\u663e\u5361\u6027\u80fd\n- ta --wait -c=0.1 -m=0.8 -t=10 -g=1,2 python test.py \u53ef\u7b49\u5f85\u663e\u53611,2\u6ee1\u8db3\u7a7a\u95f2\u6761\u4ef6(\u81f3\u5c11\u5269\u4f5910%gpu\u4f7f\u7528\u7387+\u81f3\u5c11\u5269\u4f5980%\u663e\u5b58+\u6301\u7eed10\u79d2\u949f)\u540e\u518d\u6267\u884c\u540e\u9762\u7684\u547d\u4ee4\n- ta --showp \u53ef\u663e\u793a\u5f53\u524d\u7528\u6237\u7684\u6240\u6709\u8fd0\u884c\u7a0b\u5e8f(\u53bb\u91cd\u590d)\u547d\u4ee4\n- ta --show=120 \u663e\u793a\u5f53\u524d\u7cfb\u7edf\u8d44\u6e90\u4fe1\u606f,120\u4ee3\u8868\u663e\u793a\u4e00\u884c\u6700\u5927\u957f\u5ea6\n\n## cuda\u7684\u4f4d\u7f6e\u9ed8\u8ba4\u5728\u7528\u6237\u4e3b\u76ee\u5f55 (\u53ef\u4ee5\u4f7f\u7528 ln -s \u8f6f\u94fe\u63a5)\n- ...\n- ~/cuda/8.0\n- ...\n- ~/cuda/11.3\n- ...\n\n## \u4e0b\u8f7d\u5904\u7406\u597d\u7684cuda\n- \u94fe\u63a5: https://pan.baidu.com/s/1tXzED_8GZjJzm_SFzMTbKA \u63d0\u53d6\u7801: 3edj\n\n## \u5982\u679c\u81ea\u884c\u5b89\u88c5 cuda \u548c cudnn, \u9700\u8981\u5904\u7406\u7684\u65b9\u5f0f\n- cd ~/cuda\n- mv /usr/local/cuda-11.0/ 11.0\n- cp cudnn-v8.2.0.53/include/cudnn.h 11.0/include/\n- cp cudnn-v8.2.0.53/lib64/libcudnn* 11.0/lib64\n- chmod a+r 11.0/include/cudnn.h 11.0/lib64/libcudnn*\n\n# \u529f\u80fd2: tkill\n## \u4ecb\u7ecd\n- \u7528\u4e8e\u9650\u5236linux\u7cfb\u7edf\u7684cpu/gpu\u8d44\u6e90\u4f7f\u7528, \u4f8b\u5982\u53ef\u4ee5\u9488\u5bf9\u4ee5\u4e0b\u5185\u5bb9\u8fdb\u884c\u9650\u5236:\n```python\n{\n    's': 10,  # \u591a\u5c11\u79d2\u68c0\u6d4b\u4e00\u6b21\n    'cpu_core_u': 2147483647,  # \u4e00\u4e2a\u7528\u6237-\u6700\u591aCPU\u5360\u7528(\u767e\u5206\u6bd4,\u5982100\u8868\u793a\u5360\u6ee11\u4e2a\u8d85\u7ebf\u7a0b)\n    'gpu_card_u': 2,  # \u4e00\u4e2a\u7528\u6237-\u6700\u591a\u663e\u5361(\u5f20)\n    'gpu_mem_u': 24,  # \u4e00\u4e2a\u7528\u6237-\u6700\u5927\u663e\u5b58(GB)\n    'gpu_card': 2,  # \u5355\u8fdb\u7a0b-\u6700\u591a\u663e\u5361(\u5f20)\n    'gpu_mem': 21000,  # \u5355\u8fdb\u7a0b-\u6700\u5927\u663e\u5b58(MB)\n    'gpu_day': 15,  # \u5355\u8fdb\u7a0b-\u6700\u957f\u663e\u5361\u5360\u7528\u65f6\u95f4(\u5929)\n    'cpu_day': 15,  # \u5355\u8fdb\u7a0b-\u6700\u957fcpu\u5360\u7528\u65f6\u95f4(\u5929)\n    'cpu_day_core_limit': 80,  # CPU\u5360\u7528\u767e\u5206\u6bd4\u8d85\u8fc7\u6b64\u503c\u7684\u8fdb\u7a0b\u624d\u4f1a\u4f7f cpu_day \u914d\u7f6e\u751f\u6548\n    'ignore_u': {'999',},  # \u5ffd\u7565\u7684\u7528\u6237, \u9ed8\u8ba4\u4f1a\u5305\u542b /etc/passwd \u4e2d\u8def\u5f84\u4e0d\u542b\u6709 /home/ \u7684\u7528\u6237\n    'include_u': {'example_user',},  # \u4e0d\u53ef\u5ffd\u7565\u7684\u7528\u6237, \u4f18\u5148\u7ea7\u9ad8\u4e8e ignore_u\n    # \u9488\u5bf9\u6bcf\u4e2a\u7279\u6b8a\u914d\u7f6e\u8bbe\u7f6e\u7528\u6237\uff0c\u6ca1\u5199\u7684\u9ed8\u8ba4\u4f7f\u7528\u4e0a\u8ff0\u8bbe\u7f6e\uff0c\u8d8a\u9760list\u540e\u9762\u7684\u4f18\u5148\u7ea7\u8d8a\u9ad8\u4f1a\u8986\u76d6\u524d\u9762\u4e00\u6837\u7684\u7528\u6237\u914d\u7f6e\n    'conf': [\n        {  # \u4e00\u7ec4\u914d\u7f6e\u548c\u5bf9\u5e94\u7684\u7528\u6237\n            'gpu_mem': 24000,\n            'conf_u': {'tsc'},  # \u4f7f\u7528\u8fd9\u7ec4\u914d\u7f6e\u7684\u7528\u6237\n        },\n    ],\n    # \u9488\u5bf9\u6bcf\u4e2a\u7528\u6237\u7684\u989d\u5916\u914d\u7f6e, \u6ca1\u5199\u7684\u9ed8\u8ba4\u4f7f\u7528\u4e0a\u8ff0\u8bbe\u7f6e, \u4f18\u5148\u7ea7\u6700\u9ad8\n    'user': {\n        'example_user': {\n            'gpu_mem_u': 41,\n            'gpu_card_u': 3,\n        },\n    },\n}\n```\n- \u9000\u51fa\u67d0\u7528\u6237\u5728\u663e\u5361\u4e2d\u7684\u8fdb\u7a0b, \u9632\u6b62\u7a0b\u5e8f\u7ed3\u675f\u800c\u663e\u5b58\u6ca1\u6709\u91ca\u653e: tkill --knp username\n\n## \u4f7f\u7528\u65b9\u5f0f\n- \u67e5\u770b\u5e2e\u52a9: tkill -h\n- \u9996\u5148, \u8fd0\u884c tkill -c 'kill.config' -t \u518d\u7ec8\u6b62\u7a0b\u5e8f(ctrl+c), \u7528\u4e8e\u751f\u6210\u9ed8\u8ba4\u914d\u7f6e\u6587\u4ef6\n- \u7136\u540e, \u4fee\u6539\u914d\u7f6e\u6587\u4ef6\u7684\u5185\u5bb9\n- \u6700\u540e, \u8fd0\u884c tkill -c 'kill.config' \u5f00\u542f\u9650\u5236\u7a0b\u5e8f\n\n# \u529f\u80fd3: ressh\n## \u4ecb\u7ecd\n- \u7528\u4e8e\u5728\u65ad\u7f51\u540e\u81ea\u52a8\u91cd\u65b0\u8fde\u63a5ssh,\u4e5f\u53ef\u4ee5\u5728\u4e00\u884c\u547d\u4ee4\u884c\u4e2d\u76f4\u63a5\u8f93\u5165\u5bc6\u7801\u767b\u5f55\n\n## \u4f7f\u7528\u65b9\u5f0f\n- \u67e5\u770b\u5e2e\u52a9: ressh -h\n- \u767b\u5f55: ressh user@ip -p port\n- \u767b\u5f55\u540e\u81ea\u52a8\u8f93\u5165\u5bc6\u7801\u5e76\u81ea\u52a8\u8fdb\u5165tmux: ressh user@ip -p port --tmux --password=\u4f60\u7684\u5bc6\u7801\n\n\n# \u529f\u80fd4: tp\n## \u4ecb\u7ecd\n- \u670d\u52a1\u5668\u4ee3\u7406\n\n## \u4f7f\u7528\u65b9\u5f0f\n- \u670d\u52a1\u5668\u548c\u5ba2\u6237\u7aef\u90fd\u9700\u8981\u5b89\u88c5\u5305: pip install tsc-auto\n- \u672c\u5730\u6253\u5f00http\u4ee3\u7406\u5f00\u653e\u5230\u7aef\u53e3 7890, \u53ef\u501f\u52a9 [clash](https://github.com/Fndroid/clash_for_windows_pkg/releases)\n- \u767b\u5f55\u670d\u52a1\u5668: ressh ssh\u53c2\u6570 --tp\n- \u767b\u5f55\u540e\u4f7f\u7528\u4ee3\u7406: tp curl google.com\n",
    "bugtrack_url": null,
    "license": "GPLv3",
    "summary": "Auto selector for GPU and CUDA, support the detection of tensorflow or torch",
    "version": "0.52",
    "project_urls": {
        "Homepage": "https://github.com/aitsc/tsc-auto"
    },
    "split_keywords": [
        "tools"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6bfca1afe064bfbc84f26edcb6ff7670e4d449e19e9bfe3f48ded688e5805bc4",
                "md5": "bd5afbb4f056cd692f40989303846b6b",
                "sha256": "71c10805f27bb1744b7503bc43896ffd137be987d2366c04e16c4fb281d70e5e"
            },
            "downloads": -1,
            "filename": "tsc-auto-0.52.tar.gz",
            "has_sig": false,
            "md5_digest": "bd5afbb4f056cd692f40989303846b6b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 93691,
            "upload_time": "2024-01-08T03:47:34",
            "upload_time_iso_8601": "2024-01-08T03:47:34.735862Z",
            "url": "https://files.pythonhosted.org/packages/6b/fc/a1afe064bfbc84f26edcb6ff7670e4d449e19e9bfe3f48ded688e5805bc4/tsc-auto-0.52.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-08 03:47:34",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "aitsc",
    "github_project": "tsc-auto",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "tsc-auto"
}
        
Elapsed time: 3.01798s