
# 准备模型训练镜像
ModelArts平台提供了TensorFlow，PyTorch，MindSpore等常用深度学习任务的基础镜像，镜像里已经安装好运行任务所需软件。当基础镜像里的软件无法满足您的程序运行需求时，您还可以基于这些基础镜像制作一个新的镜像并进行训练。
#### 训练作业的预置框架介绍
ModelArts中预置的训练基础镜像如下表所示。
表1ModelArts训练基础镜像列表 
| 引擎类型                                                                              | 版本名称                                                                 |
|:---|:---|
| PyTorch                                                                           | pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64                   |
| PyTorch                                                                           | pytorch_2.1.0-cuda_12.1-py_3.10.6-ubuntu_22.04-x86_64                |
| TensorFlow                                                                        | tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64                |
| Horovod                                                                           | horovod_0.20.0-tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64 |
| Horovod                                                                           | horovod_0.22.1-pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64    |
| MPI                                                                               | mindspore_1.3.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64                 |
| Ascend-Powered-Engine   | tensorflow_1.15-cann_5.1.0-py_3.7-euler_2.8.3-aarch64                |
| Ascend-Powered-Engine   | mindspore_1.7.0-cann_5.1.0-py_3.7-euler_2.8.3-aarch64                |
| Ascend-Powered-Engine   | pytorch_2.1.0-cann_7.0.1.1-py_3.9-euler_2.10.7-aarch64-snt3p         |
| Ascend-Powered-Engine   | mindspore_2.2.12-cann_7.0.1.1-py_3.9-euler_2.10.7-aarch64-snt3p      |
   
#### 构建自定义训练镜像
图1训练作业的自定义镜像制作流程   
![](https://support.huaweicloud.com/usermanual-standard-modelarts/figure/zh-cn_image_0000002634722978.png "点击放大")
**场景一：**预置镜像满足ModelArts训练平台约束，但不满足代码依赖的要求，需要额外安装软件包。
具体案例参考[使用预置镜像制作自定义镜像用于训练模型](https://support.huaweicloud.com/docker-modelarts/docker-modelarts_0118.html)。
**场景二：**已有本地镜像满足代码依赖的要求，但是不满足ModelArts训练平台约束，需要适配。
具体案例参考[已有镜像迁移至ModelArts用于训练模型](https://support.huaweicloud.com/docker-modelarts/docker-modelarts_0029.html)。
**场景三：** 当前无可使用的镜像，需要从0制作镜像（既需要安装代码依赖，又需要制作出的镜像满足ModelArts平台约束）。具体案例参考：
[从0制作自定义镜像用于创建训练作业（PyTorch+Ascend）](https://support.huaweicloud.com/docker-modelarts/docker-modelarts_6031.html)
[从0制作自定义镜像用于创建训练作业（PyTorch+CPU/GPU）](https://support.huaweicloud.com/docker-modelarts/docker-modelarts-0097.html)
[从0制作自定义镜像用于创建训练作业（MPI+CPU/GPU）](https://support.huaweicloud.com/docker-modelarts/docker-modelarts-0105.html)
[从0制作自定义镜像用于创建训练作业（TensorFlow+GPU）](https://support.huaweicloud.com/docker-modelarts/docker-modelarts-0145.html)
#### 在镜像中安装pip依赖
在创建分布式训练作业前，建议提前安装所有的pip依赖，否则，当节点数大于10时，系统会自动删除pip源配置，当训练过程中涉及pip install操作时可能会训练失败。
提前安装依赖，确保所有依赖包在训练前已安装完成，可以避免因节点数过多导致pip源配置被删除而引发训练失败，提升训练作业的稳定性和效率。
安装pip依赖的两种方式：
- 方式一：在Notebook中提前安装依赖并保存镜像
  1. 在Notebook环境中运行目标镜像。
  
  2. 执行pip install命令安装所有依赖包。
  
  3. 保存镜像。
  
  4. 在镜像详情页获取SWR地址以便后续训练使用。
   
- 方式二：在本地容器中安装依赖并导出镜像
  1. 在本地环境中运行容器，执行pip install命令安装所有依赖包。
  
  2. 使用以下命令将容器保存为镜像。
     ```
     docker commit <容器ID> <镜像名称>:<标签>
     ```
     示例：
     ```
     docker commit my_container my_image:v1
     ```
     
  
  3. 使用以下命令将镜像导出为tar文件。
     ```
     docker save -o <tar文件名>.tar <镜像名称>:<标签>
     ```
     示例：
     ```
     docker save -o my_image_v1.tar my_image:v1
     ```
     
  
  4. 将镜像上传至容器镜像服务SWR，用于后续训练作业。
   
 
