SubscribeRankTable
功能说明
接收客户端订阅RankTable请求。服务端为每一个任务分配一个消息队列,并侦听消息队列是否存在待发送的消息,若存在则通过gRPC stream发送给客户端。
函数原型
rpc SubscribeRankTable(ClientInfo) returns (stream RankTableStream) {}
输入参数说明
参数 |
类型(Protobuf定义) |
说明 |
---|---|---|
ClientInfo |
message ClientInfo{ string jobId = 1; string role = 2; } |
ClientInfo.jobId:任务ID。 ClientInfo.role:客户端角色。 |
返回值说明
返回值 |
类型(Protobuf定义) |
说明 |
---|---|---|
Stream |
grpc stream |
该接口返回gRPC stream(返回值的具体数据结构基于客户端选择的编程语言)。 客户端可以调用stream的Receive方法(具体方法名基于客户端选择的编程语言)接收服务端推送的数据。 |
发送数据说明
返回值 |
类型(Protobuf定义) |
说明 |
---|---|---|
RankTableStream |
message RankTableStream{ string jobId = 1; string rankTable = 2; } |
RankTableStream.jobId:任务ID。 RankTableStream.rankTable:RankTable信息,各字段的详细说明如表1所示。 |
global-ranktable文件说明
ClusterD会生成global-ranktable在RankTable字段作为返回消息。global-ranktable中部分字段来自于hccl.json文件,关于hccl.json文件的详细说明请参见hccl.json文件说明。
- 示例如下。
{ "version": "1.0", "status": "completed", "server_group_list": [ { "group_id": "2", "deploy_server": "0", "server_count": "1", "server_list": [ { "device": [ { "device_id": "x", "device_ip": "xx.xx.xx.xx", "device_logical_id": "x", "rank_id": "x" } ], "server_id": "xx.xx.xx.xx", "server_ip": "xx.xx.xx.xx" } ] } ] }
- Atlas A3 训练系列产品示例如下。
{ "version": "1.2", "status": "completed", "server_group_list": [ { "group_id": "2", "deploy_server": "1", "server_count": "1", "server_list": [ { "device": [ { "device_id": "0", "device_ip": "xx.xx.xx.xx", "super_device_id": "xxxxx", "device_logical_id": "0", "rank_id": "0" } ], "server_id": "xx.xx.xx.xx", "server_ip": "xx.xx.xx.xx" } ], "super_pod_list": [ { "super_pod_id": "0", "server_list": [ { "server_id": "xx.xx.xx.xx" } ] } ] } ] }
字段 |
说明 |
---|---|
version |
版本 |
status |
状态 |
server_group_list |
服务组列表 |
group_id |
任务组编号 |
server_count |
服务器数量 |
server_list |
服务器列表 |
server_id |
节点的IP |
server_ip |
Pod IP |
device_id |
NPU的设备ID |
device_ip |
NPU的设备IP |
super_device_id |
Atlas A3 训练系列产品NPU的设备ID |
rank_id |
NPU对应的训练rank ID |
device_logical_id |
NPU的逻辑ID |
super_pod_list |
超节点列表 |
super_pod_id |
逻辑超节点ID |