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

相关推荐
TF男孩8 小时前
ARQ:一款低成本的消息队列,实现每秒万级吞吐
后端·python·消息队列
该用户已不存在13 小时前
Mojo vs Python vs Rust: 2025年搞AI,该学哪个?
后端·python·rust
站大爷IP15 小时前
Java调用Python的5种实用方案:从简单到进阶的全场景解析
python
轻松Ai享生活20 小时前
5 节课深入学习Linux Cgroups
linux
用户83562907805121 小时前
从手动编辑到代码生成:Python 助你高效创建 Word 文档
后端·python
christine-rr21 小时前
linux常用命令(4)——压缩命令
linux·服务器·redis
c8i21 小时前
python中类的基本结构、特殊属性于MRO理解
python
三坛海会大神55521 小时前
LVS与Keepalived详解(二)LVS负载均衡实现实操
linux·负载均衡·lvs
東雪蓮☆21 小时前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
liwulin050621 小时前
【ESP32-CAM】HELLO WORLD
python