当前位置: 首页 > news >正文

利用Llama2 7b自己实现一套离线AI

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家, 可以当故事来看,轻松学习。

离了 ChatGPT 本人简直寸步难行,今天 ChatGPT 大面积宕机,服务直到文章写作(下午5点)时尚未恢复,抓耳挠腮了一下午。已经习惯了用 AI 的我们该怎么办呢?

答案就是——自己在本地运行一个大模型,只要电脑不关机,服务就一直在!

那么怎么在自己电脑上轻松方便地运行大模型呢?一般来说,运行这些模型的 Python / PyTorch 往往包含有 3GB 以上的相互依赖的包。即使设法安装了这些包,也总会与你的 GPU 或其他硬件加速器不兼容,导致非常糟糕的性能。

其实需要这么复杂的设置!我们可以使用 Rust 和 WasmEdge[1],在本地创建和部署非常快速和轻量级的 LLM 推理应用。安装文件也非常小,是一个只有几 MB 的简单二进制可执行文件。更赞的是,这个负责推理的应用程序从 Rust 编译成Wasm 后,完全可以跨广泛的 CPU、GPU 和操作系统移植。最赞的是,它完全没有 Python 依赖。让我们开始吧!

这个教程,我们将涵盖以下内容:

在日常使用的 macOS 或几乎任何平台上运行 LLM,包括 Llama2 7b 和各种其他 LLM;
在几分钟内为你的大模型构建一个轻量级的 AI Agent ;
在 LLM 之外的 AI 上使用 WasmEdge。


第 1 部分:运行 LLM 和 AI 模型的超简单方法


1. 安装具有 LLM 支持的 WasmEdge

可以从一个命令行开始,安装完整的 LLM 支持的 WasmEdge runtime。

curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash -s -- --plugin wasi_nn-ggml

或者可以按照这里[2]的安装指南手动下载和复制 WasmEdge 安装文件。

2. 下载 Wasm 格式的 LLM 推理应用

接下来,获取超小的 2MB 跨平台二进制文件 —— llama-chat.wasm。这是效率的证明,无需其他依赖,并能在不同环境中无缝操作。这个小的 Wasm 文件是从 Rust 编译的。想要构建自己的 AI 推理 应用,请查看 llama-utils[3] Repo。

curl -LO https://github.com/second-state/llama-utils/raw/main/chat/llama-chat.wasm

3. 下载 Llama2 7b chat 模型

curl -LO https://huggingface.co/wasmedge/llama2/blob/main/llama-2-7b-chat-q5_k_m.gguf

WasmEdge 还支持 Llama2、CodeLlama、Llemma、Codeshell、Mistrial、MistrialLite、TinyLlama、Baichuan、BELLE、Alpaca、Vicuna、OpenChat、Starcoder、OpenBuddy 等更多!

4. 在 CLI 上与 Llama2 7b chat

现在你已经准备好了一切,可以开始使用命令行与 Llama2 7b chat 模型聊天。

wasmedge --dir .:. --nn-preload default:GGML:AUTO:llama-2-7b-chat-wasm-q5_k_m.gguf 

llama-chat.wasm

现在,可以和 Llama2 7b chat 对话啦。让 Llama2 7b chat 模型帮我写代码,解决一些看起来比较枯燥的工作!

[USER]: I want to combine all the txt files in the local directory. write a python program for me.[ASSISTANT]:Of course! Here is a simple Python program that can combine all the text files in the current directory:import osfor filename in os.listdir(): if filename.endswith('.txt'): with open(filename, 'a') as f: f.write('')This program uses the `os` module to list all the files in the current directory, and then checks if each file ends with the `.txt` extension using the `endswith()` method. If a `.txt` file is found, it is opened in append mode (`'a'`) using the `open()` function, and the contents are written to the file using the `write()` method.Please let me know if you have any questions or if you need further assistance![USER]: How can I run this program? I'm not familar with python.[ASSISTANT]:Of course! Here are the steps to run the Python program:1. Open a terminal or command prompt on your computer.2. Navigate to the directory where the text files are located using the `cd` command. For example, if the text files are located in the `Documents` directory, you would type `cd Documents`.3. Type `python combine_txt_files.py` and press Enter. This will run the `combine_txt_files.py` program.4. The program will combine all the text files in the current directory and write the combined contents to a new file called `combined_txt_files.txt`.If you are using a Python IDE (Integrated Development Environment) such as PyCharm or Visual Studio Code, you can open the `combine_txt_files.py` file and run it by clicking the "Run" button or pressing `F5`.I hope this helps! Let me know if you have any questions.

就这样!你还可以使用同样的 llama-chat.wasm 文件来运行其他 LLM,如 OpenChat、CodeLlama、Mistral 等。

<iframe src="//player.bilibili.com/player.html?bvid=BV1zQ4y1n7mZ&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>

资源:

通过以下额外资源,探索可以在 WasmEdge 上运行的各种 LLM:

运行其他 LLM:其他可用 LLM 的综合视频指南[4]。
在 containerd 和 Docker 中运行 LLM:了解如何在 Docker + Wasm 中运行和管理 LLM 应用[5]。


第 2 部分:构建超轻量级 AI Agent


1. 创建一个与 OpenAI 兼容的 API 服务

当用你的领域知识微调了一个模型或你想要运行一个私有模型时,仅使用 CLI 运行模型是不够的。我们通常需要依靠这个大模型构建 Agent,让 LLM 更好地帮我工作。接下来,让我们为大模型设置兼容 OpenAI 的 API 服务,然后我们可以将这个私有模型集成到其他 SaaS 工作流程中。这样即便 ChatGPT 宕机,你的 Agent 依然可以正常为你工作!

这里假设你已经安装了带有 ggml 插件的 WasmEdge 并下载了你需要的模型。


首先,通过终端下载构建 API 服务器的 Wasm 文件。

curl -LO https://github.com/second-state/llama-utils/raw/main/api-server/llama-api-server.wasm

其次,用基于 WasmEdge 的API 服务运行模型。

wasmedge --dir .:. --nn-preload default:GGML:AUTO:llama-2-7b-chat-wasm-q5_k_m.gguf llama-api-server.wasm -p llama-2-chat -s 0.0.0.0:8080

在看到连接建立后,可以使用以下命令行来尝试你的模型。

curl -X POST http://localhost:8080/v1/chat/completions \-H 'accept: application/json' \-H 'Content-Type: application/json' \-d '{"messages":[{"role":"system", "content": "You are a helpful assistant. Answer each question in one sentence."}, {"role":"user", "content": "**What is Wasm?**"}], "model":"llama-2-chat"}'

2. 部署连接 API 服务的聊天机器人 UI

接下来,让我们将你的 API 服务链接到由 Second State 提供的 Chatbot-UI[6],为用户提供丝滑的对话体验。

需要做的就是将你的 Chat API 复制并粘贴到左下角侧边栏的 Chat API URL 中。请注意,你的 API URL 必须是一个 HTTPs 代理。nike可以使用 ngrok 来实现 HTTPs 代理,或者绑定你的域名。

接下来,就可以通过 Chatbot-UI 与模型聊天啦。 

3. 围绕模型构建 RAG 机器人和 Agent

如果我们将模型的能力应用到现实世界的工作流程中,LLM Agent 比 Web 聊天机器人更有帮助。Flows.network[7] 是一个 Severless 平台,用 Rust 和 Wasm 构建 LLM Agent 和机器人。flows.network 平台允许开发者将像 ChatGPT 和 Claude 的大模型连接到不同的 SaaS 提供商。由于模型已经具备与 OpenAI 兼容的 API,我们可以像在 OpenAI 上做的那样,轻松地将模型与 Telegram、Slack 和 Discord 等其他 SaaS 集成。查看如何构建基于 RAG 的 LLM Agent[8]!

或者,可以使用 LangChain[9] 和 LlamaIndex[10] 来构建 RAG(检索增强生成)应用程序。

来试一试使用这种方式构建的 RAG 机器人,帮助你学习 Rust 语言 👉https://flows.network/learn-rust

第 3 部分:不止于大语言模型


WasmEdge 的 AI 不仅限于 LLM 任务;它还扩展到视觉和音频领域。除了 ggml 后端,WasmEdge 运行时还支持 PyTorch、TensorFlow 和 OpenVINO AI 框架。为了使 AI 推理更加流畅,WasmEdge 还支持使用流行的 OpenCV 和 FFmpeg 库进行图像处理。

了解如何借助 mediapipe-rs 开发图像和音频 AI 应用[11],并上手尝试其他 WASI-NN 示例。

Mediapipe-rs:一个基于 Rust 的 Mediapipe 库,
源代码:Mediapipe-rs GitHub[12]
教程:使用 Rust 进行 Mediapipe 推理[13]
更多 WASI NN 示例:探索更多使用 WasmEdge 和 Rust 的 AI 推理示例[14]。
结论
在有了强大的 ChatGPT 后,我们是不是还需要一个私有的模型?答案是肯定的!WasmEdge 为运行最先进的 LLM,包括你自己微调的 Llama 2 模型,提供了一个轻量级、安全、可靠和高效的环境。无论你是希望部署 AI 应用的开发者,还是寻求将智能 Agent 集成到你的服务中,使用 Rust + WasmEdge 都将为你提供价值。

加入 WasmEdge discord[15] 的讨论,来 GitHub 为 WasmEdge 做贡献吧。

参考资料

[1] WasmEdge: https://github.com/WasmEdge/WasmEdge

[2] https://wasmedge.org/docs/start/install

[3] llama-utils: https://github.com/second-state/llama-utils/tree/main/chat

[4] 其他可用 LLM 的综合视频指南: https://youtu.be/lB2A7S1vexM

[5] 了解如何在 Docker + Wasm 中运行和管理 LLM 应用: https://youtu.be/ZGM6irhi1jA

[6] 由 Second State 提供的 Chatbot-UI: https://second-state.github.io/chatbot-ui/

[7] Flows.network: https://flows.network/

[8] 构建基于 RAG 的 LLM Agent: https://docs.flows.network/docs/category/rag-based-llm-agent

[9] LangChain: https://www.langchain.com/

[10] LlamaIndex: https://www.llamaindex.ai/

[11] mediapipe-rs 开发图像和音频 AI 应用: https://wasmedge.org/docs/develop/rust/wasinn/mediapipe

[12] Mediapipe-rs GitHub: https://github.com/WasmEdge/mediapipe-rs

[13] 使用 Rust 进行 Mediapipe 推理: https://wasmedge.org/docs/develop/rust/wasinn/mediapipe

[14] 探索更多使用 WasmEdge 和 Rust 的 AI 推理示例: https://github.com/second-state/WasmEdge-WASINN-examples

[15] WasmEdge discord: https://discord.com/invite/U4B5sFTkFc 作者:Second_State https://www.bilibili.com/read/cv27600812/?jump_opus=1 出处:bilibili

相关文章:

利用Llama2 7b自己实现一套离线AI

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; 可以当故事来看&#xff0c;轻松学习。 离了 ChatGPT 本人简直寸步难行&#xff0c;今天 ChatGPT 大面积宕机&#xff0c;服务直到文章写作&am…...

Ciallo~(∠・ω・ )⌒☆第十七篇 Ubuntu基础使用 其一

Ubuntu是一种基于Linux的操作系统&#xff0c;它是开源的、免费的&#xff0c;并且具有广泛的用户群体。 基本文件操作&#xff1a;Ubuntu使用命令行工具来进行文件操作。以下是一些常用的命令&#xff1a; 切换到用户主目录&#xff1a; cd ~ 切换到上级目录&#xff1a; cd .…...

Linux-零拷贝技术

什么是零拷贝&#xff1f; 在传统的数据传输过程中&#xff0c;数据需要从磁盘读取到内核空间的缓冲区&#xff0c;然后再从内核空间拷贝到用户空间的应用程序缓冲区。如果需要将数据发送到网络&#xff0c;数据还需要再次从用户空间拷贝到内核空间的网络缓冲区。这个过程涉及…...

小区团购管理

TOC springboot254小区团购管理 第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和笔记本的广泛运用&…...

图像文本擦除无痕迹!复旦提出EAFormer:最新场景文本分割新SOTA!(ECCV`24)

文章链接&#xff1a;https://arxiv.org/pdf/2407.17020 git链接&#xff1a;https://hyangyu.github.io/EAFormer/ 亮点直击 为了在文本边缘区域实现更好的分割性能&#xff0c;本文提出了边缘感知Transformer&#xff08;EAFormer&#xff09;&#xff0c;该方法明确预测文…...

Codeforces Round 966 (Div. 3)(A,B,C,D,E,F)

A. Primary Task 签到 void solve() {string s;cin>>s;bool bltrue;if(s.size()<2)blfalse;else{if(s.substr(0,2)"10"){if(s[2]0)blfalse;else if(s[2]1&&s.size()<3)blfalse; }else blfalse;}if(bl)cout<<"YES\n";else cout…...

【代码随想录算法训练营第42期 第六天 | LeetCode242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和】

代码随想录算法训练营第42期 第六天 | LeetCode242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和 一、242.有效的字母异位词 解题代码C&#xff1a; bool isAnagram(char* s, char* t) {int len1 strlen(s);int len2 strlen(t);int al[26] {0};int b…...

WebRTC音视频开发读书笔记(一)

一、基本概念 WebRTC(Web Real-Time Communication&#xff0c;网页即时通信)于2011年6月1日开源&#xff0c;并被纳入万维网联盟的W3C推荐标准&#xff0c;它通过简单API为浏览器和移动应用提供实时通信RTC功能。 1、特点 跨平台&#xff1a;可以在Web&#xff0c;Android、…...

llama3.1本地部署方式

llama3.1 资源消耗情况 &#xfeff;Llama 3.1 - 405B、70B 和 8B 的多语言与长上下文能力解析&#xfeff; &#xfeff; 70B版本&#xff0c;FP1616K token需要的资源约为75G&#xff1b;FP16128K token需要的资源约为110G &#xfeff; 1、ollama ollama工具部署及使用…...

相机光学(三十四)——色差仪颜色观察者视角

1.为什么会有观察者视角 颜色观察角度主要涉及到人眼观察物体时&#xff0c;‌视角的大小以及屏幕显示颜色的方向性对颜色感知的影响。‌ 人眼观察物体的视角&#xff1a;‌在黑暗条件下&#xff0c;‌人眼主要依靠杆体细胞来分辨物体的轮廓&#xff0c;‌而杆体细胞分布在视网…...

思二勋:web3.0是打造应对复杂市场敏捷组织的关键

本文内容摘自思二勋所著的《分布式商业生态战略》一书。 数字化时代,需要企业具备敏捷应对变化的能力,以敏捷反应应对客户和市场的迅速变化。敏捷能力的建设需要触点网络、信息系统、IT 架构、业务流程等同时实现敏捷。尤其是在多变且复杂环境中,特别要求战略管理的敏捷性和…...

一文带你快速了解——HAProxy负载均衡

一、HAProxy简介 1.1、什么是Haproxy HAProxy是法国开发者 威利塔罗(Willy Tarreau)在2000年使用C语言开发的一个开源软件是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器支持基于cookie的持久性&#xff0c;自动故障切换&#xff0c;支持正则表达式及web状态统计。…...

【C++高阶】哈希—— 位图 | 布隆过滤器 | 哈希切分

✨ 人生如梦&#xff0c;朝露夕花&#xff0c;宛若泡影 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;C学习 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&am…...

启发式算法之模拟退火算法

文章目录 1. 模拟退火算法概述1.1 算法起源与发展1.2 算法基本原理 2. 算法实现步骤2.1 初始化过程2.2 迭代与降温策略 3. 模拟退火算法的优化策略3.1 冷却进度表的设计3.2 参数调整与策略 4. 模拟退火算法的应用领域4.1 组合优化问题4.1.1 旅行商问题&#xff08;TSP&#xff…...

编码器汇总:光学编码器,霍尔编码器,磁性编码器,电容式编码器,单圈编码器,多圈编码器,增量式编码器,绝对值式编码器等

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言一、光学编码器二、霍尔编码器三、磁性编码器四、电容式编码器五、单圈编码器六、多圈编码器七、增量式编码器八、…...

有哪些性价比高的蓝牙耳机可入?四款百万好评实力品牌推荐!

蓝牙耳机大家都再熟悉不过了&#xff0c;作为最常用的智能配件之一&#xff0c;谁还没有用过几款蓝牙耳机呢&#xff0c;但是选购蓝牙耳机上还是有一些需要注意的地方&#xff0c;市面上的吹风机可谓是五花八门。有哪些性价比高的蓝牙耳机可入&#xff1f;本人花了一些时间整理…...

MySQL数据库——表的CURD(Update)

3.Update 语法&#xff1a;update table_name set column expr 案例 将孙悟空的数学成绩变更为80 mysql> select name,math from result; ----------------- | name | math | ----------------- | 唐三藏 | 98 | | 孙悟空 | 78 | | 猪悟能 | 98 |…...

性能测试 —— linux服务器搭建JMeter+Grafana+Influxdb监控可视化平台!

前言 在当前激烈的市场竞争中&#xff0c;创新和效率成为企业发展的核心要素之一。在这种背景下&#xff0c;如何保证产品和服务的稳定性、可靠性以及高效性就显得尤为重要。 而在软件开发过程中&#xff0c;性能测试是一项不可或缺的环节&#xff0c;它可以有效的评估一个系…...

python基础命令学习

1.Python基础知识 目录 1.Python基础知识1.1 变量及类型1.2 标识符与关键字1.3 输出与输入1.3.1格式化符号1.3.2转义字符1.3.3结束符1.3.4输入的特点 1.4 运算符1.4.1 算数运算符1.4.2 赋值运算符1.4.3 比较(即关系)运算符1.4.4 逻辑运算符 1.5 数据类型转换1.6 判断与循环语句…...

程序设计基础(试题及答案)

一、填空题 1.__ ____函数是程序启动时惟一的入口。 2.算法的复杂性包含两方面: 和 。 3.已知 char c= a ; int x=2,k; 执行语句k=c&&x++ ; 则x为 ,k为 。 4.数值0x34对应的十进制为 。 5…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展&#xff0c;企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心&#xff0c;成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统&#xff0c;它不仅支持跨平台应用&#xff0c;还能提供丰富…...