LLM大语言模型私有化部署-OpenEuler22.03SP3上容器化部署Dify与Qwen2.5

news2024/12/15 15:29:55

背景

Dify 是一款开源的大语言模型(LLM) 应用开发平台。其直观的界面结合了 AI 工作流、 RAG 管道、 Agent 、模型管理、可观测性功能等,让您可以快速从原型到生产。相比 LangChain 这类有着锤子、钉子的工具箱开发库, Dify 提供了更接近生产需要的完整方案,而且,可以作为 Coze 的开源平替。

Dify一词源自Define + Modify,意指定义并且持续的改进你的AI应用,它是为你而做的(Do it for you)。

上一篇我们使用 Ollama 私有化部署了一个2G大小的模型: llama3.2 (3B),本篇文章先用 Ollama 私有化部署 Qwen2.5 (7B)模型,方便后续使用 Dify 进行中文知识库的理解;接着进行私有化部署 Dify 社区版,快速搭建一个聊天助手;最后结合本地知识库作为 Dify 上下文实现真正的个人助手。

虚机资源

共用到了1台虚机,纯CPU运行,较慢😢

主机名IP说明
llm192.168.44.170llm节点

基本选用当前最新版本:

  • Ollama版本:v0.4.7
  • Qwen版本:2.5

系统环境

[root@llm ~]# uname -a
Linux llm 5.10.0-182.0.0.95.oe2203sp3.x86_64 #1 SMP Sat Dec 30 13:10:36 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
[root@llm ~]# cat /proc/version
Linux version 5.10.0-182.0.0.95.oe2203sp3.x86_64 (root@dc-64g.compass-ci) (gcc_old (GCC) 10.3.1, GNU ld (GNU Binutils) 2.37) #1 SMP Sat Dec 30 13:10:36 CST 2023

Docker镜像加速

为了确保可以成功下载到镜像,以下配置了国内目前可以使用的 Docker 镜像源地址: vi /etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://docker.hpcloud.cloud",
        "https://docker.m.daocloud.io",
        "https://docker.unsee.tech",
        "https://docker.1panel.live",
        "http://mirrors.ustc.edu.cn",
        "https://docker.chenby.cn",
        "http://mirror.azure.cn",
        "https://dockerpull.org",
        "https://dockerhub.icu",
        "https://hub.rat.dev",
        "https://dockerpull.com",
        "https://docker.hpcloud.cloud",
        "https://docker.m.daocloud.io"
    ]
}

修改保存之后,记得重启 docker 服务。

systemctl daemon-reload
systemctl restart docker

私有化部署Qwen2.5模型

通过 Ollama 直接拉取部署 Qwen2.5 (7B)模型。

容器化部署Qwen2.5

# 拉取qwen2.5:7b
[root@llm ~]# docker exec -it ollama ollama run qwen2.5:7b
pulling manifest 
pulling 2bada8a74506... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████▏ 4.7 GB
pulling 66b9ea09bd5b... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████▏   68 B
pulling eb4402837c78... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████▏ 1.5 KB
pulling 832dd9e00a68... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████▏  11 KB
pulling 2f15b3218f05... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████▏  487 B
verifying sha256 digest 
writing manifest 
success 
>>> who r u?
I\'m Qwen, an AI assistant created by Alibaba Cloud. I exist to provide information, answer questions, and assist with various tasks. How can I help 
you today?
[root@llm ollama]# docker exec -it ollama ollama list
NAME               ID              SIZE      MODIFIED       
qwen2.5:7b         845dbda0ea48    4.7 GB    16 minutes ago    
llama3.2:latest    a80c4f17acd5    2.0 GB    8 days ago    

ollama常用命令

[root@llm docker]# docker exec -it ollama ollama -h
Large language model runner

Usage:
  ollama [flags]
  ollama [command]

Available Commands:
  serve       Start ollama
  create      Create a model from a Modelfile
  show        Show information for a model
  run         Run a model
  stop        Stop a running model
  pull        Pull a model from a registry
  push        Push a model to a registry
  list        List models
  ps          List running models
  cp          Copy a model
  rm          Remove a model
  help        Help about any command

Flags:
  -h, --help      help for ollama
  -v, --version   Show version information

Use "ollama [command] --help" for more information about a command.

部署Dify

Dify 官方的体验地址提供了一定的免费额度,知识库支持上传50个文档, RAG 向量空间只有5MB。不过还是建议稍微折腾一下,进行本地部署,一方面不用付费,另外数据安全也有保障。

容器化部署Dify

从GitHub上 https://github.com/langgenius/dify 下载 Dify 社区版源码。进入 ./dify-main/docker 目录,直接执行 docker-compose up -d 命令一键启动 Dify 用到的所有容器。

Note:

  1. Dify默认要用到80和443端口,我这里是一台干净的新虚机,没有启动其他服务,所以直接启动了,如果你的80或者其他端口被占用,可通过.env环境变量进行更改。
  2. 如果没有镜像,第一次启动过程会很慢,因为要到远程拉取镜像,等等吧,实际共下载了8个镜像,9个容器。
# 启动服务
[root@llm docker]# docker-compose up -d
...
Creating docker_redis_1      ... done
Creating docker_ssrf_proxy_1 ... done
Creating docker_sandbox_1    ... done
Creating docker_web_1        ... done
Creating docker_db_1         ... done
Creating docker_weaviate_1   ... done
Creating docker_worker_1     ... done
Creating docker_api_1        ... done
Creating docker_nginx_1      ... done

# 查看镜像
[root@llm docker]# docker images
REPOSITORY                                           TAG         IMAGE ID       CREATED         SIZE
ghcr.io/open-webui/open-webui                        main        065a36698c69   12 days ago     4.22GB
ollama/ollama                                        latest      a8316b7b7fcd   13 days ago     4.65GB
nginx                                                latest      66f8bdd3810c   2 weeks ago     192MB
postgres                                             15-alpine   933581caa3e7   3 weeks ago     248MB
langgenius/dify-web                                  0.11.2      c26e830052b6   3 weeks ago     348MB
langgenius/dify-api                                  0.11.2      de697455d474   3 weeks ago     2.93GB
langgenius/dify-sandbox                              0.2.10      4328059557e8   8 weeks ago     567MB
redis                                                6-alpine    4100b5bd1743   2 months ago    35.5MB
ubuntu/squid                                         latest      87507c4542d0   3 months ago    242MB
semitechnologies/weaviate                            1.19.0      8ec9f084ab23   19 months ago   52.5MB

验证Dify安装

浏览器访问: http://192.168.44.170 打开 Dify 页面。

  • 首先需要设置用户账号信息创建管理员账号

2024-12-15-1-DifyAdmin.jpg

  • 登录成功后,进入首页

2024-12-15-3-Home.jpg

构建聊天助手

  • 创建应用

类型选择最简单的聊天助手,基础编排。

2024-12-15-4-CreateApp.jpg

  • 添加大模型

支持主流的模型托管服务商,OpenAI、Anthropic以及Ollama等;这里选择我们刚下载的Qwen2.5模型。

2024-12-15-5-AddModel.jpg

Note:在输入模型名称,点击保存时,会有一个调用远程模型API是否可用的校验过程,稍微会卡顿一下;如果添加失败,说明无法访问到模型的API。

  • 选择模型

2024-12-15-6-SelectModel.jpg

  • 测试模型

2024-12-15-7-TestModel.jpg

  • 对话交互

2024-12-15-8-Chat.jpg

构建个人知识库

  • 选择数据源

2024-12-15-9-Knowledge1.jpg

  • 文本分段与清洗

2024-12-15-9-Knowledge2.jpg

  • 处理并完成

2024-12-15-9-Knowledge3.jpg

  • 添加知识库作为聊天助手的上下文

2024-12-15-9-Knowledge4.jpg

离线部署

实际生产环境,有时候没有互联网环境,需要进行离线部署。

导出/导入镜像tar包

先将前面在可以连接互联网的主机上下载的镜像保存导出为tar包。

docker save langgenius/dify-web:0.11.2 -o dify-web.tar
docker save langgenius/dify-api:0.11.2 -o dify-api.tar
docker save langgenius/dify-sandbox:0.2.10 -o dify-sandbox.tar
docker save nginx:latest -o nginx.tar
docker save postgres:15-alpine -o postgres.tar
docker save redis:6-alpine -o redis.tar
docker save ubuntu/squid:latest -o squid.tar
docker save semitechnologies/weaviate:1.19.0 -o weaviate.tar

然后在需要进行离线部署的主机上执行以下命令加载镜像。

docker load -i dify-web.tar
docker load -i dify-api.tar
docker load -i dify-sandbox.tar
docker load -i nginx.tar
docker load -i postgres.tar
docker load -i redis.tar
docker load -i squid.tar
docker load -i weaviate.tar

模型迁移

比如将我们已下载的 llama3.2Qwen2.5 模型迁移到离线主机上:将模型文件目录 models (这里是 /opt/ollama/models )拷贝到目标离线主机的对应目录即可。

小总结

文章主要介绍了如何使用 OllamaDify 搭建个人 AI 助手。首先通过 Ollama 私有化部署了 Qwen2.5 (7B) 模型,然后使用 Docker Compose 一键部署了 Dify 社区版平台。在 Dify 平台上,创建了基于 Qwen2.5 模型的聊天助手,并添加了个人知识库作为上下文,实现了真正的个人助手功能。文章最后还介绍了离线部署方案,包括如何导出/导入 Docker 镜像和迁移模型文件,方便在无互联网环境下部署使用。整个过程展示了从模型部署到应用构建的完整流程,为搭建私有化 AI 助手提供了实践指导。

Reference

  • http://difyai.com/
  • https://github.com/langgenius/dify
  • https://docs.dify.ai/zh-hans

If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2259998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

革新3D高保真数字人生成:无需深度摄像头,普通手机视频即可创建逼真面部动画

在数字化内容创作领域,特别是虚拟人物和增强现实(AR)应用中,高质量的3D数字人生成正变得越来越重要。然而,传统方法依赖于昂贵的深度摄像头和复杂的设备设置,这不仅增加了成本,也限制了其灵活性和易用性。为了解决这些问题,并降低进入门槛,一款基于MetaHuman的插件应运…

【前端 Uniapp】使用Vant打造Uniapp项目(避坑版)

一、基本介绍 Uniapp 是基于 Vue.js 的开发框架,通过一套代码可以同时发布到多个平台的应用框架。而 Vant 是针对移动端 Vue.js 的组件库。通过这样的组合,我们可以快速构建出一个跨平台的移动应用。Vant 已经支持多种小程序和 H5 平台,也对…

【记录】Django解决与VUE跨域问题

1 梗概 这里记录Django与VUE的跨域问题解决方法,主要修改内容是在 Django 中。当然其他的前端项目 Django 也可以这样处理。 2 安装辅助包 pip install django-cors-headers3 配置 settings.py INSTALLED_APPS [ # ... corsheaders, # ... ] 为了响应…

【AI知识】激活函数介绍(sigmoid Tanh Relu)+ 梯度爆炸 / 消失及解决办法

激活函数: 使用激活函数的原因: 神经网络中每一层的输入输出都是一个线性求和的过程,下一层的输出只是承接了上一层输入函数的线性变换,如果没有激活函数,无论构造的神经网络多么复杂,有多少层,…

驱动开发-入门【1】

1.内核下载地址 Linux内核源码的官方网站为https://www.kernel.org/,可以在该网站下载最新的Linux内核源码。进入该网站之后如下图所示: 从上图可以看到多个版本的内核分支,分别为主线版本(mainline)、稳定版本&#…

3D 生成重建038-DiffGS训练一个3DGS编码器来简化训练

3D 生成重建038-DiffGS训练一个3DGS编码器来简化训练 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 三维高斯溅射(3DGS)在渲染速度和保真度方面表现出了令人信服的性能,但由于其离散性和非结构性,高斯溅射的生成仍然是一…

【渗透测试一】信息收集

信息收集简介 定义 信息收集是渗透测试和网络安全评估等活动的初始关键阶段。它是指通过各种合法手段(如网络扫描、查询公开数据库、社会工程学等),收集与目标系统(包括网络、主机、应用程序、组织等)相关的信息&…

小迪笔记第五十一天-前后台功能点文件下载文件读取文件删除目录遍历目录穿越

前言 前后台功能点 就是因为权限的不同而造成的 功能的不同 一般这个文件的 下载 文件的读取 一般出现在前台 而人家的删除和遍历 目录的穿越出现在 后台 以这个海洋cms 为例进行 演示 (源码在后台) 后台管理地址:http://192.168…

「Mac玩转仓颉内测版50」小学奥数篇13 - 动态规划入门

本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念,并解决一个经典问题:斐波那契数列。学生将学习如何使用动态规划优化递归计算,并掌握编程中的重要算法思想。 关键词 小学奥数Python Cangjie动态规划斐波那契数列 一、题目描述 …

phidata - 具有记忆、知识、工具和推理能力的多模态代理

Phidata 是一个用于构建多模态代理的框架,使用 phidata 可以:使用内存、知识、工具和推理构建多模式代理。建立可以协同工作解决问题的代理团队。使用漂亮的 Agent UI 与您的代理聊天。 16200 Stars 2200 Forks 28 Issues 82 贡献者 MPL-2.0 License Pyt…

第六届全球校园人工智能算法精英大赛-算法巅峰专项赛(系列文章)-- 开篇

前言 “全球校园人工智能算法精英大赛”是江苏省人工智能学会举办的面向全球具有正式学籍的全日制高等院校及以上在校学生举办的算法竞赛。其中的算法巅峰专项赛是新赛道,2024年是其第一届比赛。 翻阅过所有赛道的题目,题目出的真心可以,很具…

柚坛工具箱Uotan Toolbox适配鸿蒙,刷机体验再升级

想要探索智能设备的无限可能?Uotan Toolbox(柚坛工具箱)将是您的得力助手。这款采用C#语言打造的创新型开源工具箱,以其独特的设计理念和全面的功能支持,正在改变着用户与移动设备互动的方式。 作为一款面向专业用户的…

‘Close Project‘ is not available while IDEA is updating indexes的解决

XXX is not available while IDEA is updating indexes IDEA 1.Remove from Recent Projects 2.重新 Open工程即可

[笔记] 编译LetMeowIn(C++汇编联编程序)过程

文章目录 前言过程下载源码vs2017 创建空项目 引入编译文件改项目依赖属性改汇编编译属性该项目还需注意编译运行 总结 前言 编译LetMeowin 项目发现是个混编项目,c调用汇编的程序,需要配置一下,特此记录一下 过程 下载源码 首先下载源码…

Linux系统操作03|chmod、vim

上文: Linux系统操作02|基本命令-CSDN博客 目录 六、chmod:给文件设置权限 1、字母法 2、数字法(用的最多) 七、vim:代码编写和文本编辑 1、启动和退出 1️⃣启动 2️⃣退出 2、vim基本操作 六、chmod&#x…

SpringCloud微服务实战系列:01让SpringCloud项目在你机器上运行起来

目录 项目选型 项目安装-本地运行起来 软件安装: 项目启动: 总结&答疑 项目选型 软件开发,基本上都不会从0开始,一般都是在其他项目或者组件的基础上进行整合优化迭代,站在巨人肩膀上才能看得更远&#xff0c…

Python鼠标轨迹算法(游戏防检测)

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

npm error Error: Command failed: F:\360Downloads\Software\nodejs\node.exe

前言: 电脑环境:win7 node版本:18.20.0 npm版本:10.9.2 情景再现:电脑上是存在的vuevite的项目且可以正常运行。想着摸鱼的时间复习一下ts语法,所以想创建一个demo。按照 开始 | Vite 官方中文文档 官网创建…

软件工程 设计的复杂性

复杂性代表事件或事物的状态,它们具有多个相互关联的链接和高度复杂的结构。在软件编程中,随着软件设计的实现,元素的数量以及它们之间的相互联系逐渐变得庞大,一下子变得难以理解。 如果不使用复杂性指标和度量,软件…

大屏开源项目go-view二次开发3----象形柱图控件(C#)

环境搭建参考: 大屏开源项目go-view二次开发1----环境搭建(C#)-CSDN博客 要做的象形柱图控件最终效果如下图: 其实这个控件我前面的文章也介绍过,不过是用wpf做的,链接如下: wpf利用Microsoft.Web.WebView2显示html…