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

背景

你是不是也有私有化部署大模型的需求?如今有了 OllamaHuggingFaceModelScope 等开源平台,我们可以非常方便地搭建一个属于自己的大模型,如果网速给力,真是分分钟~~。简单起见,这篇文章仅用到了 Ollama 官方提供的一个2G大小的模型: llama3.2 (3B),后续还可以私有化部署通义千问(Qwen)、智谱AI(glm)等知名大模型。

2024-12-08-1-OllamaVersion.jpg
Ollama 是一个开源的人工智能平台,旨在提供高效的多模态人工智能应用体验,尤其是在自然语言处理(NLP)和生成型 AI 领域。 Ollama 的设计初衷是简化 AI 模型的部署和使用,尤其是在资源限制的环境下,使得开发者和普通用户能够方便地与先进的 AI 模型进行交互。

Open WebUI 是一个开源项目,旨在为用户提供一个简洁易用的 Web 界面,以便更方便地访问和管理基于人工智能模型(如语言模型、图像生成模型等)的应用,可用于简化和增强 AI 模型的使用体验,使非技术用户也能通过浏览器访问 AI 的功能。

虚机资源

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

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

基本选用当前最新版本(只是更新实在太快,我看官方在本周又更新了两版,到了v0.5.1了),下面我们即将安装的 OllamaOpen WebUI 版本信息如下:

  • Ollama版本:v0.4.7
  • Open WebUI版本:v0.4.7

系统环境

[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

部署ollama

容器化部署ollama

# 拉取最新版镜像
[root@llm ollama]# docker pull ollama/ollama
Using default tag: latest
latest: Pulling from ollama/ollama
latest: Pulling from ollama/ollama
6414378b6477: Waiting 
6414378b6477: Pull complete 
df76d75f4799: Pull complete 
6762aa72c60e: Pull complete 
baf3ada369b3: Pull complete 
Digest: sha256:55977eb618082df0f81ea197a75dc1710e54524f2ef71fa1a8b83cc0148b6e2f
Status: Downloaded newer image for ollama/ollama:latest
docker.io/ollama/ollama:latest# 查看拉取成功的镜像
[root@llm ollama]# docker images
REPOSITORY                                           TAG         IMAGE ID       CREATED         SIZE
ollama/ollama                                        latest      a8316b7b7fcd   35 hours ago    4.65GB# 挂载目录、指定端口启动
[root@llm ollama]# docker run -d -v /opt/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

验证ollama安装

通过 ollama run 命令运行模型后,我们可以通过命令行交互的方式来跟模型进行交互,我这里问了几个简单问题。

# 一开始,还没有模型
[root@llm ollama]# docker exec -it ollama ollama list
NAME    ID    SIZE    MODIFIED [root@llm ollama]# docker exec -it ollama ollama run llama3.2
pulling manifest 
pulling dde5aa3fc5ff... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████▏ 2.0 GB
pulling 966de95ca8a6... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████▏ 1.4 KB
pulling fcc5a6bec9da... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████▏ 7.7 KB
pulling a70ff7e570d9... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████▏ 6.0 KB
pulling 56bb8bd477a5... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████▏   96 B
pulling 34bb5ab01051... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████▏  561 B
verifying sha256 digest 
writing manifest 
success 
>>> hi
How can I assist you today?>>> who are you?
I'm an AI assistant, which means I'm a computer program designed to simulate human-like conversations and answer questions to the best of my 
knowledge. My purpose is to provide information, help with tasks, and engage in discussions.I don't have a personal identity or emotions like humans do, but I'm here to assist you and make your interactions more enjoyable and informative. 
What would you like to talk about?>>> who r u?
I'm an artificial intelligence model known as Llama. Llama stands for "Large Language Model Meta AI.">>> 你会说中文吗?
是的,我可以说一些中文。虽然我不是出生在中国,我的Training数据包含了大量的中文文本,从而使我能够理解和生成中文。 however,我的中文能力可能不如native 
chinese speaker,这样我可能会犯些错误或者无法完全准确地表达某些概念。>>> 你了解ElasticSearch的分词器吗?
当然!(I know!)ElasticSearch使用的默认分词器是Nutch的分词器,后来被改为SIEGE和Moses。然而,用户可以根据自己的需要选择不同的分词器。在ElasticSearch 7.x及以上版本中,可以使用以下几种分词器:1. `ik`: Chinese分词器,适用于中文文档。
2. `spanish`: Spanish分词器,适用于西班牙语文档。
3. `english`: English分词器,适用于英文文档(Nutch的默认分词器)。
4. `german`: German分词器,适用于德语文档。
5. `danish`: Danish分词器,适用于丹麦语文档。
6. `portuguese`: Portuguese分词器,适用于葡萄牙语文档。用户可以在ElasticSearch的`analysis`中指定使用哪种分词器:{"analysis": {"analyzer": {"my_analyzer": {"type": "custom","tokenizer": "ik","filter": ["lowercase", "asciifolding"]}},"tokenizer": {"my_tokenizer": {"type": "ik"}},"filter": {"my_filter": {"type": "asciifolding"}}}
}
在这种设置中,`my_analyzer`使用 `ik` 分词器,结合 `lowercase` 和 `asciifolding` 过滤器。

Note: Ctrl+D退出命令行交互聊天。。

ollama常用命令

# 查看ollama版本信息
[root@llm ollama]# docker exec -it ollama ollama -v
ollama version is 0.4.7# 查看已下载的大模型
[root@llm ollama]# docker exec -it ollama ollama list
NAME               ID              SIZE      MODIFIED      
llama3.2:latest    a80c4f17acd5    2.0 GB    6 minutes ago # 查看正在运行的模型
[root@llm ollama]# docker exec -it ollama ollama ps
NAME               ID              SIZE      PROCESSOR    UNTIL              
llama3.2:latest    a80c4f17acd5    3.5 GB    100% CPU     4 minutes from now# 查看指定的模型信息
[root@llm ollama]# docker exec -it ollama ollama show llama3.2:latestModelarchitecture        llama     parameters          3.2B      context length      131072    embedding length    3072      quantization        Q4_K_M    Parametersstop    "<|start_header_id|>"    stop    "<|end_header_id|>"      stop    "<|eot_id|>"             LicenseLLAMA 3.2 COMMUNITY LICENSE AGREEMENT                 Llama 3.2 Version Release Date: September 25, 2024

部署OpenWebUI

容器化部署OpenWebUI

[root@llm ollama]# docker run -d -e HF_ENDPOINT=https://hf-mirror.com -p 8080:8080 --add-host=host.docker.internal:host-gateway -v /opt/open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

Note:如果遇到了连接超时问题,可以添加镜像 HuggingFace 端点环境变量。

验证OpenWebUI安装

浏览器访问:http://192.168.44.170:8080打开 Open WebUI 页面。

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

2024-12-08-2-WebUIAdmin.jpg

  • 登录成功后,进入首页

2024-12-08-3-WebUIHome.jpg

  • 选择大模型

2024-12-08-4-WebUIModel.jpg

  • 对话交互

2024-12-08-5-WebUIChat1.jpg

2024-12-08-6-WebUIChat2.jpg

离线部署

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

导出/导入镜像tar包

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

docker save ollama/ollama -o ollama.tar
docker save ghcr.io/open-webui/open-webui:main -o open-webui.tar

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

docker load -i ollama.tar
docker load -i open-webui.tar

模型迁移

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

小总结

上述内容介绍了如何使用 OllamaOpen WebUI 搭建私有化大模型部署环境。文章首先介绍了在一台纯 CPU 的虚拟机上(IP:192.168.44.170)部署 Ollama v0.4.7 ,通过 Docker 容器化部署并配置国内镜像源加速。部署完成后,使用 llama3.2 (3B)模型进行了命令行交互测试,验证了包括中文在内的基本对话功能。接着部署了 Open WebUI v0.4.7 作为 Web 交互界面,通过浏览器访问 8080 端口,创建管理员账号后即可进行可视化的模型对话。最后提供了离线部署操作,整个部署过程简单直观,为用户提供了一个便捷的私有化大模型解决方案。

Reference

  • https://ollama.com/
  • https://github.com/ollama/ollama/releases
  • https://github.com/ollama/ollama/blob/main/docs/docker.md

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

Your comments and suggestions are welcome!

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

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

相关文章

Linux——rootfs根文件系统构建

根文件系统也叫做rootfs FATFS这类的文件系统属于Linux内核的一部分&#xff0c;属于软件代码&#xff0c;所以ROOTFS不等于FATFS。 Linux的根文件系统实际上是一个文件夹或者叫目录&#xff0c;这个目录下会有许多子目录&#xff0c;这些目录中存放许多Linux运行所必须的文件…

go语言的成神之路-标准库篇-os标准库

一、权限 在操作系统&#xff08;OS&#xff09;中&#xff0c;标准库的权限管理是非常重要的&#xff0c;它确保了不同用户和进程能够安全地访问系统资源。以下是一些常见的权限概念和说明&#xff1a; 1.用户权限 用户ID&#xff08;UID&#xff09;&#xff1a;每个用户在…

【OpenCV】直方图

理论 可以将直方图视为图形或曲线图&#xff0c;从而使您对图像的强度分布有一个整体的了解。它是在X轴上具有像素值(不总是从0到255的范围)&#xff0c;在Y轴上具有图像中相应像素数的图。 这只是理解图像的另一种方式。通过查看图像的直方图&#xff0c;您可以直观地了解该…

【PlantUML系列】用例图(三)

目录 一、组成部分 二、典型案例 一、组成部分 参与者&#xff08;Actors&#xff09;&#xff1a;使用关键字 actor 后跟参与者的名称。用例&#xff08;Use Cases&#xff09;&#xff1a;使用关键字 usecase 后跟用例的名称和编号&#xff08;可选&#xff09;。系统边界…

Transformer部分知识点解释

传统Transformer 经典QKV算法 Transformer架构的优势与问题 万能模型&#xff0c;直接套用&#xff0c;代码实现简单&#xff0c;现成例子一大片并行的&#xff0c;比LSTM快&#xff0c;全局信息丰富&#xff0c;注意力机制效果好长序列中attention需要每一个点跟其他点计算(…

聚类及Python下实现 K-means 算法

聚类 聚类是无监督学习中的一种重要方法&#xff0c;旨在将数据集中相似的数据对象划分到同一个簇中&#xff0c;使得不同簇之间的数据对象差异尽可能大。在大数据环境下&#xff0c;聚类可以帮助挖掘数据中的隐藏结构和模式&#xff0c;应用场景十分广泛&#xff0c;比如在客…

LabVIEW调用Thorlabs的动态库进行开发

Thorlabs 产品在科研与生产领域中的应用广泛&#xff0c;当需要基于LabVIEW 进行二次开发时&#xff0c;可按照以下方法操作&#xff0c;以充分发挥设备性能并满足特定的项目需求。 创建 Kinesis LabVIEW 项目文件和文件夹 更详细的说明参见附件 在 LabVIEW 的启动界面中选择…

三、Zookeeper

Zookeeper 三、Zookeeper3.1什么是zookeeper?3.2为什么需要zookeeper3.3Zookeeper基本运行流程3.4Zookeeper数据模型3.5Zookeeper主要角色3.6Zookeeper工作原理3.7Zookeeper节点数据操作流程三、Zookeeper 3.1什么是zookeeper? ZooKeeper是一个分布式的,开放源码的分布式应…

实现盘盈单自动化处理:吉客云与金蝶云星空数据对接

盘盈单103v2对接其他入库&#xff1a;吉客云数据集成到金蝶云星空 在企业信息化管理中&#xff0c;数据的高效流转和准确性至关重要。本文将分享一个实际案例&#xff0c;展示如何通过轻易云数据集成平台&#xff0c;将吉客云的数据无缝对接到金蝶云星空&#xff0c;实现盘盈单…

vue:构造结构,塞入数据:结构不变,数据改变

1. 引入vue 2. 创建页面容器&#xff0c;让vue去管理这个容器 3. 双向绑定 4. 单向绑定 5. 操作容器&#xff08;数据模型&#xff09;里的数据 5. 单向绑定的简写 6. v-if和v-else 6. v-if和v-show的区别&#xff1a; v-if要重新渲染界面&#xff0c;v-show只需要改一下元素属…

CountDownLatch阻塞后countDown未执行会如何?

背景 某项目封装了 Kafka 消费者 API&#xff0c;根据传递的消费者线程数&#xff0c;创建 N 个消费者线程同时消费对应 topic 的数据&#xff0c;并在线程启动后收集到全局列表中&#xff0c;方便在程序调用 stop 流程时逐个停止。 主控类在创建 Kafka 消费线程时使用了 Cou…

NLP与LLM的工程化实践与学习思考 - 说说知识图谱

NLP与LLM的工程化实践与学习思考[24年半年工作总结] - 说说知识图谱 0 真的就是先说说1 为什么知识图谱什么是知识图谱&#xff1f;基于图的数据结构&#xff1f;基于数据结构的图&#xff1f;知识图谱的技术要点两个技术维度&#xff1a;知识、图七个技术要点&#xff1a;表示…

【CVE-2024-5660】ARM CPU漏洞:硬件页面聚合(HPA)安全通告

安全之安全(security)博客目录导读 目录 一、概述 二、修改历史 三、什么是硬件页面聚合&#xff1f; 四、修复解决 一、概述 在一些基于arm的cpu中发现了一个问题&#xff0c;该问题可能允许修改的、不受信任的客户机操作系统&#xff08;guest OS&#xff09;危及某些H…

项目中使用AntV L7地图(五)添加飞线

项目中使用AntV L7地图&#xff0c;添加 飞线 文档地址&#xff1a;https://l7.antv.antgroup.com/zh/examples/line/animate/#trip_animate 一、初始化地图 使用的地图文件为四川地图JSON&#xff0c;下载地址:https://datav.aliyun.com/portal/school/atlas/area_selector#&…

《九重紫》逐集分析鉴赏—序言、概览、框架分析

主标题&#xff1a;《九重紫》一起追剧吧副标题&#xff1a;《九重紫》逐集分析鉴赏—序言、概览、框架分析《永夜星河》后&#xff0c;以为要浅尝剧荒&#xff0c;一部《九重紫》突出重围。 看了宣传片感觉不是很差&#xff0c;看了部分剪辑感觉还可以&#xff0c;看了一两集感…

生成式AI概览与详解

1. 生成式AI概览&#xff1a;什么是大模型&#xff0c;大模型应用场景&#xff08;文生文&#xff0c;多模态&#xff09; 生成式AI&#xff08;Generative AI&#xff09;是指通过机器学习模型生成新的数据或内容的人工智能技术。生成式AI可以生成文本、图像、音频、视频等多种…

0001.简易酒店管理系统后台

一.系统架构 springmvcjsplayuimysql 二.功能特性 简单易学习&#xff0c;虽然版本比较老但是部署方便&#xff0c;tomcat环境即可启用&#xff1b;代码简洁&#xff0c;前后端代码提供可统一学习&#xff1b;祝愿您能成尽快为一位合格的程序员&#xff0c;愿世界没有BUG; …

STM32软件IIC驱动TCA9548A多路测量AHT10

STM32软件IIC驱动TCA9548多路测量AHT10 TCA9548AAHT10代码逻辑代码展示现象总结 TCA9548A TCA9548A 有八个可通过 I2C 总线控制的双向转换开关&#xff0c;SCL/SDA 上行对扩展到八个下行对&#xff0c;或者通道&#xff0c;适用于系统中存在I2C目标地址冲突的情况。8路双向转换…

信奥赛CSP-J复赛集训(dfs专题)(15):洛谷P8838:[传智杯 #3 决赛] 面试

信奥赛CSP-J复赛集训(dfs专题-刷题题单及题解)(15):洛谷P8838:[传智杯 #3 决赛] 面试 题目背景 disangan233 和 disangan333 去面试了,面试官给了一个问题,热心的你能帮帮他们吗? 题目描述 现在有 n n n 个服务器,服务器

ARM学习(36)静态扫描规则学习以及工具使用

笔者来学习了解一下静态扫描以及其规则&#xff0c;并且亲身是实践一下对arm 架构的代码进行扫描。 1、静态扫描认识 静态扫描&#xff1a;对代码源文件按照一定的规则进行扫描&#xff0c;来发现一些潜在的问题或者风险&#xff0c;因为不涉及代码运行&#xff0c;所以其一般…