模型部署服务
更新时间:2024-09-27
在完成模型的训练后,可以通过模型部署能力快速测试。
前提条件
模型部署前,请确保您已成功创建资源池。
操作步骤
- 登录百舸异构计算平台AIHC控制台。
- 进入模型部署列表页面,点击新建按钮,创建模型部署。
- 填写模型服务信息
参数 | 说明 |
---|---|
名称 | 模型部署实例的名称。支持小写字母、数字以及 - 且开头必须是小写字母,结尾必须是小写字母或数字,长度1-50 |
资源池 | 选择模型需要部署的资源池 |
队列 | 选择模型需要部署的资源池中的队列 |
模型加速 | 支持的模型:LLAMA2、CodeLlama、ChatGLM2、Baichuan1、Baichuan2和Qwen系列模型部署 推理加速:AIAK加速引擎是百舸异构计算平台针对于大模型推理场景,推出的推理加速能力,使用百舸平台部署模型服务默认提供推理加速能力。 |
模型配置 | 需要将训练完成的模型权重文件挂载到指定路径(如需模型量化,可使用AIAK模型量化工具进行量化 模型量化) PFS文件路径: 1. 模型权重文件、自定义tokenizer和自定义extension在PFS的绝对路径,其中模型权重文件地址必填,自定义tokenizer和自定义extension选填 2.若您在训练阶段,使用Lora微调,挂载模型权重文件时,请使用模型权重合并工具将权重合并后挂载(注意:此工具仅适用一个Lora模型的场景,若需要部署多个Lora模型,请开启Multi Lora) 3.模型权重文件挂载到容器内的路径,默认为 /mnt/model 不可修改;自定义tokenizer挂载到容器内的路径默认为 /mnt/tokenizer ;自定义extension挂载到容器内的路径,默认为 /mnt/extension |
Multi Lora | 在训练阶段,使用Lora微调多个Lora模型后可以开启Multi lora功能将多个Lora模型和Base模型合并部署,减少Lora训练后的模型部署资源消耗;Base模型权重和Lora模型权重需分别填写文件路径,无需使用权重合并工具合并权重(注意:仅适用>=2个Lora模型的场景) |
推理精度 | 支持INT8(Weight Only) ,FP16 ,BF16 选择的精度需和您上传的模型权重文件保持一致,若您首次选择INT8推理精度进行推理服务部署,请您务必按照此文档中的步骤进行模型量化 模型量化 注意:如需量化1个Lora模型,请先使用权重合并工具合并权重 |
- 填写资源配置信息
参数 | 说明 |
---|---|
实例数 | 建议您配置多个实例,以避免单点部署带来的风险。 |
实例配置 | 配置实例的CPU/内存/加速芯片类型/卡数 |
高可用部署 | 开启后,实例将会尽量分散到不同节点部署,降低服务不可用的几率 |
防抢占策略 | 开启后,推理服务实例将不会被训练任务抢占资源 |
- 访问配置
参数 | 说明 |
---|---|
私有网络 | 默认使用资源池VPC网络 |
流量接入方式 | 平台提供两种流量接入方式 1.VPC内网的访问方式:可以被资源池所在VPC下的其他资源访问。 2.公网访问方式,可以被公网IP的其他资源访问。 备注:首次创建模型部署,自动创建BLB作为流量接入点,将提供VPC内网访问入口, 可以被资源池所在VPC下的其他资源访问。此资源池内后续新建的服务,可以复用此BLB作为流量接入点。若您选择公网访问接入点,自动创建EIP作为公网IP访问入口。 |
- 单击完成,进行模型部署。
手动扩缩容实例
1.登录百舸异构计算平台AIHC控制台。
2.进入模型部署列表页面,点击扩缩容按钮。
3.填写期望扩缩容后服务实例数,点击完成按钮。当您的队列资源充足时,推理服务会从部署中状态变更为运行中状态,完成服务扩容。
自定义extension样例代码
样例代码如下,您可以参考样例代码,extension插件说明 修改具体函数实现,来实现自定义需求,如自定义模型preprocess和postprocess流程等。
注意:extension插件命名必须为"vllm_extension.py"和“template.json”。
Weight Only INT8量化使用方法
容器启动量化工具使用方式
请参考此文档使用容器启动量化工具 模型量化
K8S部署量化工具使用方式
weight_only_int8 权重转化 deployment yaml示例
请注意修改您的原始模型权重输入路径和量化后的模型权重输出路径,参数介绍同上。
apiVersion: apps/v1
kind: Deployment
metadata:
name: vllm-quantization
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: vllm-quantization
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: vllm-quantization
spec:
containers:
- command:
- /bin/bash
- '-c'
- "sleep inf"
# weight_only_int8量化- "cd /workspace/aiak-model-quant-tool && python3 model_quantization.py -i /input_path/ -o ./output_path/ -tp 1 -quant_type weight_only_int8 -t fp16"
# 使用示例 python3 model_quantization.py -i /input_path/ -o /output_path/ -quant_type weight_only_int8 -tp 2
image: 请在 百舸异构计算平台>AI加速套件 中获取最新版本AIAK-Inference-LLM镜像
imagePullPolicy: Always
name: vllm
# resources:
# limits:
# baidu.com/a100_80g_cgpu: "1"
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /mnt/pfs
name: pfs
- mountPath: /dev/shm
name: cache-volume
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: volcano
securityContext: {}
terminationGracePeriodSeconds: 60
volumes:
- name: pfs
persistentVolumeClaim:
claimName: pvc-pfs
- emptyDir:
medium: Memory
name: cache-volume
MultiLoRA支持模型及参数列表
目前控制台支持MultiLoRA功能的模型和对应的加速芯片类型和数量配置如下表所示:
模型类别 | 模型参数量 | 支持加速芯片数量 | 支持加速芯片环境 |
---|---|---|---|
Qwen | Qwen/Qwen-14B | 1、2 | A800 |
Qwen | Qwen/Qwen-14B-Chat | 1、2 | A800 |
Qwen | Qwen/Qwen-72B | 4、8 | A800 |
Qwen | Qwen/Qwen-72B-Chat | 4、8 | A800 |
Qwen 2 | Qwen/Qwen2-0.5B-Instruct | 1 | A800 |
Qwen 2 | Qwen/Qwen2-1.5B-Instruct | 1 | A800 |
Qwen 2 | Qwen/Qwen2-7B-Instruct | 1 | A800 |