准备ranktable资源配置文件
进行训练之前,需要准备昇腾AI处理器资源配置文件(即Rank table文件),并上传到当前运行环境,该文件用于定义训练的昇腾AI处理器资源信息。
使用前须知
- 针对Atlas 训练系列产品,如果使用1台训练服务器(Server),要求实际参与集合通信的昇腾AI处理器数目只能为1/2/4/8,且0-3卡和4-7卡各为一个组网。使用2张卡或4张卡训练时,不支持跨组网创建设备集群。
- 针对Atlas 训练系列产品,Server集群场景下(即由集群管理主节点和一组训练服务器组成训练服务器集群),要求参与集合通信的昇腾AI处理器数目只能为1*n、2*n、4*n、8*n(其中n为参与训练的Server个数,上限为512)。且n为2的指数倍情况下,集群性能最好,建议用户优先采用此种方式进行集群组网。
- 针对Atlas A2训练系列产品:如果单Server中昇腾AI处理器的数量是8,Server集群场景(即由集群管理主节点和一组训练服务器组成训练服务器集群)下要求参与集合通信的昇腾AI处理器数目为(1~8)*n(其中n为参与训练的Server个数,上限为1024),其中,n为2的指数倍情况下,集群性能最好,建议用户优先采用此种方式进行集群组网,注意每个Sever中参与集合通信的昇腾AI处理器数量保持一致。
准备配置文件
ranktable文件为json格式,以2p场景为例,文件可以命名为rank_table_2p.json。
用户也可以在此处配置全量的昇腾AI处理器资源信息,后续训练进程启动时仅使用其中的指定的几个昇腾AI处理器资源。
- 模板一(推荐使用)
{ "server_count":"1", //参与训练的AI Server数目,此例中,只有一个AI Server "server_list": [ { "device":[ // AI Server中的Device列表 { "device_id":"0", // 处理器HDC通道号 "device_ip":"192.168.1.8", // 处理器真实网卡IP "rank_id":"0" // rank的标识,rankID从0开始 }, { "device_id":"1", "device_ip":"192.168.1.9", "rank_id":"1" } ], "server_id":"10.0.0.10" //AI Server标识,以点分十进制表示IP字符串 } ], "status":"completed", // ranktable可用标识,completed为可用 "version":"1.0" // ranktable模板版本信息,当前必须为"1.0" }
表1 ranktable文件说明 配置项
配置说明
可选/必选
server_count
本次参与训练的AI Server个数。
必选
status
Rank table可用标识。
- completed:表示Rank table可用,可执行训练。
- initializing:表示Rank table不可用,不可执行训练。
必选
version
Rank table模板版本信息。当前仅支持配置为1.0。
必选
server_list
本次参与训练的AI Server列表。
必选
server_id
AI Server物理IP,以点分十进制表示的字符串,配置示例:10.0.0.10
必选
device_id
昇腾AI处理器的ID,即Device在AI Server上的序列号。
取值范围:[0,实际Device数量-1]
必选
device_ip
昇腾AI处理器集成网卡IP,全局唯一,IPv4格式,以点分十进制表示的字符串,配置示例:192.168.1.8。
可以在当前AI Server执行指令cat /etc/hccn.conf获取网卡IP,例如:
address_0=xx.xx.xx.xx netmask_0=xx.xx.xx.xx netdetect_0=xx.xx.xx.xx address_1=xx.xx.xx.xx netmask_1=xx.xx.xx.xx netdetect_1=xx.xx.xx.xx ...
查询到的address_xx即为网卡IP,address后的序号为昇腾AI处理器物理ID,即device_id,后面的ip地址即为需要用户填入的该device对应的网卡IP。
说明:- 典型8网口集合通信场景下:ranktable文件中的devices字段会记录每个device可用的网口ip信息,如下所示为device_id为0,网口ip地址为192.168.100.101的devices信息:
"devices": [{"device_id": "0", "device_ip": "192.168.100.101"}]
- 针对Atlas 训练系列产品,网口裁剪的场景下,通过ranktable校验得到各Server可用的1/2/4个网口信息,当devices中device_ip字段为空字符串" "时,代表该device的网口不在集合通信中使用,如下所示为device_id为0网口不使用时的devices信息:
"devices": [{"device_id": "0", "device_ip": ""}]
必选
rank_id
Rank唯一标识,从0开始配置,且全局唯一,取值范围:[0, 总Device数量-1]
必选
- 模板二(兼容部分已有场景)
{ "status":"completed", // Rank table可用标识,completed为可用 "group_count":"1", // group数量,建议为1 "group_list": // group列表 [ { "group_name":"hccl_world_group",//group名称,建议hccl_world_group "instance_count":"2", // instance实例个数,容器场景下可理解为容器个数 "device_count":"2", // group中的所有device数目 "instance_list":[ { "pod_name":"tf-bae41", //instance实例名称,一般为容器名称 "server_id":"10.0.0.10", //server标识,以IP格式填入 "devices":[ //instance实例的device列表 { "device_id":"0", // 昇腾AI处理器HDC通道号 "device_ip":"192.168.1.8" // 昇腾AI处理器真实网卡IP } ] }, { "pod_name":"tf-tbdf1", "server_id":"10.0.0.10", "devices":[ { "device_id":"1", "device_ip":"192.168.1.9" } ] } ] } ] }
表2 ranktable文件说明 配置项
配置说明
可选/必选
status
Rank table可用标识。
- completed:表示Rank table可用,可执行训练。
- initializing:表示Rank table不可用,不可执行训练。
必选
group_count
用户申请的Group数量,建议配置为1。
必选
group_list
Group列表。
必选
group_name
Group名称,当group_count为1时,建议配置为hccl_world_group或为空。因为当前版本无论定义为任何值,都会创建名称为hccl_world_group的group。
如果通过该配置文件创建了多个group,则系统会自动将多个group合并为一个名称为“hccl_world_group”的group资源。
可选
instance_count
和instance_list中pod_name个数保持一致,例如:容器场景下为容器实际数量。
必选
device_count
group中设备数量。
必选
instance_list
-
-
pod_name
用户自定义配置,保持instance_list内全局唯一。
必选
server_id
Server物理IP,以点分十进制表示的字符串,配置示例:10.0.0.10
必选
devices
-
-
device_id
昇腾AI处理器物理ID,即Device在Server上的序列号。
取值范围:[0,实际Device数量-1]
必选
device_ip
昇腾AI处理器集成网卡IP,全局唯一,以点分十进制表示的字符串,配置示例:192.168.1.8。
可以在当前Server执行指令cat /etc/hccn.conf获取网卡IP。
说明:- 典型8网口集合通信场景下:ranktable文件中的devices字段会记录每个device可用的网口ip信息,如下所示为device_id为0,网口ip地址为192.168.100.101的devices信息:
"devices": [{"device_id": "0", "device_ip": "192.168.100.101"}]
- 针对Atlas 训练系列产品,网口裁剪的场景下,通过ranktable校验得到各Server可用的1/2/4个网口信息,当devices中device_ip字段为空字符串" "时,代表该device的网口不在集合通信中使用,如下所示为device_id为0网口不使用时的devices信息:
"devices": [{"device_id": "0", "device_ip": ""}]
必选
{ "server_count":"1", //参与训练的AI Server数目,此例中,只有一个AI Server "server_list": [ { "device":[ // AI Server中的Device列表 { "device_id":"0", // 处理器HDC通道号 "device_ip":"192.168.1.8", // 处理器真实网卡IP "rank_id":"0" // rank的标识,rankID从0开始 }, { "device_id":"1", "device_ip":"192.168.1.9", "rank_id":"1" } ], "server_id":"10.0.0.10" //AI Server标识,以点分十进制表示IP字符串 } ], "status":"completed", // ranktable可用标识,completed为可用 "version":"1.0" // ranktable模板版本信息,当前必须为"1.0" }
配置项 |
配置说明 |
可选/必选 |
---|---|---|
server_count |
本次参与训练的AI Server个数。 |
必选 |
status |
Rank table可用标识。
|
必选 |
version |
Rank table模板版本信息。当前仅支持配置为1.0。 |
必选 |
server_list |
本次参与训练的AI Server列表。 |
必选 |
server_id |
AI Server物理IP,以点分十进制表示的字符串,配置示例:10.0.0.10 |
必选 |
device_id |
昇腾AI处理器的ID,即Device在AI Server上的序列号。 取值范围:[0,实际Device数量-1] |
必选 |
device_ip |
昇腾AI处理器集成网卡IP,全局唯一,以点分十进制表示的字符串,配置示例:192.168.1.8。 可以在当前AI Server执行指令cat /etc/hccn.conf获取网卡IP,例如: address_0=xx.xx.xx.xx netmask_0=xx.xx.xx.xx netdetect_0=xx.xx.xx.xx address_1=xx.xx.xx.xx netmask_1=xx.xx.xx.xx netdetect_1=xx.xx.xx.xx ... 查询到的address_xx即为网卡IP,address后的序号为昇腾AI处理器物理ID,即device_id,后面的ip地址即为需要用户填入的该device对应的网卡IP。
说明:
典型8网口集合通信场景下:ranktable文件中的devices字段会记录每个device可用的网口ip信息,如下所示为device_id为0,网口ip地址为192.168.100.101的devices信息:
"devices": [{"device_id": "0", "device_ip": "192.168.100.101"}] |
必选 |
rank_id |
Rank唯一标识,从0开始配置,且全局唯一,取值范围:[0, 总Device数量-1] |
必选 |
配置示例
以包含两个Device的资源配置文件为例,假设命名为“rank_table_2p.json”,配置如下:
{ "server_count":"1", "server_list": [ { "device":[ { "device_id":"0", "device_ip":"192.168.1.8", "rank_id":"0" }, { "device_id":"1", "device_ip":"192.168.1.9", // 两个Device需要处于同一网段,0卡和1卡为同一网段 "rank_id":"1" } ], "server_id":"10.0.0.10" } ], "status":"completed", "version":"1.0" }