AI开发平台MODELARTS-创建算法:设置算法启动方式(自定义)

时间:2024-10-15 14:28:15

设置算法启动方式(自定义)

选择“预置框架”+“自定义”镜像创建算法。

图3 完全使用 自定义镜像 创建算法
表3 启动方式参数说明

参数

说明

“启动方式”

选择“自定义”

“镜像”

用户制作的镜像需要提前上传到SWR,才可以在这里选择。制作镜像的方式请参见训练作业的自定义镜像制作流程

“代码目录”

算法代码存储的OBS路径。训练代码、依赖安装包或者预生成模型等训练所需文件上传至该代码目录下。如果自定义镜像中不含训练代码则需要配置该参数,如果自定义镜像中已包含训练代码则不需要配置。

请注意不要将训练数据放在代码目录路径下。训练数据比较大,训练代码目录在训练作业启动后会下载至后台,可能会有下载失败的风险。

训练作业启动时,ModelArts会将训练代码目录及其子目录下载至训练后台容器中。

例如:OBS路径“obs://obs-bucket/training-test/demo-code”作为代码目录,OBS路径下的内容会被自动下载至训练容器的“${MA_JOB_DIR}/demo-code”目录中,demo-code为OBS存放代码路径的最后一级目录,用户可以根据实际修改。

说明:
  • 训练代码编程语言不限。训练启动文件必须为Python语言。
  • 文件数(含文件、文件夹数量)小于或等于1000个。
  • 文件总大小要小于或等于5GB。
  • 文件深度要小于或等于32

“启动命令”

必填,镜像的启动命令。

运行训练作业时,当“代码目录”下载完成后,“启动命令”会被自动执行。
  • 如果训练启动脚本用的是py文件,例如“train.py”,则启动命令如下所示。
    python ${MA_JOB_DIR}/demo-code/train.py
  • 如果训练启动脚本用的是sh文件,例如“main.sh”,则启动命令如下所示。
    bash ${MA_JOB_DIR}/demo-code/main.sh

启动命令支持使用“;”“&&”拼接多条命令,命令中的“demo-code”为存放代码目录的最后一级OBS目录,以实际情况为准。

训练支持的自定义镜像使用说明请参考使用自定义镜像创建训练作业

完全使用自定义镜像场景下,指定的“conda env”启动训练方法如下:

由于训练作业运行时不是shell环境,因此无法直接使用“conda activate”命令激活指定的 “conda env”,需要使用其他方式以达成使用指定“conda env”来启动训练的效果。

假设您的自定义镜像中的“conda”安装于“/home/ma-user/anaconda3”目录“conda env”“python-3.7.10”,训练脚本位于“/home/ma-user/modelarts/user-job-dir/code/train.py”。可通过以下方式使用指定的“conda env”启动训练:

  • 方式一:为镜像设置正确的“DEFAULT_CONDA_ENV_NAME”环境变量与“ANACONDA_DIR”环境变量。
    ANACONDA_DIR=/home/ma-user/anaconda3
    DEFAULT_CONDA_ENV_NAME=python-3.7.10
    您可以使用Python命令启动训练脚本。启动命令示例如下:
    python /home/ma-user/modelarts/user-job-dir/code/train.py
  • 方式二:使用“conda env python”的绝对路径。
    您可以使用“/home/ma-user/anaconda3/envs/python-3.7.10/bin/python”命令启动训练脚本。启动命令示例如下:
    /home/ma-user/anaconda3/envs/python-3.7.10/bin/python /home/ma-user/modelarts/user-job-dir/code/train.py
  • 方式三:设置PATH环境变量。
    您可以将指定的“conda env bin”目录配置到PATH环境变量中。您可以使用Python命令启动训练脚本。启动命令示例如下:
    export PATH=/home/ma-user/anaconda3/envs/python-3.7.10/bin:$PATH; python /home/ma-user/modelarts/user-job-dir/code/train.py
  • 方式四:使用“conda run -n”命令。
    您可以使用“/home/ma-user/anaconda3/bin/conda run -n python-3.7.10”命令来执行训练命令,启动命令示例如下:
    /home/ma-user/anaconda3/bin/conda run -n python-3.7.10 python /home/ma-user/modelarts/user-job-dir/code/train.py

如果在训练时发生找不到“$ANACONDA_DIR/envs/$DEFAULT_CONDA_ENV_NAME/lib ”目录下“.so”文件的相关报错,可以尝试将该目录加入到“LD_LIBRARY_PATH”,将以下命令放在上述启动方式命令前:

export LD_LIBRARY_PATH=$ANACONDA_DIR/envs/$DEFAULT_CONDA_ENV_NAME/lib:$LD_LIBRARY_PATH;

例如,方式一的启动命令示例此时变为:

export LD_LIBRARY_PATH=$ANACONDA_DIR/envs/$DEFAULT_CONDA_ENV_NAME/lib:$LD_LIBRARY_PATH; python /home/ma-user/modelarts/user-job-dir/code/train.py
support.huaweicloud.com/usermanual-standard-modelarts/develop-modelarts-0003.html