部署DeepSeek模型,进群交流最in玩法!
立即加群
发布
社区首页 >专栏 >TencentOS Server 3.1 部署 DeepSeek-R1-7B

TencentOS Server 3.1 部署 DeepSeek-R1-7B

作者头像
Sync
发布2025-02-16 19:40:11
发布2025-02-16 19:40:11
11900
代码可运行
举报
运行总次数:0
代码可运行

DeepSeek是这段时间最热门的话题之一,其先进的AI技术可以实现低成本而高质量的推理,使企业可以低成本的使用优秀的AI推理能力,为企业业务带来更多的AI助力。

目前在腾讯云上已经提供了多种体验和使用DeepSeek的方法,但经常有行业的小伙伴询问:“能否在企业私有化场景的国产服务器上部署和使用DeepSeek?”

图片
图片

这就给大家安排!

目前国产硬件主要包括5种架构、6大品牌的CPU,在私有化部署DeepSeek的时候,需要一个安全、可靠、高性能的操作系统来支持这些CPU架构的服务器,同时能够支持多种类型的GPU/NPU设备以及上层完整的DeepSeek软件栈。

TencentOS Sever(腾讯云Linux服务器操作系统)是腾讯云自主研发设计的服务器Linux操作系统,支主流的国产CPU和国产GPU/NPU,安全性上通过了信息安全可靠测评,能够很好的在国产硬件平台上运行DeepSeek。

图片
图片

接下来便为大家展示在一台海光CPU+Nvidia T4 GPU的服务器上,实现基于TencentOS Server V3的DeepSeek R1 私有化部署,并且针对AI场景对操作系统进行性能优化。

本私有化部署方式同样也支持其他架构的CPU,例如鲲鹏、龙芯、飞腾等CPU的服务器平台。

1. DeepSeek-R1的资源要求

DeepSeek-R1提供多种不同规模的模型,以满足不同用户的需求。模型规模越大,性能越强,但对硬件的要求也越高。

通常大模型对显存的要求可以参照以下公式:VRAMreq =P×Bdtype ×Ke ×(1+α)

  •  P:模型原始参数量(单位:B)
  •  BdtypeBdtype :数据类型系数(FP16=2, Int8=1, FP8=0.87)
  •  KeKe :MoE激活因子(默认0.35)
  •  αα:缓存余量(建议≥25%)

基于以上公式,结合其他硬件需求,可以给出常用的几个模型版本的资源需求:

模型版本

CPU/内存

显存

DeepSeek-R1-1.5B

4C/8G

>4GB

DeepSeek-R1-7B

8C/16GB

>8GB

DeepSeek-R1-14B

12C/32GB

>16GB

DeepSeek-R1-32B

16C/64GB

>24GB

2. 部署环境说明

本次部署计划部署DeepSeek-R1-7B,根据资源要求,实验配置的硬件资源为海光CPU+Nvidia T4 GPU,海光CPU分配8核资源,配置32GB内存,磁盘为100GB SSD磁盘,同时配置了一块Nvidia T4 GPU卡,显存为16GB。

操作系统为TencentOS Server V3,相关信息如下:

代码语言:javascript
代码运行次数:0
复制
cat /etc/system-release
TencentOS Server 3.1 (Final)
uname -r
5.4.119-19.0009.56

TencentOS Server V3的内核为5.4内核,提供例如io_uring等高级特性,对大模型应用有更好的支持。

GPU信息如下:

代码语言:javascript
代码运行次数:0
复制
nvidia-smi -L
GPU 0: Tesla T4 (UUID: xxxxxx)

2.1.使用Ollama部署DeepSeek-R1

2.1.1.Ollama简介

DeepSeek-R1的部署最简单的方式是通过Ollama来进行,Ollama 是一个开源的本地化大模型部署工具,可以借助Ollama简化大型语言模型(LLM)的安装、运行和管理。它支持多种模型架构,并提供与 OpenAI 兼容的 API 接口,适合开发者和企业快速搭建私有化 AI 服务。

图片
图片

2.1.2.  安装Ollama

直接使用Ollama官网提供的快速安装脚本通常会由于网络问题导致安装失败,这里采用手动方式来安装。

下载Ollama的安装包:

代码语言:javascript
代码运行次数:0
复制
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz

安装包大小约为1.7GB,也可以通过其他方式下载,下载后上传到服务器上即可。

解压缩安装包

代码语言:javascript
代码运行次数:0
复制
tar xzvf ollama-linux-amd64.tgz -C /usr

创建服务文件/etc/systemd/system/ollama.service,注意,在Ollama官网上比较推荐创建一个独立的ollama用户来启动和管理ollama服务,我们这里直接用root启动即可。

代码语言:javascript
代码运行次数:0
复制
cat > /etc/systemd/system/ollama.service << EOF
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=root
Group=root
Restart=always
RestartSec=3
Environment="PATH=$PATH"

[Install]
WantedBy=default.target
EOF

加载服务并启动Ollama

代码语言:javascript
代码运行次数:0
复制
systemctl daemon-reload
systemctl enable ollama
systemctl start ollama

2.1.3.  使用Ollama运行DeepSeek R1 7b

下载DeepSeek R1 7b

代码语言:javascript
代码运行次数:0
复制
# ollama pull deepseek-r1:7b

查看模型信息

代码语言:javascript
代码运行次数:0
复制
ollama list
NAME              ID              SIZE      MODIFIED
deepseek-r1:7b    0a8c26691023    4.7 GB    27 seconds ago

运行DeepSeek-R1

代码语言:javascript
代码运行次数:0
复制
ollama run deepseek-r1:7b
>>> 你是谁
<think>

</think>

您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。

>>> 请告诉我2025年“惊蛰”这个节气是几月几号
<think>
嗯,用户现在问的是关于2025年“惊蛰”这个节气的日期,具体是几月几号。我之前回复说我不知道具体的日期,并建议他们查看日历或使用工具查询。

首先,我需要确认用户的需求是什么。他可能是在计划某个活动,或者对某个节日感兴趣,想知道什么时候庆祝“惊蛰”。这种情况下,提供准确的信息会更有帮助。

接下来,考虑到用户可能不太清楚如何查找这个信息,我可以进一步解释“惊蛰”是什么节气,以及它在中国文化中的意义。这不仅能满足他的直接需求,还能增加他对相关节气的了解。

同时,我也要考虑到用户是否有更深层的需求。比如,他可能希望提前规划一些事情,或者对自然现象感兴趣。因此,在回应时可以稍微展开一下关于“惊蛰”的特点或影响,这样回答会更加全面和有意义。

最后,我需要确保我的回答清晰易懂,并且提供一个可行的解决方案,比如如何查询准确日期的方法,以及推荐使用的时间管理工具或日历应用。
</think>

您好!2025年的“惊蛰”节气预计将在 **4月18日** 到 **4月19日** 之间。具体日期可以使用公历计算器或查看2025年的日历来确认。

如果需要更详细的日期信息,建议您使用手机上的日历应用或在线时间管理工具来查询准确日期。希望这个信息对您有所帮助!

2.2.  部署Open-WebUI增强交互体验

2.2.1.  Open WebUI简介

为了在Ollama上增加更加丰富的交互方式,通常需要在Ollama前端再增加一个交互层,常用的交互层有AnythingLLM、Dify、Open-WebUI 等,Open-WebUI侧重于聊天模式,支持多模型集成,可以提供一个简单、易用的Web交互窗口。

图片
图片

2.2.2.  安装Open WebUI

Open WebUI能够通过Docker进行安装,也可以直接通过Python的pip进行安装,这里使用Docker进行安装。

首先在TencentOS Server上部署Docker

代码语言:javascript
代码运行次数:0
复制
yum install docker-ce -y
systemctl enable docker --now

下载Open WebUI的docker image

代码语言:javascript
代码运行次数:0
复制
docker pull ghcr.io/open-webui/open-webui:main
docker images
REPOSITORY                      TAG       IMAGE ID       CREATED      SIZE
ghcr.io/open-webui/open-webui   main      a088eea70396   6 days ago   4.27GB

使用Docker命令启动Open WebUI

注意,这里会遇到后期在界面中无法连接Ollama的情况,这是因为在Docker容器内部是无法访问Ollama的默认监听地址http://127.0.0.1:11434,需要调整Ollama配置或者直接让Open WebUI使用host only网络即可:

代码语言:javascript
代码运行次数:0
复制
docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main

这样启动容器后,Open WebUI会直接监听Host网络的8080端口

通过浏览器访问Open WebUI,http://<IP>:8080

第一次登录需要创建管理员账户

图片
图片

登录后应该已经可以看到我们刚才在Ollama中启动的DeepSeek-R1 7b模型,如果无法看到,可以在管理员面板中设置:

点击右上角设置“管理员面板”

图片
图片

进入后,进入“设置”-”外部链接“标签项,设置Ollama的连接方式(可以将OpenAI的连接关掉)

图片
图片

然后可以在“模型”中自动发现我们添加在Ollama中的模型了

2.2.3.  和DeepSeek R1对话并查看系统负载

回到首页,和DeepSeek R1对话

图片
图片

在DeepSeek R1思考并输出时,查看系统负载以及显卡负载:

图片
图片

可以看到,Ollama占用了将近100%的CPU资源,ollama_llama_se采用多线程运行,负载分担在多个CPU核上

图片
图片

可以看到,显存的占用大约为5.3GB,体现了DeepSeek R1的显存使用优势,Nvidia T4 GPU的资源占用大约为85%

3.  TencentOS Server针对大模型业务的常规优化

3.1.  概述

大模型应用在运行中,会产生较大的IO操作以及内存操作,从系统优化角度来说,主要是在这两方面进行优化,本部分仅对常规优化进行了说明,实际的生产场景中,会面临着不同的情况,如果需要进一步优化,通常需要对系统性能进行评估,发现瓶颈后再进行进一步的优化。

3.2.  TencentOS Server性能调优

3.2.1.  禁用透明大页(THP)

现代内核默认启用了THP以改善内存管理,但在高并发或大量内存分配的场景下,THP可能导致延迟波动。对于需要低延迟响应的AI模型来说,禁用THP可以保持性能稳定。在AI场景中开启THP,通常会遇到以下问题:

● 内存分配延迟不可预测(200μs ~ 15ms波动)

● 易引发直接内存回收(Direct Reclaim),造成推理停顿

● 大页分裂时的锁争用加剧

可以通过下面命令检测当前是否开启了透明大页以及当前的内存消耗

代码语言:javascript
代码运行次数:0
复制
## 检测是否开启了透明大页,不是 never 则说明开启
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

## 临时关闭透明大页
## 注意:临时关闭仅后续不会申请透明大页内存,如需立即释放已申请的内存,需要内核参数配置关闭透明大页后,重启机器
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

## 检测 AnonHugePages 用量
cat /proc/meminfo  | grep 'AnonHugePages'
AnonHugePages:   6658048 kB

在内核启动时就关闭透明大页面

代码语言:javascript
代码运行次数:0
复制
## 编辑 /etc/default/grub ,在内核启动参数 GRUB_CMDLINE_LINUX 里加上 transparent_hugepage=never

vi /etc/default/grub 
GRUB_CMDLINE_LINUX="nomodeset crashkernel=auto rd.lvm.lv=vg_os/lv_root rd.lvm.lv=vg_os/lv_swap rhgb quiet transparent_hugepage=never"

## 保存配置并重启机器
grub2-mkconfig -o /boot/grub2/grub.cfg
## 注意,如果是EFI启动,配置目录根据具体系统调整
# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

## 重启服务器
reboot

3.2.2.  IO子系统优化

IO子系统的优化主要表现在以下3部分:

  • 提升NVMe设备的待处理IO请求上限(默认128→1024)
  • 搭配Deadline调度器实现公平排队
  • 调整磁盘的挂载选项,降低IO负载 用以下命令实现以上优化:
代码语言:javascript
代码运行次数:0
复制
# 块设备队列深度扩展
echo 1024 > /sys/block/nvme0n1/queue/nr_requests
# 调整SSD磁盘的调度算法为Deadline(这里nvme0n1替换为真实的磁盘名称)
echo deadline > /sys/block/nvme0n1/queue/scheduler
# 修改/etc/fstab文件,在SSD磁盘的挂载选项中,增加以下挂载选项
noatime,discard,nobarrier

3.2.3.  CPU调度策略

TencentOS Server默认采用CFS调度策略,可以调整调度时间片粒度至8ms,减少上下文切换次数唤醒粒度设为12ms,抑制过多任务抢占,这样的调整比较适用于长耗时CUDA Kernel执行场景。

代码语言:javascript
代码运行次数:0
复制
sysctl -w kernel.sched_min_granularity_ns=8000000
sysctl -w kernel.sched_wakeup_granularity_ns=12000000

3.2.4.  文件句柄限制调整

模型处理大量请求时会频繁读写文件和网络连接,如果系统默认的文件描述符限制过低,可能导致“Too many open files”错误,影响服务的可用性。增加到百万级别能支持更高的并发。

代码语言:javascript
代码运行次数:0
复制
# 提升文件句柄限制
echo "* soft nofile 1048576" >> /etc/security/limits.conf
echo "* hard nofile 1048576" >> /etc/security/limits.conf

经上述操作,企业可基于 TencentOS Server 在私有化场景完成 DeepSeek - R1 部署与优化。它让企业以低成本获得高性能 AI 推理能力,适配多种国产硬件,保障服务稳定。Tencentos同时还支持其他版本DeepSeek,若部署有问题或需进一步优化,可查阅资料或咨询专业人员。

以上文章转载自:https://mp.weixin.qq.com/s/4arM6Jyfx8byOb-p67hraA

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. DeepSeek-R1的资源要求
  • 2.1.使用Ollama部署DeepSeek-R1
    • 2.1.1.Ollama简介
    • 2.1.2.  安装Ollama
    • 2.1.3.  使用Ollama运行DeepSeek R1 7b
    • 2.2.2.  安装Open WebUI
    • 2.2.3.  和DeepSeek R1对话并查看系统负载
  • 3.  TencentOS Server针对大模型业务的常规优化
    • 3.1.  概述
    • 3.2.  TencentOS Server性能调优
      • 3.2.1.  禁用透明大页(THP)
      • 3.2.2.  IO子系统优化
      • 3.2.3.  CPU调度策略
      • 3.2.4.  文件句柄限制调整
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档