【GPUStack】【dify】【RAGflow】:本地部署GPUStack并集成到dify和RAGflow

server/2025/3/30 19:33:31/

目录

Nvidia-Driver

CUDA

NVIDIA Container Toolkit(新版本的docker不用安装,自带)

Docker 部署GPUStack

Text Embeddings

部署模型库模型

测试

部署开源模型(modelscope)

dify 集成

RAGflow集成

Nvidia-Driver

查看操作系统

lsb_release -a

安装内核头文件和开发包

sudo apt install linux-headers-$(uname -r)

安装contrib库

sudo add-apt-repository contrib

下载驱动报错

使用清华或者阿里镜像也报错

查看后发现,国内镜像站基本上都下线了相关驱动

官网下载

官网也更新了不是以前的样式,更加精细了

注册临时GPG共有密钥

sudo cp /var/nvidia-driver-local-repo-debian12-570.124.06/nvidia-driver-local-BF654014-keyring.gpg /usr/share/keyrings/

安装本地仓库

sudo dpkg -i nvidia-driver-local-repo-debian12-570.124.06_1.0-1_amd64.deb

更新apt

sudo apt update

专有内核模块安装

sudo apt -V install cuda-drivers

安装成功如下

如果出现如下情况:NVIDIA驱动内核模块(如nvidia.ko)的版本与用户空间库(如libnvidia-ml.so)的版本不一致

第一步建议先重启,再次运行nvidia-smi 如果可以那就结束

第二步 卸载相关的包 清除不需要的旧包 然后也要重启

sudo apt purge nvidia-* libnvidia-*
sudo apt autoremove
reboot

第三步 禁用Nouveau驱动,因为Nouveau是开源的NVIDIA驱动,可能与官方的NVIDIA专有驱动冲突,导致无法正常加载。

sudo nano /etc/modprobe.d/blacklist-nouveau.conf

添加如下内容

blacklist nouveau
options nouveau modeset=0  # 禁用 Nouveau 内核模式设置

初始化内存盘 然后重启

sudo update-initramfs -u
reboot

第四步 重新安装相关组件

第五步

首先要检查下载的驱动是否真的版本正确

然后 安装本地仓库

sudo dpkg -i nvidia-driver-local-repo-debian12-570.124.06_1.0-1_amd64.deb

更新apt

sudo apt update

安装驱动

sudo apt install cuda-drivers

重启

验证成功

CUDA

下载GPG密钥

wget https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb

启用CUDA仓库

sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/ /" > /etc/apt/sources.list.d/cuda.list'

更新apt

sudo apt update

安装CUDA工具包

sudo apt install cuda

修改环境变量并验证是否成功

vim ~/.bashrc#最下方添加如下
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH#更改生效
source ~/.bashrc

NVIDIA Container Toolkit(新版本的docker不用安装,自带)

获取GPG密钥

添加nvidia container toolkit 的 apt源

这里出现了一个未识别的问题,需要进入/etc/apt/sources.list.d/nvidia-container-toolkit.list 手动修改

首先 查看系统架构

x86_64 则修改$(ARCH) 为 amd64

更新一下update

安装nvidia-container-toolkit

sudo apt install nvidia-container-toolkit

Docker 部署GPUStack

拉取镜像

sudo docker pull gpustack/gpustack

创建容器 要将容器内80映射出来,这是GPUStack的默认端口

sudo docker run -d --name gpustack_new     --restart=unless-stopped     --gpus all  --ipc=host     -v /mnt/gpustack-data:/var/lib/gpustack     -p 9999:80 -p 6666:6666     100cbe8041b7

获取密码

docker exec -it gpustack_new cat /var/lib/gpustack/initial_admin_password

浏览器进入 账号为admin 密码为qK#CH@qayoC6

进入容器

docker exec -it gpustack_new /bin/bash

对话测试

gpustack chat llama3.2 "tell me a joke."

Text Embeddings

部署模型库模型

测试

python测试代码

import os
import requests# 从环境变量读取配置(建议在终端提前设置)
SERVER_URL = "http://192.168.199.126:9999/"
API_KEY = "你的API_KEY"# 构造请求头
headers = {"Authorization": f"Bearer {API_KEY}","Content-Type": "application/json"
}# 请求数据体
payload = {"input": "The food was delicious and the waiter...","model": "bge-m3","encoding_format": "float"  # 可选 "base64" 压缩传输
}try:# 发送 POST 请求response = requests.post(url=f"{SERVER_URL}/v1-openai/embeddings",headers=headers,json=payload,timeout=10  # 建议设置超时)# 检查 HTTP 状态码response.raise_for_status()# 解析响应result = response.json()print("Embedding 向量长度:", len(result['data'][0]['embedding']))print("完整响应:", result)except requests.exceptions.RequestException as e:print(f"请求失败: {str(e)}")if hasattr(e, 'response') and e.response is not None:print(f"错误详情: {e.response.text}")

部署开源模型(modelscope)

直接输入模型名字就可以搜索,可以部署多个副本,增强效率,目前部署7个

dify 集成

点击自己头像进入设置

RAGflow集成

点击自己头像进入

构建知识库的时候就可以选择使用本地部署的分词模型了


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

相关文章

WEB安全--SQL注入--利用log写入webshell

一、原理: 这也是对之前文章的补充:WEB安全--SQL注入--INTO OUTFILE-CSDN博客 我们可以通过修改MySQL的log文件,用select关键字写入木马文件放在服务器物理地址中,通过访问物理地址getshell。 二、条件: 用户有写入权限…

手绘的思维导图怎么转成电子版思维导图?分享今年刚测试出来的方法

看到一份思维导图很好看,但是有点看不清了,怎么可以复制出新的思维导图?手绘的思维导图怎么转成电子版思维导图? 这时候可以把图片复制成一份可编辑的思维导图文件,我说下解决图片转换成思维导图的思路。只要原图片比…

[学习笔记]攻防世界-bug

打开场景,提示我们需要登陆 我们先注册一下 注册成功 我们登陆进去 我们点击Manage他提示我们admin才能进入 我们刷新抓包一下试试 Cookie里面除了PHPSESSID,多出来了一个user,看上去是md5加密的,我们尝试解密 这里尝试了好几个网…

Git撤回操作全场景指南:未推送与已推送,保留和不保留修改的差异处理

一、未推送到远程仓库的提交(仅本地存在) 特点:可直接修改本地提交历史,不会影响他人 1. 保留修改重新提交 git reset --soft HEAD~1 # 操作效果: # - 撤销最后一次提交 # - 保留工作区所有修改 # - 暂存区内容保持…

徘徊检测:视觉分析技术的安防新方向

利用视觉分析的方式检测徘徊检测 背景 随着时代的发展,失业率上升导致社会不稳定因素增加,安保问题愈发突出。特别是在住宅区、工厂、办公园区等公共场所,对于徘徊人员的检测成为确保安全的关键一环。传统的安保手段如人工巡逻、监控录像回…

(Kotlin)Android 自定义蓝牙扫描动画:多波浪扩散效果

这是一个用于 Android 的自定义 View,模拟蓝牙扫描时的多波浪扩散动画效果。每个波浪的半径逐渐增大,透明度逐渐降低,形成连续的波纹扩散效果。通过调整动画的延迟时间和时长,确保波浪之间的间隙较小,动画流畅且美观。…

JVM方法逃逸

根据对象逃逸的范围,可以分为方法逃逸和线程逃逸。 当对象被方法外部的代码引用,生命周期超出了方法的范围,那么对象就必须分配在堆中,由垃圾收集器管理。 public Person createPerson() {return new Person(); // 对象逃逸出方…

DML 数据操纵语言学习笔记

一、DML 核心概念体系 1.1 语言定位与边界 DML(Data Manipulation Language)作为 SQL 三大核心语言之一,专注于数据行级操作,区别于 DDL(结构定义)和 DCL(权限控制)。其核心指令包…