历史版本6 :【信创】Qwen大模型部署 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

本文将介绍在信创环境下,FineChatBI 如何连接大模型

2. 环境准备编辑

硬件要求:

配置项
配置要求
NPU支持 910b3、910b4 *8、310p *4
服务器Atlas 800 和 Atlas 300I Duo
显存单卡显存需达到 64GB

软件要求:

配置项
配置要求
操作系统宿主机要求为 openEuler 22.03 LTS(aarch64)
mindie 容器内部为 Ubuntu 22.04.4 LTS
Python宿主机要求 Python v3.8 及以上,推荐 3.9
mindie 容器内部为 Python v3.11.10

NPU 驱动

版本为 24.1.rc3
Docker版本为 26.1.3,且容器引擎必须为 1.11.2 版本及以上

模型文件要求:

在部署 Qwen 模型时,模型文件需满足以下特定要求,以确保模型能在华为昇腾硬件平台上正常运行:

  • Qwen 微调后的权重文件必须为全精度,支持的数据类型为 fp16 或 fp32,并且文件类型仅支持 safetensor 格式。在模型导出过程中,请勿使用量化操作,量化会降低模型精度,影响推理结果的准确性。

  • 如果使用 llama-factory 工具对模型进行微调,需要按照官方文档的要求配置 yaml 文件。

  • 如果使用 Atlas 300I Duo 服务器进行模型部署,模型的 torch dtype 只能设置为 float16,不支持 bfloat16。

3. 部署步骤编辑

3.1 下载 mindle 镜像

1)进入 mindie 镜像仓库 ,填写表单申请下载权限,审批通过后根据官方网站提供的配套版本选择合适的 mindie 镜像下载。

2)以 root 登录服务器,并输入以下指令获取对华为镜像仓库的访问权限,执行此命令后,系统将提示你输入密码。

# -u 后面跟着的是用户名,请更换为用户自己在镜像仓库的身份标识
docker login -u cn - south - 1@1BWORLDNQR92OPTMVF02 swr.cn - south - 1.myhuaweicloud.com
# -u 后面跟着的是用户名,请更换为用户自己在镜像仓库的身份标识docker login -u cn - south - 1@1BWORLDNQR92OPTMVF02 swr.cn - south - 1.myhuaweicloud.com

3)获得镜像仓库的访问权限后,即可下载 mindie 镜像。

# 需根据用户要下载的镜像的实际地址和版本修改命令docker pull swr.cn - south - 1.myhuaweicloud.com/ascendhub/mindie:1.0.RC3 - 800I - A2 - arm64

4)输入命令,检查镜像下载结果

# 如果下载成功,你将看到包含镜像名称、标签(版本号)、镜像 ID、创建时间及镜像大小等相关信息的输出结果# 仔细核对版本号是否与你预期下载的一致,若一致则表示镜像已成功下载到本地docker images | grep mindie

3.2 模型下载

1)创建目录 /home/qwen2_5_sft_0929

mkdir -p /home/qwen2_5_sft_0929

2)使用 wget 命令将模型文件下载到指定目录

wget -P /home/qwen2_5_sft_0929 <模型下载地址>

3)解压模型文件

# qwen_sft_0929.tar.gz为压缩包名,用户需根据实际更改tar -xvzf /home/qwen2_5_sft_0929/qwen_sft_0929.tar.gz -C /home/qwen2_5_sft_0929

3.3 创建并运行容器

注:910 系列芯片都不支持容器共享。使用的时候,一张卡只能挂载到一个容器。310P3 支持容器共享,需要通过 npu - smi 命令开启。

docker run -it -d \    # 使用宿主机网络栈,使容器直接使用宿主机网络配置    --net=host \    # 设置容器的共享内存大小为 1GB,满足某些应用程序对共享内存的需求    --shm-size=1g \    # 为容器命名为 mindie-container,便于后续管理和识别    --name mindie-container \    # 映射昇腾 NPU 相关管理设备到容器内    --device=/dev/davinci_manager \    --device=/dev/hisi_hdc \    --device=/dev/devmm_svm \    # 映射 NPU 卡(序号 0- 7)到容器内,让容器可使用这些 NPU 进行计算    #  注意:请根据 npu - smi 实际显示的可用卡序号修改这里的映射,相应卡槽没有卡的可以删掉    --device=/dev/davinci0 \    --device=/dev/davinci1 \    --device=/dev/davinci2 \    --device=/dev/davinci3 \    --device=/dev/davinci4 \    --device=/dev/davinci5 \    --device=/dev/davinci6 \    --device=/dev/davinci7 \    # 只读挂载宿主机的昇腾驱动目录到容器内    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \    # 只读挂载宿主机的 sbin 目录到容器内    -v /usr/local/sbin:/usr/local/sbin:ro \    # 只读挂载宿主机指定目录到容器的 /workspace/weights 目录    -v /home/qwen2_5_sft_0929/qwen2_5_sft_0929:/workspace/weights:ro \    # 使用指定的华为云 SWR 镜像    swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.RC3-800I-A2-arm64 \    # 在容器内启动 bash 终端,方便用户进行交互操作    bash

3.4 启动 mindie 服务

1)进入 3.3 节创建的 mindie-container 容器

# 进入 mindie-container 容器docker exec -it mindie-container bash

2)进入 mindie 服务的启动路径

# 执行此命令进入到 mindie 服务的启动路径cd $MIES_INSTALL_PATH

3)启动服务

# 执行此命令启动 mindie 服务,并将标准输出和错误输出重定向到 output.log 文件# 同时使用 nohup 让服务在后台持续运行nohup ./bin/mindieservice_daemon > output.log 2>&1 &

4)确认启动成功

# 执行此命令实时查看服务启动日志# 若日志中出现 "Daemon start success!",说明服务启动成功tail -f output.log

4. qwen 调用接口示例编辑

4.1 接口概览

  • 请求地址:http://127.0.0.1:1025/v1/chat/completions

  • 请求方式:POST

4.2 接口示例

qwen 接口示例如下:

curl -X POST "http://127.0.0.1:1025/v1/chat/completions" \-H "Content-Type: application/json" \-d '{  "model": "qwen2_5_sft_0929",  "messages": [    {"role": "system", "content": "You are a helpful assistant."},    {"role": "user", "content": "what is your name"}  ],  "temperature": 1,  "top_p": 0.95,  "top_k": 20,  "max_tokens": 4096,  "stream": false}'

参数说明:

参数
说明
model模型名称(如示例中的 qwen2_5_sft_0929 
messages对话历史记录,需包含 role 和 content
temperature调节模型输出结果的随机性,值越大随机性越强,0为固定输出
top_p从生成结果中按输出的概率选择输出结果
top_k从生成结果中选择候选输出的数量(仅保留概率最高的前 k 个词)
max_tokens生成输出 token 的最大长度,单位为个
stream

是否流式输出(true/false)