本地快速部署谷歌开放模型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 系统的部署,可根据自身需求定制部署环境,灵活调整配置参数,满足个性化需求。对模型和数据拥有完全控制权,可自由进行二次开发和扩展。

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

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

相关文章

安装Docker及DockerCompose

0.安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道…

大模型基础应用框架(ReACT\SFT\RAG)创新及零售业务落地

如何将大语言模型的强大能力融入实际业务、产生业务价值,是现在很多公司关注的焦点。在零售场,大模型应用也面临很多挑战。本文分享了京东零售技数中心推出融合Agent、SFT与RAG的大模型基础应用框架,帮助业务完成大模型微调、部署和应用&…

【uni-app】condition 启动模式配置,生产环境无效,仅开发期间生效

在小程序开发过程中,每次代码修改后,都会启动到首页,有时非常不方便,为了更高效的开发,有时需要模拟直接跳转到指定的页面, 操作方法如下: 在pages.joson里面配置下列代码: "…

台式电脑电源各线的电压和电流输出和输出电流

台式电脑电源是电脑硬件的重要组成部分。 它为计算机的各个部件提供所需的电压和电流。 不同的硬件设备和组件有不同的电压和电流输出。 下面详细介绍台式电脑电源各线的电压,包括3.3V、5V、12V、-12V、-5V和5VSB,以及它们的输出电流和用途。 3.3V&#…

c语言游戏实战(10):坤坤的篮球回避秀

前言: 这款简易版的球球大作战是博主耗时两天半完成的,玩家需要控制坤坤在游戏界面上移动,来躲避游戏界面上方不断掉下来的篮球。本游戏使用C语言和easyx图形库编写,旨在帮助初学者了解游戏开发的基本概念和技巧。 在开始编写代…

数字经济的下一步:Web3的潜力与前景

引言: 随着区块链技术的迅速发展,数字经济正迎来新的变革时代。在这个数字化时代,Web3作为区块链技术的延伸和演进,正在成为全球数字经济发展的重要方向。本文将深入探讨Web3的潜力与前景,以及它对数字经济发展的深远…

二,几何相交----2,区间相交检测IID--(1)算法

对于空间的线段是否相交,假设都是与x平行,则需要三步 1,对各线段左右端点设置为L,R标志 2,从小到大进行排序 3,线性扫描,从小到大,根据模式判断是否相交,假设不相交,则应…

企业需要知道的数据安全管理产品-堡垒机

随着互联网的发达,数据泄露事件时有发生,保障数据安全至关重要,因此数据安全管理产品也越来越多。今天我们就来聊聊企业都应该知道的数据安全管理产品堡垒机。 第一、什么是堡垒机? 在一个特定的网络环境下,为了保障…

抖店入驻费用是多少?新手入驻都有哪些要求?2024费用明细!

我是电商珠珠 我做电商做了将近五年,做抖店做了三年多,期间还带着学员一起做店。 今天,就来给大家详细的讲一下在抖音开店,需要多少费用,最低需要投入多少。 1、营业执照200元左右 就拿个体店举例,在入…

【计算机操作系统】操作系统的诞生

目录 相关概念: 一、手工操作阶段 二、脱机输入/输出阶段 (1)脱机输入技术 (2)脱机输出技术 三、单道批处理阶段 四、多道批处理阶段 五、分时技术产生 六、实时系统产生 相关概念: ① 作业&#…

leetcode日记(36)全排列

想思路想了很久……思路对了应该会很好做。 我的思路是这样的&#xff1a;只变化前n个数字&#xff0c;不断增加n&#xff0c;由2到nums.size()&#xff0c;使用递归直到得到所有结果 代码如下&#xff1a; class Solution { public:vector<vector<int>> permut…

技术革新:800G OSFP 2xSR4光模块最新解决方案

信息技术的快速发展&#xff0c;网络需求不断增长&#xff0c;对高速、高带宽的数据传输设备的需求也日益迫切。800G作为一种高速光模块&#xff0c;正在成为数据中心的“新宠”。本期文章我们来了解一下800G OSFP 2xSR4光模块产品的技术原理以及它的应用前景。 一、800G OSFP…