LLM Engine接口列表
LLM Engine(large language model Engine),支持推理全量增量分离部署,全量图和增量图一起部署时,会造成计算资源的浪费,原因如下:
- 全量图计算对算力要求高,大batch下算力bound或导致时延体验下降;同batch内多个inputSeq实际长度不同。
- 增量图单次计算量小,需要冲高batch提升算力利用率;KV Cache容量需求高;batch内输出长度(迭代次数)不一致。
LLM Engine提供管理图的部署和调度执行功能,根据传入的图是全量图还是增量图来执行对应的部署和调度逻辑。相关接口存放在为:“${install_path}/latest/runtime/include/ge/llm_engine.h”、“${install_path}/latest/runtime/include/ge/llm_engine_types.h”l和“${install_path}/latest/runtime/include/ge/llm_error_codes.h”。其中${install_path}为runtime安装路径,root用户的默认路径是“/usr/local/Ascend”。
支持的产品形态:Atlas A2训练系列产品/Atlas 800I A2推理产品。
LLM Engine接口列表如下。
LLMReq
接口名称 |
简介 |
---|---|
设置LLM执行请求的请求id。 |
|
获取LLM执行请求的id。 |
|
设置LLM执行请求的全量实际句子长度。 |
|
获取LLM执行请求的全量实际句子长度。 |
|
设置LLM执行请求所属的cluster id。 |
|
获取LLM执行请求的全量cluster id。 |
|
设置LLM执行请求的增量cluster id。 |
|
获取LLM执行请求的增量cluster id。 |
|
设置LLM执行请求的公共前缀id。 |
|
获取LLM执行请求的公共前缀id。 |
|
设置LLM执行请求的实际句子长度。 |
|
获取LLM执行请求的实际句子长度。 |
LLMEngine
接口名称 |
简介 |
---|---|
创建LLMEngine对象。 |
|
LLMEngine对象析构函数。 |
|
获取增量模型空闲的block数量。 |
|
进行device间断链。 |
|
进行device间建链。 |
|
LLM Engine的资源释放函数。 |
|
将KV从本暂存区中合并到batch中,该接口会释放暂存区中的KV。 |
|
从Prompt cluster拉取该request对应的KV到本Decoder cluster的暂存区中,每次调用成功后都会覆盖暂存区之前的KV。 |
|
外部告知Req已结束。 |
|
异步执行增量图。 |
|
LLM_OPTION_BATCH_MODE为manual时,批量执行decoder推理。 |
|
LLM_OPTION_BATCH_MODE为manual时,批量执行decoder推理。 |
|
执行增量图。 |
|
LLM_OPTION_BATCH_MODE为manual时,批量执行全量图。 |
|
执行全量图。 |
|
异步执行全量图。 |
|
释放公共前缀。 |
|
预加载公共前缀。 |
|
查询PagedAttention场景下的blocks数量。 |
|
初始化LLM Engine的资源。 |
|
初始化LLM Engine的资源。 |
|
添加模型,返回模型ID。 |