服务器离线部署DeepSeek

目标

本次部署的目标是在本地服务器上部署DeepSeek。但是该服务不能连接外网,因此只能使用离线部署的方式。为了一次完成部署。现在云服务器上进行尝试。

云服务器部署尝试

云服务器配置

  • CentOS7
  • 2080Ti 11GB

安装准备

1、上传iso并配置为本地yum源
安装前先将网盘中的epel上传到服务器并配置成本地iso
文件名为:centos7-epel.iso
上传后,新建一个目录

mkdir -p /opt/epel/
mount -o loop /xxx/xxx/centos7-epel.iso /opt/epel/

配置epel为本地yum源

touch /etc/yum.repos.d/epel.repo
vim /etc/yum.repos.d/epel.repo

填写内容如下:

[epel]
name=epel
baseurl=file:///opt/epel/
gpgcheck=0
enable=1

保存

yum clean all
yum repolist
yum makecache

执行以上命令清理并重新配置缓存信息
2、安装cuda与驱动
nvidia-smi 命令 显示cuda与驱动即可

3、安装ollama
下载百度盘中文件,其中

install.sh
ollama-linux-amd64.tgz

两个文件是ollama的离线安装文件
将两个文件放在同一个目录,赋予install.sh执行权限之后运行即可

chmod u+x install.sh
./install.sh

安装好之后,执行如下命令,可以看到ollama的安装版本则表示安装成功

ollama serve
ollama -v
ollama version is 0.5.7

ollama与docker类似。可以通过–help来查看帮助,这里不多介绍

4、安装ffmpeg,open-webui需要
将ffmpeg安装包传输到部署服务器ffmpeg-5.1.tar.gz
解压安装

tar zcvf ffmpeg-5.1.tar.gz
cd ffmpeg-5.1
./configure --disable-x86asm
make -j 40
make install

下载模型

由于是离线安装,无法联网,因此也无法通过部署服务器直接下载模型

这时候,我们需要使用可以联网的linux设备下载模型,也可以使用笔者的链接提供的下载好的模型文件
deepseek-r1-32b-models.tar.gz

1、如何自己下载模型(在可联网的机器上)

先修改ollama的存储位置,编辑下面的文件

vim /etc/systemd/system/ollama.service

在[Service]参数项中增加下面一行,具体目录可以自己定义,笔者使用的是/opt/ai/models

Environment="OLLAMA_MODELS=/opt/ai/models"

将models目录设置属主,必须做,否则ollama无法启动

chown ollama:ollama /opt/ai/models -R

或者

chown a10:a10 /opt/ai/models -R

重新加载配置文件并重启ollama

systemctl daemon-reload
systemctl restart ollama

然后通过

ollama run deepseek-r1:32b

下载模型,在进度条走完后,模型下载完成,存储在/opt/ai/models目录中

打包models目录,并将整个目录迁移到部署的服务器即可

2、如何使用笔者提供的已经下载的模型,同时也是1的延续

在离线部署服务器上,修改ollama的service文件指定models目录

笔者使用了和下载服务器相同的目录

Environment="OLLAMA_MODELS=/opt/ai/models"

将models打包文件传输过来,解压覆盖

ollama list

即可看到模型
这时候,使用如下命令即可运行模型

ollama run deepseek-r1:32b

运行命令后处于terminal状态,可直接提问,模型会反馈对应结果

使用open-webui支持deepseek图形界面及便捷访问

1、python

必须使用3.11版本,如果使用其他版本,则会出现安装缺包的问题
2、pip

如果有本地pip源最好,如果没有,可使用笔者提供的已经下载好的whl文件

open-webui-whl-offline.tar.gz

至于如何本地安装这些whl文件,请自行百度。这里不多介绍

3、安装好open-webui之后配置环境变量

export OLLAMA_BASE_URL=http://127.0.0.1:11434
export OPENAI_API_BASE_URL=None
export OPENAI_API_KEY=None
以上三个环境变量的意思分别是
设置本地ollama的接口,将openai的一些配置取消,因为是离线模式,无法连接openai,切记设置,否则open-webui很容易白屏

4、启动open-webui
如果你在安装python 3.11的版本的时候,将python 3.11的bin目录配置到了PATH中,则 open-webui可直接执行,否则需要到python 3.11 的bin目录下查找到open-webui的二进制文件

启动open-webui

open-webui serve

需要等。笔者也不是很清楚,等了大概一分钟才启动成功,大概率还是没联网的问题

看到如下info信息,则表示open-webui启动成功
在这里插入图片描述

本地服务器

本地服务器已经有CUDA了,并且是12.4,CentOS7能支持的最高版本
本地已经有ollama了。但是在部署过程中由于ollma版本低。并不支持deepseek-r1 70b模型了

所有文件上传到 /home/a10/Downloads下了

1、ollma升级

下载百度盘中文件,其中

install.sh
ollama-linux-amd64.tgz

两个文件是ollama的离线安装文件

将两个文件放在同一个目录,赋予install.sh执行权限之后运行即可

chmod u+x install.sh
./install.sh

安装好之后,执行如下命令,可以看到ollama的安装版本则表示安装成功

ollama serve
ollama -v
ollama version is 0.5.7

ollama与docker类似。可以通过–help来查看帮助,这里不多介绍

2、deepseek模型部署

/home/a10/ 下创建 deepseek文件夹

1、上传 deepseek-r1-70b-models.tar.gz

解压文件夹

2、修改ollama配置文件

vim /etc/systemd/system/ollama.service

修改Environment=“OLLAMA_MODELS=/home/a10/deepseek/models”

[Unit]Description=Ollama ServiceAfter=network-online.target[Service]ExecStart=/usr/bin/ollama serveUser=ollamaGroup=ollamaRestart=alwaysRestartSec=3Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/home/a10/deepseek/models"
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="CUDA_VISIBLE_DEVICES=0,1,2,3,4,5"
#Environment="CUDA_VISIBLE_DEVICES=0,1,2,3"[Install]WantedBy=default.target

将models目录设置属主,必须做,否则ollama无法启动

chown a10:a10 /home/a10/deepseek/models -R

重新加载配置文件并重启ollama

systemctl daemon-reload
systemctl restart ollama

查看 deepseek模型是否存在

ollama list

存在,运行即可

ollama run deepseek-r1:70b

运行命令后处于terminal状态,可直接提问,模型会反馈对应结果

ollama 可以通过 http://服务器ip:11434/ 测试是否启动

3、python升级3.11.9

注意: 一定要是用python 3.11 因为 open-webui需要
我是用下面的方法安装的3.11.9但是里面有坑 比如 ssl 就没有。还有这个教程是 将python的版本升级成3.11.9。而python3的没变

  • Linux系统安装python3.11.1

4、安装open-webui

三步教会你完全离线搭建openwebui 这个不好用
可以跟下面的教程:

  • centos部署open-webui
  • centos部署open-webui的完整流程记录

出现错误:
1)在 /home/a10/Downloads/open-webui-whl-offline文件夹下运行下面代码出错

pip install --no-index --find-links=. open_webui-0.5.10-py3-none-any.whl

出错原因:

Processing ./nest_asyncio-1.6.0-py3-none-any.whl (from unstructured-client->unstructured==0.16.11->open-webui==0.5.10)
INFO: pip is looking at multiple versions of google-api-core[grpc] to determine which version is compatible with other requirements. This could take a while.
ERROR: Could not find a version that satisfies the requirement grpcio-status<2.0.dev0,>=1.33.2; extra == "grpc" (from google-api-core[grpc]) (from versions: 1.63.0rc1)
ERROR: No matching distribution found for grpcio-status<2.0.dev0,>=1.33.2; extra == "grpc"

这是由于 单个文件他获取不到导致的。比如 grpcio_status-1.63.0rc1-py3-none-any.whl 是存在的。但是由于rc1是预装的,pip不会主动安装它。因此可以先手动安装。

pip install --no-index --find-links=. grpcio_status-1.63.0rc1-py3-none-any.whl

再进行安装

pip install --no-index --find-links=. open_webui-0.5.10-py3-none-any.whl

2)如果中间遇到某一个tar.gz的包无法安装成功,可以解压缩,进入到解压缩后的目录,用包中的setup单独安装下:

python setup.py install

源码编译安装python3.12没有ssl模块,python3.12 ModuleNotFoundError: No module named ‘_ssl‘

3)运行 open-webui serve时,总是提示SQLite 版本低。明明已经配置了。

NotSupportedError: (sqlite3.NotSupportedError) deterministic=True requires SQLite 3.8.3 or higher
(Background on this error at: https://sqlalche.me/e/20/tw8g)

解决方法:

  • centos部署open-webui
  • centos部署open-webui的完整流程记录

参考连接

  • Centos7/Redhat7下离线部署ollama与deepseek-R1-32B模型
  • centos7离线安装cuda,cudnn,torch(一)
  • Linux系统安装python3.11.1
  • 三步教会你完全离线搭建openwebui 这个不好用
  • 源码编译安装python3.12没有ssl模块,python3.12 ModuleNotFoundError: No module named ‘_ssl‘
  • centos部署open-webui
  • centos部署open-webui的完整流程记录

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

删除idea recent projects 记录

1、退出idea&#xff08;一定要全部退出idea&#xff0c;要不然删除后&#xff0c;idea一退出&#xff0c;又保存上了&#xff09; 2、进入 C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2024.1\options 目录 根据不同的版本号 IntelliJIdea2024.1 这个地方…

【MySql】EXPLAIN执行计划全解析:15个字段深度解读与调优指南

文章目录 一、执行计划核心字段总览二、关键字段深度拆解1. type&#xff08;访问类型&#xff09;——查询性能的晴雨表典型场景分析&#xff1a; 2. key_len&#xff08;索引使用长度&#xff09;——索引利用率的检测仪计算示例&#xff1a; 3. Extra&#xff08;附加信息&a…

如何实现一个 Spring Boot Starter

在 Spring Boot 中&#xff0c;Starter 是一种自动配置的模块&#xff0c;它封装了一些常用的功能&#xff0c;并通过 Spring Boot 的约定大于配置的原则&#xff0c;使开发者能够快速使用和集成相关功能。通常&#xff0c;Spring Boot Starter 包含了所需的依赖、配置、自动化…

使用python做http代理请求

有这样一个需求现在有两台A&#xff0c;B两台电脑组成了一个局域网&#xff0c;在A电脑上开发webjava应用&#xff0c;需要调用第三方接口做http请求&#xff0c;但是这个请求只能在B电脑上请求。 一种解决方案&#xff1a;自定义一个中间服务&#xff0c;在电脑B上运行一个简…

系统架构设计师考点——嵌入式技术

一、备考指南 嵌入式技术主要考查的是嵌入式基础知识、嵌入式设计等相关知识&#xff0c;在系统架构设计师的考试中选择题占2~4分&#xff0c;案例分析有时会考关键路径的技术问答&#xff0c;这个题目一般比较难&#xff0c;但是由于案例分析题是五题选三题&#xff0c;所以…

当AI重构认知:技术狂潮下的教育沉思录

备注&#xff1a;文章未Deepseek R1模型辅助生成&#xff0c;如有不妥请谅解。 以下使原文&#xff1a; 我有三个娃&#xff0c;各间隔4到5岁&#xff0c;经历过搜索引擎&#xff0c;短视频&#xff0c;短剧&#xff0c;本身曾经也是教育专业出生&#xff0c;任何事务都有两面性…

EasyExcel 实践案例:打印工资条

文章目录 &#x1f4a1; 1. 每个员工一个 Excel 文件✅ 占位符格式&#x1f4cc; Excel 模板&#x1f4cc; Java 代码&#x1f525; 关键点 &#x1f4a1; 2. 每个员工一个 Sheet✅ 占位符格式&#x1f4cc; Java 代码&#x1f525; 关键点 &#x1f4a1; 3. 一个 Sheet&#x…

编程题-从前序与中序遍历序列构造二叉树(中等-重点)

题目&#xff1a; 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 提示: preorder 和 inorder 均 无重复 元素 解法一&#xff08;递归&#xff0…

Vue 3 + Vite 项目配置访问地址到服务器某个文件夹的解决方案

前言 在开发 Vue 3 Vite 项目时&#xff0c;我们经常需要将项目部署到服务器的某个特定文件夹下。例如&#xff0c;将项目部署到 /my-folder/ 目录下&#xff0c;而不是服务器的根目录。这时&#xff0c;我们需要对 Vite 和 Vue Router 进行一些配置&#xff0c;以确保项目能…

【Rust中级教程】2.10. API设计原则之受约束性(constrained) Pt.1:对类型进行修改、`#[non_exhaustive]`注解

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 2.10.1. 接口的更改要三思 如果你的接口要做出对用户可见的更改&#xff0c;那么一定要三思…

Imagination GPU 3D Graphics Wrokload

本次分享Imagination GPU 的3D 图像处理负载流程。 总的分为两个阶段 第一阶段&#xff1a;Geometry Processing Phase&#xff08;几何处理阶段&#xff09;是渲染管线中的一个关键环节&#xff0c;主要负责对三维几何数据进行处理和变换&#xff0c;以便后续在屏幕上进行显…

自动化设备对接MES系统找DeepSeek问方案

项目需要现场的PLC设备HTTP协议JSON格式的方式对接MES系统平台&#xff0c;于是试了一下&#xff1a; 找到的相关资源链接在这里。

VoIP之音频3A技术

音频3A技术是改善语音通话质量的三种关键技术的简称&#xff0c;包括声学回声消除&#xff08;Acoustic Echo Cancellation, AEC&#xff09;、自动增益控制&#xff08;Automatic Gain Control, AGC&#xff09;、自噪声抑制&#xff08;Automatic Noise Suppression, ANS&…

量子计算的数学基础:复数、矩阵和线性代数

量子计算是基于量子力学原理的一种新型计算模式,它与经典计算机在信息处理的方式上有着根本性的区别。在量子计算中,信息的最小单位是量子比特(qubit),而不是传统计算中的比特。量子比特的状态是通过量子力学中的数学工具来描述的,因此,理解量子计算的数学基础对于深入学…

京准电钟:NTP精密时钟服务器在自动化系统中的作用

京准电钟&#xff1a;NTP精密时钟服务器在自动化系统中的作用 京准电钟&#xff1a;NTP精密时钟服务器在自动化系统中的作用 NTP精密时钟服务器在自动化系统中的作用非常重要&#xff0c;特别是在需要高精度时间同步的场景中。NTP能够提供毫秒级的时间同步精度&#xff0c;这…

Python实现GO鹅优化算法优化Catboost回归模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 在当今的数据驱动时代&#xff0c;机器学习模型在各种应用中扮演着至关重要的角色。特别是在预测分…

如何在docker上部署前端nginx服务(VUE)

目录结构 clean.sh docker stop rszWeb; docker rm rszWeb; start.sh docker run -d \ --name rszWeb \ -p 7084:80 \ -m 500m \ --privileged=true \ --restart=always \ -v /home/rsz/ui/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /home/rsz/ui/logs:/meta/logs \ -v /…

可狱可囚的爬虫系列课程 15:防盗链反爬虫的处理

一、防盗链了解 防盗链是一种技术手段&#xff0c;主要用于防止其他网站通过直接链接的方式使用本网站的资源&#xff08;如图片、文件等&#xff09;&#xff0c;从而节省带宽和服务器资源。当其他网站尝试直接链接到受保护的资源时&#xff0c;服务器会根据设置的规则判断请求…

2020年蓝桥杯Java B组第二场题目+部分个人解析

#A&#xff1a;门牌制作 624 解一&#xff1a; public static void main(String[] args) {int count0;for(int i1;i<2020;i) {int ni;while(n>0) {if(n%102) {count;}n/10;}}System.out.println(count);} 解二&#xff1a; public static void main(String[] args) {…

Hadoop架构详解

Hadoop 是一个开源的分布式计算系统&#xff0c;用于存储和处理大规模数据集。Hadoop 主要由HDFS&#xff08;Hadoop Distributed File System&#xff09;、MapReduce、Yarn&#xff08;Jobtracker&#xff0c;TaskTracker&#xff09;三大核心组件组成。其中HDFS是分布式文件…