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还支持部署其他大模型,也可以上传文件,开始使用吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/982598.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯】每天一题,理解逻辑(3/90)【Leetcode 快乐数】

闲话系列&#xff1a;每日一题&#xff0c;秃头有我&#xff0c;Hello&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;,我是IF‘Maxue&#xff0c;欢迎大佬们来参观我写的蓝桥杯系列&#xff0c;我好久没有更新博客了&#xff0c;因为up猪我寒假用自己的劳动换了…

飞机大战lua迷你世界脚本

-- 迷你世界飞机大战 v1.2 -- 星空露珠工作室制作 -- 最后更新&#xff1a;2024年1月 ----------------------------- -- 迷你世界API适配配置 ----------------------------- local UI { BASE_ID 7477478487091949474-22856, -- UI界面ID ELEMENTS { BG 1, -- 背景 BTN_LE…

AI绘画软件Stable Diffusion详解教程(6):文生图、提示词细说与绘图案例

文生图即以文字描述来生成图像&#xff0c;这是目前所有AI绘画软件的基本功能之一。要想画一副好的图片&#xff0c;除了选择好的模型&#xff0c;在文生图中&#xff0c;提示词特别关键。 一、什么是提示词&#xff08;Prompt&#xff09; 提示词又称创意、关键词、咒语、ca…

C++编程:进阶阶段—4.1封装

C面向对象的三大特性&#xff1a;封装、继承、多态 具有相同性质的对象&#xff0c;抽象为类 4.1 封装 封装的意义&#xff1a;将属性和行为作为一个整体&#xff0c;表现生活中的事物&#xff0c;并将属性和行为加以权限控制。 4.1.1 类的定义及实例化对象 语法&#xff…

信奥赛CSP-J复赛集训(模拟算法专题)(1):P8813 [CSP-J 2022] 乘方

信奥赛CSP-J复赛集训&#xff08;模拟算法专题&#xff09;&#xff08;1&#xff09;&#xff1a;P8813 [CSP-J 2022] 乘方 题目描述 小文同学刚刚接触了信息学竞赛&#xff0c;有一天她遇到了这样一个题&#xff1a;给定正整数 a a a 和 b b b&#xff0c;求 a b a^b ab …

Flink深入浅出之02

深入浅出Flink-第二天 目标 掌握常见的DataStream常见的source掌握常见的DataStream的transformation操作掌握常见的DataStream的sink操作了解入门的DataSet API算子 &#x1f4d6; 1. DataStream 的编程模型 DataStream 的编程模型包括四个部分&#xff1a;Environment、D…

[C语言日寄] 字符串操作函数的使用及其拓展

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…

基于websocket的多用户网页五子棋 --- 测试报告

目录 功能测试自动化测试性能测试 功能测试 1.登录注册页面 2.游戏大厅页面 3.游戏房间页面 自动化测试 1.使用脑图编写web自动化测试用例 2.创建自动化项目&#xff0c;根据用例通过selenium来实现脚本 根据脑图进行测试用例的编写&#xff1a; 每个页面一个测试类&am…

【Linux】信号处理以及补充知识

目录 一、信号被处理的时机&#xff1a; 1、理解&#xff1a; 2、内核态与用户态&#xff1a; 1、概念&#xff1a; 2、重谈地址空间&#xff1a; 3、处理时机&#xff1a; 补充知识&#xff1a; 1、sigaction&#xff1a; 2、函数重入&#xff1a; 3、volatile&…

(三) 征服MySQL面试:30+高频核心问题深度剖析与实战指南

一、为什么MySQL是面试的"必答题"&#xff1f; 数据库领域占比&#xff1a;MySQL占据全球关系型数据库市场份额Top 3&#xff0c;阿里、腾讯、美团等大厂核心系统深度依赖技术栈深度检验&#xff1a;通过MySQL问题可考察候选人的数据结构理解、系统设计能力、性能优…

TensorFlow深度学习实战(10)——迁移学习详解

TensorFlow深度学习实战(10)——迁移学习详解 0. 前言1. 迁移学习1.1 迁移学习基本概念1.2 迁移学习的重要性1.3 ImageNet1.4 迁移学习流程2. Inception V3 架构3. 构建迁移学习模型小结系列链接0. 前言 迁移学习( Transfer Learning )是一种利用从一项任务中获得的知识来解…

Docker基础篇——什么是Docker与Docker的仓库、镜像、容器三大概念

大家好我是木木&#xff0c;在当今快速发展的云计算与云原生时代&#xff0c;容器化技术蓬勃兴起&#xff0c;Docker 作为实现容器化的主流工具之一&#xff0c;为开发者和运维人员带来了极大的便捷 。下面我们一起了解下什么是Docker与与Docker的仓库、镜像、容器三大概念。 …

蓝桥杯题型

蓝桥杯题型分类 二分 123 传送门 1. 小区间的构成 假设数列的构成是如下形式&#xff1a; 第 1 个区间包含 1 个元素&#xff08;1&#xff09;。第 2 个区间包含 2 个元素&#xff08;1 2&#xff09;。第 3 个区间包含 3 个元素&#xff08;1 2 3&#xff09;。第 4 个区…

大模型AI平台DeepSeek 眼中的SQL2API平台:QuickAPI、dbapi 和 Magic API 介绍与对比

目录 1 QuickAPI 介绍 2 dbapi 介绍 3 Magic API 介绍 4 简单对比 5 总结 统一数据服务平台是一种低代码的方式&#xff0c;实现一般是通过SQL能直接生成数据API&#xff0c;同时能对产生的数据API进行全生命周期的管理&#xff0c;典型的SQL2API的实现模式。 以下是针对…

本地部署pangolin获取谱系,从而达到预测新冠的流行趋势

步骤 1&#xff1a;安装Docker 注&#xff1a;此步骤忽略&#xff0c;可通过Docker官网对于文档进行安装,地址如下 Docker: Accelerated Container Application Developmenthttps://www.docker.com/ 步骤 2&#xff1a;拉取Pangolin镜像 docker pull staphb/pangolin:latest 步…

HarmonyOS Next 属性动画和转场动画

HarmonyOS Next 属性动画和转场动画 在鸿蒙应用开发中&#xff0c;动画是提升用户体验的关键要素。通过巧妙运用动画&#xff0c;我们能让应用界面更加生动、交互更加流畅&#xff0c;从而吸引用户的注意力并增强其使用粘性。鸿蒙系统为开发者提供了丰富且强大的动画开发能力&…

K8S学习之基础十:k8s中初始化容器和主容器

init容器和主容器 init容器和主容器的区别 初始化容器不支持 Readinessprobe&#xff0c;因为他们必须在pod就绪之前运行完成每个init容器必须运行成功&#xff0c;下一个才能够运行 # 定义两个初始化容器&#xff0c;完成后再运行主容器 vi pod-init.yaml apiVersion: v1 …

PostgreSQL 安装与使用

下载地址: EDB: Open-Source, Enterprise Postgres Database Management 安装图形化安装界面安装。安装完后将bin目录配置到系统环境变量 执行psql -h localhost -p 5432 -U postgres 密码在安装过程中设置的 ​ 0、修改密码 ALTER USER sonar WITH PASSWORD 123456; 1、新…

WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中

WPF高级 | WPF 应用程序部署与发布&#xff1a;确保顺利交付到用户手中 一、前言二、部署与发布基础概念2.1 部署的定义与目的2.2 发布的方式与渠道2.3 部署与发布的关键要素 三、WPF 应用程序打包3.1 使用 Visual Studio 自带的打包工具3.2 使用第三方打包工具 四、发布到不同…

Mybatis 的关联映射(一对一,一对多,多对多)

前言 在前面我们已经了解了&#xff0c;mybatis 的基本用法&#xff0c;动态SQL&#xff0c;学会使用mybatis 来操作数据库。但这些主要操作还是针对 单表实现的。在实际的开发中&#xff0c;对数据库的操作&#xff0c;常常涉及多张表。 因此本篇博客的目标&#xff1a;通过my…