昇腾推理微服务MIS:2步部署高性能模型服务,AI应用小时级构建
发表于 2025/06/19
1. 背景
AI领域正在快速发展,部署和构建大模型应用时面临多个挑战:
(1)多引擎适配困难
现代业务场景需要vLLM、MindIE、TEI等多个LLM引擎协同工作,以应对不同场景的差异化需求,环境配置和适配更加困难。
(2)多硬件适配困难
面对多样化算力硬件,传统部署需针对硬件进行定制化配置,随着规模增大,人工配置效率降低,且性能不佳。
(3)部署扩展易用性差
随着应用复杂度增加,为保证在不同基础设施上的部署一致性,同时实现从单卡到多机的扩展,高效部署扩展能力变得更加重要。
面对这些挑战,昇腾推理微服务MIS内置多引擎配置,多硬件调优,弹性化扩展,实现2步部署模型服务,助力用户小时级构建AI应用。
2. 技术特性与价值
昇腾推理微服务MIS六层架构分层设计:
MIS分层架构图
MIS分层架构从部署到提供服务自下而上涵盖了:环境准备、优化参数配置解析、引擎后端选择、引擎参数更新与配置、服务注册并启动、最终提供OpenAI与TEI兼容的 API服务。基于MIS,整体部署流程简洁快速。
2.1 MIS具有五大特点
(1)统一推理框架:集成多种引擎(vLLM,MindIE,TEI),对外提供统一框架
(2)支持模型广泛:支持主流大语言、多模态、向量化等不同种类模型
(3)内置性能优化:内置昇腾硬件亲和的深度性能优化
(4)易用性部署:镜像部署,无需繁琐配置,可在数据中心、云端快速部署
(5)标准API集成:提供标准接口,便于集成主流大模型系统
2.2 关键特性
特性 | 说明 |
---|---|
MIS支持多种引擎类型 | MIS支持如下引擎: •vLLM:UC Berkeley推出的一种高性能开源LLM 推理和服务库 •MindIE:华为自研推理引擎,包含昇腾亲和加速特性 •TEI-service:Hugging Face推出的一种用于文本嵌入和推理的引擎 |
MIS支持通过环境变量切换运行配置 | 支持如下的运行配置: •推理执行后端 •量化模型配置 •高吞吐/低时延/均衡默认三种最优参数配置 •可配置不同的服务端口 |
MIS支持服务状态统计 | 基于Prometheus,记录服务状态(支持vLLM后端推理引擎) |
3. 快速部署(以QwQ-32B为例)
以昇腾Atlas 800I A2 设备为硬件,以下为软件配套:
镜像版本 | CANN版本 | PyTorch版本 |
---|---|---|
7.1.T2-800I-A2-aarch64 | 8.0.0(LLM) / 8.1.RC1(VLM) | 2.5.1 |
3.1 启动推理微服务
注:确保开始前,已正确安装Atlas 800I A2的固件和驱动软件
1. 设置模型权重加载方式
设置本地缓存路径为环境变量LOCAL_CACHE_PATH或跳转至魔乐社区链接下载模型权重,并将模型权重对应文件路径设置为环境变量LOCAL_CACHE_PATH:
# 设置模型下载缓存路径
export LOCAL_CACHE_PATH=~/models # ~/models可替换为任意路径
微服务会从LOCAL_CACHE_PATH路径下的 MindSDK/QwQ-32B 进行权重的加载,请确保模型放置路径正确。
2. 启动容器镜像
以BF16权重为例, 其他权重类型的容器启动需更改环境变量MIS_CONFIG,QwQ-32B 推理微服务的典型优化配置选项如下表:
MIS_CONFIG可选值 | 服务器硬件型号 | 计算卡规格 | 数据类型 | 量化方法 | 后端 | 性能倾向 |
---|---|---|---|---|---|---|
atlas800ia2-4x32gb-bf16-vllm-default | Atlas 800I A2 | 4x32GB | BF16 | - | vLLM | 均衡 |
atlas800ia2-4x32gb-bf16-mindie-service-throughput | Atlas 800I A2 | 4x32GB | BF16 | - | MindIE-Service | 高吞吐 |
atlas800ia2-2x32gb-int8-msms-mindie-service-latency | Atlas 800I A2 | 4x32GB | INT8 | msModelSlim | MindIE-Service | 低时延 |
Ascend Docker Runtime 启动
注:如果尚未安装 Ascend Docker Runtime,请先获取安装包,并参考 Ascend Docker Runtime安装部署指南完成安装。
# 设置容器名称
export CONTAINER_NAME=qwq-32b
# 选择镜像
export IMG_NAME=swr.cn-south-1.myhuaweicloud.com/ascendhub/qwq-32b:0.1.2-arm64
# 启动推理微服务,使用ASCEND_VISIBLE_DEVICES选择卡号,范围[0,7],示例选择0-3卡
docker run -itd \
--name=$CONTAINER_NAME \
-e ASCEND_VISIBLE_DEVICES=0-3 \
-e MIS_CONFIG=atlas800ia2-4x32gb-bf16-vllm-default \
-v $LOCAL_CACHE_PATH:/opt/mis/.cache \
-p 8000:8000 \
--shm-size 1gb \
$IMG_NAME
3. 在容器启动后,可通过如下命令进入容器查看日志
# 查看推理容器日志
docker logs -f ${CONTAINER_NAME}
推理微服务容器内出现以下消息表示启动成功。
INFO: Application startup complete.
3.2 请求推理微服务
以Python 调用为例,使用OpenAI API发起对话请求(OpenAI Chat Completion请求,以BF16权重为例)。
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/openai/v1",
api_key="dummy_key"
)
response = client.chat.completions.create(
model="QwQ-32B",
messages=[
{"role": "system", "content": "你是一个友好的AI助手。"},
{"role": "user", "content": "你好"},
],
max_tokens=100,
temperature=0.6,
top_p=0.6,
)
print(response.choices[0].message)
执行成功后返回(参考样例)
ChatCompletionMessage(
content="你好!很高兴为你提供帮助。有什么我可以帮助你的吗?",
refusal=None,
role="assistant",
audio=None,
function_call=None,
tool_calls=[],
reasoning_content=None,
)
3.3 停止推理微服务
如果选择指定--name来启动Docker容器,则可以使用以下命令停止正在运行的容器。
docker stop $CONTAINER_NAME
如果docker stop没有响应,请使用docker kill命令完成容器销毁。