天数GPU卡部署DeepSeek-R1-Distill-Qwen-32B
在人工智能技术迅猛发展的今天,凭借其卓越的自然语言处理与多模态理解能力,正成为全球AI赛道的一匹黑马。作为DeepSeek不仅实现了与国际顶尖模型比肩的文本生成与逻辑推理性能,更以开放的架构设计和全流程自主可控优势,为中国企业的智能化转型提供了安全可靠的基础设施。与此同时,以天数智芯为代表的国产GPU卡异军突起,其旗舰产品天数卡通过创新的计算架构与软件生态,,为国产大模型的高效部署提供了坚实的硬件
在人工智能技术迅猛发展的今天,国产大模型DeepSeek凭借其卓越的自然语言处理与多模态理解能力,正成为全球AI赛道的一匹黑马。作为完全基于国产技术栈研发的千亿参数级大模型,DeepSeek不仅实现了与国际顶尖模型比肩的文本生成与逻辑推理性能,更以开放的架构设计和全流程自主可控优势,为中国企业的智能化转型提供了安全可靠的基础设施。
与此同时,以天数智芯为代表的国产GPU卡异军突起,其旗舰产品天数卡通过创新的计算架构与软件生态,突破性地实现单卡FP16算力超150TFlops,兼容CUDA生态的同时支持千卡级集群扩展,为国产大模型的高效部署提供了坚实的硬件底座。这两大"中国芯脑"的强强联合,正在重构AI算力产业格局,下面介绍一下如何在天数GPU上部署国产大模型DeepSeek。
环境准备
开源模型下载
1、通过魔塔社区下载开源模型DeepSeek-R1-Distill-Qwen-32B
2、保证环境中python的版本为3.10,pip安装好modelscope模块
下载模型的python脚本
from modelscope import snapshot_download
model_dir = snapshot_download('deepseek-ai/DeepSeek-R1-Distill-Qwen-32B',local_dir='/share/model_data/model/DeepSeek-R1-Distill-Qwen-32B')
执行后台下载
nohup python3 download.py>download.log 2>&1 &
天数gpu驱动下载
通过天数官方sftp下载驱动
#登录sftp环境
sftp -P 29880 iluvatar_mr@iftp.iluvatar.com.cn
#进入MR_100驱动程序目录
cd /MR_4.1.2/x86/sdk
#执行下载命令并指定下载路径
get corex-installer-linux64-4.1.2_x86_64_10.2.run /share/TianShu_GPU_Driver/MR_100_Driver/sdk_4.1.2/
天数docker镜像下载
通过天数官方harbor下载镜像
#配置本地域名解析
120.220.95.189 zibo.harbor.iluvatar.com.cn #增加内容到/etc/hosts中
#配置docker的daemon.json,增加如下内容
"insecure-registries":[
"zibo.harbor.iluvatar.com.cn:30000"
]
#执行镜像拉取命令
docker pull zibo.harbor.iluvatar.com.cn:30000/saas/mr-4.1.2-x86-ubuntu20.04-py3.10-poc-llm-infer:v1.2.1
天数GPU驱动安装
#执行驱动安装脚本
bash /share/TianShu_GPU_Driver/MR_100_Driver/sdk_4.1.2/corex-installer-linux64-4.1.2_x86_64_10.2.run
#执行完毕后配置环境变量,加入到/etc/profile最后
export PATH=$PATH:/usr/local/corex-4.1.2/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/corex-4.1.2/lib
启动容器
此处测试为了验证宿主机上启动容器后,在容器中fastchat框架模型推理是否正常
#容器启动测试
docker run -dit --name deepseekR1 --shm-size=32g -v /usr/src:/usr/src -v /lib/modules:/lib/modules -v /share/home:/share/home -v /share/model_data/model/DeepSeek-R1-Distill-Qwen-32B:/share/model_data/model/DeepSeek-R1-Distill-Qwen-32B -v /share/model_data/model_runjob/deepseek:/share/model_data/model_runjob/deepseek -p 30000:30000 -e HOME=/tmpdeepseek-qwen-32b:v4.0.2 sleep 1000
#进入容器中
docker exec -it <容器id> bash
vllm
启动api服务
#启动服务
python3 -m vllm.entrypoints.openai.api_server --device cuda -tp 4 --max-model-len 27904 --trust-remote-code --served-model-name DeepSeek-R1-Distill-Qwen-32B --model /share/model_data/model/DeepSeek-R1-Distill-Qwen-32B --chat-template /share/model_data/model_runjob/deepseek/template_deepseek_vl3.jinja --host 0.0.0.0 --port 30000
#停止服务
ps找到进程杀掉
fschat
#启动模型推理的控制器
python3 -m fastchat.serve.controller --host 0.0.0.0&
#启动vllm_worker
python3 -m fastchat.serve.vllm_worker --model-path /share/model_data/model/DeepSeek-R1-Distill-Qwen-32B --num-gpus 4 -tp 4 --max-model-len 27904 --model-names DeepSeek-R1-Distill-Qwen-32B --host 0.0.0.0 &
#启动gradio_web
python3 -m fastchat.serve.gradio_web_server --host 0.0.0.0 --port 30000 &
#启动openapi
python3 -m fastchat.serve.openai_api_server --host 0.0.0.0--port 30001
#启动api
python3 -m fastchat.serve.api_stream --host 0.0.0.0 --port 30001
AIP提交测试
此处测试为了验证通过cusb分配资源创建容器并执行推理是否正常
#aip分配资源测试
csub -U "/aj/HOSTIP/PORT" -q TS-KYGX-TL -m c01n04 -n 16 -R rusage[gpu=8] -R span[hosts=1] -di deepseek-qwen-32b:v4.0.3 -do "--shm-size=32g -v /usr/src:/usr/src -v /lib/modules:/lib/modules -v /share/home:/share/home -v /share/model_data/model/DeepSeek-R1-Distill-Qwen-32B:/share/model_data/model/DeepSeek-R1-Distill-Qwen-32B -v /share/model_data/model_runjob/deepseek:/share/model_data/model_runjob/deepseek -p 30000:30000 " bash /share/model_data/model_runjob/deepseek/deepseek_qwen_32b_runjob_ts_tl.sh
#脚本内容
# GET GPU ID
GPU_LIST=$(ixsmi -L | awk '/GPU/{print $2}' | tr -d ':' | tr '\n' ',' | sed 's/,$//')
echo "GPU_LIST=$GPU_LIST"
# GET GPU NUMBER
GPU_NUMS=$(ixsmi -L | wc -l)
echo "GPU_NUMS=$GPU_NUMS"
python3 -m fastchat.serve.controller --host 0.0.0.0&
sleep 15
CUDA_VISIBLE_DEVICES=$GPU_LIST python3 -m fastchat.serve.vllm_worker --model-path /share/model_data/model/DeepSeek-R1-Distill-Qwen-32B --num-gpus $GPU_NUMS --host 0.0.0.0 &
sleep 80
# WEB
python3 -m fastchat.serve.gradio_web_server --host 0.0.0.0 --port 30000 &
sleep 15
# API
python3 -m fastchat.serve.openai_api_server --host 0.0.0.0 --port 30001
作业提交
容器和推理任务启动成功
测试web访问
测试api访问
天纺提交测试
问题记录
非系统(ldap)用户创建的容器报“I have no name”
问题描述
ldap用户cadmin通过csub命令启动容器,进入容器(ocker exec -it <容器id> bash)报错:
groups: cannot find name for group ID 2000
groups: cannot find name for group ID 980
groups: cannot find name for group ID 2001
I have no name!@c01n04:/root$
问题原因
root 用户启动容器时,容器能够找到并正确解析其组信息,而 cadmin 用户启动容器时,容器无法正确解析其用户组信息。
具体来说,容器内的用户和组信息与宿主机上的用户组信息有关。如果 cadmin 用户的组在宿主机上不存在,或者宿主机的 /etc/group 文件没有相应的组信息,容器会显示类似 groups: cannot find name for group ID 的错误。
解决方法
以root身份进入容器中,在容器内创建和宿主机相同的组UID 和 GID 的用户,以解决宿主机与容器中用户不匹配的问题,如下以cadmin为例
#宿主机中查询cadmin用户的UID和GID
id cadmin #宿主机内执行
#以root身份进入容器中
docker exec -u root -it <容器id> bash #在宿主机执行
#容器内创建cadmin用户
groupadd -g 2000 cadmin #在容器内执行
useradd -u 2000 -g 2000 -m cadmin #在容器内执行
#退出容器,重新以普通用户身份进入验证问题解决
docker exec -it <容器id> bash #在宿主机执行
普通用户执行推理脚本报权限问题
问题描述
普通用户在执行脚本时,程序尝试创建一个日志文件夹,但由于权限不足,导致
PermissionError 错误
bash /share/model_data/model_runjob/deepseek/deepseek_qwen_32b_runjob_ts_tl.sh
GPU_LIST=0,1,2,3,4,5,6,7
GPU_NUMS=8
2025-02-19 07:38:27 | ERROR | stderr | Traceback (most recent call last):
2025-02-19 07:38:27 | ERROR | stderr | File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main
2025-02-19 07:38:27 | ERROR | stderr | return _run_code(code, main_globals, None,
2025-02-19 07:38:27 | ERROR | stderr | File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code
2025-02-19 07:38:27 | ERROR | stderr | exec(code, run_globals)
2025-02-19 07:38:27 | ERROR | stderr | File "/usr/local/lib/python3.10/site-packages/fastchat/serve/controller.py", line 31, in <module>
2025-02-19 07:38:27 | ERROR | stderr | logger = build_logger("controller", "controller.log")
2025-02-19 07:38:27 | ERROR | stderr | File "/usr/local/lib/python3.10/site-packages/fastchat/utils.py", line 67, in build_logger
2025-02-19 07:38:27 | ERROR | stderr | os.makedirs(LOGDIR, exist_ok=True)
2025-02-19 07:38:27 | ERROR | stderr | File "/usr/local/lib/python3.10/os.py", line 225, in makedirs
2025-02-19 07:38:27 | ERROR | stderr | mkdir(name, mode)
2025-02-19 07:38:27 | ERROR | stderr | PermissionError: [Errno 13] Permission denied: '.'
问题原因
程序在尝试使用os.makedirs() 创建日志目录时遇到了权限问题。os.makedirs() 用来递归地创建目录,而在使用普通用户执行脚本的情况下,没有足够的权限在当前工作目录中创建目录。
解决方法
以root身份进入容器中,修改目录权限
#以root身份进入容器中
docker exec -u root -it <容器id> bash #在宿主机执行
#将脚本用到的文件和目录以root身份全部修改为777权限
chmod -R 777 /usr
chmod -R 777 /root
天纺集成后提交推理作业访问web报nginx error
解决上述问题后重构镜像
docker commit <容器id> deepseek-qwen-32b:v4.0.3
如需部署方案、配置示例或集成服务支持,欢迎联系我们技术团队。
天云融创 | SkyForm AIP 技术团队
安全 · 高效 · 自主可控的国产调度系统解决方案
更多推荐
所有评论(0)