创建训练作业
示例代码
在ModelArts notebook平台,Session鉴权无需输入鉴权参数。其它平台的Session鉴权请参见Session鉴权。
ModelArts SDK不支持通过在AI Gallery中订阅的算法创建训练作业。
- 示例一:提交常用框架训练作业
Estimator中同时指定framework_type和framework_version,会提交一个常用框架训练作业。
from modelarts.session import Session from modelarts.train_params import TrainingFiles from modelarts.train_params import OutputData from modelarts.train_params import InputData from modelarts.estimatorV2 import Estimator session = Session() #训练脚本里接收的参数,请根据实际情况填写 parameters = [{"name": "mod", "value":"gpu"}, {"name": "epoc_num", "value":2}] estimator = Estimator(session=session, training_files=TrainingFiles(code_dir= "obs://bucket_name/code_dir/", boot_file="boot_file.py"), outputs=[OutputData(obs_path="obs://bucket_name/output/", name="output_dir")], parameters=parameters, framework_type='PyTorch', # 常用框架类型 framework_version='PyTorch-1.4.0-python3.6', # 常用框架版本 train_instance_type="modelarts.p3.large.public", train_instance_count=1, log_url="obs://bucket_name/log/", env_variables={"USER_ENV_VAR": "customize environment variable"}, working_dir="/home/ma-user/modelarts/user-job-dir", local_code_dir="/home/ma-user/modelarts/user-job-dir", job_description='This is a image net train job') job_instance = estimator.fit(inputs=[InputData(obs_path="obs://bucket_name/input/", name="data_url")], job_name="job_name_1")
- 示例二:提交自定义镜像训练作业
Estimator中同时指定user_image_url和user_command,会提交自定义镜像训练作业,并使用自定义启动命令来启动训练任务。
from modelarts.session import Session from modelarts.train_params import TrainingFiles from modelarts.train_params import OutputData from modelarts.train_params import InputData from modelarts.estimatorV2 import Estimator session = Session() #训练脚本里接收的参数,请根据实际情况填写 parameters = [{"name": "mod", "value":"gpu"}, {"name": "epoc_num", "value":2}] estimator = Estimator(session=session, training_files=TrainingFiles(code_dir= "obs://bucket_name/code_dir/", boot_file="boot_file.py"), outputs=[OutputData(obs_path="obs://bucket_name/output/", name="output_dir")], parameters=parameters, user_image_url="sdk-test/pytorch1_4:1.0.1", # 自定义镜像地址 user_command="/home/ma-user/anaconda3/envs/PyTorch-1.4/bin/python /home/ma-user/modelarts/user-job-dir/train/test-pytorch.py", # 自定义启动命令 train_instance_type="modelarts.p3.large.public", train_instance_count=1, log_url="obs://bucket_name/log/", env_variables={"USER_ENV_VAR": "customize environment variable"}, working_dir="/home/ma-user/modelarts/user-job-dir", local_code_dir="/home/ma-user/modelarts/user-job-dir", job_description='This is a image net train job') job_instance = estimator.fit(inputs=[InputData(obs_path="obs://bucket_name/input/", name="data_url")], job_name="job_name_2")
- 示例三:向专属资源池提交训练作业
from modelarts.session import Session from modelarts.train_params import TrainingFiles from modelarts.train_params import OutputData from modelarts.train_params import InputData from modelarts.estimatorV2 import Estimator session = Session() #训练脚本里接收的参数,请根据实际情况填写 parameters = [{"name": "mod", "value":"gpu"}, {"name": "epoc_num", "value":2}] estimator = Estimator(session=session, training_files=TrainingFiles(code_dir= "obs://bucket_name/code_dir/", boot_file="boot_file.py"), outputs=[OutputData(obs_path="obs://bucket_name/output/", name="output_dir")], parameters=parameters, framework_type='PyTorch', framework_version='PyTorch-1.4.0-python3.6', pool_id="your pool id", # 专属资源池id train_instance_type="modelarts.pool.visual.xlarge", # 专属池的虚拟子规格 train_instance_count=1, log_url="obs://bucket_name/log/", env_variables={"USER_ENV_VAR": "customize environment variable"}, working_dir="/home/ma-user/modelarts/user-job-dir", local_code_dir="/home/ma-user/modelarts/user-job-dir", job_description='This is a image net train job') job_instance = estimator.fit(inputs=[InputData(obs_path="obs://bucket_name/input/", name="data_url")], job_name="job_name_3")
- 示例四:使用数据集创建训练作业
from modelarts.session import Session from modelarts.train_params import TrainingFiles from modelarts.train_params import OutputData from modelarts.train_params import InputData from modelarts.estimatorV2 import Estimator session = Session() #训练脚本里接收的参数,请根据实际情况填写 parameters = [{"name": "model_name", "value":"s"}, {"name": "batch-size", "value": 32}, {"name": "epochs", "value":100}, {"name": "img-size", "value":"640,640"} ] estimator = Estimator(session=session, training_files=TrainingFiles(code_dir= "obs://bucket_name/code_dir/", boot_file="boot_file.py"), outputs=[OutputData(obs_path="obs://bucket_name/output/", name="output_dir")], parameters=parameters, framework_type='PyTorch', # 常用框架类型 framework_version='PyTorch-1.4.0-python3.6', # 常用框架版本 train_instance_type="modelarts.p3.large.public", train_instance_count=1, log_url="obs://bucket_name/log/", working_dir="/home/ma-user/modelarts/user-job-dir", local_code_dir="/home/ma-user/modelarts/user-job-dir", job_description='This is a image net train job') job_instance = estimator.fit(dataset_id="your dataset id", dataset_version_id="your dataset version id", job_name="job_name_5")
参数说明
参数 |
是否必选 |
类型 |
描述 |
---|---|---|---|
session |
是 |
Object |
会话对象,初始化方法请参考Session鉴权。 |
training_files |
否 |
TrainingFiles Object |
训练脚本在OBS中的路径,具体请参考TrainingFiles初始化。 |
outputs |
否 |
Array of OutputData objects |
训练的输出位置信息,具体请参考OutputData初始化。 |
parameters |
否 |
JSON Array |
训练任务的运行参数。格式为 [{"name":"your name", "value": "your value"}],value的值可以是string,也可以是int。 |
train_instance_type |
是 |
String |
训练作业选择的资源规格,请参考查询资源规格列表 |
train_instance_count |
是 |
int |
训练作业计算节点个数。 |
framework_type |
否 |
String |
训练作业选择的引擎规格,请参考查询引擎规格列表。 |
framework_version |
否 |
String |
训练作业选择的引擎版本,请参考查询引擎规格列表。 |
user_image_url |
否 |
String |
自定义镜像训练作业的自定义镜像的SWR-URL。 |
user_command |
否 |
String |
自定义镜像训练作业的启动命令。 |
log_url |
否 |
String |
训练作业日志的保存位置,是一个OBS路径,如"obs://xx/yy/zz/"。 |
local_code_dir |
否 |
String |
算法的代码目录下载到训练容器内的本地路径。规则:
|
working_dir |
否 |
String |
运行算法时所在的工作目录。规则:v1兼容模式下,当前字段不生效。 |
job_description |
否 |
String |
训练作业的描述。 |
volumes |
否 |
JSON Array |
训练作业挂载卷信息,格式参考: [{ "nfs": { "local_path": "/xx/yy/zz", "read_only": False, "nfs_server_path": "xxx.xxx.xxx.xxx:/" } }] |
env_variables |
否 |
Dict |
训练作业的环境变量。 |
pool_id |
否 |
String |
训练作业选择的资源池ID。可在ModelArts管理控制台,单击左侧“专属资源池”,在专属资源池列表中查看资源池ID。 |
参数 |
是否必选 |
类型 |
描述 |
---|---|---|---|
code_dir |
是 |
String |
训练作业的代码目录,是一个OBS路径,需要以"obs:/"开头,如"obs://xx/yy/"。 |
boot_file |
是 |
String |
训练作业的代码启动文件,需要在代码目录下,可填写相对路径,如"boot_file.py",也可填写绝对路径,如"obs://xx/yy/boot_file.py"。 |
参数 |
是否必选 |
类型 |
描述 |
---|---|---|---|
obs_path |
是 |
String |
数据实际输出到OBS的路径。 |
name |
是 |
String |
输出数据的关键字参数名称,如"output_dir"。 |
参数 |
是否必选 |
类型 |
描述 |
---|---|---|---|
inputs |
否 |
Array of InputData Object |
保存在OBS中的训练作业输入数据。inputs和(dataset_id, dataset_version_id)两者不可同时出现。 |
wait |
否 |
Boolean |
是否等待训练作业结束,默认为False。 |
job_name |
否 |
String |
训练作业名称。 |
show_log |
否 |
Boolean |
作业提交成功后,是否输出训练作业的日志,默认为False。 |
dataset_id |
否 |
String |
训练作业的数据集ID。需要与dataset_version_id同时出现,但是不可与inputs同时出现。 |
dataset_version_id |
否 |
String |
训练作业的数据集版本ID。需要与dataset_id同时出现,但是不可与inputs同时出现。 |
参数 |
是否必选 |
类型 |
描述 |
---|---|---|---|
obs_path |
是 |
String |
训练作业需要的数据集OBS路径,如"obs://xx/yy/"。 |
name |
是 |
String |
输入数据的关键字参数名称,如"data_url"。 |
参数 |
类型 |
描述 |
---|---|---|
TrainingJob |
Object |
训练对象,该对象包含job_id等属性,对训练作业的查询、更新、删除等操作时,可通过job_instance.job_id获取训练作业ID。 |
参数 |
类型 |
描述 |
---|---|---|
error_msg |
String |
调用失败时的错误信息,调用成功时无此字段。 |
error_code |
String |
调用失败时的错误码,具体请参见错误码,调用成功时无此字段。 |
error_solution |
String |
调用失败时的提示解决信息,调用成功时无此字段。 |