Package: ti-sdk-python
TI SDK了解TI SDKTI SDK 是腾讯云智能钛机器学习平台 TI-ONE 提供的SDK训练任务构建包。用户可以使用TI SDK 提交机器学习和深度学习训练任务到 TI-ONE 中。TI-ONE 支持 CPU、GPU 等多种算力类型，利用对象存储 COS、容器服务 TKE、日志服务 CLS等腾讯云上成熟的组件作为支撑，帮助用户在云上快速搭建自己的机器学习和深度学习训练任务。TI-ONE 内置了深度优化过的 Tensorflow、PyTorch 等多种流行的机器学习框架，用户只需要少量的适配即可使用 TI Python SDK 提交运行自己的训练代码。主要功能支持提交TensorFlow单机训练任务、分布式PS训练任务、分布式MPI训练任务支持提交PyTorch单机训练任务、分布式MPI训练任务支持提交MXNet单机训练任务、分布式PS训练任务、分布式MPI训练任务支持提交Scikit-Learn单机训练任务支持提交自定义镜像训练任务支持提交自定义环境变量训练任务支持Tensorboad查看训练任务模型支持提交CFS文件系统作为数据源的训练任务支持CLS查看训练任务日志支持本地环境调试训练任务安装 TI SDK环境要求Python3.6及以上源码安装python setup.py install配置TI SDK环境若用户的TI SDK环境为非腾讯云Jupyter Noteboo环境时，用户需要配置TI SDK环境。
TI SDK配置的环境目录为~/.ti/config.yaml，用户需要提供的配置信息如下：region: 训练任务提交的腾讯云资源的地域，目前支持ap-guangzhou,ap-shanghaiuin: 腾讯云账号ID，可在腾讯云控制台-账号信息中查看app_id: 腾讯云账号APPID，可在腾讯云控制台-账号信息中查看secret_id：腾讯云账号API密钥ID，可在腾讯云控制台-访问管理-用户详情中查看secret_key: 腾讯云账号API密钥KEY，可在腾讯云控制台-访问管理-用户详情中查看~/.ti/config.yaml的内容格式如下：basic:region:你的腾讯云地域uin:你的uinapp_id:你的appidsecret_id:你的secret_idsecret_key:你的secret_key使用 TI SDKTI SDK 使用以下几个核心类实现 TI 的模型训练Estimators： 对训练任务的抽象，包括Tensorflow、Pytorch、MXNet、Scikit-LearnSession：使用TI SDK 资源的方法集合使用TI SDK训练模型需要以下三个简单步骤准备一个训练脚本构造一个Estimator调用Estimator的fit方法准备训练脚本训练脚本必须在 Python2.7 或3.6环境下执行。TI 提供了很高的兼容性，只需要少部分改动就可以将外部环境运行的训练脚本适配到 TI 中，同时 TI 提供了训练环境各种资源和参数环境变量定义，在训练脚本中可以直接访问这些环境变量获取相关属性，包括：名称含义TM_NUM_GPUS表示训练实例可用的GPU数目TM_NUM_CPUS表示训练实例可用的CPU数目TM_HPS表示训练任务指定的超参数列表，json表示；例如{"train-steps": 500, "batch-size": 128}TM_HOSTS表示训练任务的Host列表，json表示；例如["algo-host-0"，"algo-host-1"]TM_CURRENT_HOST表示训练任务的Host名称，例如algo-host-0TM_CHANNELS表示通道名称列表，默认为["training"];若设置train和test两个通道，则对应的环境变量是["train"、"test"]TM_CHANNEL_XXX表示输入训练数据的路径，XXX对应通道的名称，默认为training；若设置train和test两个通道，则对应的环境变量是TM_CHANNEL_TRAIN和TM_CHANNEL_TESTTM_MODEL_DIR表示训练实例中模型的输出路径，值为/opt/ml/modelTM_OUTPUT_DATA_DIR表示训练实例中输出数据的路径，值为/opt/ml/output/data，包括failure等文件TM_INPUT_CONFIG_DIR表示训练实例中输入配置的路径，路径下包括hyperparameters.json、resourceconfig.json、inputdataconfig.jsonTM_NETWORK_INTERFACE_NAME表示训练实例中使用的网卡设备名称，如eth0一个典型的训练脚本处理流程如下：从输入通道加载训练数据读取超参数配置开始训练模型保存模型TI 会运行用户的训练脚本，建议将启动训练的入口代码放到 main 方法中（if__name__== 'main'）使用Estimator提交训练任务Estimator 是对一个训练任务的高级抽象，包含训练镜像、算力资源、安全权限、算法参数、输入输出等一次训练依赖的所有参数。TI 针对 Tensorflow、PyTorch 等多种流行的机器学习框架分别封装了 Estimator 的具体实现。 具体可见 src/tensorflow/estimator.py、src/pytorch/estimator.py等。
用户可直接使用Estimator提交自定义镜像训练任务，具体参见使用自定义镜像训练模型以下例子展示了一个简单的 Tensorflow Estimator 使用：tf_estimator = TensorFlow(role=role,
                          train_instance_count=1,
                          train_instance_type='TI.SMALL2.1core2g',
                          py_version='py3',
                          script_mode=True,
                          framework_version='1.14.0',
                          entry_point='train.py',
                          source_dir='gpu/code')

tf_estimator.fit('cos://bucket/path/to/training/data')参数说明role：str 用户在云控制台创建的角色，需要传递角色给 TI，授权 TI 服务访问用户的云资源。train_instance_count：int 创建的算力实例数量。train_instance_type：str 创建的算力类型，目前支持的类型和配额可见购买指南train_volume_size：int 附加的云硬盘大小，单位 GB。hyperparameters：dict 超级参数，将传递到训练容器中。train_max_run：int 最大运行时间，单位秒，超过设定时间若训练未完成，TI 会终止训练任务（默认值：24 * 60 * 60）。input_mode：输入类型，默认 File。base_job_name：str fit()方法启动的训练任务名称前缀，如果没有指定，会使用镜像名和时间戳生成默认任务名。output_path：用于保存模型和输出文件的 COS 路径，如果未指定，会生成默认的存储桶。subnet_id：str 子网 ID，如果未指定，将在没有 VPC 配置的情况下创建任务。调用fit方法fit 方法会创建并启动一个训练任务fit(inputs=None、wait=True、logs=True、job_name=None)参数说明inputs： 存储训练数据集的 COS 路径，可以采用以下两种数据结构。
str：例如：cos://my-bucket/my-training-data，COS URI，表示数据集的路径。
dict[str, str]：例如{'train': 'cos://my-bucket/my-training-data/train', 'test': 'cos://my-bucket/my-training-data/test'}，可以指定多个通道的数据集wait (bool)：默认为 True，是否在阻塞直到训练完成。如果设置为 False，fit 立即返回，训练任务后台异步执行。logs (bool)：默认为 False，是否打印训练任务产生的日志。只有在 wait 为 True 时才生效。job_name (str)：训练任务名称。如果未指定，则 Estimator 将根据训练镜像名和时间戳生成默认名字。更多的关于TI SDK介绍，请见TI SDK 简介