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

Gemma开源AI指南

近几个月来,谷歌推出了 Gemini 模型,在人工智能领域掀起了波澜。 现在,谷歌推出了 Gemma,再次引领创新潮流,这是向开源人工智能世界的一次变革性飞跃。

与前代产品不同,Gemma 是一款轻量级、小型模型,旨在帮助全球开发人员负责任地构建 AI 解决方案,与 Google 的 AI 原则紧密结合。 这一具有里程碑意义的举措标志着人工智能技术民主化的重要时刻,为开发人员和研究人员提供了前所未有的使用尖端工具的机会。

作为一个开源模型,Gemma 不仅使最先进的人工智能技术的获取变得民主化,还鼓励全球开发者、研究人员和爱好者社区为其进步做出贡献。 这种协作方法旨在加速人工智能创新,消除障碍并培育共享知识和资源的文化。

在本文中,我们将使用 Keras 探索 Gemma 模型,并尝试一些文本生成任务的实验,包括问答、摘要和模型微调。

1、什么是Gemma

Gemma 是 Google AI 系列的最新成员,由轻量级的顶级开放模型组成,这些模型源自为 Gemini 模型提供动力的相同技术。 这些文本到文本、仅限解码器的大型语言模型以英语提供,提供开放权重、预训练变体和指令调整变体。 Gemma 模型在各种文本生成任务中表现出色,例如回答问题、摘要和推理。 其紧凑的尺寸有助于在笔记本电脑、台式机或个人云基础设施等资源有限的环境中进行部署,实现对尖端人工智能模型的民主化访问并刺激所有人的创新。

Gemma的主要特性如下:

  • 模型尺寸:Google 推出了两种尺寸的 Gemma 模型:Gemma 2B 和 Gemma 7B,每种模型都提供预训练和指令调整的变体。
  • Responsible AI 工具包:Google 推出了 Responsible Generative AI 工具包,帮助开发人员使用 Gemma 创建更安全的 AI 应用程序。
  • 用于推理和微调的工具链:开发人员可以通过本机 Keras 3.0 利用工具链在 JAX、PyTorch 和 TensorFlow 等主要框架中进行推理和监督微调 (SFT)。
    轻松部署:经过预训练和指令调整的 Gemma 模型可部署在笔记本电脑、工作站或 Google Cloud 上。 它们可以轻松部署在 Vertex AI 和 Google Kubernetes Engine (GKE) 上。
  • 性能:与其他开放式模型相比,Gemma 模型在其尺寸方面实现了顶级性能。 它们在关键基准上的表现明显优于更大的模型,同时保持安全和负责任的输出的严格标准。

2、Gemma vs. Gemini

谷歌表示,Gemma 虽然与 Gemini 不同,但与其共享重要的技术和基础设施组件。 这一共同的基础使 Gemma 2B 和 Gemma 7B 能够相对于其他类似尺寸的开放式模型实现“一流的性能”。

3、Gemma vs. Llama 2

Google 将 Gemma 7B 与 Meta 的 Llama 2 7B 在推理、数学和代码生成等各个领域进行了比较。 Gemma 在所有基准测试中均显着优于 Llama 2。 例如,在推理方面,Gemma 在 BBH 基准测试中得分为 55.1,而 Llama 2 的得分为 32.6。 数学方面,Gemma 在 GSM8K 基准测试中得分为 46.4,而 Llama 2 得分为 14.6。 Gemma 在解决复杂问题方面也表现出色,在 MATH 4-shot 基准测试中得分为 24.3,超过了 Llama 2 的 2.5 分。 此外,在 Python 代码生成方面,Gemma 得分为 32.3,超过了 Llama 2 的 12.8 分。

Gemma 可在 Colab 和 Kaggle 笔记本上轻松使用,并与 Hugging Face、NVIDIA、NeMo、MaxText 和 TensorRT-LLM 等流行工具无缝集成。 此外,开发人员还可以通过 Keras 3.0 利用 Google 的工具链在 JAX、PyTorch 和 TensorFlow 等领先框架中进行推理和监督微调 (SFT)。

4、实验1:Gemma与 KerasNLP的结合

KerasNLP 提供了对 Gemma 模型的便捷访问,使研究人员和从业者能够轻松探索和利用其功能来满足他们的需求。

4.1 启用模型访问权限

Gemma-7b 是一个受控模型,需要用户请求访问。按照如下步骤启用模型访问。

  • 登录你的 Kaggle 帐户或注册一个新帐户(如果还没有帐户)。
  • 使用这个链接打开 Kaggle上的Gemma 模型页面。
  • 在 Gemma 模型页面上,单击“请求访问”链接以请求访问模型。
  • 在下一页上提供你的名字、姓氏和电子邮件 ID。
  • 在接下来的页面中单击“接受”以接受许可协议。

4.2 Kaggle 访问密钥生成

要访问该模型,你还需要 Kaggle 访问令牌。 可以通过转到Kaggle设置来,然后单击 API 下的“创建新令牌”按钮来创建新的访问令牌。

4.3 使用 KerasNLP 通过 Gemma 创建脚本

为了运行该模型,Gemma 需要一个具有 16GB RAM 的系统。 在本节中,我们将使用 Google Colab 而不是个人机器。 如果符合要求的规格,可以尝试在你的计算机上运行相同的代码。

  • 打开链接“欢迎来到 Colaboratory — Colaboratory”,然后单击“登录”以登录到你的 Colab 帐户;如果没有帐户,则创建一个新帐户。
  • 通过Runtime→更改运行时类型→T4 GPU→保存将Runtime更改为T4 GPU。

4.4 设置环境变量

要使用 Gemma,你必须提供 Kaggle 访问令牌。 在左侧窗格中选择 Secrets (🔑),然后添加你的 KAGGLE_USERNAME 和 KAGGLE_KEY

单击 + 新笔记本 按钮创建新的 Colab 笔记本。 设置 KAGGLE_USERNAME 和 KAGGLE_KEY 的环境变量。

import os
from google.colab import userdataos.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')

4.5 安装依赖项

使用以下命令安装访问 gemma 模型所需的 python 库。 单击播放图标以执行单元格。

!pip install -q -U keras-nlp
!pip install -q -U keras>=3

4.6 导入包

导入 Keras 和 KerasNLP。

import keras
import keras_nlp

4.7 选择后端

Keras 适用于 TensorFlow、JAX 和 Torch。 选择 jax 作为本部分的后端。

import os
os.environ["KERAS_BACKEND"] = "jax"

4.8 创建模型

在本教程中,我们将使用 GemmaCausalLM 创建一个模型,这是一个用于因果语言建模的端到端 Gemma 模型。 使用 from_preset 方法创建模型。  from_preset 根据预设的架构和权重实例化模型。

gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma_2b_en")

使用 summary获取有关模型的更多信息:

gemma_lm.summary()

4.9 生成文本

gemma 模型有一个生成方法,可以根据提示生成文本。 可选的 max_length 参数指定生成序列的最大长度。

gemma_lm.generate("What is the meaning of life?", max_length=64)
gemma_lm.generate("How does the brain work?", max_length=64)

还可以使用列表作为输入来提供批量提示:

gemma_lm.generate(["What is the meaning of life?","How does the brain work?"],max_length=64)

5、实验2:使用HuggingFace的Gemma模型

通过 Hugging Face 平台可以方便地访问和使用 Gemma 模型。 该模型易于探索,使研究人员和实践者能够发挥其潜力。

5.1 启用 Gemma-7b 访问

Gemma-7b 是一个受控模型,需要用户请求访问。

按照步骤启用模型访问:

  • 登录你的 Hugging Face 帐户或注册一个新帐户(如果还没有帐户)。
  • 可以访问这里请求访问权限。

访问链接后,请确认许可协议。 然后,你将被定向到一个页面,可以在其中授权 Kaggle 分享你的 HuggingFace 详细信息。

确认许可后,继续授权 Kaggle 分享你的 Hugging Face 详细信息。 为了进一步访问,此步骤是必需的。

授权 Kaggle 后,将被重定向到显示许可协议的页面。 单击“接受”按钮即同意条款和条件。

接受许可协议后,现在可以访问 Gemma-7b 模型。

要确认你的访问权限,请前往这个链接 ,如果成功访问 Gemma-7b 模型,将收到有关它的相关信息。

5.2 Hugginface访问令牌生成

要访问该模型,还需要 HuggingFace 访问令牌。 可以通过转到“设置”,然后转到左侧边栏中的“访问令牌”,然后单击“新令牌”按钮来创建新的访问令牌来生成一个。

5.3 用 HuggingFace 与 Gemma 创建一个脚本

为了运行该模型,Gemma 需要一个具有 16GB RAM 的系统。 在本节中,我们将使用 Google Colab 而不是个人机器。 如果符合要求的规格,可以尝试在你的计算机上运行相同的代码。

  • 打开链接“欢迎来到 Colaboratory — Colaboratory”,然后单击“登录”以登录到你的 Colab 帐户;如果没有帐户,则创建一个新帐户。
  • 通过Runtime→更改运行时类型→T4 GPU→保存将Runtime更改为T4 GPU。
  • 要使用 Gemma,你必须提供 Hugging Face 访问令牌。 在左侧窗格中选择 Secrets (🔑) 并添加你的 HF_TOKEN 密钥。
  • 单击 + 新笔记本按钮创建新的 Colab 笔记本。

5.4 安装依赖项

使用以下命令安装访问 gemma 模型所需的 python 库。 单击播放图标以执行单元格。

!pip install transformers torch accelerate

5.5 Huggingface登录

要使用 Gemma 模型,你需要验证 Hugging Face 帐户。 将提供的代码添加到新单元格以进行 Hugging Face 登录。 单击播放图标以执行单元格。 在指定单元格中输入你的 Hugging Face 访问令牌以完成身份验证过程。

5.6 选择模型

使用以下命令访问 gemma-2b-it 模型。 你还可以尝试使用任何一种 Gemma 模型。 请访问 这个链接以了解有关其他 Gemma 模型的更多信息。

from transformers import AutoTokenizer, AutoModelForCausalLMtokenizer = AutoTokenizer.from_pretrained("google/gemma-2b-it")
model = AutoModelForCausalLM.from_pretrained("google/gemma-2b-it")

5.7 生成文本

通过执行以下代码片段来测试模型。

input_text = "What is Machine Learning."
input_ids = tokenizer(input_text, return_tensors="pt")outputs = model.generate(**input_ids, max_new_tokens=1024)
print(tokenizer.decode(outputs[0]))

你将得到如下输出:

相关文章:

Gemma开源AI指南

近几个月来,谷歌推出了 Gemini 模型,在人工智能领域掀起了波澜。 现在,谷歌推出了 Gemma,再次引领创新潮流,这是向开源人工智能世界的一次变革性飞跃。 与前代产品不同,Gemma 是一款轻量级、小型模型&…...

LabVIEW智能家居安防系统

LabVIEW智能家居安防系统 随着科技的飞速发展和人们生活水平的不断提升,智能家居系统以其便利性和高效性,逐渐成为现代生活的新趋势。智能家居安防系统作为智能家居系统的重要组成部分,不仅能够提高家庭的安全性,还能为用户提供更…...

[蓝桥杯 2022 省 A] 求和

[蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和,即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a 1 ⋅ a n a 2 ⋅ a 3 ⋯ a n − 2 ⋅ a n − 1 a n − 2 ⋅ a…...

【C++入门】输入输出、命名空间、缺省参数、函数重载、引用、内联函数、auto、基于范围的for循环

目录 命名空间 命名空间的定义 命名空间的使用 输入输出 缺省参数 函数重载 引用 常引用 引用的使用场景 内联函数 auto 基于范围的for循环 命名空间 请看一段C语言的代码&#xff1a; #include <stdio.h> #include <stdlib.h>int rand 10;int main…...

Docker + Nginx 安装

安装Docker 1.防火墙 2.yum源 3.安装基础软件 更新yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all #清除yum源缓存 yu…...

UE RPC 外网联机(1)

技术&#xff1a;RPC TCP通信 设计&#xff1a;大厅服务<---TCP--->房间服务<---RPC--->客户端&#xff08;Creator / Participator&#xff09; 1. PlayerController 用于RPC通信控制 2.GameMode 用于数据同步 3.类图 4. 注意 &#xff08;1&#xff09;RPC&a…...

AI预测福彩3D第22弹【2024年3月31日预测--第5套算法开始计算第4次测试】

今天&#xff0c;咱们继续进行本套算法的测试&#xff0c;今天为第四次测试&#xff0c;仍旧是采用冷温热趋势结合AI模型进行预测。好了&#xff0c;废话不多说了。直接上结果~ 仍旧是分为两个方案&#xff0c;1大1小。 经过人工神经网络计算并进行权重赋值打分后&#xff0c;3…...

Django(二)-搭建第一个应用(1)

一、项目环境和结构 1、项目环境 2、项目结构 二、编写项目 1、创建模型 代码示例: import datetimefrom django.db import models from django.utils import timezone# Create your models here.class Question(models.Model):question_text models.CharField(max_length2…...

前端bugs

问题&#xff1a; Failed to load plugin typescript-eslint declared in package.json eslint-config-react-app#overrides[0]: Cannot find module eslint/package.json 解决&#xff1a; google了一晚上还得是chatgpt管用 运行以下命令【同时还要注意项目本身使用的Node版…...

MCGS学习——水位控制

要求 插入一个水罐&#xff0c;液位最大值为37插入一个滑动输入器&#xff0c;用来调节水罐水位&#xff0c;滑动输入器最大调节为液位最大值&#xff0c;并能清楚的显示出液位情况用仪表显示水位变化情况&#xff0c;仪表最大显示设置直观清楚方便读数&#xff0c;主划线为小…...

本地搭建多人协作ONLYOFFICE文档服务器并结合Cpolar内网穿透实现公网访问远程办公

文章目录 1. 安装Docker2. 本地安装部署ONLYOFFICE3. 安装cpolar内网穿透4. 固定OnlyOffice公网地址 本篇文章讲解如何使用Docker在本地服务器上安装ONLYOFFICE&#xff0c;并结合cpolar内网穿透实现公网访问。 Community Edition允许您在本地服务器上安装ONLYOFFICE文档&…...

Ubuntu 中电子邮件处理工具

Ubuntu 中电子邮件处理工具的综述 在现代通信技术中&#xff0c;电子邮件系统是不可或缺的一部分。特别是在基于 Linux 的操作系统如 Ubuntu 中&#xff0c;有许多高效且可靠的电子邮件处理工具可供选择。除了众所周知的 Postfix&#xff0c;还有其他几个重要的选项&#xff0…...

java多线程——运用线程同步解决线程安全问题

前言&#xff1a; 整理下学习笔记&#xff0c;打好基础&#xff0c;daydayup!!! 线程安全 多线程可以同时进行操作&#xff0c;但如果是同时操作一个共享资源的时候&#xff0c;可能会出现业务安全问题。 示例&#xff1a; 小A和小B共用一个账户&#xff0c;如果小A和小B同时取…...

Radio Silence for mac 好用的防火墙软件

Radio Silence for Mac是一款功能强大的网络防火墙软件&#xff0c;专为Mac用户设计&#xff0c;旨在保护用户的隐私和网络安全。它具备实时网络监视和控制功能&#xff0c;可以精确显示每个网络连接的状态&#xff0c;让用户轻松掌握网络活动情况。 软件下载&#xff1a;Radio…...

全国青少年软件编程(Python)等级考试一级考试真题2023年9月——持续更新.....

青少年软件编程(Python)等级考试试卷(一级) 分数:100 题数:37 一、单选题(共25题,共50分) 1.下列 Python 语句能够正确输出"学而时习之"五个字的是?( )A.print “学而时习之” B.print “(学而时习之)” C.print (“学而时习之”) D.print (学而时习之) 标…...

TCP通信——端口转发(重点内容)

实现多人群聊 Client(客户端&#xff09;建立通信 package com.zz.tcp.case1;import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner;public class Client {public static void mai…...

乐乐音乐鸿蒙版-支持krc歌词(动感歌词、翻译和音译歌词)

简介 乐乐音乐主要是基于HarmonyOS开发的音乐播放器&#xff0c;它支持lrc歌词和动感歌词(ksc歌词、krc歌词和hrc歌词等)、多种格式歌词转换器及制作动感歌词、翻译歌词和音译歌词。 开发环境 ArkTS、Stage模型、SDK3.1、 API 9 注&#xff1a;没试过在真机条件下调试。 功…...

批量删除 rabbitmq中随机队列

批量删除 amq.gen–* 随机队列 操作错误产生了无效随机队列&#xff0c;需要批量删除 进入MQ集群中 docker psdocker exec -it c2d28e816894 /bin/bash过滤列出指定amq.gen–队列 # 列出 指定 vhost/qq 以amq.gen开头的所有队列 rabbitmqctl list_queues --vhost / | grep ^…...

docker 数据卷

Docker数据卷是Docker中的一个核心机制&#xff0c;用于实现容器间数据的持久化和共享。它是宿主机上的一个特殊目录&#xff0c;可以供一个或多个容器使用。容器删除时&#xff0c;不会删除其挂载的数据卷&#xff0c;也不会存在类似的垃圾机制对容器存在的数据卷进行处理。 …...

【开发工具】Ubuntu复制CSDN代码多余符号的去除

在Ubuntu中使用CSDN复制的代码时&#xff0c;可能会出现\u200的符号&#xff0c;这个符号会影响代码的编译和运行&#xff0c;因此需要找到一种快速删除这种符号的方法。 通过搜索找到了一种替换为空的删除方式&#xff0c;笔者编写了一个适用于Rust的shell脚本&#xff0c;需要…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...