一. hostfile文件
DeepSpeed多机多卡训练时,需要配置hostfile文件, hostfile文件是一个主机名(或 SSH 别名)列表,这些机器可以通过无密码 SSH 访问,并且还包括 slot counts,用于指定系统上可用的 GPU 数量。如下所示:
worker-1 slots=8
worker-2 slots=8
hostname1 slots=8
hostname2 slots=8
上述示例指定了**四个别名(别名创建看下面第二节)**为 worker-1 ,worker-2,hostname1,和hostname2 的机器,每台机器都有8个 GPU 用于训练。
可以使用 --hostfile 命令行选项指定 hostfile。如果没有指定 hostfile,则 DeepSpeed 会搜索本机器 /job/hostfile系统配置文件路径 。如果没有指定或找到 hostfile,则 DeepSpeed 查询本地计算机上的 GPU 数量,以发现可用的本地 slot 数量。
二. linux别名创建
通常使用以下任意一种方式通过 SSH 连接到远程系统。
使用 IP 地址:
ssh 192.168.225.22
或使用端口号、用户名和 IP 地址:
ssh -p 22 sk@192.168.225.22
或使用端口号、用户名和主机名:
ssh -p 22 sk@server.example.com
22 是端口号,
sk 是远程系统的用户名,
192.168.225.22 是远程系统的 IP,
server.example.com 是远程系统的主机名。
我相信大多数人都会以这种方式通过 SSH 连接到远程系统。但是,如果你通过 SSH 连接到多个不同的系统,记住所有主机名或 IP 地址,还有用户名是困难的,除非你将它们写在纸上或者将其保存在文本文件中。这时可以通过为 SSH 连接创建别名(或快捷方式)轻松解决。
2.1 使用 SSH 配置文件
创建别名的首选方法。
可以使用 SSH 默认配置文件来创建 SSH 别名。为此,编辑 ~/.ssh/config 文件(如果此文件不存在,只需创建一个):
vi ~/.ssh/config
添加所有远程主机的详细信息,如下所示:
Host worker-0
HostName 192.168.225.22
User ostechnix
User sk
Host worker-1
HostName server.example.com
User ostechnix
User root
Host hostname1
HostName 192.168.225.25
User ostechnix
Port 2233
Host hostname2
HostName 192.168.225.25
User ostechnix
Port 2233
使用 SSH 配置文件在 Linux 中创建 SSH 别名
将 Host、Hostname、User 和 Port 配置的值替换为你自己的值。添加所有远程主机的详细信息后,保存并退出该文件。
现在你可以使用以下命令通过 SSH 进入系统:
ssh worker-0
ssh worker-1
ssh hostname1
ssh hostname2
三. 参考文档
1. 如何在 Linux 中创建 SSH 别名
2.【DeepSpeed 教程翻译】开始,安装细节和CIFAR-10 Tutorial
3. deepspeed多机多卡训练踏过的坑
4. deepspeed多机多卡训练