Ollama+ WebUI 部署deepseek-r1

  • 操作系统: Ubuntu 22.04.4 LTS

环境配置

1. 系统依赖

更新系统
bash 复制代码
sudo apt update && sudo apt upgrade -y
安装基础工具
bash 复制代码
sudo apt install -y build-essential git wget curl python3-pip python3-venv

2. NVIDIA 驱动和 CUDA

2.1 安装 NVIDIA 驱动
bash 复制代码
# 查看推荐驱动版本
ubuntu-drivers devices

# 自动安装推荐驱动(或手动指定版本)
sudo ubuntu-drivers autoinstall

# 安装指定版本驱动(如 550 版本)
sudo apt install nvidia-driver-550#本次选用

# 重启后验证
nvidia-smi
2.2 安装 CUDA 11.8+ 和 cuDNN

CUDA官方安装

以 CUDA 12.1 为例:

bash 复制代码
# 下载 CUDA 12.1 安装包
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run

# 安装 CUDA(按提示操作)
sudo sh cuda_12.1.0_530.30.02_linux.run

配置环境变量

生效的配置方式:

bash 复制代码
# 编辑环境变量配置文件
sudo nano /etc/profile.d/cuda.sh

# 添加以下内容:
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH

# 使配置生效
source /etc/profile.d/cuda.sh

# 更新动态库链接
sudo ldconfig

# 验证 CUDA
nvcc --version

3. 安装 Conda 环境

3.1 下载并安装 Miniconda
bash 复制代码
# 下载 Miniconda 安装脚本(Python 3.10)
wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.11.0-2-Linux-x86_64.sh

# 运行安装脚本,按提示操作(安装路径建议默认)
bash Miniconda3-py310_23.11.0-2-Linux-x86_64.sh

# 激活 conda 环境
source ~/.bashrc
3.2 创建专用环境
bash 复制代码
conda create -n deepseek-ollama python=3.12 -y
conda activate deepseek-ollama

4. 安装 Ollama

4.1 通过官方脚本安装 Ollama

自动安装(失败时使用手动方式)

bash 复制代码
curl -fsSL https://ollama.com/install.sh | sh

手动分步安装

  1. 下载安装脚本:

    bash 复制代码
    curl -O https://ollama.com/install.sh
    chmod +x install.sh
  2. 手动下载 Ollama Linux bundle:

    bash 复制代码
    wget https://ollama.com/download/ollama-linux-amd64.gz

    或从 Ollama GitHub Releases 获取最新安装包。

  3. 验证文件完整性(可选):

    bash 复制代码
    sha256sum ollama-linux-amd64.tar.gz
  4. 解压文件并将可执行文件移动到系统路径:

    bash 复制代码
    sudo tar -C /usr -xzf ollama-linux-amd64.tgz
  5. 创建 Ollama 用户和组:

    bash 复制代码
    sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
    sudo usermod -a -G ollama $(whoami)
  6. 手动创建服务文件:

    bash 复制代码
    sudo nano /etc/systemd/system/ollama.service

    内容如下:

    ini 复制代码
    [Unit]
    Description=Ollama Service
    After=network.target
    
    [Service]
    ExecStart=/usr/local/bin/ollama/bin/ollama serve
    User=root
    Group=root
    Restart=always
    RestartSec=3
    Environment="CUDA_VISIBLE_DEVICES=0,1"#支持多GPU运行
    Environment="OLLAMA_SCHED_SPREAD=true"
    Environment="OLLAMA_HOST=0.0.0.0:11434"
    
    [Install]
    WantedBy=multi-user.target
4.2 验证 Ollama 安装
bash 复制代码
# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启用并启动 Ollama 服务
sudo systemctl enable ollama
sudo systemctl start ollama

# 查看服务状态
sudo systemctl status ollama

# 日志检查
journalctl -u ollama

# 测试基础命令
ollama --version

# 下载并运行模型(示例)
ollama run llama2:7b "Hello, world!"

5. 通过 Ollama 下载并运行模型

DeepSeek-r1-32b 模型
bash 复制代码
ollama run deepseek-r1:32b
安装词嵌入模型
bash 复制代码
ollama pull nomic-embed-text

6. Python 调用 Ollama API

安装 Python 依赖
bash 复制代码
pip install ollama requests
编写推理脚本 ollama_inference.py
python 复制代码
import ollama

# 调试:打印所有模型信息
model_list = ollama.list()
print("当前模型列表:", model_list)

# 检查模型是否存在
target_model = "deepseek-r1:32b"
existing_models = [m["model"] for m in model_list.get("models", [])]

if target_model not in existing_models:
    print(f"正在下载模型 {target_model}...")
    ollama.pull(target_model)
else:
    print(f"模型 {target_model} 已存在")

# 生成文本
response = ollama.generate(
    model=target_model,
    prompt="请用Python写一个快速排序算法,并添加注释。",
    stream=False,
    options={"temperature": 0.7, "max_tokens": 500}
)

print("\n生成的代码:\n", response["response"])
运行脚本
bash 复制代码
python ollama_inference.py

7. WebUI 安装

使用 Python 包安装程序 pip 安装 Open WebUI

在继续之前,请确保您使用的是 Python 3.11 以上避免兼容性问题。

bash 复制代码
conda create -n deepseek-webui python=3.12 -y
pip install open-webui -i https://mirrors.aliyun.com/pypi/simple
运行 Open WebUI
bash 复制代码
open-webui serve

或者后台持续运行:

bash 复制代码
nohup open-webui serve > output.log 2>&1 &

访问地址:http://localhost:8080查看运行效果

相关推荐
Mingrui-Sun33 分钟前
DataWhale 大语言模型 - 语言模型发展历程
人工智能·语言模型·自然语言处理
PH_modest34 分钟前
【Linux跬步积累】—— 网络基础
linux·网络·arm开发
byte轻骑兵39 分钟前
嵌入式 ARM Linux 系统构成(6):应用层(Application Layer)
linux·arm开发·嵌入式软件开发
m0_371356151 小时前
【测试框架篇】单元测试框架pytest(5):setup和teardown的详细使用
开发语言·python·单元测试·pytest
吾与谁归in1 小时前
【python运行Janus-Pro-1B文生图功能】
python·文生图·deepseek
沐墨专攻技术1 小时前
初识Linux
linux·服务器
LKAI.1 小时前
MongoDB备份与还原
linux·数据库·mongodb
凡人的AI工具箱2 小时前
PyTorch深度学习框架进阶学习计划 - 第20天:端到端图像生成系统
人工智能·pytorch·python·深度学习·学习·aigc·ai编程
半熟的皮皮虾2 小时前
从头开始开发基于虹软SDK的人脸识别考勤系统(python+RTSP开源)(五)补充剩余内容
开发语言·python
Pyroyster2 小时前
【LeetCode110】平衡二叉树
python·算法·leetcode