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

相关推荐
天空属于哈夫克32 分钟前
Java 版:利用外部群 API 实现自动“技术开课”倒计时提醒
数据库·python·mysql
喵手12 分钟前
Python爬虫实战:全站 Sitemap 自动发现 - 解析 sitemap.xml → 自动生成抓取队列的工业级实现!
爬虫·python·爬虫实战·零基础python爬虫教学·sitemap·解析sitemap.xml·自动生成抓取队列实现
Hello World . .13 分钟前
Linux:软件编程
linux·运维·服务器·vim
luoluoal16 分钟前
基于深度学习的web端多格式纠错系统(源码+文档)
python·mysql·django·毕业设计·源码
深蓝海拓23 分钟前
PySide6从0开始学习的笔记(二十七) 日志管理
笔记·python·学习·pyqt
天天进步201532 分钟前
Python全栈项目:实时数据处理平台
开发语言·python
Tipriest_32 分钟前
Python中is关键字详细说明,比较的是地址还是值
开发语言·python
sheji341633 分钟前
【开题答辩全过程】以 基于Python的餐饮统计系统的设计和实 现为例,包含答辩的问题和答案
开发语言·python
人间打气筒(Ada)44 分钟前
k8s:CNI网络插件flannel与calico
linux·云原生·容器·kubernetes·云计算·k8s
zhengfei6111 小时前
【AI平台】- 基于大模型的知识库与知识图谱智能体开发平台
vue.js·语言模型·langchain·知识图谱·多分类