开发者
下载
[object Object][object Object]

简介

为了方便后续的描述,我们对于不同的推理框架抽象为几个模块:

  • 资源初始化模块。
  • KV Cache管理模块。包括KV Cache的内存的创建,分配(PA场景)以及销毁。
  • 模型推理模块。
  • 资源释放模块。

本章节主要是介绍开发者如何在推理框架中使能LLM-DataDist的能力。

开发流程

  1. 找到推理框架中的资源初始化模块,在该阶段中调用LLM-DataDist的初始化接口和建链接口。
  2. 找到推理框架中的KV Cache管理模块,在该阶段中调用LLM-DataDist的KV Cache注册接口,LLM-DataDist的注册接口将自行申请的内存注册到LLM-DataDist。
  3. 推理框架需要拆分出Prefill阶段和Decode阶段,对推理脚本进行分离部署,部署到不同的集群节点上。在Decode阶段执行前需要接收来自Prefill阶段的输出作为输入,同时调用LLM-DataDist提供的KV Cache传输接口拉取或推送Prefill侧缓存的KV Cache。
  4. 分别执行Prefill推理脚本和Decode推理脚本。
  5. 在框架资源释放模块释放LLM-DataDist相关资源。
[object Object]

支持的形态如下:

[object Object]
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:针对Atlas A2 训练系列产品/Atlas A2 推理系列产品,仅支持Atlas 800I A2 推理服务器、A200I A2 Box 异构组件。该场景下Server内采用HCCS传输协议时,仅支持D2D。
[object Object][object Object]
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品,该场景下采用HCCS传输协议时,不支持Host内存作为远端Cache。
[object Object][object Object]
  • Ascend 950PR/Ascend 950DT场景下,超节点内使用UB协议,超节点间使用RoCE协议。
[object Object]

请参考安装好驱动固件以及CANN软件。

使用hccn_tool查询Device IP,并且进行卡间网络检测,要求各个集群上的卡间有RDMA链路连接,否则无法使能LLM-DataDist能力。hccn_tool详细介绍请参考《》。以下是常用命令参考。

[object Object]undefined

使用本文档过程中,还涉及到如下环境变量,具体请参见

[object Object]undefined
[object Object]

本示例是以transformers的LLAMA模型为样例,主要展示PD分离前后的脚本变化点,提供如何从非分离脚本改为PD分离脚本的一个参考,PD分离脚本示例请单击,根据版本配套表下载对应版本的sample包,从“npu_tuned_model/llm/llama/benchmark/pd_separate”目录中获取样例。样例中将全量模型和增量模型进行分离,部署到不同集群节点上执行。

如上分离脚本在整个推理流程中是如何被服务层调度的,请参考如下步骤。

  1. 当用户请求触发时,服务层将用户请求调度到全量的集群上,执行全量脚本的推理。将增量脚本需要的信息传输到增量脚本的执行节点上。此时全量集群节点可接收服务层下发的新的用户请求。
  2. 增量集群接收全量集群对应的请求信息,拉取对应请求的KV Cache(在全量集群节点上已经计算好的),同时按照增量模型的batch大小进行组batch操作,执行增量推理。
  3. 当增量集群上有请求推理完成空出对应batch位置时,再接收全量集群发过来的新的请求,并重复执行2和3。
  4. 全量集群重复执行1,增量集群重复执行2和3,直到业务结束,全量和增量集群退出。

更多代码样例,请单击,选择配套版本,从“examples/python”目录中获取样例。