近几个月来,谷歌推出了 Gemini 模型,在人工智能领域掀起了波澜。现在,谷歌推出了 Gemma,再次引领创新潮流,这是向开源人工智能世界的一次变革性飞跃。
与它的前身不同,Gemma 是一个轻量级、较小的模型,旨在帮助世界各地的开发人员负责任地构建人工智能解决方案,与谷歌的人工智能原则紧密结合。这一具有里程碑意义的举措标志着人工智能技术民主化的重要时刻,为开发人员和研究人员提供了前所未有的使用尖端工具的机会。
作为一个开源模型,Gemma 不仅使最先进的人工智能技术的获取变得民主化,还鼓励全球开发者、研究人员和爱好者社区为其进步做出贡献。这种协作方法旨在加速人工智能创新,消除障碍并培育共享知识和资源的文化。
在本文中,我们将使用 Keras 探索 Gemma 模型,并尝试一些文本生成任务的实验,包括问答、摘要和模型微调。
什么是 Gemma
Gemma 是谷歌人工智能阵容的最新成员,由轻量级的顶级开放模型组成,这些模型源自为 Gemini 模型提供动力的相同技术。这些文本到文本、仅解码器的大型语言模型有英语版本,提供开放权重、预训练变体和指令调整变体。Gemma 模型在问题解答、摘要和推理等各种文本生成任务中表现出色。它们体积小巧,便于在笔记本电脑、台式机或个人云基础设施等资源受限的环境中部署,实现了尖端人工智能模型的平民化,促进了全民创新。
主要特点:
Gemma 与 Gemini
谷歌表示,Gemma 虽然有别于 Gemini,但与其共享重要的技术和基础设施组件。这种共同的基础使 Gemma 2B 和 Gemma 7B 与其他类似规模的开放模型相比,实现了 "同类最佳性能"。
Gemma 与 Llama 2
Google 将 Gemma 7B 与 Meta 的 Llama 2 7B 在推理、数学和代码生成等多个领域进行了比较。在所有基准测试中,Gemma 都明显优于 Llama 2。例如,在 BBH 基准测试中,Gemma 的推理得分为 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 上进行实验
Gemma 可在 Colab 和 Kaggle 笔记本上随时使用,并与 Hugging Face、NVIDIA、NeMo、MaxText 和 TensorRT-LLM 等流行工具无缝集成。此外,开发人员还可以通过 Keras 3.0 在 JAX、PyTorch 和 TensorFlow 等领先框架中利用 Google 的工具链进行推理和监督微调 (SFT)。
方法 1:将 Gemma 与 KerasNLP 结合使用
KerasNLP 提供对 Gemma 模型的便捷访问,使研究人员和从业人员能够根据自己的需要随时探索和利用其功能。
启用 Gemma-7b 访问
Gemma-7b 是一个门控模型,需要用户申请访问。
请按照以下步骤启用模型访问权限。
生成 Kaggle 访问密钥
要访问模型,您还需要一个 Kaggle 访问令牌。你可以进入设置 | Kaggle,然后点击 API 下的 "创建新令牌 "按钮来创建一个新的访问令牌。
使用 KerasNLP 用 Gemma 创建第一个脚本
要运行模型,Gemma 需要一个拥有 16GB 内存的系统。在本节中,我们将使用 Google Colab 而不是个人计算机。如果您的机器符合要求,您可以尝试在自己的机器上运行相同的代码。
设置环境变量
要使用 Gemma,必须提供 Kaggle 访问令牌。在左侧窗格中选择 "秘密" (?),然后添加你的 KAGGLE_USERNAME 和 KAGGLE_KEY。
点击 + New notebook(新建笔记本)按钮,创建新的 colab 笔记本。为 KAGGLE_USERNAME 和 KAGGLE_KEY 设置环境变量。
import os
from google.colab import userdata
os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')
安装依赖项
使用以下命令安装访问 gemma 模型所需的 python 库。点击播放图标执行单元格。
!pip install -q -U keras-nlp
!pip install -q -U keras>=3
导入软件包
导入 Keras 和 KerasNLP。
import keras
import keras_nlp
选择后端
Keras 适用于 tensorflow、jax 和 torch。本节选择 jax 作为后端。
import os
os.environ["KERAS_BACKEND"] = "jax"
创建模型
在本文中,您将使用 GemmaCausalLM(一种用于因果语言建模的端到端 Gemma 模型)创建一个模型。使用 from_preset 方法创建模型。
gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma_2b_en")
使用summary获取有关模型的更多信息:
gemma_lm.summary()
生成文本
gemma 模型有一个根据提示生成文本的 generate 方法。可选的 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)
方法 2:从 HuggingFace 使用 Gemma
通过 Hugging Face 平台可以方便地访问和使用 Gemma 模型。该模型随时可供探索,使研究人员和从业人员能够利用其潜力。
启用 Gemma-7b 访问
Gemma-7b 是一个门控模型,需要用户申请访问。
请按照以下步骤启用模型访问。
生成 Hugging Face 访问令牌
要访问模型,您还需要一个 HuggingFace 访问令牌。您可以进入 "设置",然后进入左侧边栏的 "访问令牌",点击 "新建令牌 "按钮创建一个新的访问令牌。
使用 HuggingFace 与 Gemma 一起创建第一个脚本
要运行模型,Gemma 需要一个拥有 16GB 内存的系统。我们将使用 Google Colab 而不是个人计算机。如果您的机器符合要求,您可以尝试在自己的机器上运行相同的代码。
安装依赖项
使用以下命令安装访问 gemma 模型所需的 python 库。点击播放图标执行单元格。
!pip install transformers torch accelerate
登录 HuggingFace
要使用 Gemma 模型,您需要验证您的 Hugging Face 帐户。将提供的代码添加到 Hugging Face 登录的新单元格中。点击播放图标执行单元格。在指定单元格中输入您的 Hugging Face 访问令牌,完成验证过程。
from huggingface_hub import login
login()
选择模型
使用以下命令访问 gemma-2b-it 模型。您也可以尝试使用任何一种 gemma 模型。
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b-it")
model = AutoModelForCausalLM.from_pretrained("google/gemma-2b-it")
生成文本
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]))
输出结果如下: