更新时间:2024-01-02 gmt 08:00

使用自定义镜像-凯发k8国际娱乐官网入口

订阅算法和预置框架涵盖了大部分的训练场景。针对特殊场景,modelarts支持用户构建自定义镜像用于模型训练。

自定义镜像的制作要求用户对容器相关知识有比较深刻的了解,除非订阅算法和预置框架无法满足需求,否则不推荐使用。自定义镜像需上传至容器镜像服务(swr),才能用于modelarts上训练。

modelarts上使用自定义镜像训练支持2种方式:

  • 使用预置框架 自定义镜像:

    假若您先前基于预置框架,并且通过指定代码目录和启动文件的方式来创建的训练作业;但是随着业务逻辑的逐渐复杂,您期望可以基于预置框架修改或增加一些软件依赖的时候,此时您可以使用预置框架 自定义镜像的功能,即选择预置框架名称后,在预置框架版本下拉列表中选择“自定义”。

  • 完全自定义镜像:

    用户遵循modelarts镜像的规范要求制作镜像,选择自己的镜像,并且通过指定代码目录(可选)和启动命令的方式来创建的训练作业。

使用预置框架 自定义镜像

此功能与直接基于预置框架创建训练作业的区别仅在于,镜像是由用户自行选择的。用户可以基于预置框架制作自定义镜像。基于预置框架制作自定义镜像可参考章节。

图1 使用预置框架 自定义镜像创建算法

该功能的行为与直接基于预置框架创建的训练作业相同,例如:

  • 系统将会自动注入一系列环境变量
    • path=${ma_home}/anaconda/bin:${path}
    • ld_library_path=${ma_home}/anaconda/lib:${ld_library_path}
    • pythonpath=${ma_job_dir}:${pythonpath}
  • 您选择的启动文件将会被系统自动以python命令直接启动,因此请确保镜像中的python命令为您预期的python环境。注意到系统自动注入的path环境变量,您可以参考下述命令确认训练作业最终使用的python版本:
    • export ma_home=/home/ma-user; docker run --rm {image} ${ma_home}/anaconda/bin/python -v
    • docker run --rm {image} $(which python) -v
  • 系统将会自动添加预置框架关联的超参

完全使用自定义镜像

图2 完全使用自定义镜像创建算法

新版训练支持的自定义镜像使用说明,请参考。

完全使用自定义镜像场景下,指定的“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”环境变量。
    您可以使用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
分享:
网站地图