本文为您介绍如何利用PAI自主研发的BladeLLM引擎进行高效部署,以实现更低延迟和更高吞吐量的大语言模型(LLM)推理。
前提条件
已开通PAI并创建默认工作空间,具体操作,请参见开通PAI并创建默认工作空间。
如果您有部署自定义模型的需求,需要完成以下准备工作:
准备自定义模型文件及相关配置文件,需要准备的模型文件样例如下:
仅支持部署Qwen和Llama全系列文本模型,且不允许改变模型结构。
其中配置文件中必须包含config.json文件,您需要按照Huggingface或Modelscope的模型格式配置Config文件。示例文件详情,请参见config.json。
创建对象存储OSS存储空间(Bucket)并上传自定义模型文件。具体操作,请参见控制台快速入门。
使用限制
使用BladeLLM引擎部署服务时,有如下限制:
限制类型 | 说明 |
限制类型 | 说明 |
模型限制 | 仅支持部署Qwen和Llama全系列文本模型,包括开源版本、微调版本以及量化后的版本。 |
资源限制 |
|
部署服务
在使用BladeLLM引擎部署服务时,PAI提供了以下三种部署方式供您选择。您可以通过场景化部署,使用PAI平台预置的公共模型或自行微调的模型实现快速一键部署。此外,对于有特殊配置需求的用户,PAI还支持自定义部署和JSON独立部署方式,您可以根据具体需求更灵活地一键部署自行微调后的模型。
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
在模型在线服务(EAS)页面,单击部署服务,然后在场景化模型部署区域,单击LLM大语言模型部署。
在部署LLM大语言模型页面,配置以下关键参数。
参数
描述
示例值
基本信息
服务名称
自定义服务名称。
blade_llm_qwen_server
版本选择
选择高性能部署,表示使用PAI自研的BladeLLM进行快速部署。
高性能部署
镜像版本
选择BladeLLM引擎版本。
blade-llm:0.9.0
模型配置
支持部署以下两种模型:
公共模型:PAI平台预置了多种常用模型。您可以在下拉列表中单击
,查看每种模型的详细介绍。
自定义模型:如果公共模型不能满足您的需求,您可以选择自行微调的模型。并通过OSS、通用型NAS、极速型NAS、智算CPFS或PAI模型方式进行挂载。
资源部署
资源类型
支持使用以下三种资源类型:
公共资源
部署资源
请参照使用限制选择部署服务使用的资源规格。
ecs.gn7i-c16g1.4xlarge
服务功能
共享内存
配置实例的共享内存,可以直接对内存进行读写操作,无需进行数据的复制和传输。默认情况下,当您选择多卡资源时,共享内存为64 GB,否则为0,您也可以手动进行修改。
使用默认配置
高级配置
张量并行数
BladeLLM支持在多卡上进行分布式推理。通常设置为资源规格的卡数。
1
端口号
镜像启动后监听的本地HTTP端口。
由于EAS引擎监听固定的8080端口,因此端口需要避开8080。
8001
最大显存占有率
表示KV Cache的显存与GPU总显存减去模型占用显存之间的比例,默认为0.85。当您的显存不足时,可适当减小该参数;当您的显存充足时,可适当增大该参数。
0.85
分块预填充块大小
BladeLLM内置的优化策略,能够在预填充(prefill)阶段将输入数据分割为若干数据块(chunks)(数据块大小是指一次输入到模型中的数据量,单位为token。),从而更有效地利用计算资源,并降低时延。
2048
推测解码
使用更小更快的草稿模型(draft model)来加速目标模型的推理过程。草稿模型可以推测未来多步的生成token,目标模型再通过并行验证进行筛选,从而在精度无损的情况下,加速token的生成速度。
推测解码功能会部署一个草稿模型,需要使用更大显存的资源规格。如果您开启了推测解码,请结合主模型和草稿模型的参数量,重新计算所需的资源显存大小。
草稿模型:通常是与目标模型架构相似的小规模模型。您可以使用PAI预置的公共模型,或根据特定任务或数据集微调的模型。
推测步长:草稿模型在每次推测中生成的token序列长度,默认值为4。这些序列会被目标模型验证和筛选。
开关关闭
其他参数
添加选项参数:通过参数值来指定某种配置,需要输入参数名和参数值。
添加标志参数:布尔类型的参数,用于启用或禁用某个功能,只需输入参数名。
无需配置
运行命令预览
系统根据镜像及参数配置自动生成的运行命令,默认不允许修改。您可以通过单击切换为自由编辑模式,来修改运行命令。
使用默认配置,无需修改
参数配置完成后,单击部署。
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
在模型在线服务(EAS)页面,单击部署服务,然后在自定义模型部署区域,单击自定义部署。
在自定义部署页面,配置以下关键参数。更多参数配置说明,请参见控制台自定义部署参数说明。
参数
描述
基本信息
服务名称
自定义服务名称。
环境信息
部署方式
选择镜像部署。
镜像配置
选择
。模型配置
单击OSS,通过OSS挂载自行微调的模型配置,并配置以下参数:
OSS:选择自定义模型文件所在的OSS路径。例如
oss://examplebucket/bloom_7b
。挂载路径:表示模型配置挂载到服务实例中的目标路径。例如
/mnt/model/bloom_7b
。
运行命令
配置为
blade_llm_server --port 8081 --model /mnt/model/bloom_7b/
。端口号
配置为8081,需要与运行命令中的端口号一致。
资源部署
部署资源
请参照使用限制选择部署服务使用的资源规格。
共享内存
使用多卡推理时,需要配置共享内存。默认情况下,当您选择多卡资源时,共享内存为64 GB,否则为0,您也可以手动进行修改。
参数配置完成后,单击部署。
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
在模型在线服务(EAS)页面,单击部署服务,然后在自定义模型部署区域,单击JSON独立部署。
在JSON编辑框中配置以下JSON内容,然后单击部署。
{ "name": "blade_llm_bloom_server", // 服务名称 "containers": [ { // 镜像和命令,请使用“-vpc”后缀的URL,其中<region_id>配置为区域ID,例如华东1(杭州)为cn-hangzhou // 请正确填写版本号 "image": "eas-registry-vpc.<region_id>.cr.aliyuncs.com/pai-eas/blade-llm:0.8.0", "command": "blade_llm_server --port 8081 --model /mnt/model/bloom_7b/", // 端口号需要与"command"中的"--port"参数配置一致 "port": 8081 } ], "storage": [ { // 模型挂载地址 "mount_path": "/mnt/model/bloom_7b/", "oss": { "endpoint": "oss-<region_id>-internal.aliyuncs.com", // 模型配置所在的OSS存储路径 "path": "oss://examplebucket/bloom_7b/" } }, { // 共享内存, 多卡推理时务必配置 "empty_dir": { "medium": "memory", "size_limit": 64 }, "mount_path": "/dev/shm" } ], "metadata": { "instance": 1, "memory": 64000, // 内存,单位是 MB "cpu": 16, "gpu": 1, "resource": "eas-r-xxxxxx" // 资源组ID } }
调用服务
当服务成功部署并处于运行中状态时,您可以调用该服务来进行模型推理。
查看服务访问地址和Token。
在模型在线服务(EAS)页面,单击目标服务的服务方式列下的调用信息。
在调用信息对话框,查看服务访问地址和Token。
在终端中执行以下代码调用服务,流式地获取生成文本。
# Call EAS service curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: AUTH_TOKEN_FOR_EAS" \ -d '{"prompt":"What is the capital of Canada?", "stream":"true"}' \ <service_url>/v1/completions
其中:
Authorization:配置为上述步骤获取的服务Token。
<service_url>:替换为上述步骤获取的服务访问地址。
返回结果示例如下:
data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" The"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":1,"total_tokens":8},"error_info":null} data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" capital"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":2,"total_tokens":9},"error_info":null} data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" of"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":3,"total_tokens":10},"error_info":null} data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" Canada"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":4,"total_tokens":11},"error_info":null} data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" is"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":5,"total_tokens":12},"error_info":null} data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":" Ottawa"}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":6,"total_tokens":13},"error_info":null} data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"","index":0,"logprobs":null,"text":"."}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":7,"total_tokens":14},"error_info":null} data: {"id":"91f9a28a-f949-40fb-b720-08ceeeb2****","choices":[{"finish_reason":"stop","index":0,"logprobs":null,"text":""}],"object":"text_completion","usage":{"prompt_tokens":7,"completion_tokens":8,"total_tokens":15},"error_info":null} data: [DONE]
- 本页导读 (1)
- 前提条件
- 使用限制
- 部署服务
- 调用服务