文章目錄
- 部署 Dify
- 1. Dify 適配 ARM
- 2. 安裝 docker
- 3. 啟動 Dify
- MindIE+Dify 實操手冊
- 1. 基礎環境搭建
- 1.1 環境檢查
- 1.2 下載模型權重
- 1.3 獲取MindIE鏡像
- 2. 啟動容器
- 3. 純模型推理測試
- 3.1 純模型對話測試
- 3.2 性能測試
- 4. 服務化部署
- 4.1 MindIE 配置
- 4.2 MindIE 服務化
- 4.3 發起測試請求
- 5. 接入 Dify
- 5.1 訪問 Dify
- 5.2 配置大模型
- 5.3 創建聊天助手
- 進階實操
- 1. 環境部署
- 1.1 下載模型權重
- 1.2 獲取鏡像
- 2. 啟動容器
- 3. 推理測試
- 4. 接入 Dify
- 4.1 配置模型
- 4.2 創建知識庫
- 5. 創建聊天助手
本次我負責【昇騰開發者訓練營】的【DeepSeek+Dify大模型推理部署實踐】部分的講解,需要完成PPT、實操手冊、8臺服務器的環境部署~
機器:Atlas800 9000 即昇騰上一代芯片 910A,8卡32G,裸金屬。
可能的卡點:ARM架構上部署Dify、910A上跑MindIE、910A上跑BGE向量模型和重排序模型。
注:本文檔同樣適用于 Atlas800T A2(910B)、Duo卡等設備。
更好的閱讀體驗:點擊傳送門


部署 Dify
1. Dify 適配 ARM
git clone https://github.com/langgenius/dify.git
cd dify
git checkout 0.15.3
cd docker/
cp .env.example .env
1. 修改配置文件
vim docker-compose.yaml
# 在redis的command后添加:
--ignore-warnings ARM64-COW-BUG
2. 修改sandbox版本
將sandbox版本從0.2.10修改為0.2.1。0.2.10版本會出現新增模型失敗的情況,修改后不使用插件式的方式,可以正常添加。
2. 安裝 docker
# 使用下面命令一鍵安裝 docker 和 docker-composesudo yum install -y docker-engine docker-engine-selinux && sudo bash -c 'cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://docker.1ms.run","https://docker.xuanyuan.me"]
}
EOF' && sudo systemctl restart docker && sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose
3. 啟動 Dify
cd dify/docker
docker-compose up -d# 停止服務并刪除容器
cd dify/docker
docker-compose down
MindIE+Dify 實操手冊
本文檔以 Atlas 800-9000 服務器和 DeepSeek-R1-Distill-Qwen-32B-W8A8 模型為例,讓開發者快速開始使用MindIE進行大模型推理流程。
MindIE(Mind Inference Engine,昇騰推理引擎)是基于昇騰硬件的運行加速、調試調優、快速遷移部署的高性能AI推理引擎。
1. 基礎環境搭建
注:本次昇騰開發者訓練營提供的服務器基礎環境已配置完畢,本章節可忽略。
1.1 環境檢查
物理機部署場景,需要在物理機安裝NPU驅動固件以及部署Docker,執行如下步驟判斷是否已安裝NPU驅動固件和部署Docker。
執行以下命令查看NPU驅動固件是否安裝。
npu-smi info
1.2 下載模型權重
權重已下載,路徑:/home/aicc/models/DeepSeek-R1-Distill-Qwen-32B-W8A8
1.3 獲取MindIE鏡像
昇騰鏡像倉庫地址:https://www.hiascend.com/developer/ascendhub/detail/af85b724a7e5469ebd7ea13c3439d48f
進入昇騰官方鏡像倉庫,根據設備型號選擇下載對應的MindIE鏡像。該鏡像已具備模型運行所需的基礎環境,包括:CANN、FrameworkPTAdapter、MindIE與ATB Models,可實現模型快速上手推理。
容器內各組件安裝路徑:
組件 | 安裝路徑 |
---|---|
CANN | /usr/local/Ascend/ascend-toolkit |
CANN-NNAL-ATB | /usr/local/Ascend/nnal/atb |
MindIE | /usr/local/Ascend/mindie |
ATB Models | /usr/local/Ascend/atb-models |
2. 啟動容器
鏡像已下載,執行以下命令啟動容器。
本次課程已提供8卡服務器,建議每臺服務器啟動4個容器,小組內自由分配,每個容器可以使用雙卡進行模型推理。
# 注:命令執行前請修改 [容器名稱]
# 啟動容器
docker run -itd --privileged --name=m2 --net=host \--shm-size 500g \--device=/dev/davinci0 \--device=/dev/davinci1 \--device=/dev/davinci2 \--device=/dev/davinci3 \--device=/dev/davinci4 \--device=/dev/davinci5 \--device=/dev/davinci6 \--device=/dev/davinci7 \--device=/dev/davinci_manager \--device=/dev/hisi_hdc \--device /dev/devmm_svm \-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \-v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \-v /usr/local/sbin:/usr/local/sbin \-v /etc/hccn.conf:/etc/hccn.conf \-v /home/aicc:/home/aicc \swr.cn-central-221.ovaijisuan.com/wh-aicc-fae/mindie:910A-ascend_24.1.rc3-cann_8.0.t63-py_3.10-ubuntu_20.04-aarch64-mindie_1.0.T71.05 \bash# 進入容器
docker exec -it [容器名稱] /bin/bash
參數說明:
參數 | 參數說明 |
---|---|
–privileged | 特權容器,允許容器訪問宿主機的所有設備。 |
–name | 設置容器名稱。 |
–device | 表示映射的設備,可以掛載一個或者多個設備。需要掛載的設備如下:/dev/davinciX:NPU設備,X是ID號,如:davinci0。 /dev/davinci_manager:davinci相關的管理設備。 /dev/hisi_hdc:hdc相關管理設備。 /dev/devmm_svm:內存管理相關設備。 |
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro | 將宿主機目錄“/usr/local/Ascend/driver”掛載到容器,請根據驅動所在實際路徑修改。 |
-v /usr/local/sbin:/usr/local/sbin:ro | 將宿主機工具“/usr/local/sbin/”以只讀模式掛載到容器中,請根據實際情況修改。 |
-v /path-to-weights:/path-to-weights:ro | 設定權重掛載的路徑,需要根據用戶的情況修改。說明請將權重文件和數據集文件同時放置于該路徑下。 |
環境檢查:
進入容器后,使用 npu-smi info
檢查NPU驅動固件是否正常掛載。
3. 純模型推理測試
參考文檔
ATB Models
的run_pa.py
腳本用于純模型快速測試,腳本中未增加強校驗,出現異常情況時,會直接拋出異常信息,常用于快速驗證模型的可用性。
3.1 純模型對話測試
例如:使用/home/aicc/models/DeepSeek-R1-Distill-Qwen-32B-W8A8
路徑下的權重,使用2卡推理"What's deep learning?"
和"Hello World."
,推理時batch size
為2。
pip install pandas # 測試前安裝依賴
export ASCEND_RT_VISIBLE_DEVICES=1,2 # 設置使用的卡編號
cd ${ATB_SPEED_HOME_PATH}
torchrun --nproc_per_node 2 \--master_port 20030 \-m examples.run_pa \--model_path /home/aicc/models/DeepSeek-R1-Distill-Qwen-32B-W8A8 \--input_texts "What's deep learning?" "Hello World." \--max_batch_size 2# 參數說明
--nproc_per_node 使用的卡數
--input_texts 推理文本或推理文本路徑,多條推理文本間使用空格分割。省略則使用默認值:"What's deep learning?"
--max_batch_size 模型推理最大batch size。
啟動測試
測試成功
3.2 性能測試
安裝依賴
pip install tiktoken fuzzywuzzy jieba rouge # 測試前安裝依賴
測試腳本
batch=1
, 輸入長度256
, 輸出長度256
用例的2
卡并行性能測試命令為:
export ASCEND_RT_VISIBLE_DEVICES=1,2 # 設置使用的卡編號
cd $ATB_SPEED_HOME_PATH/tests/modeltest/
bash run.sh pa_fp16 performance [[256,256]] 1 \
qwen /home/aicc/models/DeepSeek-R1-Distill-Qwen-32B-W8A8 2
耗時結果會顯示在Console中,并保存在./benchmark_result/benchmark.csv文件里。
4. 服務化部署
4.1 MindIE 配置
參考文檔
修改MindIE
配置:
vim /usr/local/Ascend/mindie/latest/mindie-service/conf/config.json
主要參數:
"ipAddress" : "192.168.0.10", 改為本機內網地址
"managementIpAddress" : "192.168.0.10", 改為本機內網地址()
"port" : 1025, 推理端口,請保證端口號無沖突
"managementPort" : 1026, 管理面端口,請保證端口號無沖突
"metricsPort" : 1027, 服務監控指標接口,請保證端口號無沖突
"npuDeviceIds" : [[0,1]], 表示啟用哪幾張卡。對于每個模型實例分配的npuIds
"modelName" : "DeepSeek-R1-Distill-Qwen-32B-W8A8", 模型名稱
"modelWeightPath" : "/home/aicc/models/DeepSeek-R1-Distill-Qwen-32B-W8A8/", 模型權重路徑
"worldSize" : 2, 啟用幾張卡推理。本模型啟用兩卡推理即可
注:小組內多個MindIE服務請保證 port 不同、modelName不同
4.2 MindIE 服務化
首先進入mindie-service
目錄:
cd /usr/local/Ascend/mindie/latest/mindie-service
-
方式一(推薦):使用后臺進程方式啟動服務。后臺進程方式啟動服務后,關閉窗口后進程也會保留。
nohup ./bin/mindieservice_daemon > output.log 2>&1 &
使用 tail 實時跟蹤日志
tail -f output.log
打印如下信息說明啟動成功。
Daemon start success!
-
方式二:直接啟動服務。
./bin/mindieservice_daemon
回顯如下則說明啟動成功。
Daemon start success!
4.3 發起測試請求
參考文檔

重開一個窗口,使用以下命令發送請求:
# OpenAI 接口
curl -H "Accept: application/json" -H "Content-type: application/json" \
-X POST -d '{"model": "DeepSeek-R1-Distill-Qwen-32B-W8A8","messages": [{"role": "user","content": "You are a helpful assistant."}],"stream": false,"presence_penalty": 1.03,"frequency_penalty": 1.0,"repetition_penalty": 1.0,"temperature": 0.5,"top_p": 0.95,"top_k": 10,"seed": null,"stop": ["stop1", "stop2"],"stop_token_ids": [2, 13],"include_stop_str_in_output": false,"skip_special_tokens": true,"ignore_eos": false,"max_tokens": 20
}' http://192.168.0.10:1025/v1/chat/completions
5. 接入 Dify
5.1 訪問 Dify
根據 彈性公網IP:Dify端口 訪問本機的Dify前端頁面
用戶名/密碼:atlas@hw.com
/ 0atlas@hw.com
5.2 配置大模型
- 點擊右上角用戶頭像,點擊“設置”

- 點擊“模型提供商”,搜索
OpenAI-API-compatible
,點擊“添加模型”
-
添加MindIE模型。
模型名稱:填寫MindIE配置的modelName
API endpoint URL:填寫
本機內網IP
:MindIE配置的port
/v1
- 新增
OpenAI-API-compatible
模型
添加過OpenAI-API-compatible
模型后,可在彈窗上方看到已添加的模型列,可以點擊“添加模型”繼續添加。添加時請避免模型名稱相同。
5.3 創建聊天助手
- 點擊“工作室”、“創建空白應用”
- 選擇 “聊天助手”,輸入名稱,點擊 “創建”
- 選擇模型
- 對話測試
輸入內容進行對話測試,接收到響應即為正確。
進階實操
本文檔以 Atlas 800-9000 服務器為例,讓開發者快速開始使用TEI進行文本嵌入(Embedding)和重排序(Reranker)模型推理流程。
TEI(全稱:Text Embeddings Inference)是由Huggingface推出的高性能推理框架,旨在簡化和加速文本嵌入(Embedding)和重排序(Reranker)模型在生產環境中的部署。
TEI支持基于HTTP和gRPC協議的服務接口,能夠高效處理文本嵌入的生成和基于文本相關性的重排序等任務;TEI框架同時也支持多種嵌入模型和重排序模型,并提供了靈活的請求批處理、模型管理和動態調度功能。通過TEI,開發者可以輕松地擴展和優化文本嵌入和重排序服務,以滿足實時應用和批量處理的需求,特別適用于自然語言處理相關的在線推理任務,能夠滿足RAG(全稱:Retrieval-Augmented Generation)、信息檢索 (IR)、自然語言理解 (NLU)、文本分類以及個性化推薦系統等下游應用場景。
原生TEI僅支持GPU硬件環境,且Python后端接口僅支持Embedding模型的embed服務。昇騰實現了基于MindIE Torch與ATB的組圖優化,拓展其Python后端功能、將其適配到昇騰環境。
本次使用以下模型:
模型名 | 說明 |
---|---|
BAAI/bge-large-zh-v1.5 | 稠密向量模型 |
BAAI/bge-m3 | 稠密和稀疏向量模型 |
BAAI/bge-reranker-large | 排序模型 |
1. 環境部署
注:本次昇騰開發者訓練營提供的服務器基礎環境已配置完畢,本章節可忽略。
1.1 下載模型權重
權重已下載,路徑:/home/aicc/bge_model
mkdir /home/aicc/bge_model
pip install modelscopemodelscope download --model BAAI/bge-large-zh-v1.5 --local_dir /home/aicc/bge_model/bge-large-zh-v1.5
modelscope download --model BAAI/bge-reranker-large --local_dir /home/aicc/bge_model/bge-reranker-large
modelscope download --model BAAI/bge-m3 --local_dir /home/aicc/bge_model/bge-m3
修改模型數據類型
修改每一個模型內部的配置項torch_dtype
為float16
, Atlas800 9000
/300I Duo
/300V Pro
設備需修改。Atlas 800T A2
等設備不用修改。
cd /home/aicc/bge_model
vim bge-reranker-large/config.json
vim bge-large-zh-v1.5/config.json
vim bge-m3/config.json# 修改為:
torch_dtype": "float16",
1.2 獲取鏡像
昇騰鏡像倉庫:https://www.hiascend.com/developer/ascendhub/detail/07a016975cc341f3a5ae131f2b52399d
進入昇騰官方鏡像倉庫,根據設備型號選擇下載對應的TEI鏡像,該鏡像已具備模型運行所需的基礎環境。
因為本次實驗的機器為910A,所以需要根據官方鏡像手動修改或重新構建。本次采用的是華為山東AICC的一位老哥的鏡像,下載方式:
docker pull crpi-8ew3ouqcvy9yujug.cn-hangzhou.personal.cr.aliyuncs.com/sxj731533730/mis-tei_atlas_800_9000:v0
2. 啟動容器
注意:
- 請修改本機 IP 和 端口,以下命令采用IP為192.168.0.10,端口為9000、9001、9002
- 修改推理卡編號:
TEI_NPU_DEVICE=0
表示使用0卡推理,請修改為合適的卡號
# 啟動 BAAI/bge-m3 推理容器
docker run -itd -u root -e ENABLE_BOOST=True --privileged=true \
-e TEI_NPU_DEVICE=0 --name=bge-m3 --net=host \
-v /home/aicc/bge_model:/home/HwHiAiUser/model \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--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 \
-v /usr/local/sbin:/usr/local/sbin:ro \
mis-tei_atlas_800_9000:v0
# 啟動服務
docker exec -it bge-m3 bash
export HOME=/home/HwHiAiUser
bash start.sh BAAI/bge-m3 192.168.0.10 9000# 啟動 BAAI/bge-large-zh-v1.5 推理容器
docker run -itd -u root -e ENABLE_BOOST=True --privileged=true \
-e TEI_NPU_DEVICE=0 --name=bge-large-zh-v1.5 --net=host \
-v /home/aicc/bge_model:/home/HwHiAiUser/model \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--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 \
-v /usr/local/sbin:/usr/local/sbin:ro \
mis-tei_atlas_800_9000:v0
# 啟動服務
docker exec -it bge-large-zh-v1.5 bash
export HOME=/home/HwHiAiUser
bash start.sh BAAI/bge-large-zh-v1.5 192.168.0.10 9001# 啟動 BAAI/bge-reranker-large 推理容器
docker run -itd -u root -e ENABLE_BOOST=True --privileged=true \
-e TEI_NPU_DEVICE=0 --name=bge-reranker-large --net=host \
-v /home/aicc/bge_model:/home/HwHiAiUser/model \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--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 \
-v /usr/local/sbin:/usr/local/sbin:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
mis-tei_atlas_800_9000:v0
# 啟動服務
docker exec -it bge-reranker-large bash
export HOME=/home/HwHiAiUser
bash start.sh BAAI/bge-reranker-large 192.168.0.10 9002# 對于800TA2、300I Duo設備無需進入容器手動啟動服務。將模型名稱、IP、端口作為容器啟動參數,例如:
docker run -itd -u root -e ENABLE_BOOST=True --privileged=true \
-e TEI_NPU_DEVICE=0 --name=bge-m3 --net=host \
-v /home/aicc/bge_model:/home/HwHiAiUser/model \-e POOLING=splade \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
-v /usr/local/sbin:/usr/local/sbin:ro \
swr.cn-south-1.myhuaweicloud.com/ascendhub/mis-tei:7.0.RC1-800I-A2-aarch64 BAAI/bge-m3 127.0.0.1 9000
關鍵參數解釋:
user
: 容器運行用戶,可配置為root或HwHiAiUser,如果不配置默認使用HwHiAiUser,建議以普通用戶HwHiAiUser運行降低容器運行相關安全風險-e ASCEND_VISIBLE_DEVICES
: 掛載指定的npu卡到容器中,只有宿主機安裝了Ascend Docker Runtime,此環境變量才會生效,如果未安裝Ascend Docker Runtime,可參考配置如下參數掛載指定的卡到容器
--device=/dev/davinci_manager \--device=/dev/hisi_hdc \--device=/dev/devmm_svm \--device=/dev/davinci0 \--device=/dev/davinci1 \-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \-v /usr/local/sbin:/usr/local/sbin:ro \
-e ENABLE_BOOST
: 使能bert、roberta、xml-roberta類模型推理加速model dir
: 模型存放的上級目錄,如/home/data,不能配置為/home和/home/HwHiAiUser容器內的掛載目錄/home/HwHiAiUser/model不可更改image id
:從ascendhub網上拉取鏡像后的鏡像IDmodel id
:從modelscope上獲取的模型ID:例如:BAAI/bge-base-zh-v1.5, BAAI/bge-reranker-large等,如需運行時下載模型,請確保網絡可訪問modelscope網站listen ip
:TEI服務的監聽IP,例如:127.0.0.1listen port
:TEI服務的監聽端口,例如:8080- 稀疏向量模型添加(本次實踐無需添加):
-e POOLING=splade
,請求接口采用embed_sparse
3. 推理測試
使用以下命令進行推理測試:
curl 192.168.0.10:9000/embed \-X POST \-d '{"inputs":"What is Deep Learning?"}' \-H 'Content-Type: application/json'curl 192.168.0.10:9001/embed \-X POST \-d '{"inputs":"I like you."}' \-H 'Content-Type: application/json'curl 192.168.0.10:9002/rerank \-X POST \-d '{"query":"What is Deep Learning?", "texts": ["Deep Learning is not...", "Deep learning is..."]}' \-H 'Content-Type: application/json'
本鏡像接口規范(符合TEI):
4. 接入 Dify
4.1 配置模型
在“模型供應商”中查詢Text Embedding Inference
,依次添加以下參數:
API Key
需要填寫,隨意填寫即可。
模型名稱 | 服務器URL | API Key |
---|---|---|
bge-m3 | http://192.168.0.10:9000 | 1 |
bge-large-zh-v1.5 | http://192.168.0.10:9001 | 1 |
bge-reranker-large | http://192.168.0.10:9002 | 1 |
4.2 創建知識庫
- 點擊“知識庫”,點擊“創建知識庫”
- 從本地選擇一個文件導入:
選擇文件后,點擊“下一步”
- 配置分段:使用默認配置無需修改
保證Embedding
模型和Rerank
模型設置正確,下滑到底部點擊“保存并處理”
點擊“前往文檔”
- 可查看處理后的文件狀態
5. 創建聊天助手
- 點擊 “創建”點擊“工作室”、“創建空白應用”
- 選擇 “聊天助手”,輸入名稱,
- 點擊添加上下文
- 選擇處理好的知識庫
- 提問
回答正確: