腾讯云端培训容器开源库。

ti-containers的Python项目详细描述


TI Containers

了解 TI Containers

  1. TI Containers 是腾讯云智能钛机器学习平台 TI-ONE 提供的 TI SDK 训练任务的容器环境初始化工具。
  2. TI Containers 支持基于Tensorflow、Pytorch、MXNet、Scikit-Learn框架,以及Horovod的提交的训练任务初始化准备工作。
  3. 用户可基于 TI Containers,构建符合自身应用的训练镜像。

安装 TI Containers

环境要求

Python2.7、Python3.6及以上

源码安装

python setup.py install

生成whl包

python setup.py bdist_wheel

TI Containers 训练规范

目录规范

用户在通过TI SDK提交训练任务后,TI训练后台将会初始化训练任务的容器环境,主要包括:

  1. 拉取训练的多个通道数据到输入数据目录/opt/ml/input/data/,以通道名称进行目录布局
  2. 构建训练实例需要的超级参数配置、资源配置、通道配置到输入配置目录/opt/ml/input/config/
  3. 若用户提供训练entry point,拉取训练代码到代码目录/opt/ml/code

例如,某个训练任务,TI SDK构建的目录结构形式如下:

|-- code
|   `-- train.py
|-- input
│  `── config
│      ├── hyperparameters.json
│      └── resourceconfig.json
│      └── inputdataconfig.json
|   `-- data
|       `-- train
|           `-- train.tfrecords
|       `-- test
|           `-- test.tfrecords
|-- model
`-- output
    `-- failure

具体的目录含义为:

名称路径备注
代码目录/opt/ml/code/存放训练代码的目录
输入目录/opt/ml/input/存放训练输入相关的目录
输入配置目录/opt/ml/input/config/存放训练相关的配置文件
超级参数文件/opt/ml/input/config/hyperparameters.json训练任务的超参数列表,json格式,读取值是为string格式
资源配置文件/opt/ml/input/config/resourceconfig.json训练任务的资源信息,json格式,主要包括current_host和hosts
通道配置文件/opt/ml/input/config/inputdataconfig.json训练任务的输入数据源信息,json格式,读取值主要是通道名称
输入数据目录/opt/ml/input/data/存放训练数据的目录,以通道名称为进行目录布局
模型目录/opt/ml/model/模型文件将被自动压缩为tar包格式上传到COS
输出目录/opt/ml/output/存放训练过程的日志文件,训练失败时将把FailReason写进failure文件

其中/opt/ml/input/config/resourceconfig.json的具体示例如下:

{"current_host":"timaker-test-worker-0.worker.timaker-test.svc.cluster.local","hosts":["timaker-test-worker-0.worker.timaker-test.svc.cluster.local"]}

/opt/ml/input/config/hyperparameters.json的具体示例如下:

{"ti_enable_gpu_exclusive":"true","batch-size":"128","ti_enable_cls_log":"true"}

/opt/ml/input/config/inputdataconfig.json的具体示例如下:

{"training":{"TrainingInputMode":"File"}}

环境变量

TI Containers 提供了训练环境各种资源和参数环境变量定义,在训练脚本中可以直接访问这些环境变量获取相关属性,包括:

名称含义
TM_NUM_GPUS表示训练实例可用的GPU数目
TM_NUM_CPUS表示训练实例可用的CPU数目
TM_HPS表示训练任务指定的超参数列表,json表示;例如{"train-steps": 500, "batch-size": 128}
TM_CURRENT_HOST表示训练任务的Host名称,例如algo-host-0
TM_HOSTS表示训练任务的Host列表,json表示;例如["algo-host-0","algo-host-1"]
TM_CHANNELS表示通道名称列表,默认为["training"]; 若设置train和test两个通道,则对应的环境变量是["train"、"test"]
TM_CHANNEL_XXX表示输入训练数据的路径,XXX对应通道的名称,默认为training;若设置train和test两个通道,则对应的环境变量是TM_CHANNEL_TRAIN和TM_CHANNEL_TEST
TM_MODEL_DIR表示训练实例中模型的输出路径,值为/opt/ml/model
TM_OUTPUT_DATA_DIR表示训练实例中输出数据的路径,值为/opt/ml/output/data,包括failure等文件
TM_INPUT_CONFIG_DIR表示训练实例中输入配置的路径,路径下包括hyperparameters.json、resourceconfig.json、inputdataconfig.json
TM_NETWORK_INTERFACE_NAME表示训练实例中使用的网卡设备名称,如eth0

启动规范

TI SDK 训练任务执行train命令启动训练:

  1. TI Containers已支持train命令启动训练,因此所有内置镜像均已支持train命令启动;
  2. 如果是自定义镜像任务,你需要构建自己的train命令,并放入系统环境变量中,以便启动训练;自定义镜像任务具体参见 使用自定义镜像训练模型

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Jsonify使用Jackson来定义嵌套对象   在Swing中禁用java图形调试   java Selenium Webdriver拖放在Jenkins上不起作用   java我对一个显示器的问题有一个非常不切实际的询问   java增强的“for”循环导致ArrayIndexOutOfBoundsException   ArrayAdapter适用于Java中的安卓编程,字符串数组   linux在Ubuntu上通过PulseAudio播放Java音频文件时出错   java在Spring应用程序中加载内部(类路径)和外部属性文件   java使用Maven连接到mySQL   Java应用程序的设计   websocket在电报api java中与dc的连接   java XMLStreamException,因为xml中的(&N)   java从控制台输出到JTextArea   Java导出文本文件   java实现parseInt方法   java为什么servlet容器会同步对特定资源/servlet的多个请求的访问?   循环中的Java“while”变量   用Java编程一个国际象棋游戏,gameOver布尔不起作用   java如何获得真正的JPanel大小?