更新时间:2024-11-21 GMT+08:00
分享

自定义镜像训练作业配置节点间SSH免密互信

当用户使用基于MPI和Horovod框架的自定义镜像进行分布式训练时,需配置训练作业节点间SSH免密互信,否则训练会失败。

配置节点间SSH免密互信涉及代码适配和训练作业参数配置,本文提供了一个操作示例。

  1. 准备一个预装OpenSSH的自定义镜像,使用的训练框架是MPI或Horovod。
  2. 准备一个sshd启动脚本文件“start_sshd.sh”
    MY_SSHD_PORT=${MY_SSHD_PORT:-"38888"} 
    mkdir -p /home/ma-user/etc
    ssh-keygen -f /home/ma-user/etc/ssh_host_rsa_key0 -N '' -t rsa > /dev/null
    /usr/sbin/sshd -p $MY_SSHD_PORT -h /home/ma-user/etc/ssh_host_rsa_key0
  3. 将准备好的sshd启动脚本文件上传至OBS的训练代码目录下。
  4. 创建自定义镜像训练作业。
    • “代码目录”选择存有sshd启动脚本文件的OBS地址。
    • “启动命令”需要适配sshd启动脚本,如下所示:
      bash ${MA_JOB_DIR}/demo-code/start_sshd.sh && your custom command

      命令中的“your custom command”表示训练作业中需要执行的其他自定义命令。

    • “环境变量”增加“MY_SSHD_PORT = 38888”。
    • “配置节点间SSH免密互信”开关打开,并设置“SSH密钥目录”,一般保持默认值。该配置会在下发训练作业后,自动在训练容器的“/home/ma-user/.ssh”目录下生成SSH密钥文件和配置文件“authorized_keys config id_rsa id_rsa.pub”
  5. 提交创建训练作业后,训练过程中,训练作业的节点可通过域名+端口的方式SSH连接到其他节点,示例代码如下所示:
    ssh modelarts-job-a0978141-1712-4f9b-8a83-000000000000-worker-1 -p $MY_SSHD_PORT

相关文档