当前位置: 首页 > news >正文

DeepSeek-R1国产化系统gpu驱动+cuda+ollama+webui可视化离线私有化部署

1.概述

        网上大部分教程都是在线部署,完全离线私有化部署的文章不多,本文介绍从GPU驱动、cuda、ollama、deepseek模型和open webui等完全离线安装几个方面,让小白0基础也可以私有化部署大模型deepseek-R1。

我使用的设备是银河麒麟V10操作系统,海光CPU,内存128G,三张英伟达T4显卡(每张显存16G)。这里说一下国产化海光芯片c86架构就是源自于x86架构,与intel和amd等x86架构cpu使用并没有区别。

模型分别部署了deepseek-R1-32B-Q4、32B-Q8和70B-Q4,Q4是量化4位整数,量化数字越大精度越高模型越大,当然效果也越好。亲测了用单张T4显卡部署deepseek 32B-Q4速度较卡,所以显存最好大于16G。

2.GPU驱动安装

显卡硬件安装后,使用命令lspci | grep NVIDIA 查看是否存在GPU设备,lspci命令可查看所有连接PCI总线的设备。

但还需要安装显卡驱动,操作系统才能使用显卡。nvidia-smi命令若没有输出则未安装驱动。

下载 NVIDIA 官方驱动 | NVIDIA

这里有个坑,操作系统选择时,麒麟系统不可以选择Linux 64-bit KylinOS 10,否则安装后nvidia-smi命令仍然无法使用。

[root@localhost ~]# sudo modprobe nvidia             #手动加载驱动内核
modprobe: FATAL: Module nvidia not found in directory /lib/modules/4.19.90-89.11.v2401.ky10.x86_64
表示当前系统的内核中找不到 NVIDIA 驱动模块。这可能是因为 NVIDIA 驱动没有正确编译或加载,或者驱动版本与当前内核不兼容。

操作系统应该直接选择Linux 64-bit 这个版本。

下载并运行驱动文件NVIDIA-Linux-x86_64-570.86.15.run


chmod 755 NVIDIA-Linux-x86_64-570.86.15.run
sudo ./NVIDIA-Linux-x86_64-570.86.15.run

安装过程中一些选项的选择:

1. Multiple kernel module types are available for this systems. Which would you like to use?  MIT/GPL    NVIDIA Proprietary
2. An alternate method of installing the NVIDIA driver was detected.(This is usually a package provided by your distributor.) A driver installed via that method may integrate better with you system than a driver installed by
naidia-installer

3. Please review the message provided by the maintainer of this alternate installation method and decide how to proceed:                                                                                      

Continue installation Abort installtion

4. The NVIDIA driver provided by Ubuntu can be installed by launching the "Software & Updates" application,and by selecting the NVIDIA driver from the "Additional Drivers" tab.
Continue installation

5. Would you like to register the kernel module source with DKMS? This will allow DKMS....      Yes

6. Install NVIDIA's 32-bit compatibility libraries?  NO

7. Would you like to run the nvidia-xconfig utility to automatically update you X configuration file so that the NVIDIA X driver will be used when you restart X? Any pre-existing X configuration file will be backed up.
Yes

出现下面字样,说明安装成功,安装后重启操作系统。

Your X configuration file has been successfully updated. Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64 (version:570.86.15) is now complete.

安装后用nvidia-smi命令可以看到GPU信息。

lshw -c video | grep configuration   # 查看显卡驱动driver是否是nvidia

3.安装cuda

GPU使用CUDA + cuDNN 来加速计算,所以安装cuda和cudnn。

nvidia-smi 命令查看驱动支持的cuda最高版本

前往 Nvidia 的 CUDA 官网:https://developer.nvidia.com/cuda-toolkit-archive 下载对应版本cuda

这里的操作系统就选择麒麟v10

$ sudo sh cuda_12.8.0_570.86.10_linux.run

选择 “accept” 

笔者服务器已经安装过 Nvidia 显卡驱动了,因此不需要再安装了。如果你尚未安装驱动,可以顺便一起安装了。摁一下空格取消 Driver 安装,直接选择 Install 安装:

安装成功:

cuda安装目录在/usr/local/cuda-12.8

接下来配置环境变量,直接在 Linux 命令行输入以下命令:

sudo vim ~/.bashrc

在末尾添加

export PATH=/usr/local/cuda-12.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda-12.8

使系统环境变量生效

source ~/.bashrc
sudo ldconfig

使用命令 nvcc -V 输出cuda版本号则安装成功。

4.安装cudnn

需要根据cuda版本来安装对应的cudnn版本

cuDNN Archive | NVIDIA Developer

tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
cd cudnn-linux-x86_64-8.9.7.29_cuda12-archive/
sudo cp lib/* /usr/local/cuda-12.8/lib64/
sudo cp include/* /usr/local/cuda-12.8/include/
sudo chmod a+r /usr/local/cuda-12.8/lib64/*
sudo chmod a+r /usr/local/cuda-12.8/include/*

验证cuDNN安装成功

cat /usr/local/cuda-12.8/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

5.安装ollama

Ollama 是一个开源的大型语言模型服务工具,可以帮助用户快速在本地运行大模型。

https://ollama.com/download/ollama-linux-amd64.tgz

sudo tar -C /usr -xzf ollama-linux-amd64.tgz   #解压安装

 添加systemctl服务启动文件,创建文件:/etc/systemd/system/ollama.service

[Unit]
Description=Ollama Service
After=network-online.target[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"
Environment="OLLAMA_MODELS=/opt/llm_work/deepseek-r1/models"
Environment="OLLAMA_HOST=0.0.0.0"[Install]
WantedBy=default.target

上边文件中指定OLLAMA_MODELS位置,还需要设置AI模型目录的权限:

chmod +777 /opt/llm_work/deepseek-r1/models

 需要外网访问记得开放防火墙11434端口。

sudo systemctl daemon-reload       #服务配置生效
sudo systemctl enable ollama        #开机启动
sudo systemctl start ollama           #启动ollama
sudo systemctl status ollama        #查看ollama运行状态

ollama -v  #查看ollama版本

[root@localhost ~]# ollama -v
ollama version is 0.5.11

6.离线安装deepseek模型

在https://huggingface.co/models或魔搭社区下载模型的GGUF格式文件,实现单独文件直接放到ollama模型目录下即可运行。

显存16G可以下载32B的量化Q4的,可以运行就是比较卡,可以根据自己显存大小选择不同的模型大小。

在模型目录/opt/llm_work/deepseek-r1/models/blobs(blobs是ollama运行时自动创建的,也可手动创建)下创建文件Modelfile,

Modelfile内容是根据ollama官方模版设置的

Modelfile文件内容如下:

FROM ./DeepSeek-R1-Distill-Qwen-32B-Q4_0.gguf

TEMPLATE """{{- if .System }}{{ .System }}{{ end }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1}}
{{- if eq .Role "user" }}<|User|>{{ .Content }}
{{- else if eq .Role "assistant" }}<|Assistant|>{{ .Content }}{{- if not $last }}<|end▁of▁sentence|>{{- end }}
{{- end }}
{{- if and $last (ne .Role "assistant") }}<|Assistant|>{{- end }}
{{- end }}
"""

PARAMETER stop <|begin▁of▁sentence|>
PARAMETER stop <|end▁of▁sentence|>
PARAMETER stop <|User|>
PARAMETER stop <|Assistant|>
 

最重要的是第一行,FROM + 你的模型文件。

ollama create model-name -f Modelfile        # model-name是自定义的模型名

创建成功后可以使用下面命令检查Ollama中是否已有模型。

ollama list

使用命令 ollama run model-name 启动模型,就可以在命令行中使用deepseek了,按Ctrl+d可以退出对话。

还可以调用大模型API接口:

curl http://localhost:11434/api/generate -d "{\"model\": \"deepseek-r1-32B-Q4:latest\",\"prompt\": \"你是谁\",\"stream\":flase}"

"stream":true 是流式返回,flase是全部生成后一次性返回。

7.离线安装open webui

只部署deepseek只能在命令行中使用大模型,通过部署Open WebUI可以通过网页来方便使用大模型。部署open webui需要用到docker,需要先在联网环境中下载镜像,再导入到离线环境中。

open-webui官方安装文档:https://github.com/open-webui/open-webui

(1)离线安装docker

下载安装包 https://download.docker.com/linux/static/stable/x86_64/

tar -zxvf docker-24.0.6.tgz

将解压之后的docker文件移到 /usr/bin目录下

sudo cp docker/* /usr/bin/

注册成服务

vim /etc/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s[Install]
WantedBy=multi-user.target

chmod +x /etc/systemd/system/docker.service  # 配置权限

systemctl daemon-reload  # 配置生效

systemctl enable docker.service # 设置开机启动

systemctl start docker  # 启动docker

配置国内镜像源,镜像源可能不好使,则需要翻墙下载镜像。

vi /etc/docker/daemon.json# 内容如下:
{"registry-mirrors": ["https://xx4bwyg2.mirror.aliyuncs.com","http://f1361db2.m.daocloud.io","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
}{}# 退出并保存
:wq# 使配置生效
systemctl daemon-reload# 重启Docker
systemctl restart docker

(2)下载镜像

在联网环境中下载镜像

docker pull ghcr.io/open-webui/open-webui:main

docker images  #列出本地镜像

将下载的镜像导出为open-webui.tar包,然后导入到离线环境中

docker save -o open-webui.tar <镜像名称>  

(3)离线安装

在离线环境中导入open-webui.tar文件

docker load -i open-webui.tar      离线导入镜像

docker images  #列出本地镜像
docker ps -a     #查看所有容器和运行状态

docker run      #用于首次创建并运行容器
docker start    #启动已存在的容器

启动open-webui容器

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

启动后在浏览器访问http://localhost:3000 ,初次登录注册账号。

然后就可以用网页来使用deepseek对话了。ollama和open webui还支持部署其他大模型,也可以上传文件,开始使用吧。

相关文章:

DeepSeek-R1国产化系统gpu驱动+cuda+ollama+webui可视化离线私有化部署

1.概述 网上大部分教程都是在线部署&#xff0c;完全离线私有化部署的文章不多&#xff0c;本文介绍从GPU驱动、cuda、ollama、deepseek模型和open webui等完全离线安装几个方面&#xff0c;让小白0基础也可以私有化部署大模型deepseek-R1。 我使用的设备是银河麒麟V10操作系统…...

数据集/API 笔记:新加坡风速 API

data.gov.sg 数据范围&#xff1a;2016年12月 - 2025年3月 API 查询方式 curl --request GET \--url https://api-open.data.gov.sg/v2/real-time/api/wind-speedcurl --request GET \--url "https://api-open.data.gov.sg/v2/real-time/api/wind-speed?date2024-07-16…...

transformer架构解析{掩码,(自)注意力机制,多头(自)注意力机制}(含代码)-3

目录 前言 掩码张量 什么是掩码张量 掩码张量的作用 生成掩码张量实现 注意力机制 学习目标 注意力计算规则 注意力和自注意力 注意力机制 注意力机制计算规则的代码实现 多头注意力机制 学习目标 什么是多头注意力机制 多头注意力计算机制的作用 多头注意力机…...

【C++】switch 语句编译报错:error: jump to case label

/home/share/mcrockit_3588/prj_linux/../source/rkvpss.cpp: In member function ‘virtual u32 CRkVpss::Control(u32, void*, u32)’: /home/share/mcrockit_3588/prj_linux/../source/rkvpss.cpp:242:8: error: jump to case label242 | case emRkComCmd_DBG_SaveInput:|…...

linux中使用firewall命令操作端口

一、开放端口 1. 开放一个端口 sudo firewall-cmd --zonepublic --add-port8443/tcp --permanent sudo firewall-cmd --reload 2. 开放一组连续端口 sudo firewall-cmd --zonepublic --add-port100-500/tcp --permanent sudo firewall-cmd --reload 3. 一次开放多个不连续…...

C++第六节:stack和queue

本节目标&#xff1a; stack的介绍与使用queue的介绍与使用priority_queue的介绍与使用容器适配器模拟实现与结语 1 stack&#xff08;堆&#xff09;的介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;只能从容器的一端进行元素的插…...

算法 并查集

目录 前言 一 并查集的思路 二 并查集的代码分析 三 实操我们的代码 四 并查集的代码优化 总结 前言 并查集主要是用来求解集合问题的&#xff0c;用来查找集合还有就是合并集合&#xff0c;可以把这个运用到最小生成树里面 一 并查集的思路 1 并查集的相关的操作…...

yarn application命令中各参数的详细解释

yarn application 命令用于管理和监控 YARN 上运行的应用程序&#xff0c;下面为你详细解释该命令中各参数的含义和用途&#xff1a; 通用参数 -help [command] 作用&#xff1a;显示 yarn application 命令的帮助信息。如果指定了 command&#xff0c;则显示该子命令的详细使…...

算法之数据结构

目录 数据结构 数据结构与算法面试题 数据结构 《倚天村 • 图解数据结构》 | 小傅哥 bugstack 虫洞栈 ♥数据结构基础知识体系详解♥ | Java 全栈知识体系 线性数据结构 | JavaGuide 数据结构与算法面试题 数据结构与算法面试题 | 小林coding...

Android 图片压缩详解

在 Android 开发中,图片压缩是一个重要的优化手段,旨在提升用户体验、减少网络传输量以及降低存储空间占用。以下是几种主流的图片压缩方法,结合原理、使用场景和优缺点进行详细解析。 效果演示 直接先给大家对比几种图片压缩的效果 质量压缩 质量压缩:根据传递进去的质…...

迷你世界脚本计时器接口:MiniTimer

计时器接口&#xff1a;MiniTimer 彼得兔 更新时间: 2023-04-26 20:24:50 具体函数名及描述如下: 序号 函数名 函数描述 1 isExist(...) 判断计时器是否存在 2 createTimer(...) 添加计时器 3 deleteTimer(...) 删除计时器 4 startBackwardTimer(.…...

JavaScript的变量以及数据类型

JS变量 变量的声明 四种声明方式 1. <script>var abc;abc"变量声明1";alert(abc);</script>2. <script>var abc"变量声明2";alert(abc);</script><script>var abc1,abc2;abc1"变量声明3.1";abc2"变量声明3…...

私有云基础架构

基础配置 使用 VMWare Workstation 创建三台 2 CPU、8G内存、100 GB硬盘 的虚拟机 主机 IP 安装服务 web01 192.168.184.110 Apache、PHP database 192.168.184.111 MariaDB web02 192.168.184.112 Apache、PHP 由于 openEuler 22.09 系统已经停止维护了&#xff…...

在 Windows 和 Linux 系统上安装和部署 Ollama

引言 Ollama 是一个强大的本地大语言模型&#xff08;LLM&#xff09;运行工具&#xff0c;允许用户轻松下载和运行不同的 AI 模型&#xff0c;如 LLaMA、Mistral 和 Gemma。无论是开发者还是研究人员&#xff0c;Ollama 都提供了一种简单而高效的方式来在本地环境中部署 AI 模…...

从零开始学习Slam--数学概念

正交矩阵 矩阵的转置等于它的逆矩阵&#xff0c;这样的矩阵称之为正交矩阵 即&#xff1a; Q T Q I Q^T Q I QTQI&#xff0c; 这样的矩阵列向量都是单位向量且两两正交。 旋转矩阵属于特殊的正交群&#xff0c;即SO(n)&#xff0c;这里n通常是3&#xff0c;所以SO(3)就是…...

【零基础到精通Java合集】第十五集:Map集合框架与泛型

课程标题:Map集合框架与泛型(15分钟) 目标:掌握泛型在Map中的键值类型约束,理解类型安全的键值操作,熟练使用泛型Map解决实际问题 0-1分钟:泛型Map的意义引入 以“字典翻译”类比泛型Map:明确键和值的类型(如英文→中文)。说明泛型Map的作用——确保键值对的类型一…...

从小米汽车召回看智驾“命门”:智能化时代 — 时间就是安全

2025年1月&#xff0c;小米因车辆“授时同步异常”召回3万余辆小米SU7&#xff0c;成为其造车历程中的首个重大安全事件。 从小米SU7召回事件剖析&#xff0c;授时同步何以成为智能驾驶的命门&#xff1f; 2024年11月&#xff0c;多名车主反馈SU7标准版的智能泊车辅助功能出现…...

Visual Studio Code 如何编写运行 C、C++ 程序

目录 安装 MinGW-w64 编译器&#xff08;推荐&#xff09;在 VS Code 中配置 C 开发环境 参考链接 在vs code上运行c脚本&#xff0c;报了下面的错误&#xff0c;我仅仅安装了vs code及在商店里下载了插件&#xff0c;其它配置操作没有做&#xff0c;直接对一个脚本进行运行&am…...

动静态库-Linux 学习

在软件开发中&#xff0c;程序库是一组预先编写好的程序代码&#xff0c;它们存储了常用的函数、变量和数据结构等。这些库可以帮助开发者节省大量的时间和精力&#xff0c;避免重复编写相同的代码。当我们在 Linux 系统中开发程序时&#xff0c;经常会用到两种类型的程序库&am…...

【Hudi-SQL DDL创建表语法】

CREATE TABLE 命令功能 CREATE TABLE命令通过指定带有表属性的字段列表来创建Hudi Table。 命令格式 CREATE TABLE [ IF NOT EXISTS] [database_name.]table_name[ (columnTypeList)]USING hudi[ COMMENT table_comment ][ LOCATION location_path ][ OPTIONS (options_lis…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...