本地快速部署谷歌开放模型Gemma教程(基于WasmEdge)

本地快速部署谷歌开放模型Gemma教程(基于WasmEdge)

  • 一、介绍 Gemma
  • 二、部署 Gemma
    • 2.1 部署工具
    • 2.1 部署步骤
  • 三、构建超轻量级 AI 代理
  • 四、总结

一、介绍 Gemma

在这里插入图片描述
Gemma是一系列轻量级、最先进的开放式模型,采用与创建Gemini模型相同的研究和技术而构建。可以直接运行在本地的电脑上,无GPU也可以运行,只用CPU即可,只不过速度慢点。

二、部署 Gemma

2.1 部署工具

使用 Linux 环境 + WasmEdge 一个工具部署Gemma,WasmEdge 用来运行模型。

WasmEdge:https://github.com/wasmedge/wasmedge

🤩 WasmEdge 是在您自己的设备上运行 LLM 的最简单、最快的方法。🤩

WasmEdge 是一个轻量级、高性能且可扩展的 WebAssembly 运行时。它是当今最快的 Wasm 虚拟机。WasmEdge 是CNCF主办的官方沙箱项目。其用例包括现代 Web 应用程序架构(同构和 Jamstack 应用程序)、边缘云上的微服务、无服务器 SaaS API、嵌入式功能、智能合约和智能设备。

在这里插入图片描述

2.1 部署步骤

  1. 安装具有 LLM 支持的 WasmEdge

可以从一行命令开始安装 WasmEdge 运行时,并提供 LLM 支持。

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

使用选项传递插件列表--plugins,安装wasmedge_rustlswasi_nn-ggml插件。wasmedge_rustls插件以启用 TLS 和 HTTPS 网络,为启动API服务提供支持。wasi_nn-ggml使 WasmEdge 能够在大型语言模型(例如LMMs的 gemma)上运行人工智能推理程序。

安装完成后执行source /home/server/.bashrc,使wasmedge命令立即生效。

或者可以按照此处的安装指南手动下载并复制 WasmEdge 安装文件。

  1. 在 Wasm 中下载 LLM 聊天应用程序

接下来,获取超小型 2MB 跨平台二进制文件 - LLM 聊天应用程序,该应用程序允许您在命令行上与模型聊天。它证明了效率,不需要其他依赖项并提供跨各种环境的无缝操作,这个 2M 的小 Wasm 文件是从 Rust 编译而来的。

curl -LO https://github.com/LlamaEdge/LlamaEdge/releases/latest/download/llama-chat.wasm
  1. 下载Gemma-7b-it 模型 GGUF 文件,由于模型大小为5.88G,下载可能需要一段时间。
curl -LO https://huggingface.co/second-state/Gemma-7b-it-GGUF/resolve/main/gemma-7b-it-Q5_0.gguf

模型下载汇总:https://github.com/LlamaEdge/LlamaEdge/blob/main/models.md

WasmEdge 还支持 Llama2、CodeLlama、Codeshell、Mistrial、MiscialLite、TinyLlama、Baichuan、BELLE、Alpaca、Vicuna、OpenChat、Starcoder、OpenBuddy 等等!

  1. 在 CLI 上与 Llama2 7b 模型聊天

现在您已完成所有设置,您可以开始使用命令行与 Llama2 7b 聊天支持的 LLM 聊天。

wasmedge --dir .:. --nn-preload default:GGML:AUTO:gemma-7b-it-Q5_0.gguf llama-chat.wasm -p gemma-instruct -c 4096

便携式 Wasm 应用程序会自动利用我设备上的硬件加速器(例如 GPU)。

[You]:
Create JSON for the following: There are 3 people, two males, One is named Mark. Another is named Joe. And a third person, who is a woman, is named Sam. The women is age 30 and the two men are both 19.

[Bot]:
json
{
  "people": [
    {
      "name": "Mark",
      "age": 19
    },
    {
      "name": "Joe",
      "age": 19
    },
    {
      "name": "Sam",
      "age": 30
    }
  ]
}

在这里插入图片描述

您可以使用同一llama-chat.wasm文件来运行其他 LLM,例如 OpenChat、CodeLlama、Mistral 等。

三、构建超轻量级 AI 代理

  1. 创建兼容OpenAI的API服务

当您使用领域知识或自托管 LLama2 模型微调模型时,仅使用 CLI 运行模型是不够的。接下来,我们为开源模型设置兼容 OpenAI 的 API 服务,然后我们可以将微调后的模型集成到其他工作流程中。

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

首先,通过终端下载Wasm文件来构建API服务器,它也是一个跨平台的便携式 Wasm 应用程序,可以在许多 CPU 和 GPU 设备上运行。

curl -LO https://github.com/LlamaEdge/LlamaEdge/releases/latest/download/llama-api-server.wasm
  1. 下载聊天机器人 Web UI,以通过聊天机器人 UI 与模型进行交互。
curl -LO https://github.com/LlamaEdge/chatbot-ui/releases/latest/download/chatbot-ui.tar.gz
tar xzf chatbot-ui.tar.gz
rm chatbot-ui.tar.gz
  1. 使用以下命令行启动模型的 API 服务器。
wasmedge --dir .:. --nn-preload default:GGML:AUTO:gemma-7b-it-Q5_0.gguf llama-api-server.wasm -p gemma-instruct -c 4096

然后,看到连接已建立后,打开浏览器访问http://0.0.0.0:8080/即可使用可视化操作页面聊天。

server@dev-fj-srv:~/code$ wasmedge --dir .:. --nn-preload default:GGML:AUTO:gemma-2b-it-Q5_0.gguf llama-api-server.wasm -p gemma-instruct   -c 4096
[2024-03-01 09:46:45.391] [error] instantiation failed: module name conflict, Code: 0x60
[2024-03-01 09:46:45.391] [error]     At AST node: module
[INFO] Socket address: 0.0.0.0:8080
[INFO] Model name: default
[INFO] Model alias: default
[INFO] Prompt context size: 4096
[INFO] Number of tokens to predict: 1024
[INFO] Number of layers to run on the GPU: 100
[INFO] Batch size for prompt processing: 512
[INFO] Temperature for sampling: 1
[INFO] Top-p sampling (1.0 = disabled): 1
[INFO] Penalize repeat sequence of tokens: 1.1
[INFO] Presence penalty (0.0 = disabled): 0
[INFO] Frequency penalty (0.0 = disabled): 0
[INFO] Prompt template: GemmaInstruct
[INFO] Log prompts: false
[INFO] Log statistics: false
[INFO] Log all information: false
[INFO] Starting server ...
[INFO] Plugin version: b2230 (commit 89febfed)
[INFO] Listening on http://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": "Who is Robert Oppenheimer?"}], "model":"llama-2-chat"}'

四、总结

此教程用于基于 WasmEdge 系统的部署,可根据自身需求定制部署环境,灵活调整配置参数,满足个性化需求。对模型和数据拥有完全控制权,可自由进行二次开发和扩展。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用node或者vscode开启一个简单的本地server服务器,加载html网页

使用Live Server 想要加载本地html页面可以快速能让它在你本地浏览器中打开,可以有好多种方式,如果你有使用vscode,可以安装一个插件:Live Server,然后直接在vscode中直接右键就可以开启这个服务: 安装好之…

Redis持久化+Redis内存管理和优化+Redis三大缓存问题

Redis持久化Redis内存管理和优化Redis三大缓存问题一、Redis高可用二、Redis持久化1、RDB持久化1.1 触发条件(1) 手动触发(2) 自动触发(3) 其他自动触发机制 1.2 执行流程1.3 启动时加载 2、AOF持久化2.1 开启AOF2.2 执行流程(1) 命令追加(append)(2) 文件写入(write)和文件同步…

Tomcat部署及多实例

一、Tomcat简介 1、简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 当在一台机器上配置好Apache 服务器&#xff0c…

ARK:《BIG IDEAS 2024》

Cathie Wood所带领的方舟投资(ARK)发布了年度重磅研究报告《BIG IDEAS 2024》,该报告指出人工智能、公共区块链、多组学测序、能源存储和机器人技术这五大板块的融合将带来全球经济活动的改变。 这五个创新平台正在融合并定义这个技术时代&am…

全部免费!抖音,牛逼了!

相比于百度文心、清华智谱和讯飞星火这些在国内有一定市场知名度的AI工具,字节跳动多少显得有点低调了。 国内的AI工具用了不少,但要是说哪家最有前景,那最看好的还是字节跳动。 倒不是说字节的云雀大模型比上面这几个更牛逼,而…

【计算机网络】TCP 如何实现可靠传输

TCP通过三次握手建立连接,四次挥手释放连接,确保连接建立和连接释放的可靠。 序列号、检验和、确认应答信号、重发机制、连接管理、窗口控制、流量控制、拥塞控制 标准回答 可靠传输就是通过TCP连接传送的数据是没有差错、不会丢失、不重复并且按序到达的…

77-组合(回溯算法)

题目 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 示例 2: 输入:n …

【MySQL】复合查询(重点)-- 详解

一、基本查询练习回顾 1、查询工资高于 500 或岗位为 MANAGER 的雇员,同时还要满足他们的姓名首字母为大写的 J 2、按照部门号升序而雇员的工资降序排序 3、使用年薪进行降序排序 4、显示工资最高的员工的名字和工作岗位 5、显示工资高于平均工资的员工信息 6、显…

关于DisableIEToEdge插件闪退问题的解决方案

关于DisableIEToEdge插件闪退问题.今天终于测试找到最佳解决方案了! 1.管理员权限运行Windows powershell. 2.执行一下两条命令修复系统环境 DISM.exe /Online /Cleanup-image /Restorehealth sfc /scannow 3.关闭Windows安全中心的所有安全选项。 4.管理员权限运行…

Docker 常用操作命令备忘

Docker 一旦设置好了环境,日常就只要使用简单命令就可以运行和停止。 于是,我每次用的时候,都想不起来一些关键性的命令到底怎么用,特此记录。 一、镜像管理 从公有仓库拉取镜像 (对于使用苹果电脑 M1/M2/M3 芯片的 …

店匠科技颁布 Shoplazza Awards:品牌出海迎历史性机遇,赋能品牌腾飞

在全球化的今天,中国品牌在全球市场的地位日益显著,品牌意识的提升推动了企业出海战略的全新转型。以全球电商市场发展为例,根据 ecommerceBD 数据,2023 年全球零售电子商务销售额预计 6.3 万亿美元,到 2026 年&#x…

腾讯云优惠券领取的三个渠道,一个比一个优惠!

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

在VMware上创建kali并改成中文

一.下载VMware 打开官网,获取下载链接 Download VMware Workstation Pro 创建新的虚拟机 之所以选这个是因为kali就是基于debian深度开发 一般窝萌不放在c盘 接下来是三种网络连接类型,我之前做过他们的区别的博客 简单来说就是一般是桥接&#xff0…

【蓝桥杯省赛真题31】python连续正整数之和 中小学青少年组蓝桥杯比赛python编程省赛真题解析

目录 python连续正整数之和 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python连续正整数之和 第十二届蓝桥杯青少年组python比赛省赛真题 …

【数据结构】线性表 顺序表(动态、静态分配,插入删除查找基本操作)解析+完整代码

1.线性表的基本概念 定义 线性表(Linear List)是具有相同数据类型的n个数据元素的有限序列。 n为表长,n0时线性表是个空表 前驱、后继 前驱:其中一个数据元素的前一个元素。第一个元素没有前驱。后继:其中一个数据元素…

chalk库的使用

这篇文章主要是对chalk库官方文档的中文翻译以及我自己的一些理解。chalk的官方文档可以看这里。 首先说下chalk库的作用:美化终端输出的文本,例如添加不同的字体颜色、不同颜色的背景、粗体以及添加下划线等等,看下图: 优点 富…

新一代湖仓集存储,多模型统一架构,高效挖掘数据价值

星环科技TDH一直致力于给用户带来高性能、高可靠的一站式大数据基础平台,满足对海量数据的存储和复杂业务的处理需求。 同时在易用性方面持续深耕,降低用户开发和运维成本,让数据处理平民化,助力用户以更便捷、高效的方式去挖掘数…

Node.js+vue校内二手物品交易系统tdv06-vscode前后端分离

二手物品交易系统采用B/S架构,数据库是MySQL。网站的搭建与开发采用了先进的nodejs进行编写,使用了vue框架。该系统从三个对象:由管理员和用户、店铺来对系统进行设计构建。主要功能包括:个人信息修改,对用户、店铺、二…

美剧推荐|2024值得期待的二十部美剧,你心里的TOP1是哪一部

关注公众号:萌番bilfun,发送影片名称,即可获取资源链接 2023必看十部美剧推荐: 面目全非,堡垒,暗夜情报员,猎魔人第三季,阿索卡,洲际酒店,怒呛人生&#xf…

Linux 学习笔记(8)

八、 启动引导 1 、 Linux 的启动流程 1) BIOS 自检 2) 启动 GRUB/LILO 3) 运行 Linux kernel 并检测硬件 4) 挂载根文件系统 5) 运行 Linux 系统的第一个进程 init( 其 PID 永远为 1 ,是所有其它进程的父进程 ) 6) init 读取系统引导配置文件…