在人工智能技术迅猛发展的今天,国产大模型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 技术团队
安全 · 高效 · 自主可控的国产调度系统解决方案

<script></script>

更多推荐