准备镜像
镜像可分为使用基础镜像、DockerFile制作后的训练镜像(二选一),使用Dockerfile制作后的训练镜像比使用基础镜像多了步骤:DockerFile制作训练镜像。
详细步骤
- 创建镜像组织:在SWR服务页面创建镜像组织。
图1 创建镜像组织
- 登录ECS服务器:
根据2.2.1-3. 创建ECS服务器创建完成ECS服务器后,单击“远程登录”,可使用华为CloudShell远程登录如图所示。后续安装Docker、获取镜像、构建镜像等操作均在该ECS上进行。
图2 CloudShell远程登录界面 - 安装Docker。
- 检查docker是否安装。
docker -v #检查docker是否安装
如尚未安装,运行以下命令安装docker。
yum install -y docker
- 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。
sysctl -p | grep net.ipv4.ip_forward
如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward
- 检查docker是否安装。
- 获取基础镜像。
请确保在正确的Region下获取镜像。建议使用官方提供的镜像部署训练服务。镜像地址{image_url}请参见表2。
docker pull {image_url}
- (可选)DockerFile制作训练镜像,如使用基础忽略此步骤。
本小节主要通过DockerFile文件基于基础镜像构建训练镜像,将训练过程中依赖包、代码集成封装安装使用,过程中需要连接互联网git clone,请确保环境可以访问公网,详解操作如下。
- 完成代码准备及上传步骤。
- 进入代码包Dockerfile文件同级目录:
cd xxx/llm_train/AscendFactory
- 构建新镜像。
docker build --build-arg install_type=xxx -t <镜像名称>:<版本名称> .
如无法访问公网则需配置代理,增加`--build-arg`参数指定代理地址确保访问公网。
docker build --build-arg "https_proxy=http://xxx.xxx.xxx.xxx" --build-arg "http_proxy=http://xxx.xxx.xxx.xxx" --network=host --build-arg install_type=xxx -t <镜像名称>:<版本名称> .
- <镜像名称>:<版本名称>:定义镜像名称。示例:pytorch_2_3_ascend:20241106
- install_type:安装类型,可选mindspeed-llm或llamafactory,根据实际要求选择。
构建镜像前需保证Dockerfile文件内容中镜像名与本文档表3保持一致,如不同则需修改为一致。
# 修改以下内容: FROM swr.cn-southwest-2.myhuaweicloud.com/atelier/xxx
- 在ECS中Docker登录。
在SWR中单击右上角的“登录指令”,然后在跳出的登录指定窗口,单击复制临时登录指令。在创建的ECS中粘贴临时登录指令,即可完成登录。
图3 复制登录指令 - 修改并上传镜像:
- 登录指令输入之后,使用下列示例命令,以下命令二选一:
docker tag {image_url_name} <镜像仓库地址>/<组织名称>/<镜像名称>:<版本名称>
参数说明:
- {image_url_name}:基础镜像地址或DockerFile制作训练镜像小节中的镜像名称
- <镜像仓库地址>:可在SWR控制台上查询,容器镜像服务中登录指令末尾的域名即为镜像仓库地址。
- <组织名称>:创建镜像组织中设置,可在SWR页面的组织管理中自行查看
- <镜像名称>:<版本名称>:定义镜像名称。示例:pytorch_2_3_ascend:20241212
- 上传镜像至镜像仓库:
docker push <镜像仓库地址>/<组织名称>/<镜像名称>:<版本名称>
- 登录指令输入之后,使用下列示例命令,以下命令二选一:
- 上传完之后可以在SWR页面,我的镜像中看到新上传的镜像。
图4 查看上传的镜像