link
函数功能
在开启CacheManager的场景下,开启方式是在初始化LLMDataDist时设置llm.EnableCacheManager为1,调用此接口通过建立通信域方式建链。
如果要在单机内构造通信域,需要设置HCCL_INTRA_ROCE_ENABLE=1环境变量。
函数原型
link(comm_name: str, cluster_rank_info: Dict[int, int], rank_table: str) -> int
参数说明
调用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | from llm_datadist import LLMDataDist, LLMRole, LlmConfig
device_id = 0
llm_datadist = LLMDataDist(LLMRole.PROMPT, 1)
options = {
"ge.exec.deviceId": str(device_id),
"llm.MemPoolConfig": "{\"memory_size\": 1073741824}"
}
llm_config = LlmConfig()
llm_config.enable_cache_manager = True
options.update(llm_config.generate_options())
llm_datadist.init(options)
rank_table = """
{
"server_count": "2",
"server_list": [
{
"device": [
{
"device_id": "0",
"device_ip": "x.x.x.x",
"rank_id": "0"
},
],
"server_id": "xxxx"
},{
"device": [
{
"device_id": "0",
"device_ip": "x.x.x.x",
"rank_id": "1"
},
],
"server_id": "xxxx"
}
],
"status": "completed",
"version": "1.0"
}"""
comm_id = llm_datadist.link("comm1", {1: 0, 2: 1}, rank_table)
print("init link suc:", comm_id)
|
返回值
正常情况下返回标识通信域的ID。
参数错误可能抛出TypeError或ValueError。
约束说明
- 通信域内所有节点都需要开启CacheManager模式。
- 需要通信域内所有节点同时发起。
- 通信域内节点数量最大支持4。
- 通信域数量建议不超过16,最大支持512。建链数量过多存在内存oom及cache传输的性能下降风险。
- link底层会在通信域内部交换内存描述符,对于用来传输的cache,需要在link前先配置内存池或者先注册内存。
- 不支持fork子进程方式调用。
- 最多支持16条链路并发建链,超过16条底层会排队。
- 需保证多通信域建链不出现循环依赖。
父主题: LLMDataDist