Ollama+ dify 部署deepseek-r1

server/2025/3/13 7:50:59/
  • 操作系统: Ubuntu 22.04.4 LTS

环境配置

1. 系统依赖

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

2. NVIDIA 驱动和 CUDA

2.1 安装 NVIDIA 驱动
# 查看推荐驱动版本
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 为例:

# 下载 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

配置环境变量

生效的配置方式:

# 编辑环境变量配置文件
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
# 下载 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 创建专用环境
conda create -n deepseek-ollama python=3.12 -y
conda activate deepseek-ollama

4. 安装 Ollama

4.1 通过官方脚本安装 Ollama

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

curl -fsSL https://ollama.com/install.sh | sh

手动分步安装

  1. 下载安装脚本:

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

    wget https://ollama.com/download/ollama-linux-amd64.gz
    

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

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

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

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

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

    sudo nano /etc/systemd/system/ollama.service
    

    内容如下:

    [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 安装
# 重新加载 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 模型
ollama run deepseek-r1:32b
安装词嵌入模型
ollama pull nomic-embed-text

6. Python 调用 Ollama API

安装 Python 依赖
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"])
运行脚本
python ollama_inference.py

7. 安装 Dify

7.1 安装 Docker

(1) 卸载旧版本的 Docker(如果已安装)

sudo apt-get remove docker docker-engine docker.io containerd runc

(2) 更新系统软件包

sudo apt update

(3) 安装 Docker 的依赖包

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

(4) 添加 Docker 的官方 GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

(5) 添加 Docker 的 APT 存储库

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

(6) 安装 Docker 引擎

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y

(7) 启动 Docker 服务并设置为开机自启

sudo systemctl start docker
sudo systemctl enable docker

(8) 验证 Docker 是否安装成功

docker version

如果显示 Docker 版本信息,则安装成功。


7.2 安装 Docker Compose

(1) 下载并安装 Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

(2) 赋予执行权限

sudo chmod +x /usr/local/bin/docker-compose

(3) 验证 Docker Compose 是否安装成功

docker-compose version

确保版本号大于 2.24。


7.3 安装 Dify

(1) 克隆 Dify 源码

git clone https://github.com/langgenius/dify.git
cd dify/docker

(2) 复制环境配置文件

cp .env.example .env

(3) 启动 Dify 容器

docker compose up -d

(4) 检查容器是否正常运行

docker compose ps

如果所有容器状态正常,则 Dify 安装成功。


无法保存模型:修改.env,使用清华镜像源(v1.0.1版本,否则切回0.15.3版本)

取消该行注释:
在这里插入图片描述

配置国内镜像源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

7.4. 使用 Dify

在浏览器中访问 http://10.87.x.x/install并按照提示完成管理员初始化。

在这里插入图片描述

模型添加

在这里插入图片描述

使用deepseek官方模型:

  • API 密钥:sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • API 地址:https://api.deepseek.com/v1

本地部署模型

  • deepseek-r1:32b

  • deepseek-r1:70b

  • nomic-embed-text

  • Ollama 服务地址:

    • Mac 系统:http://host.docker.internal:11434
    • 服务器地址:http://10.87.x.x:11434/
      在这里插入图片描述


http://www.ppmy.cn/server/174580.html

相关文章

【手写数据库核心揭秘系列】第6节 SQL词法分析器秘密

SQL词法分析器 一、概述 SQL解析的第一步就是对输入的SQL进行分词,也就是拆分成最小的语言组成单元。 词法分析之前需要定义一套分词规则,比如按语句中的空格先分隔成一系列的token,对于各种数据类型对应的值,当然不能对它们拆…

【架构差异】SpringとSpringBoot:Bean机制的深入剖析与自动配置原理

目录标题 SpringBoot框架中Bean机制的深入剖析与自动配置原理摘要1. 引言2. SpringBoot与Spring的架构差异2.1 从Spring到SpringBoot的演进2.2 SpringBoot中的Bean容器体系 3. SpringBoot的自动配置机制3.1 SpringBootApplication解析3.2 自动配置原理深度解析3.2.1 自动配置类…

ssl和tsl的区别及如何使用

SSL(Secure Sockets Layer)和TLS(Transport Layer Security)都是用于加密和保护网络通信安全的协议。TLS实际上是SSL的升级版本,更加安全和强大。下面是它们之间的主要区别以及如何使用它们: 区别&#xff…

Java Collection(1)——List——ArrayList(顺序表)LinkedList(链表)

一.认识List 1.什么是List? List是Java标准库中的一个接口,下面是List和其他接口/类的关系图 2.List常用方法简介 1.boolean add(E e) 2.void add(int index, E element) 3.E remove(int index) 4.boolean remove(Object o) 5.E get(int index…

C#中常量详解

一、定义与特点‌ 1‌.核心定义‌ 常量是使用 const 关键字声明的不可变值,其值在‌编译时确定‌且在程序生命周期内不可修改‌。与变量不同,常量必须在声明时初始化,且后续无法重新赋值‌。 2‌.主要用途‌ 表示程序中固定不变的值&…

0312-PromptMRG:诊断驱动的医疗报告生成提示

1,摘要: 提出了诊断驱动的医疗报告生成提示(PromptMRG),这是一个新的框架,旨在通过诊断感知提示的指导提高MRG的诊断准确性。具体来说,PromptMRG是基于编码器-解码器架构,并带有一个额外的疾病分类分支。在…

安卓应用架构模式 MVC MVP MVVM有什么区别?

在 Android 开发中,MVC、MVP 和 MVVM 是三种常见的架构模式,它们的目标都是通过分层解耦代码,提升可维护性和可测试性。以下是它们的核心区别和实际应用对比: 1. 核心职责划分 架构模式分层结构各层职责MVCModel-View-Controlle…

SVN 拉取,文件冲突 解决办法

情景 svn 在拉取代码时 提示 已跳过,其余有冲突 ,警告至少还有一个的文件处于冲突状态 导致文件拉取失败 一、原因 版本库和本地工作副本之间存在文件冲突,导致文件无法正常拉取。 二、 Terminal 窗口解决办法 1.查看冲突文件 在 Termin…