使用 mis-tei 在昇腾310P上部署 bge-m3模型

前言

BGE-M3 是 BAAI 推出的开源多语言通用嵌入模型,支持文本嵌入、相似度计算、检索重排等多种任务,凭借优异的多语言适配能力和精度表现,被广泛应用于 RAG 知识库、文本检索、语义匹配等 AI 场景。

昇腾 310P 是华为面向推理场景推出的高性能 NPU 芯片,具备低功耗、高吞吐的推理优势。而 mis-tei 是华为适配昇腾硬件的高性能模型推理服务框架,专为 Embedding、Reranker 类模型优化,支持容器化快速部署、动态批处理、硬件加速,是昇腾设备上部署文本嵌入模型的最优方案之一。

本文将从零开始,手把手完成 mis-tei + 昇腾310P + BGE-M3 的完整部署流程,包含环境校验、模型下载、容器启动、接口测试、问题排查,全程可直接复刻,适配生产级部署需求。
之前有部署 DeepSeek-R1-Distill-Qwen-32B的文章,可参考:https://blog.csdn.net/m0_46879864/article/details/155946784?fromshare=blogdetail&sharetype=blogdetail&sharerId=155946784&sharerefer=PC&sharesource=m0_46879864&sharefrom=from_link

环境说明

本次部署的硬件、软件环境统一规范如下,确保部署无兼容性问题:

  • 硬件设备:昇腾 310P NPU

  • 系统环境:银河麒麟 aarch64

  • 驱动版本:昇腾配套驱动 & CANN 7.1 及以上版本

  • 部署框架:mis-tei 昇腾定制镜像(适配310P)

  • 部署模型:BAAI/bge-m3

  • 运行方式:Docker 容器化部署

一、前置环境校验

部署前必须校验昇腾硬件与驱动环境正常,避免后续部署报错。

1.1 查看NPU设备状态

执行以下命令查看310P NPU是否正常识别:

npu-smi info

正常输出会展示 NPU 设备型号、算力、显存、温度等信息,若提示无设备,请重新安装昇腾驱动与CANN套件。

1.2 校验Docker环境

mis-tei 基于Docker容器运行,需确保Docker正常启动:

docker --version
systemctl status docker

二、拉取适配310P的mis-tei镜像

mis-tei 提供昇腾310P专属优化镜像,无需手动适配框架,内置CANN、推理加速库,开箱即用。推荐使用华为云公共镜像仓库版本,无需企业权限申请,直接拉取即可。

# 拉取适配昇腾310P的mis-tei镜像
docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:7.3.0-300I-Duo-aarch64

拉取完成后,通过以下命令确认镜像存在:

docker images | grep mis-tei

三、下载BGE-M3模型权重

为保证部署稳定,建议本地提前下载模型权重,避免容器运行时在线拉取超时。
下载BGE-M3的权重模型,保存到服务器上的/home/model_path/bge-m3

3.2 下载模型到本地目录

下载地址:https://hf-mirror.com/BAAI/bge-m3/tree/main

# 创建模型存放目录
mkdir -p /home/model_path/bge-m3

四、启动mis-tei容器部署BGE-M3

通过Docker挂载本地模型、绑定NPU设备、映射端口,启动mis-tei推理服务,核心命令适配昇腾310P硬件特性。

4.1 启动部署命令,使用docker-compose

启动:docker-compose up -d
docker-compose.yml参考如下配置

version: '3.8'

services:
  bge-m3-mistei:
    image: swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:7.3.0-300I-Duo-aarch64
    container_name: bge-m3-mistei
    user: root
    devices:
      - /dev/davinci0
      - /dev/davinci_manager
      - /dev/devmm_svm
      - /dev/hisi_hdc
    volumes:
      - /usr/local/dcmi:/usr/local/dcmi
      - /usr/local/bin/npu-smi:/usr/local/bin/npu-smi
      - /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/
      - /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info
      - /etc/ascend_install.info:/etc/ascend_install.info
      - /home/model_path/bge-m3:/home/HwHiAiUser/model/bge-m3
    ports:
      - "8000:8000"
    command:
      - bge-m3
      - 0.0.0.0
      - "8000"
    restart: always

4.3 查看容器运行状态

# 查看容器是否启动成功
docker ps | grep bge-m3-mistei

# 查看服务启动日志,排查异常
docker logs -f bge-m3-mistei

五、接口功能测试

mis-tei 默认提供标准化的 Embedding 推理接口,支持单文本、批量文本向量化,可直接通过 curl 或代码调用。

5.1 单文本嵌入测试

curl 127.0.0.1:8000/v1/embeddings \
-X POST \
-d '{"inputs":"昇腾310P部署BGE-M3模型测试"}' \
-H 'Content-Type: application/json'

正常返回:文本对应的向量数组、向量维度、推理耗时等信息。

5.2 批量文本嵌入测试

curl 127.0.0.1:8000/v1/embeddings \
-X POST \
-d '{"inputs":["人工智能模型部署","昇腾NPU推理加速","BGE-M3多语言嵌入"]}' \
-H 'Content-Type: application/json'

5.3 Python代码调用测试

适配项目开发场景,提供Python请求示例:

import requests

url = "http://127.0.0.1:8000/v1/embeddings"
headers = {"Content-Type": "application/json"}
data = {"inputs": "基于昇腾310P的BGE-M3语义检索"}

response = requests.post(url, json=data)
print("向量维度:", len(response.json()["embeddings"][0]))
print("推理结果:", response.json())

六、常见问题排查

6.1 容器启动后立即退出

大概率是驱动挂载失败、NPU设备未识别或模型文件损坏。解决方案:重新校验 npu-smi info 状态,重新下载完整模型权重。

6.2 接口调用超时/无响应

检查服务器防火墙是否放行8081端口,确认容器端口映射正常,通过 docker logs 查看服务是否加载完成。

6.3 模型加载报错

确保使用310P专属mis-tei镜像,不混用910系列镜像;同时保证CANN版本不低于7.1,适配模型推理依赖。

七、部署优化建议(生产可用)

  • 资源限制:启动容器时添加 --memory 16g --cpus 8限制资源占用,避免抢占系统资源

  • 自动重启:添加 --restart always 参数,实现服务宕机自启

  • 性能调优:根据业务并发量调整 max-batch-size,高并发场景可适当调大

  • 日志持久化:挂载日志目录,方便线上问题追溯排查

总结

本文基于 mis-tei 框架完成了昇腾310P NPU 下 BGE-M3 模型的全流程容器化部署,相较于原生推理方式,mis-tei 针对昇腾硬件做了深度优化,推理吞吐更高、延迟更低,且部署流程简洁、服务稳定性强。

部署完成的服务支持标准化HTTP接口,可快速接入 RAG 知识库、语义检索、文本相似度匹配等业务场景,完全满足开发测试与生产环境使用需求。后续可基于该服务拓展批量推理、负载均衡、接口鉴权等能力,搭建完整的文本嵌入推理服务体系。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐