在Docker上部署Ollama+AnythingLLM完成本地LLM Agent部署

news2024/11/15 22:23:23

图片

在当今快速发展的人工智能领域,本地部署大型语言模型(LLM)Agent正逐渐成为企业和研究者关注的焦点。本地部署不仅能够提供更高的数据安全性和隐私保护,还能减少对外部服务的依赖,提高响应速度和系统稳定性。本文将介绍如何通过Docker容器技术,结合Ollama和AnythingLLM两款工具,完成本地LLM Agent的部署和应用。

Ollama镜像部署

Ollama是一个开源的大型语言模型服务工具,它为用户在本地环境中快速部署和运行大型模型提供了便利。通过简洁的安装指南和一键命令,用户能够迅速地启动如Llama 2和Llama 3等开源大型语言模型。Ollama通过简化LLM部署和管理流程,使用户能够高效地在本地环境中操作大型语言模型。

本文以Windows系统下的Docker部署Ollama为例,通过镜像能够轻量化且更方便地管理虚拟环境。

首先在官网Docker Desktop: The #1 Containerization Tool for Developers | Docker下载Docker Desktop,下载后在DockerHub中可以找到ollama项目,拉取镜像。

这里注意Docker的安装程序默认安装在C盘,由于镜像文件非常大,所以如果想要更换安装路径可以在终端通过如下类似的命令安装:

"D:\Download\Docker Desktop Installer.exe"  install --installation-dir="D:\Program\Docker"

图片

拉取镜像完成后,在Images栏可以确认镜像拉取是否成功。

图片

随后打开终端,使用以下命令创建一个容器用来运行Ollama实例(该命令适用于仅支持CPU的系统,GPU支持或是AMD显卡支持命令可以参考Hub里面的Ollama项目文档)

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

其中—name参数可以自行调整为自己需要的名字,用以区分不同容器。

图片

随后便在容器中运行想要的LLM。

docker exec -it ollama ollama run llama3:8b-instruct-q8_0

Ollama官方library (ollama.com)提供了丰富的模型库,不同公司的模型还有不同的微调版本任君选择,这里选择了llama3:8b-instruct-q8_0版本,其中q8代表压缩率,q后的数字越小压缩率越高,模型文件的大小也就越小,同样的性能会有一定下降。llama3默认是q4的压缩率。

图片

第一次运行时,ollama会自动下载模型文件。

图片

这里可以发现提示内存不足,实际上并不是内存不足,而是Docker的默认内存设置限制。

图片

根据提示可以发现我们需要修改.wslconfig文件。Win+R后输入%UserProfile%以进入用户文件夹,新建.wslconfig文件输入以下内容。更完善的.wslconfig文件格式参见WSL 中的高级设置配置 | Microsoft Learn。

[wsl2]         # 节标签memory=2048MB  # 限制最大使用内存swap=2GB       # 限制最大使用虚拟内存processors=2   # 限制最大使用cpu个数

修改完后需要运行wsl –shutdown来关闭wsl实例,随后重新打开使默认设置生效。

再次运行时,出现了交互窗口,运行命令如图。

图片

AnythingLLM

AnythingLLM 是一款全能的人工智能应用程序,它允许用户与文档进行交互,使用人工智能助手,并且具有高度的可配置性。它支持多用户管理并且设置过程简单,无需繁琐的设置。这款应用程序能够将任何文档、资源或内容转换成上下文信息,供大型语言模型(LLM)在聊天过程中作为参考使用。用户可以根据自己的需要选择使用不同的LLM或向量数据库。

图片

在官网Download AnythingLLM for Desktop下载应用程序,打开之后设置LLM首选项,在ollama下面可以找到刚才下载的模型文件,注意此处还可以修改Max Tokens数。不同的模型有不同的适用参数,AnythingLLM暂时还不能自动适配推荐,因此需要额外进行搜索,比如llama3:8b-instruct-q8_0模型的Max Tokens为8192。

图片

在首次尝试Chat功能时,如果出现Could not respond to message报错,考虑是网络代理问题,应该改成如下选项。

图片

AnythingLLM对于任何模型,无论是否提供文件服务的模型都可以通过上传文件使其具备相应的知识,从而构建自己的LLM 知识库。

图片

此外除了文件服务,AnythingLLM还提供网络搜索服务。

图片

Google提供了免费的搜索服务引擎,可以点击提供的链接进行登记。其他的Agent服务也可以自行探索。

图片

AnythingLLM同时提供了方便快捷的Fine-tuning服务,仅需要几十条高质量对话和消费级GPU即可在本地部署一个经过微调的LLM Agent。目前此项目还是付费状态,感兴趣的小伙伴可以尝试一下。

图片

作者:徐玥

2024年8月9日

洞源实验室 

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

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

相关文章

04 Haproxy搭建Web集群

4.1 案例分析 4.1.1 案例概述 Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx。相比较而言,LVS 性能最好,但是搭建相对复杂;Nginx 的upstream模块支持群集功能,但是对群集节点健康检…

PHP反序列化POP链构造:理解与利用

如有疑惑,尽管提问;如有错误,请您指正! 以[MRCTF2020]Ezpop为例: 本题的入口?通过pop传入序列化数据 本题的出口?通过include包含flag.php 我们要传入什么?序列化数据&#xff0c…

Can‘t use openai in command prompt

题意:在命令提示符(Command Prompt)中不能使用OpenAI 问题背景: I know this is a super basic question but pls help me with this problem I have properly installed the openai with the nodejs library using npm install …

React 用户点击某个元素后只执行一次操作

React开发中经常会遇到需求:用户点击某个元素后只执行一次特定操作。比如,用户点击按钮后弹出提示框,但希望再次点击按钮不再触发提示框。针对这种需求,可以封装一个自定义Hooks来实现只允许点击一次的功能。 import {useCallbac…

找不到符号 javax.servlet.WriteListener

1、问题 找不到符号2、原因 JDK1.8升级到高版本后&#xff0c;需要手动引入包。 在打包时&#xff0c;需要注意一下是否是在父类打包&#xff0c;而不是在某个model打包。 3、解决 引入 <dependency><groupId>javax.servlet</groupId><artifactId>…

性能测试学习笔记

一、性能测试是什么&#xff1f; 1.生活案例&#xff1a; 学校选课系统&#xff0c;就会经常崩溃&#xff01;&#xff01;&#xff01;&#xff01; 2.性能测试的定义 测试人员借助测试工具&#xff0c;模拟系统在不同场景下&#xff0c;对应的性能指标是否达到预期 3.性能…

Day34 | 322. 零钱兑换 279.完全平方数 139.单词拆分

语言 Java 322. 零钱兑换 零钱兑换 题目 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返…

亚信安慧AntDB-T:使用Brin索引提升OLAP查询性能以及节省磁盘空间

前 言 在这个信息量爆炸的时代&#xff0c;数据库面临着海量数据的挑战&#xff0c;如何提升OLAP业务的查询性能、如何节省磁盘空间等问题已经成为了数据库的痛点之所在。本篇着重介绍亚信安慧AntDB-T中Brin索引的实现过程以及应用在OLAP业务中带来的性能提升和存储降低。 亚…

【倍智信息-倍智信息系统0day漏洞】

目录 一、漏洞说明 二、资产测绘 三、漏洞复现 四、批量验证 一、漏洞说明 倍智信息系统使用了组件Spring Actuator 作为 wei Spring acloud提供的一个功能模块&#xff0c;用于管理和监控 Spring 应用程序。如果未正确配置安全性&#xff0c;特别是在生产环境中&…

TinyWebserver的复现与改进(1):服务器环境的搭建与测试

计划开一个新坑, 主要是复现qinguoyi/TinyWebServer项目&#xff0c;并且使用其它模块提升性能。 本文开发服务器配置&#xff1a;腾讯云轻量级服务器&#xff0c;CPU - 2核 内存 - 2GB&#xff0c;操作系统 Ubuntu Server 18.04.1 LTS 64bit 打开端口 需要打开服务器3306、80…

字节跳动2025校园招聘内推

快来投递简历吧&#xff1a;https://job.toutiao.com/s/ir2RpsLR 快来投递简历吧&#xff1a;https://job.toutiao.com/s/ir2RpsLR

Vue3 组件通信

目录 create-vue创建项目 一. 父子通信 1. 父传子 2. 子传父 二. 模版引用(通过ref获取实例对象) 1.基本使用 2.defineExpose 三. 跨层通信 - provide和inject 1. 作用和场景 2. 跨层传递普通数据 3. 跨层传递响应式数据 4. 跨层传递方法 create-vue创建项目 npm ini…

使用Charles Proxy进行更好的移动的应用程序测试

许多移动的和Web应用程序测试人员普遍存在的一个错误是认为大多数测试只需要观察和与用户界面&#xff08;UI&#xff09;本身的交互。另一方面&#xff0c;当我们开始看到甚至操纵幕后发生的事情时&#xff0c;更具体地说&#xff0c;我们的应用程序正在向后端服务发送数据和从…

堆的实现(偷懒版)

&#x1f339;个人主页&#x1f339;&#xff1a;喜欢草莓熊的bear &#x1f339;专栏&#x1f339;&#xff1a;数据结构 目录 前言 一、堆的实现 1.1 堆的向下调整算法 思路&#xff1a; 1.2 堆的向上调整算法 1.3 堆的创建 1.4 堆的复杂度计算 向下调整建堆的复杂度…

4款智能ai 写作工具助你探索智能写作的无限可能!

智能 AI 写作已经成为一个十分热门的工具。因为它可以从新闻报道到小说创作&#xff0c;从广告文案到学术论文&#xff0c;各个领域都可以给我们很有效的写作帮助。今天&#xff0c;我就给大家介绍4个在网上非常火的智能AI 写作工具。 1、笔灵写作助手 直通车 :https://ibilin…

基于Java中的SSM框架实现软件bug管理系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现软件bug管理系统演示 摘要 随着我们的智能生活到来&#xff0c;人们越来越意识到计算机生活在工作中的重要性&#xff0c;职场上大部分职业都是需要我们会熟练运用计算机知识的&#xff0c;所以我们要掌握计算机技能&#xff0c;这样才能在以后的职业生…

【学习笔记】Matlab和python双语言的学习(多目标规划)

文章目录 前言一、多目标规划1.特点2.一般形式3.多目标规划的解4.线性加权法 二、典型示例-----化工厂生产问题三、代码实现----Matlab四、代码实现----python总结 前言 通过模型算法&#xff0c;熟练对Matlab和python的应用。 学习视频链接&#xff1a; https://www.bilibili…

XJTUSE-离散数学-关系

集合的叉积 二元组(a,b) (a,b) (c,d) <> ac,bd m元组 叉积的结合律 关系 R 是 的子集&#xff0c;称为一个二元关系 前域&#xff0c;后域的概念 关系的表示方法 图表示法 矩阵表示法 关系的运算 逆运算: 逆运算的一些定理 复合关系 and 闭包运算 …

如何创建一个Gralde项目

如何创建一个Gralde项目 1. 使用IDEA创建一个Gradle项目&#xff1a; 1.1 打开Idea&#xff0c;新建项目&#xff1a; 选择File-> New -> Project 1.2 在项目类型列表中找到并选择Gradle 1.3 验证Gradle项目 可以通过运行 gradle.tasks 命令来验证项目是否正确创建&a…

【C++ Primer Plus】学习笔记 5

文章目录 前言一、指针和自由存储空间1. 声明和初始化指针2. 指针的危险3. 指针和数字4. 使用 new 来分配内存5. 使用 delete 释放内存6. 使用 new 来创建动态数组1.使用new创建动态数组2.使用动态数组 二、指针、数组和指针算术1. 指针小结1.声明指针2.给指针赋值3.对指针解除…