ssh无密码连接
在训练大模型的过程中,我们经常会遇见多机多卡的应用场景。大多数情况下,我们直接购买k8s服务或者使用hpc服务,我们不需要具体配置某些节点的信息。比如使用slurm,我们把sbatch命令整理好了提交就ok,至于节点可以在组建slurm网络的时候配置。基本上不会遇到需要自行配置ssh无密码连接的场景。
公司刚组网了两台服务器,还没有使用slurm。我们先使用比较原始的多机多卡的方式训练模型,刚好学习配置一下ssh的无密码连接。命令很简单,但是有坑。
# 分别在两台机器上使用以下两条命令
ssh-keygen -t rsa
# 生成sshkey ,命令执行过程中需要输入三次回车。
# 不建议输入其他内容,尤其是第一次输入,会生成以输入字符串为名的文件。使第二条命令不加其他参数的情况下直接报错
ssh-copy-id user@server
# 将本机sshkey 拷贝到服务器。实际上就是把本地密钥的公钥保存到了服务器
# 如a服务器,则使用ssh-copy-id user@server-b ,反之亦然。
# 尽量在ab两台服务器上使用同一个名字的账号
然后测试一下 ssh user@server,无密码输入要求时说明配置成功。
另外关于服务器的别名。可以在/etc/hosts文件中添加如下内容:
124.123.122.121 worker0
124.123.122.120 worker1
在多机多卡的hostfile配置文件中直接使用别名来作为节点名称。