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查看运行效果

相关推荐
YBCarry_段松啓20 分钟前
uv:下一代 Python 包管理器
人工智能·python
yorushika_23 分钟前
python打卡训练营打卡记录day45
开发语言·python·深度学习·tensorboard
封奚泽优25 分钟前
使用Python进行函数作画
开发语言·python
fc&&fl31 分钟前
大模型面试题总结
人工智能·python
极昆仑智慧38 分钟前
极昆仑智慧与数元灵科技达成战略合作
人工智能·语言模型·自然语言处理
databook39 分钟前
稀疏表示与字典学习:让数据“瘦身”的魔法
python·机器学习·scikit-learn
Sheeep1 小时前
学习Pytest + Hypothesis——能帮你发现你自己都没想到的 bug
python·测试
异常君1 小时前
Windows 与 Linux 虚拟内存机制对比:设计理念与实现差异
java·linux·windows
bcxwz6691 小时前
linux 故障处置通用流程-36计-14-27
linux·运维·服务器
孙克旭_1 小时前
day028-Shell自动化编程-判断进阶
linux·运维·数据库·自动化