Dify与Xinference GPU环境部署全流程 -- 知识铺
在本地 GPU 上部署 Dify 服务
在之前的文章《RAG 项目对比》中,我们探讨了多个RAG框架,并最终确定Dify作为最适合的选项。接下来,本文将详细介绍如何在本地GPU设备上部署Dify服务。
选择模型加载框架
Dify的设计理念之一是将模型的加载过程独立出来,这意味着我们需要选择一个合适的模型加载框架来支持Dify的服务。经过一系列的调研后,我们选择了Xinference作为模型加载框架,原因如下:
-
多功能支持:Xinference支持多种类型的模型,涵盖LLM(大语言模型)、Embedding(嵌入式模型)、Rerank(重排序模型)及Audio(音频处理模型)等多领域应用,一个框架即可满足所有需求。
-
高效的模型管理:该框架提供了便捷的模型管理功能,包括一个可视化的用户界面,使得模型的快速部署变得轻而易举。
-
ModelScope集成:支持直接从ModelScope平台下载模型,有效解决了由于网络限制导致的huggingface资源访问难题。 为了确保能够充分地利用NVIDIA GPU的强大性能,在部署Dify与Xinference的最佳组合之前,必须先完成显卡驱动、CUDA以及CuDNN的安装。关于这些前置条件的安装步骤,网络上已有大量的教程可供参考,请确保安装的版本与您的GPU型号相兼容。
Dify 部署指南
准备工作
-
环境准备:确保您的系统已经安装了必要的依赖项,如Docker和Docker Compose。
-
下载Dify代码:根据Dify官方文档指引,获取Dify项目的源码。
安装步骤
-
配置环境:根据您的具体需求,调整Docker Compose文件中的相关设置。
-
启动服务:通过运行
docker-compose up -d
命令启动Dify服务。 -
验证安装:访问Dify提供的Web界面或API端点,检查服务是否正常运行。
结论
通过上述步骤,您应该能够在本地GPU设备上成功部署Dify服务。结合Xinference强大的模型管理和加载能力,这一组合为实现高效、灵活的AI应用开发提供了一个坚实的基础。
|
|
之后创建环境变量文件 .env
, 根据需要进行修改,之后就可以基于 docker compose 启动:
|
|
默认访问 http:// 应该就可以看到 Dify 的页面。
docker 镜像问题
实际执行镜像拉取时发现,Docker hub 因为监管的原因已经无法访问了。为了解决这个问题,目前相对可行的方案:
- 利用一些目前可用的镜像服务,当前(2024-7-11)可用的是 public-image-mirror,通过修改本地的镜像下载地址进行加速;
- 利用 Github Action 将镜像拉取至个人阿里云的的私有镜像仓库,可以参考 教程;
实际为了简单直接采用方案 1,在本地文件
/etc/docker/daemon.json
中添加:
|
|
如果上面的地址不可用,可以尝试另一个测试可用的地址:
|
|
修改之后执行下面命令重启 docker 服务:
|
|
Xinference 部署
Xinference 可以通过 Docker 进行部署,以下是具体的步骤和命令。
基于 Docker 的 Xinference 部署
在拥有英伟达显卡的机器上运行
如果您的机器配备了英伟达显卡,可以使用以下命令来运行 Xinference:
docker run -e XINFERENCE_MODEL_SRC=modelscope -p 9998:9997 --gpus all xprobe/xinference:<your_version> xinference-local -H 0.0.0.0 --log-level debug
请将 <your_version>
替换为您使用的 Xinference 版本,例如 v0.10.3
,或者使用 latest
来获取最新版本。
在只有 CPU 的机器上运行
如果您的机器只有 CPU,可以采用以下命令:
docker run -e XINFERENCE_MODEL_SRC=modelscope -p 9998:9997 xprobe/xinference:<your_version>-cpu xinference-local -H 0.0.0.0 --log-level debug
同样,将 <your_version>
替换为您的 Xinference 版本。
更多信息
完成部署后,您可以通过访问 Xinference 部署文档 来获取更多使用和配置信息。
|
|
使用说明
在使用以下命令时,请将
替换为您希望在服务器上存储模型的实际路径。
该命令通过设置环境变量 XINFERENCE_MODEL_SRC=modelscope
指定模型将从 ModelScope 下载,这有助于提高国内用户下载模型的速度。
此命令将 Docker 容器内的 9997
端口映射到主机的 9998
端口。完成部署后,您可以通过访问 http://<您的服务器IP>:9998/ui
来查看 XInference 的可视化界面。如果您需要,也可以根据实际情况调整容器与主机之间的端口映射。
遇到的问题及解决方法
如果在执行上述命令时遇到错误 docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
,则表明 Docker 当前无法直接使用 GPU 设备。
要解决这个问题,您需要安装 nvidia-container-toolkit
。具体步骤如下:
-
补全 apt-get 源:确保您的系统具有完整的 APT 源列表,以便能够顺利安装所需的软件包。
-
安装 Nvidia 容器工具包:按照 Nvidia 官方文档 的指导进行安装。这一步骤将允许 Docker 容器识别并利用 GPU 资源。
|
|
接下来更新源,安装对应的包:
|
|
安装完成之后修改 docker 配置文件 /etc/docker/daemon.json
:
|
|
配置 Docker 以使用 GPU 设备
在安装并配置好 Docker 和 NVIDIA Docker 后,您需要重启 Docker 服务以使更改生效。执行以下命令来重启 Docker:
|
|
之后,您可以运行以下命令来启动一个容器并使用 GPU 设备:
|
|
Dify 模型配置
在完成上述步骤后,您可以在 Xinference 上下载所需的模型。XInference 启动后会占用服务器上的 9998 端口。因此,您可以通过访问 http://<server ip>:9998/ui
进入可视化页面下载所需的模型。
在 Xinference 上下载和运行所需的模型后,您可以返回 Dify 可视化页面,并在 Dify 的设置页中配置对应的模型。
RAG 部署指南
在部署 RAG(Retrieval-Augmented Generation)模型时,通常需要配置以下三个主要组件:大型语言模型(LLM)、文本嵌入模型(Text Embedding)和重排序模型(Rerank)。以下是详细的部署流程,旨在帮助您顺利完成部署并避免常见的问题。
1. 配置大型语言模型(LLM)
首先,您需要配置一个大型语言模型。这是 RAG 系统的核心,负责生成文本。选择合适的模型并确保它能够与您的系统兼容。
2. 配置文本嵌入模型(Text Embedding)
接下来,配置文本嵌入模型,该模型用于将文本转换为向量表示,以便进行相似性比较。选择合适的嵌入模型,并确保其输出与您的 RAG 系统兼容。
3. 配置重排序模型(Rerank)
重排序模型用于在检索阶段后对结果进行排序,以提高检索的准确性。选择一个有效的重排序模型,并确保它能够与您的 RAG 系统无缝集成。
4. 部署流程
-
安装 Docker:如果 Docker 可用,可以简化部署流程。确保您的系统上安装了 Docker,并且版本是最新的。
-
配置环境:根据 RAG 模型的要求配置环境变量和依赖。
-
启动服务:启动 RAG 服务,并确保所有组件都能够正常工作。
-
测试:在部署完成后,进行彻底的测试以确保系统的稳定性和性能。
5. 注意事项
-
确保所有组件都经过充分测试,以避免在实际部署中出现问题。
-
根据需要调整配置,以适应您的特定需求。
-
保持系统的更新,以利用最新的功能和安全修复。 通过遵循上述步骤,您可以顺利完成 RAG 模型的部署,并享受到高效、准确的文本生成服务。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek002/post/202411/Dify%E4%B8%8EXinference-GPU%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2%E5%85%A8%E6%B5%81%E7%A8%8B--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com