一、准备工作

  • 操作系统:Ubuntu22.04.2

  • DeepSeek离线环境包:离线环境包中包含了ollama、docker、docker compose、MaxKB、Dify离线包(Dify运行所依赖的docker镜像需要联网拉取)

  • DeepSeek-R1模型:联网拉取模型比较慢,提前准备模型文件可大大缩短部署时间

二、安装GPU驱动及CUDA

1、安装前准备工作

1.1 确认GPU型号和操作系统版本
1.2 准备gpu驱动和CUDA软件包

在nvidia官网进行驱动包下载

#GPU驱动下载链接:
https://www.nvidia.cn/Download/index.aspx?lang=cn
#linux系统均选择 Linux 64-bit
#CUDA Toolkit选择最新版本
#CUDA下载链接:
https://developer.nvidia.com/cuda-downloads
#选择合适的操作系统版本进行下载,本次下载runfile文件安装

1.3 检查服务器GPU识别情况

安装GPU驱动之前需要在操作系统下查看GPU卡是否能够完全识别,如不能识别需要进行重新插拔、对调测试等步骤进行硬件排查。

#确保可以查看到所有的GPU
lspci | grep -i nvidia
1.4 安装gcc、g++编译器

GPU驱动安装时需要gcc编译器。

cuda安装samples测试程序进行make时需要g++,但安装cuda软件包时不需要。

#检查版本
gcc -v
g++ -v
#软件包安装
apt-get install gcc
apt-get install g++
apt-get install make
#软件包检查
dpkg -l gcc
dpkg -l g++
dpkg -l make
1.5 禁用系统自带的nouveau模块

检查nouveau模块是否加载,已加载则先禁用

lsmod | grep nouveau
#返回内容则表示nouveau模块未禁用,无内容返回则表示nouveau模块已禁用
vi /etc/modprobe.d/blacklist.conf
#在文本最后添加以下内容:
blacklist nouveau
options nouveau modeset=0
#保存退出
按Esc后输入
:wq
#执行以下命令使配置文件生效:
update-initramfs -u
#重启操作系统
reboot
1.6 修改系统运行级别为文本模式

若使用Ubuntu-server系统最小化安装,则已经处于文本模式,可跳过该步骤

若使用Ubuntu-desktop安装带有GUI界面的系统,则需要切换到文本模式

#切换为文本模式
init3
#切换回GUI界面
init5

2、GPU驱动安装

2.1 root用户下进行GPU驱动安装
chmod +x NVIDIA-xxx.run
./NVIDIA-Linux-x86_64-390.46.run --no-opengl-files --ui=none --no-questions --accept-license
2.2 配置GPU驱动内存常驻模式
#GPU驱动模式设置为常驻内存:
nvidia-smi -pm 1
#设置开机自启动
vim /etc/rc.local
#在文件中添加一行
nvidia-smi -pm 1
#赋予/etc/rc.local文件可执行权限
chmod +x /etc/rc.local
2.3 检查驱动是否安装成功

安装完GPU驱动后,可以使用nvidia-smi命令进行GPU状态查看及相关配置

nvidia-smi

3、CUDA安装

3.1 安装CUDA
chmod +x cuda-xxx.run
./cuda-xxx.run --no-opengl-libs

注意Driver选项,表示是否安装GPU驱动,如果之前已经安装了GPU驱动,这里不要再勾选。

3.2 配置环境变量
vim /etc/profile
#添加以下内容到/etc/profile文件中
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
#使/etc/profile文件生效
source /etc/profile
#测试cuda安装是否正确,环境变量是否识别成功
nvcc -V

三、安装ollama

1、安装ollama

ollama在线安装因网络问题,安装速度较慢,这里使用离线安装的方式。

将离线安装包ollama-linux-amd64.tgz和安装脚本拷贝至同一目录下,执行安装脚本即可:

chmod +x install.sh
./install

安装完成后需要对ollama配置文件进行调整

vim /etc/systemd/system/ollama.service

#该配置表示让ollama能识别到第几张显卡,以下为2张GPU卡
Environment="CUDA_VISIBLE_DEVICES=0,1"

#配置多张卡均衡使用
Environment="OLLAMA_SCHED_SPREAD=1"

#模型一直加载, 不自动卸载
Environment="OLLAMA_KEEP_ALIVE=-1"

#ollama监听地址,0.0.0.0是对IP没有限制,若服务器可访问互联网,务必把监听地址设置为服务器地址,否则存在安全风险
Environment="OLLAMA_HOST=0.0.0.0"

#ollama监听端口,默认端口“11434”
Environment="OLLAMA_PORT=11434"

#重启ollama,使配置文件生效
systemctl daemon-reload
systemctl restart ollama

#以下为其他环境变量参数,根据实际需求增加
#调用分散模式 多显卡的情况  处理多并发的情况下 可以减少时间
Environment="OLLAMA_SCHED_SPREAD=true"
#最大线程数,同时允许的最大处理并发数
Environment="OLLAMA_NUM_PARALLEL=15"
#最大模型数,同时可以加载最多几个模型
Environment="OLLAMA_MAX_LOADED_MODELS=1"
#模型存储路径
Environment="OLLAMA_MODELS=/mnt/rayse/files/ollama/models"
#启动服务的指令
ExecStart=/usr/bin/ollama serve
#设置服务停止后重新启动的时间间隔
RestartSec=3
#指定运行服务的用户,服务将以 ollama 用户的身份运行
User=ollama
#指定运行服务的用户组,服务将属于 ollama 用户组
Group=ollama
#配置服务异常停止后的自动重启
Restart=always
#模型加载后保留的时间,超过1小时,就卸载了,就要从新加载模型
Environment="OLLAMA_KEEP_ALIVE=1h"

2、拉取模型(网络状况良好或未准备模型文件时选择)

#ollama拉取模型的命令为 ollama pull [model name],以DeepSeek-R1:7B为例
ollama pull deepseek-r1:7b

#ollama运行模型使用 ollama run [model name],若本地不存在模型,则在线拉取模型,本地存在模型则直接运行
ollama run deepseek-r1:7b

#退出模型对话
/bye

3、加载离线模型文件(推荐)

ollama模型文件默认存储在/usr/share/ollama/.ollama/models目录中,该目录下有blobs和manifests目录

以DeepSeek-R1:7B离线模型上传至/home为例

cd /home/DeepSeek-R1:7B/blobs
#把/home/DeepSeek-R1:7B/blobs目录下模型文件全部拷贝至/usr/share/ollama/.ollama/models/blobs目录下
cp -r ./* /usr/share/ollama/.ollama/models/blobs/
#给模型文件赋权
chmod -R 777 /usr/share/ollama/.ollama/models/blobs/
#运行模型以测试模型是否可以正常使用
ollama run deepseek-r1:7b

#退出模型对话
/bye

四、离线部署docker&docker compose

1、docker安装

1.1 docker离线包下载
#离线包下载链接:https://link.zhihu.com/?target=https%3A//download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/
dpkg -i ./containerd.io_1.6.21-1_amd64.deb ./docker-ce_24.0.2-1~ubuntu.20.04~focal_amd64.deb ./docker-ce-cli_24.0.2-1~ubuntu.20.04~focal_amd64.deb ./docker-buildx-plugin_0.13.1-1~ubuntu.20.04~focal_amd64.deb ./docker-compose-plugin_2.24.2-1~ubuntu.20.04~focal_amd64.deb

1.2 使用dpkg -i *.deb安装目录下所有.deb包
cd /docker

root@inspur:/home/DeepSeek离线部署/docker# ll
total 171092
drwxr-x--x 2 root root     4096 Mar 23 04:40 ./
drwxr-x--x 6 root root     4096 Mar 23 04:40 ../
-rw-r----- 1 root root 29612784 Mar 23 04:40 containerd.io_1.7.25-1_amd64.deb
-rw-r----- 1 root root 35255696 Mar 23 04:40 docker-buildx-plugin_0.21.1-1~ubuntu.20.04~focal_amd64.deb
-rw-r----- 1 root root 19129400 Mar 23 04:40 docker-ce_28.0.1-1~ubuntu.20.04~focal_amd64.deb
-rw-r----- 1 root root 15744320 Mar 23 04:40 docker-ce-cli_28.0.1-1~ubuntu.20.04~focal_amd64.deb
-rw-r----- 1 root root 61475103 Mar 23 04:40 docker-compose-linux-x86_64
-rw-r----- 1 root root 13951180 Mar 23 04:40 docker-compose-plugin_2.33.1-1~ubuntu.20.04~focal_amd64.deb
-rw-r----- 1 root root     2985 Mar 23 04:40 README.txt

dpkg -i *.deb

1.3 将用户权限添加到docker中
groupadd docker
#添加docker用户组

gpasswd -a $USER docker
#将登陆用户加入到docker用户组中

newgrp docker
#更新用户组

docker images
#测试docker命令是否可以使用sudo正常使用

2、安装docker compose

2.1 docker compose离线包下载
#离线包下载链接:https://link.zhihu.com/?target=https%3A//github.com/docker/compose/releases/tag/v2.25.0

docker compose安装

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v

3、 设置docker开机启动

#docker设置为开启启动
systemctl list-units --type=service

UNIT:服务单元名称
LOAD:表示systemd是否正确解析了单元的配置并将该单元加载到内存中
ACTIVE:表示单元的高级激活状态,此信息表示单元是否已经成功启动
SUB:表示单元的低级别激活状态,此信息指示有关该单元的更多详细信息
DESCRIPTION:表示单元的简短描述

#启动命令
systemctl start docker

#查看是否设置开机启动
$ sudo systemctl list-unit-files | grep docker
#或者使用查看status
$ sudo systemctl status docker.service
#显示enabled,说明docker服务已设置开机启动 ,如果未设置,则执行命令:
systemctl enable docker.service 
#容器设置开机自动启动
# 在启动命令中添加 --restart=always
docker run -d --restart=always --name=nginx 605c77e624dd

参数说明:
--restart=always :表示容器退出时,docker会总是自动重启这个容器 ​
--restart=on-failure:3 :表示容器的退出状态码非0(非正常退出),自动重启容器,3是自动重启的次数。超过3此则不重启 ​
--restart=no :默认值,容器退出时,docker不自动重启容器 ​
--restart=unless-stopped :表示容器退出时总是重启,但是不考虑docker守护进程运行时就已经停止的容器

#将运行中的容器改为自动启动
docker update --restart=always [容器id或name] 

4、 修改docker镜像源为国内源

#方法一
tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.imgdb.de",
    "https://docker-0.unsee.tech",
    "https://docker.hlmirror.com",
    "https://cjie.eu.org"
    ]
}
EOF

#方法二
#修改daemon.json
nano /etc/docker/daemon.json

{
    "registry-mirrors": [
   "https://docker.m.daocloud.io",
   "https://docker.imgdb.de",
   "https://docker-0.unsee.tech",
   "https://docker.hlmirror.com",
   "https://cjie.eu.org"
    ]
}

#重启docker
systemctl daemon-reload 

systemctl restart docker

五、安装Dify

1、配置Dify

#解压Dify源码包
tar -xzvf dify-1.1.2.tar.gz
#进入dify/docker目录
cd dify-1.1.2/docker/
#复制配置环境文件
cp .env.example .env

#在.env文件961行之后添加以下内容
# 启用自定义模型
CUSTOM_MODEL_ENABLED=ture
#指定Ollama的API地址(根据部署环境调整IP)OLLAMA_API_BASE_URL=host.docker.internal:11434

2、启动Dify容器

docker compose up -d
#第一次启动Dify容器,会自动拉取Dify运行所需的组件

docker compose down
#停止Dify容器服务
#在dify/docker目录下执行
docker compose down

3、访问Dify

#Dify默认使用80端口
#服务器本机环境
http://localhost

#从其他主机访问
http://your_server_ip
#例如
http://192.168.1.104

首次访问需要配置管理员账号

4、配置模型ollama部署的模型

4.1 安装ollama插件

使用管理员账号登录,进入设置后选择模型供应商,找到ollama后安装

4.2 配置ollama API

在模型供应商里面找到ollama插件,选择添加模型

根据提示填写ollama模型信息

  • 模型类型:选择LLM

  • 模型名称:填写ollama部署的模型名称

  • 基础URL:填写服务器IP及ollama端口号(http://ip:11434

  • 模型类型:选择对话

  • 模型上下文长度:可查询当前模型所支持的最大长度根据需求填写

  • 最大token上限:可查询当前模型所支持的最大token长度填写

六、安装MaxKB

1、在线安装

MaxKB 支持一键启动,执行以下命令进行安装:

docker run -d --name=maxkb --restart=always -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data -v ~/.python-packages:/opt/maxkb/app/sandbox/python-packages registry.fit2cloud.com/maxkb/maxkb

2、离线安装

2.1 解压安装包
tar -xzvf undefined_3.gz
2.2 安装配置(可选)

MaxKB 安装目录、服务运行端口、数据库配置等信息可在安装包解压后中的 install.conf 文件进行配置

## 安装目录
MAXKB_BASE=/opt
## Service 端口
MAXKB_PORT=8080
## docker 网段设置
MAXKB_DOCKER_SUBNET=172.19.0.0/16
# 数据库配置
## 是否使用外部数据库
MAXKB_EXTERNAL_PGSQL=false
## 数据库地址
MAXKB_PGSQL_HOST=pgsql
## 数据库端口
MAXKB_PGSQL_PORT=5432
## 数据库库名
MAXKB_PGSQL_DB=maxkb
## 数据库用户名
MAXKB_PGSQL_USER=root
## 数据库密码
MAXKB_PGSQL_PASSWORD=Password123@postgres

注意:首次安装之前可在 install.conf文件中的修改参数,安装时则根据修改后的参数执行安装。完成安装后如需再次修改配置参数,则需要在 ${MAXKB_BASE}/maxkb/.env(默认是 /opt/maxkb/.env)文件中进行修改,并且在修改完后需执行 mkctl reload 命令重新加载配置文件。

2.3 执行安装脚本
# 进入安装包解压缩后目录  
cd maxkb-v1.2.0-offline

# 执行安装命令
bash install.sh

3、访问MaxKB

待所有容器状态显示为healthy后,即可通过浏览器访问地址 http://目标服务器 IP 地址:8080,并使用默认的管理员用户和密码登录 MaxKB。

用户名:admin
默认密码:MaxKB@123..

登录

4、配置ollama部署的模型

选择系统设置-模型设置-添加模型-ollama

  • 模型名称:填写ollama中部署的deepseek模型名称

  • 权限:根据需求选择,需要设置为公有非管理员用户才能使用模型

  • 模型类型:选择大语言模型

  • 基础模型:选择ollama中部署的deepseek模型,若选项中没有,直接输入即可

  • API URL:填写服务器IP及ollama端口号(http://ip:11434

  • API Key:ollama部署过程中为设置API Key,该项填写任意内容即可

七、补充内容

deepseek模型为大语言模型,可用于创建聊天助手等chat类型应用即可,创建知识库建议部署向量模型;

向量模型更适合用于文本分析、语义搜索、问答系统等应用。

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐