文章目录
- 前言
- 一、显卡驱动配置
- 1.检测显卡
- 2.安装驱动
- 二、安装nvidia-docker
- 二、安装Xinference
- 1.拉取镜像
- 2.运行Xinference
- 3.模型部署
- 三、安装Dify
- 1.下载源代码
- 2.启动 Dify
- 3.访问 Dify
- 四、Dify构建应用
- 1.配置模型供应商
- 2.聊天助手
- 3.Agent
前言
本文使用的GPU服务器为UCloud GPU服务器30块使用7天,显卡Tesla P40
一、显卡驱动配置
1.检测显卡
首先检查有没有驱动
nvidia-smi
没有驱动则安装
检测你的NVIDIA图形卡和推荐的驱动程序的模型。执行命令:
ubuntu-drivers devices
输出结果为
从中可以看到,这里有一个设备是Tesla P30。对应的驱动是550。不同驱动不同时间,有时候会有几个可选的,建议选择其中推荐的。
2.安装驱动
你可以选择,安装所有推荐的驱动,如下命令
sudo ubuntu-drivers autoinstall
也可以直接安装最新的
sudo apt install nvidia-driver-550
运行nvidia-smi
查看驱动信息
执行命令完成后都能看到CUDA版本、显存大小,表示安装成功
二、安装nvidia-docker
请先确保安装docker。此处不在展示docker安装
Nvidia Docker 是专门针对使用 Nvidia GPU 的容器应用程序而设计的 Docker 工具。它允许用户在容器中使用 Nvidia GPU 进行加速计算,并提供了与 Nvidia GPU 驱动程序和 CUDA 工具包的集成。
地址:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt
配置生产存储库:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
(可选)配置存储库以使用实验性软件包:
sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
从存储库更新软件包列表:
sudo apt-get update
安装 NVIDIA Container Toolkit 软件包:
sudo apt-get install -y nvidia-container-toolkit
配置 Docker
使用以下命令配置容器运行时nvidia-ctk:
sudo nvidia-ctk runtime configure --runtime=docker
该nvidia-ctk命令会修改/etc/docker/daemon.json主机上的文件。文件已更新,以便 Docker 可以使用 NVIDIA 容器运行时。
重新启动 Docker 守护进程:
sudo systemctl restart docker
验证
拉取镜像进行验证
docker pull registry.cn-chengdu.aliyuncs.com/rundreams-open/nvidia_tritonserver:21.10-py31
启动docker验证进行:
docker run -it --gpus all registry.cn-chengdu.aliyuncs.com/rundreams-open/nvidia_tritonserver:21.10-py3 /bin/bash
二、安装Xinference
官网:https://inference.readthedocs.io/zh-cn/latest/index.html
docker部署官方文档:https://inference.readthedocs.io/zh-cn/latest/getting_started/using_docker_image.html
如果不想用docker安装可以查看我另外一篇博客里边记录了Xinference安装及问题:https://blog.csdn.net/qq_43548590/article/details/142251544
1.拉取镜像
运行命令拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/xprobe_xinference/xinference
2.运行Xinference
创建目录
#用于挂载数据
mkdir -p /usr/java/docker/xinference/data
#用于挂载本地模型
mkdir -p /usr/java/docker/xinference/models
运行Xinference
将挂载目录换为自己的
1180ac777a10换位自己的镜像ID。使用docker images查看
docker run \
--name xinference \
-e XINFERENCE_MODEL_SRC=modelscope \
-p 9997:9997 \
-v /usr/java/docker/xinference/data/.xinference:/root/.xinference \
-v /usr/java/docker/xinference/data/.cache/huggingface:/root/.cache/huggingface \
-v /usr/java/docker/xinference/data/.cache/modelscope:/root/.cache/modelscope \
-v /usr/java/docker/xinference/models:/data/models \
--gpus all 1180ac777a10 xinference-local -H 0.0.0.0 --log-level debug
浏览器访问xinference地址:http://IP:9997/
3.模型部署
1.从xinference中下载模型部署
选择我们需要部署的模型,比如我这里选择Qwen2进行部署。填写相应的参数,进行一键部署。第一次部署会下载模型,可以选择国内通道modelscope下载,速度较快。
2.添加本地模型部署
点击Register Model 填写相应的信息
如果本地上传到服务器模型使用unzip解压大文件报错需要设置环境变量
UNZIP_DISABLE_ZIPBOMB_DETECTION=TRUE
export UNZIP_DISABLE_ZIPBOMB_DETECTION
三、安装Dify
官网:https://dify.ai/zh
Github开源地址:https://github.com/langgenius/dify
1.下载源代码
克隆 Dify 源代码至本地环境。
git clone https://github.com/langgenius/dify.git
2.启动 Dify
-
进入 Dify 源代码的 Docker 目录
cd dify/docker
-
复制环境配置文件
cp .env.example .env
-
启动 Docker 容器
根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过 $ docker compose version 命令检查版本,详细说明请参考 Docker 官方文档:如果版本是 Docker Compose V2,使用以下命令:
docker compose up -d
如果版本是 Docker Compose V1,使用以下命令:
docker-compose up -d
检查是否所有容器都正常运行:
docker compose ps
在这个输出中,你应该可以看到包括 3 个业务服务 api / worker / web,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox 。
3.访问 Dify
你可以先前往管理员初始化页面设置设置管理员账户:
http://your_server_ip/install
Dify 主页面:
http://your_server_ip
四、Dify构建应用
Dify 中提供了四种应用类型:
- 聊天助手:基于 LLM 构建对话式交互的助手
- 文本生成:构建面向文本生成类任务的助手,例如撰写故事、文本分类、翻译等
- Agent:能够分解任务、推理思考、调用工具的对话式智能助手
- 工作流:基于流程编排的方式定义更加灵活的 LLM 工作流
文本生成与聊天助手的区别见下表:
文本生成 | 聊天助手 | |
---|---|---|
WebApp 界面 | 表单+结果式 | 聊天式 |
WebAPI 端点 | completion-messages | chat-messages |
交互方式 | 表单+结果式 | 多轮对话 |
流式结果返回 | 支持 | 支持 |
上下文保存 | 当次 | 持续 |
用户输入表单 | 支持 | 支持 |
数据集与插件 | 支持 | 支持 |
AI 开场白 | 不支持 | 支持 |
情景举例 | 翻译、判断、索引 | 聊天 |
1.配置模型供应商
点击头像 > 设置 > 模型供应商
我这里已经配置了Xinference和Ollama
在 设置 > 模型供应商 > Xinference 中填入:
- 模型名称:glm4
- 服务器 URL:http://:9997 替换成您的机器 IP 地址
- 模型UID:glm4
“保存” 后即可在应用中使用该模型。
2.聊天助手
对话型应用采用一问一答模式与用户持续对话
对话型应用可以用在客户服务、在线教育、医疗保健、金融服务等领域。这些应用可以帮助组织提高工作效率、减少人工成本和提供更好的用户体验。
在首页点击 “创建应用” 按钮创建应用。填上应用名称,应用类型选择聊天助手。
创建应用后会自动跳转到应用概览页。点击左侧菜单 编排 来编排应用。
我这里编排了一个面试官提示词并且添加了开场白。
3.Agent
智能助手(Agent Assistant),利用大语言模型的推理能力,能够自主对复杂的人类任务进行目标规划、任务拆解、工具调用、过程迭代,并在没有人类干预的情况下完成任务。
你可以在 “提示词” 中编写智能助手的指令,为了能够达到更优的预期效果,你可以在指令中明确它的任务目标、工作流程、资源和限制等。
这里我使用Tavily进行搜索https://tavily.com/