更新时间:2025-09-08 GMT+08:00
分享

EMS存储初始化

功能说明

Ems是访问EMS服务的Python客户端,它为调用者提供一系列与EMS服务进行交互的接口,提供EMS内存池健康检查等能力,以及ContextCaching等存储功能。

方法定义

init(config)

构造函数参数描述

表1 EmsConfig

参数名称

参数类型

是否必选

描述

config

表2

参数解释:

EMS存储SDK初始化配置。

约束限制:

不能为None。

取值范围

无。

默认取值:

无。

access_id

string

参数解释:

业务访问内存池身份凭证,由用户指定并保证唯一性,用于多租隔离场景。

约束限制:

长度 1~512 个字符;支持数字、小写字母 "."、"-"、"_";需全局唯一。

取值范围

符合上述规则的字符串

默认取值:

None

access_key

string

参数解释:

SDK 访问内存池资源的密钥,与 access_id 配合使用,需要通过控制面 Restful 接口预先申请。

约束限制:

长度 32~256 个字符;支持数字、大小写字母、"+"、"/"、"="。

取值范围

符合上述规则的字符串

默认取值:

None

表2 CcConfig_v1

参数名称

参数类型

是否必选

描述

rank_id

int

参数解释:

当前计算进程,使用加速卡的全局rank ID。

约束限制:

  • rank ID实例内唯一。

取值范围:

[0,当前实例rank个数)。

默认取值

无。

device_id

int

参数解释:

当前计算进程,使用加速卡的本地节点rank ID。

约束限制:

  • 节点内唯一。

取值范围:

[0,当前实例本节点内rank个数)

默认取值

无。

model_id

string

参数解释:

唯一标识当前实例使用的推理模型ID。

约束限制

  • model_id创建规则:1~512个字符,支持数字、小写字母、“.”、“-”、“_”。
  • 需要保证全局唯一。

取值范围:

无。

默认取值

无。

tp_world_size

int

参数解释:

实例TP并行度。

约束限制

必须为数字。

取值范围

[1,当前实例总rank数]。

默认取值:

1。

pp_world_size

int

参数解释:

实例PP并行度。

约束限制

必须为数字。

取值范围

[1,当前实例总rank数]。

默认取值:

1。

rank_in_tp_group

int

参数解释:

实例TP索引。

约束限制

必须为数字。

取值范围

[0,当前实例rank个数)。

默认取值:

0。

rank_in_pp_group

int

参数解释:

实例PP索引。

约束限制

必须为数字。

取值范围

[0,当前实例rank个数)。

默认取值:

0。

llm_engine

string

参数解释:

当前实例的推理引擎。

约束限制

必须为字符串。

取值范围

无(通常为"vllm",如需对接其他推理引擎时可修改)。

默认取值:

"vllm"。

kvcache_type

表2

参数解释:

指定KVCache的实现类型。

约束限制

必须为字符串枚举值。

取值范围

"GQA"、"MHA"、"MLA"、"MQA"。

默认取值:

"MHA"。

  • 如果初始化参数校验失败或者因与EMS内存池连接失败,可以参考异常处理捕获异常,避免阻塞推理服务启动;同时根据异常信息,初步分析原因并联系EMS工程师。

代码样例

  • 初始化Ems,示例为支持ContextCaching对象初始化:
    # 引入模块 
    import os 
    from ems import Ems, EmsConfig, EmsException, CcConfig 
     
    # 初始化cc配置 
    cc_config = CcConfig(rank_id=8, device_id=0, model_id="llama2-13b") 
    # 初始化Ems 
    config = EmsConfig(cc_config=cc_config) 
    try: 
        Ems.init(config) 
    except EmsException as e: 
        print(f"exception: {e}.")
  • 一个进程中只会初始化一次Ems,以及Context Caching对象。

相关文档