Qwen3-Embedding国产化部署

避开那些坑:在Atlas 300I上为vLLM部署Qwen3的完整避坑指南 本文详细解析了在Atlas 300I上部署vLLM运行Qwen3模型时可能遇到的10个关键问题及解决方案,涵盖驱动配置、Docker权限、容器化部署、模型服务启动等多个环节。通过实战经验分享,帮助开发者避开常见陷阱,提升部署效率和稳定性,特别适用于昇腾AI处理器的应用场景。 阅读详情

欢迎关注公众号:爱学习的妮妮qiang

1. 背景

  • 最近一直在做ToG的项目,其中用到了语义检索,研发环境使用A40和vllm,即可轻松部署Qwen3-Embedding-8B,但客户环境要求国产化环境,因此探索Qwen3-Embedding-8B如何在国产化环境部署。
  • 实不相瞒,本来以为仅需半天搞定的事情,我居然耗费了3天半的时间(汗颜…),究其原因,主要是包含如下几个方面:
    • 研发环境没有国产化系统及显卡,也没有相关的部署经验,
    • 网上针对特定的300I Duo部署Qwen3-Embedding-8B的教程几乎没找到,多的是910系列。但客户只有Altas 300I Duo的环境。
    • 最初两天一直在探索vllm-ascend进行部署,结果现阶段版本仍不支持。
    • 最后一天转向MIS-TEI,才终于看到曙光。
  • 下面教程就是部署成功的完整流程,各位看官如有同样环境,无脑借鉴即可,省心省力。

2. 系统环境

  • 操作系统: 麒麟Kylin V10 (Sword)
  • 显卡型号: 8卡Altlas 300I Duo
  • 驱动版本: Ascend-hdk-310p-npu-driver_25.5.1_linux-aarch64.run
  • 固件版本: Ascend-hdk-310p-npu-firmware_7.8.0.6.201.run
  • CANN版本: Ascend-cann_8.5.0_linux-aarch64.run
  • 优化算子版本: Ascend-cann-310p-ops_8.5.0_linux-aarch64.run

3. 驱动安装

# 1. 创建用户及用户组
sudo groupadd HwHiAiUser 
sudo useradd -g HwHiAiUser -d /home/HwHiAiUser -m -s /bin/bash HwHiAiUser

# 2. 安装驱动(等待几分钟)
sudo ./Ascend-hdk-310p-npu-driver_25.5.1_linux-aarch64.run --full --install-for-all --force
reboot # 重启
npu-smi info # 驱动验证

# 3. 安装固件
sudo ./Ascend-hdk-310p-npu-firmware_7.8.0.6.201.run --full
reboot

# 4. CANN驱动安装
sudo ./Ascend-cann_8.5.0_linux-aarch64.run --install

# 5. 安装优化算子驱动
sudo ./Ascend-cann-310p-ops_8.5.0_linux-aarch64.run --install

# 6. 设置驱动环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh
echo 'source /usr/local/Ascend/ascend-toolkit/set_env.sh' >> ~/.bashrc

# 7. 验证驱动是否成功
npu-smi info
python3 -c "import acl; print('ACL Load OK')"

4. Docker部署及TEI镜像拉取

# 联网环境进行拉取
docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:7.3.0-300I-Duo-aarch64

# 镜像打包及传输
docker save swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:7.3.0-300I-Duo-aarch64 -o mis-tei.tar

# 客户环境加载
docker load -i mis-tei.tar

# 模型下载Qwen3-Embedding-8B,直接通过ModelScope进行下载,此处省略其过程

5. 容器启动

  • 这块耗费的时间比较长,因为存在各种报错,最终才形成稳定版本
# 1. 编写/data/models/start_tei.sh的脚本
#!/bin/bash
source /usr/local/Ascend/ascend-toolkit/set_env.sh

export LD_PRELOAD=/usr/local/lib/python3.11/site-packages/scikit_learn.libs/libgomp-d22c30c5.so.1.0.0:/usr/lib/aarch64-linux-gnu/libgomp.so.1
export PYTHONPATH=/usr/local/Ascend/mxRag-7.3.0/ops/transformer_adapter:$PYTHONPATH
export RAG_SDK_HOME=/usr/local/Ascend/mxRag-7.3.0
export LD_LIBRARY_PATH=/usr/local/Ascend/nnal/atb/8.5.0/atb/cxx_abi_0/lib:/usr/local/Ascend/mxRag-7.3.0/ops/lib:$LD_LIBRARY_PATH

PORT=${PORT:-8080}
UDS_PATH=${UDS_PATH:-/tmp/text-embeddings-inference-server}
DEVICE_ID=${ASCEND_VISIBLE_DEVICES:-0}

export ASCEND_VISIBLE_DEVICES=$DEVICE_ID
export NPU_VISIBLE_DEVICES=$DEVICE_ID

export RANK=0
export LOCAL_RANK=0

exec /home/HwHiAiUser/.cargo/bin/text-embeddings-router \
  --model-id /home/HwHiAiUser/model/ \
  --hostname 0.0.0.0 \
  --port $PORT \
  --uds-path $UDS_PATH \
  --auto-truncate \
  --dtype float16 \
  --max-batch-tokens 16384
  
# 2. 编写启动容器的脚本:此处8张卡上默认都启动了两个进程,总计16个进程(显卡资源需监测利用率)
for i in $(seq 0 15); do
  docker stop tei-$i 2>/dev/null
  docker rm tei-$i 2>/dev/null
done

for i in $(seq 0 15); do
  DEVICE=$((i % 8)) 
  PORT=$((8080 + i))
  UDS="/tmp/tei-server-$i"

  docker run -u root -d \
    -e ENABLE_BOOST=True \
    -e TEI_NPU_DEVICE=$DEVICE \
    -e PORT=$PORT \
    -e UDS_PATH=$UDS \
    --name=tei-$i \
    --net=host \
    --privileged \
    --device=/dev/davinci_manager \
    --device=/dev/hisi_hdc \
    --device=/dev/devmm_svm \
    --device=/dev/davinci$DEVICE \
    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
    -v /usr/local/sbin:/usr/local/sbin:ro \
    -v /data/models/Qwen3-Embedding-8B:/home/HwHiAiUser/model \
    -v /data/models/start_tei.sh:/start_tei.sh \
    -v /etc/hostname:/etc/hostname:ro \
    -v /etc/hosts:/etc/hosts:ro \
    --entrypoint /bin/bash \
    swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:7.3.0-300I-Duo-aarch64 \
    /start_tei.sh

  echo "Started tei-$i on Device=$DEVICE PORT=$PORT"
  sleep 5
done

6. nginx负载均衡转发

# 1. 镜像拉取
docker pull docker.1ms.run/nginx:latest

# 2. nginx配置文件
mkdir -p /data/nginx/logs
cat > /data/nginx/tei.conf << 'EOF'
upstream tei_cluster {
    least_conn;
    server 10.100.122.3:8080;
    server 10.100.122.3:8081;
    server 10.100.122.3:8082;
    server 10.100.122.3:8083;
    server 10.100.122.3:8084;
    server 10.100.122.3:8085;
    server 10.100.122.3:8086;
    server 10.100.122.3:8087;
    server 10.100.122.3:8088;
    server 10.100.122.3:8089;
    server 10.100.122.3:8090;
    server 10.100.122.3:8091;
    server 10.100.122.3:8092;
    server 10.100.122.3:8093;
    server 10.100.122.3:8094;
    server 10.100.122.3:8095;
    keepalive 32;
}

server {
    listen 8000;

    location / {
        proxy_pass http://tei_cluster;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 120s;
        proxy_connect_timeout 5s;
        proxy_send_timeout 120s;
    }

    location /nginx_status {
        stub_status on;
        allow 127.0.0.1;
        deny all;
    }
}
EOF

# 3. nginx容器启动
docker run -d \
--name=nginx-tei \
--net=host \
-v /data/nginx/tei.conf:/etc/nginx/conf.d/tei.conf:ro \
-v /data/nginx/logs:/var/log/nginx \
docker.1ms.run/nginx:latest

7. 效果测试

# 效果测试,需要对比研发环境与客户环境两个Embedding模型输出向量的差异性。
# 经实验测试,二者的精度在小数点后第4位,影响较小
curl http://10.100.122.3:8000/embed -X POST -H "Content-Type: application/json" -d '{"inputs": ["hello", "你好"]}' 

8. 思考

  • 刚开始使用了vllm-ascend,版本v0.11.0-310p-openeuler,vllm-ascend目前只是实验性质支持300I Duo,且大多数均是针对Qwen3系列文本生成模型,而非嵌入模型。
  • 启动容器,底层的各种算子不兼容。预计未来,开源社区会逐步支持,v0.14.0版本已开始逐步支撑300I Duo。

9. 参考

  • (1) 驱动及固件地址: https://www.hiascend.com/hardware/firmware-drivers/community?product=2&model=17&cann=8.5.0&driver=Ascend+HDK+25.5.1
  • (2) Cann及算子地址: https://www.hiascend.com/cann/download
  • (3) MIS-TEI地址: https://www.hiascend.com/developer/ascendhub/detail/07a016975cc341f3a5ae131f2b52399d
  • (4) ascend docker地址: https://foruda.gitee.com/attach_file/1753366534257099705/ascend-docker-runtime_7.1.rc1_linux-aarch64.run?token=f5c048c0a73b0028793e57db00e13be1&ts=1772703667&attname=Ascend-docker-runtime_7.1.RC1_linux-aarch64.run
Qwen3-Embedding国产化部署实战:从ONNX转换到昇腾推理 文本嵌入模型将自然语言映射为高维向量,是语义检索、RAG知识库和文本相似度计算的基础技术。在大规模工程应用中,模型推理的效率和硬件兼容性直接影响服务稳定性。随着国产AI芯片生态快速发展,如何将先进的嵌入模型无缝迁移到昇腾、寒武纪等国产算力平台,成为众多企业智能化升级必须跨越的障碍。ONNX作为开放式神经网络交换格式,提供了一条可行的模型移植路径,通过算子适配和静态图优化,能够在不同推理引擎间保持输出一致性。以Qwen3-Embedding为例,系统梳理了从PyTorch导出ONNX、MindIE模型转换、推 阅读详情

相关推荐

Qwen3-Embedding国产化部署全栈适配指南

嵌入模型(Embedding Model)是AI应用中实现语义理解与向量检索的基础组件,其推理性能高度依赖底层硬件加速、操作系统兼容性及AI框架运行时支持。Qwen3-Embedding作为新一代高维稠密向量生成模型,采用FP16混合精度、动态RoPE位置编码与内存池优化机制,在国产芯片(如昇腾910B、寒武纪MLU370)、国产OS(统信UOS、麒麟V10)和国产AI框架(MindSpore、Cambricon PyTorch)上面临指令集映射、ABI兼容、算子重编译等核心挑战。技术价值在于保障低延迟(P

weixin_34288121的博客 390

vllm-ascend版本策略解析:如何选择适合你的昇腾推理插件版本

vllm-ascend作为昇腾硬件平台上的vLLM社区插件,其版本管理直接影响模型部署的稳定性与性能。本文将系统解析vllm-ascend的版本策略,帮助开发者根据硬件环境、软件依赖和功能需求选择最优版本,实现昇腾NPU上的高效LLM推理。 ## 版本命名规则与类型解析 vllm-ascend遵循[PEP 440](https://peps.python.org/pep-0440/)规范,采用

gitblog_07813的博客 749

Qwen3-Embedding-8B与Atlas 800I A2的国产化AI部署实践

嵌入模型(Embedding)作为自然语言处理中的基础技术,通过将文本映射到高维向量空间实现语义表示。其核心原理是利用深度神经网络学习词汇间的分布式表征,在信息检索、推荐系统等场景中发挥关键作用。结合重排序模型(Reranker)可构建更精准的检索系统,Qwen3-8B系列模型在8B参数量级实现了效果与效率的平衡。华为Atlas 800I A2推理服务器搭载昇腾910B NPU,配合vllm-ascend加速框架形成完整国产技术栈,特别适合金融、政务等对数据安全要求高的离线部署场景。本文详细展示从环境配置、

weixin_29056781的博客 301

吃透Linux/C++系统编程:文件与I/O操作从入门到避坑

最近一直在做ToG的项目,其中用到了语义检索,研发环境使用A40和vllm,即可轻松部署Qwen3-Embedding-8B,但客户环境要求国产化环境,因此探索Qwen3-Embedding-8B如何在国产化环境部署。驱动版本: Ascend-hdk-310p-npu-driver_25.5.1_linux-aarch64.run。优化算子版本: Ascend-cann-310p-ops_8.5.0_linux-aarch64.run。LLM应用实战: 文档问答系统Kotaemon-1. 简介及部署实践。

oG99bh7CK的博客 263

Qwen3-Embedding国产化部署实战:从模型原理到MindIE调优全解析

文本向量化是构建RAG检索和私有知识库的基石,Embedding模型的质量直接决定了召回效果的上限。在信创与数据合规要求下,如何让高性能向量模型在国产芯片上稳定运行,成为越来越多团队必须面对的工程难题。理解decoder-only架构如何通过双向注意力机制实现语义表示,掌握MRL嵌套向量在降本增效中的价值,是选型与调优的关键。国产化部署的真正挑战在于推理框架的适配与算子优化,MindIE作为昇腾平台的核心推理引擎,通过图编译和静态显存分配,能够将模型性能发挥到接近CUDA生态的水平。本文以Qwen3-Emb

weixin_42554042的博客 293

Qwen3-Embedding本地化部署实战:从模型下载到ONNX服务化

文本嵌入模型是RAG系统和语义检索的根基,它能把文本转换为高维向量,让机器理解语义相似度。Qwen3-Embedding作为阿里开源的新一代嵌入模型,凭借长上下文支持和MRL可变维度输出,在知识库问答与信息检索场景中表现亮眼。然而实际工程中,企业内网和国产化算力环境往往无法直接调用云端API,更不允许依赖国外推理框架。本文从嵌入模型的基本原理出发,介绍如何在完全离线、国产CPU/加速卡条件下,完成Qwen3-Embedding的私有化部署:包括模型选型、离线依赖搬运、transformers快速验证、ONN

weixin_29081101的博客 343

Atlas300I(duo)昇腾部署Qwen3-Embedding和Qwen3-Reranker【详细版】

本文介绍了在昇腾Atlas卡上运行Qwen3-Embedding-0___6B模型的完整流程。首先需要安装驱动、固件和Ascend-docker-runtime环境,然后下载官方使能镜像和模型文件。通过配置docker run命令启动容器,映射设备文件和环境变量,最后验证模型是否成功启动。整个过程详细说明了从环境准备到模型部署的各个步骤,为在昇腾硬件上运行大模型提供了完整的操作指南。

mizhiakk的博客 2480

Qwen3-Embedding私有化部署实战:从RAG到混合检索的工程实践

RAG系统依赖高质量的向量化能力,而Embedding模型的选择直接决定检索效果的上限。传统API调用虽然便捷,但在数据安全、批量成本和精细调优面前,私有化部署已成为企业知识库与语义检索场景的必然路径。本文从Embedding模型的工作原理出发,对比CPU离线推理与GPU服务化部署的适用场景,重点讲解基于vLLM将Qwen3-Embedding高效接入RAG流程的具体方法,并进一步介绍稀疏向量与稠密向量混合检索的实践技巧。通过本地化部署,开发者可以自由调优Prompt模板、并发策略和量化方式,在专有名词、长

weixin_32377497的博客 250

Alpamayo-R1 智能驾驶VLA大模型昇腾A2平台使用指南

<br> 本目录介绍在 A2 上如何对Alpamayo-R1(下文简称 AR-1)模型进行推理,并附带精度验证及输出示例。 ## AR-1整体介绍 AR-1是英伟达提出的面向L4/L5级智能驾驶的视觉-语言-动作(VLA)大模型,旨在解决自动驾驶在长尾场景中因黑箱决策导致的脆弱性与不可解释性问题。该模型通过融合视觉感知与自然语言指令,构建结构化的场景理解,并引入显式的因果思维链(Chain-of

gitblog_00539的博客 263

HAL库:中断处理函数 及 weak弱声明中断回调函数 详解

HAL库中断处理函数 及 weak弱声明中断回调函数

L_Z_J_I的博客 5170

python爬取淘宝数据

python爬取淘宝数据淘宝评论 淘宝评论 打开淘宝,选择打开需要爬取的商品的评论。在谷歌浏览器选择开发者工具,选择network,找到list_detail_rate.htm?itemId=624466733121,点击headers、previews,可以看见相应的评论数据。 爬取一页屏评论代码如下 import re import requests headers = { 'Referer': '在headers中', 'User-Agent': '在

qq_36333776的博客 5797

Qwen3-Embedding昇腾部署:国产化RAG向量检索实战

在人工智能与大数据技术快速发展的当下,向量检索作为支撑语义理解与知识问答的核心技术,正深度融入各类智能应用。其基本原理是将文本映射为高维向量,通过相似度计算实现语义匹配,这一技术价值在私有化知识库、RAG等场景中尤为突出。然而,实际工程落地常面临模型选择、硬件适配与服务化部署等挑战。本文聚焦国产化环境下的部署实践,结合Qwen3-Embedding与昇腾NPU的组合,讲解从选型逻辑、环境搭建到模型加载、服务封装及RAG对接的完整链路。内容覆盖Qwen3-Embedding的型号差异、MATRYOSHKA_D

weixin_29044713的博客 336

Camunda流程引擎 Modeler (二)

Camunda Modeler是Camunda官方提供的建模器: 独立安装的建模器([windows、linux、mac]

1311

Qwen3-Embedding国产化部署实战:从环境配置到推理优化

向量化模型是语义检索与RAG系统的地基,其核心作用是将文本转化为高维语义向量,直接决定召回质量。在国产化硬件环境下,模型部署面临异构加速卡、框架兼容性和算子支持度等多重挑战。Qwen3-Embedding基于Transformer架构,支持长文本语义表征,并提供多尺寸权重,为飞腾、昇腾等国产平台提供灵活适配空间。通过合理选择推理框架、动态Batch优化、量化压缩以及指令模板调优,可在信创环境中实现高吞吐、低延迟的向量化服务。该技术广泛适用于企业知识库、智能客服、合同审查等场景,尤其适合数据不出内网的安全合规

weixin_42701915的博客 149

西电微机系统课程设计——步进电机开环控制系统设计

西电微机系统课程设计——步进电机开环控制系统设计 一、课程设计目的 1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。 2.加深对 A/D 和并行接口芯片的工作方式和编程方法的理解。 3.搞懂步进电机的工作原理及控制方式,掌握开环控制系统的设计思路和实现方法。 二、课程设计的内容 手动调节电位器旋钮(0V~5V),通过 ADC0809 模拟输入水库水位 0 米~50 米,CPU收到水位信号后,根据水位高度控制步进电机(水闸)进行调节。 三、系统功能与设计要求 基本功能要求 手

OutlierLi's Blog 7524

Window10 intel realsense D435安装并实现opencv显示realsense读取的彩色和深度数据(QT+openCV+rsD35)

(1)点击"官方指南" 来到下载页,-&gt;最新的稳定版本发布 (本人下的2.16.5,现在最新2.17.0) 不需要做开发,只要下载Intel RealSense Viewer就好,这个就是相机的可视化界面,简洁明了。对应的安装包是Intel.RealSense.Viewer.exe。 本人的毕设要用到深度图做开发,所以安装Intel.RealSense.SDK.exe,SDK...

Pabebe的博客 1万+

Qwen3-Embedding国产化部署实战:从昇腾适配到vLLM性能调优

在信创与国产化替代的浪潮下,文本向量化模型的落地已不再局限于GPU环境,基于昇腾、海光等国产芯片的推理部署正成为RAG检索与语义相似度计算场景中的关键环节。Embedding模型通过将文本映射为高维向量,为知识库检索和语义匹配提供基础能力,其部署质量直接决定了上层应用的召回效果与响应速度。然而,国产化硬件上的算子兼容性、推理框架选型以及显存资源管理,往往比模型本身精度更影响生产环境的稳定性。本文从向量化技术的基础原理出发,介绍如何在麒麟操作系统上完成Qwen3-Embedding的权重转换与推理服务搭建,并

weixin_29051811的博客 307

深入解析国家企业征信系统瑞数6vmp算法逆向实战

本文深入解析了国家企业征信系统所采用的双层防护机制,重点聚焦于瑞数6代vmp算法的逆向实战。文章详细拆解了从加速乐521状态码的绕过,到瑞数412挑战的核心算法还原过程,提供了通过动态Hook、日志分析进行算法逆向,并用Python实现自动化请求链的完整技术方案,旨在为安全研究与技术学习提供参考。

yellow的专栏 612
上一篇: LLM应用实践: NoteBookLM初次使用
下一篇: 龙虾白嫖指南,请查收
mengrennwpu
博客等级 码龄15年 262粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mengrennwpu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值