天翼云910B部署DeepSeek蒸馏70B LLaMA模型实践总结

一、项目背景与目标

本文记录在天翼云昇腾910B服务器上部署DeepSeek 70B模型的全过程。该模型是基于LLaMA架构的知识蒸馏版本,模型大小约132GB。

1.1 硬件环境

  • 服务器配置:天翼云910B服务器

  • NPU:8×昇腾910B (每卡64GB显存)

  • 系统内存:1500GB

  • 操作系统:Ubuntu 22.04.5 LTS

1.2 软件环境

  • CANN版本:6.5.1

  • Mindie版本:2.0.T3

  • Python版本:3.11

  • DeepSeek模型:70B-base

二、部署步骤

2.1 环境准备

更新系统

apt update

apt upgrade

安装必要工具

apt install bash-completion

apt install iftop iotop htop atop haproxy

优化CPU性能

cpupower frequency-set -g performance

2.2 存储配置

清理并初始化新的NVME磁盘

wipefs -af /dev/nvme0n1

wipefs -af /dev/nvme1n1

创建物理卷

pvcreate /dev/nvme0n1

pvcreate /dev/nvme1n1

扩展卷组

vgextend system /dev/nvme0n1

vgextend system /dev/nvme1n1

扩展逻辑卷

lvextend /dev/system/lv_root /dev/nvme0n1

lvextend /dev/system/lv_root /dev/nvme1n1

扩展文件系统

xfs_growfs /dev/mapper/system-lv_root

2.2 华为ascend 910b mindie推理框架Docker镜像准备

拉取必要的Docker镜像

docker pull swr.cn-southwest-2.myhuaweicloud.com/ei-mindie/mindie:2.0.T3-800I-A2-py311-openeuler24.03-lts

2.3 模型文件准备

创建权重文件目录

mkdir /home/deepseek70b

chmod -R 755 /home/deepseek70b/

chown -R root:root /home/deepseek70b/

下载模型文件

下载模型分片文件

for i in $(seq -w 1 17); do

wget https://modelers.cn/coderepo/web/v1/file/State_Cloud/DeepSeek-R1-Distill-Llama-70B/main/media/model-000${i}-of-000017.safetensors

done

下载配置文件

wget https://modelers.cn/coderepo/web/v1/file/State_Cloud/DeepSeek-R1-Distill-Llama-70B/main/media/config.json

wget https://modelers.cn/coderepo/web/v1/file/State_Cloud/DeepSeek-R1-Distill-Llama-70B/main/media/model.safetensors.index.json

wget https://modelers.cn/coderepo/web/v1/file/State_Cloud/DeepSeek-R1-Distill-Llama-70B/main/media/tokenizer.json

wget https://modelers.cn/coderepo/web/v1/file/State_Cloud/DeepSeek-R1-Distill-Llama-70B/main/media/tokenizer_config.json

wget https://modelers.cn/coderepo/web/v1/file/State_Cloud/DeepSeek-R1-Distill-Llama-70B/main/media/generation_config.json

wget https://modelers.cn/coderepo/web/v1/file/State_Cloud/DeepSeek-R1-Distill-Llama-70B/main/media/configuration.json

配置文件权限

chmod 750 /home/deepseek70b/config.json

2.4 通过docker启动加载模型

docker run -it -d --net=host --shm-size=1g \

--privileged \

--name ds-deepseek-70b \

--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 /home/deepseek70b:/home/deepseek70b:ro \

swr.cn-southwest-2.myhuaweicloud.com/ei-mindie/mindie:2.0.T3-800I-A2-py311-openeuler24.03-lts bash

2.5 验证模型部署

检查NPU状态

npu-smi info

测试API接口

curl -ik -H 'Content-Type: application/json' \

-d '{"messages":[{"role":"user","content":"请自我介绍"}],"model":"DeepSeek-70b","temperature":0.6,"max_tokens":128}' \

-X POST http://127.0.0.1:1025/v1/chat/completions

2.6 部署openweb-ui界面容器

拉取WebUI镜像使用国内镜像源

docker pull ghcr.nju.edu.cn/open-webui/open-webui:main

2.7 运行webui

运行WebUI容器

podman run -d \

-p 8000:8080 \

-v open-webui:/app/backend/data \

--name open-webui \

2.8 配置webui与模型127.0.0.1:1025的连接

WebUI配置说明:

1. 访问WebUI界面:http://[服务器IP]:8000

2. 在WebUI设置中配置API地址:http://127.0.0.1:1025/v1

3. 选择模型:DeepSeek-70b

三、效果分析

部署架构分析

4、上下文窗口分析

{
"max_position_embeddings": 131072,
"rope_scaling": {
"factor": 8.0,
"high_freq_factor": 4.0,
"low_freq_factor": 1.0,
"original_max_position_embeddings": 8192,
"rope_type": "llama3"
}
}

  • 基础窗口:8192 tokens
  • 扩展后窗口:131072 tokens(约128K)
  • 实际建议使用:32K-64K tokens

5、并发分析

  1. 内存占用计算
  • 模型基础占用:140GB (70B × 2 bytes)

  • KV Cache每token占用:

8192(hidden_size) × 2(k,v) × 2(bytes) × 8(num_kv_heads) = 256KB/token

  1. 单会话最大内存
  • 32K上下文示例:

32K × 256KB = 8GB KV Cache

  1. 并发会话数估算

基于910B 64GB NPU显存:

  • 预留20GB给模型计算

  • 剩余44GB可用于KV Cache

  • 理论最大并发数:44GB ÷ 8GB ≈ 5-6个32K上下文会话

实际建议并发配置:

  • 短文本(4K以下):8-10并发
  • 中等文本(4K-16K):4-6并发
  • 长文本(16K以上):2-3并发

四、实测API效果

time curl -X POST http://localhost/v1/chat/completions \

-H 'Content-Type: application/json' \

-d '{

"messages": [{"role": "user", "content": "写一个20字的句子"}],

"model": "DeepSeek-70b",

"max_tokens": 50,

"temperature": 0.7

}'

时间分析

  1. 总响应时间:1.483秒

  2. prefill_time: 60ms (预填充时间)

  3. decode_time_arr详情:

  • 首token生成: 43ms

  • 后续token平均: 28ms

  • 最快token生成: 27ms

  • 最慢token生成: 43ms

Token统计

  1. 输入tokens (prompt_tokens): 12个

  2. 输出tokens (completion_tokens): 50个

  3. 总计tokens (total_tokens): 62个

计算生成速度:

  • 总生成时间:1.483秒
    - Token生成速度:50 tokens / 1.483秒 ≈ 33.7 tokens/秒

性能分解

  • 稳定的token生成时间(大部分维持在28ms)

  • 较低的预填充延迟(60ms)

  • 单token生成延迟控制得较好(<30ms)

相关推荐
Yana.nice3 小时前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月3 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
想逃离铁厂的老铁3 小时前
Day55 >> 并查集理论基础 + 107、寻找存在的路线
java·服务器
小白跃升坊3 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey4 小时前
【Linux】线程同步与互斥
linux·笔记
杨江4 小时前
seafile docker安装说明
运维
舰长1154 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
好好沉淀4 小时前
Docker开发笔记(详解)
运维·docker·容器
zmjjdank1ng4 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.4 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居