天翼云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)

相关推荐
2401_834636999 分钟前
Linux 负载均衡全实战:Nginx+HAProxy+LVS 从原理到落地
linux·nginx·负载均衡
鹏大师运维5 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
007张三丰6 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
weixin_604236677 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
鹤落晴春7 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
yz_aiks7 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
AI智图坊8 小时前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc
bjzhang759 小时前
CentOS下安装MySQL详解
linux·mysql·centos
Jason_chen11 小时前
Linux 6.2 音频机制深度解析:AI驱动的低延迟音频与零信任音频安全架构
linux
下午写HelloWorld11 小时前
Linux系统及Ubuntu常用指令
linux·ubuntu·操作系统