更新时间: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

相关文档

网站地图