Gemma模型:谷歌的小巨人,让高性能AI触手可及

认识Gemma:谷歌的开放式大型语言模型

谷歌最近发布了一系列开放式大型语言模型,名为Gemma。这是谷歌加强对开源人工智能支持的一部分,也标志着Gemma与Hugging Face生态系统的完美集成。让我们深入了解Gemma及其如何帮助开发者和研究者在各种硬件上高效部署AI模型。

Gemma模型概览

Gemma模型基于谷歌的Gemini技术,提供了两种规模的版本:2B(20亿)参数和7B(70亿)参数。每种规模都包括基础版本和经过指令优化的版本,旨在满足不同硬件平台的需求:

  • gemma-7b:7B参数的基础模型,适用于消费级GPU和TPU。
  • gemma-7b-it:7B参数的指令优化版本,针对GPU和TPU的高效部署。
  • gemma-2b:2B参数的基础模型,可在CPU和移动设备上运行。
  • gemma-2b-it:2B参数的指令优化版本,为CPU和移动设备优化。

所有版本的Gemma模型都能处理高达8K tokens的输入,这意味着它们能够理解和生成长篇幅的文本。

如何获取和使用Gemma模型

Gemma模型已经集成到Hugging Face Hub,您可以轻松访问和使用这些模型。以下是两个模型的链接,供您参考:

  • gemma-2b-it
  • gemma-7b-it

此外,如果您希望在本地使用这些模型,可以通过以下百度网盘链接下载模型文件:

  • 百度网盘链接:Gemma model
  • 提取码:w8m8

环境配置

为了运行Gemma模型,您需要安装特定版本的库。请使用以下命令进行安装:

pip install -U "transformers==4.38.0" --upgrade
pip install torch==1.13.0 jinja2==3.1.3

与Gemma对话

下面的Python代码演示了如何使用Gemma模型进行文本生成:

# 导入transformers库的AutoTokenizer和pipeline工具,以及PyTorch
from transformers import AutoTokenizer, pipeline
import torch

# 模型的路径或者模型的标识符
model = "./gemma-2b-it"

# 从预训练模型加载分词器
tokenizer = AutoTokenizer.from_pretrained(model)
# 创建一个文本生成pipeline,这里使用的是text-generation任务,指定模型、数据类型及运行设备
pipeline = pipeline(
    "text-generation",  # 指定pipeline的任务为文本生成
    model=model,  # 使用的模型
    model_kwargs={"torch_dtype": torch.bfloat16},  # 指定模型使用的数据类型,这里使用bfloat16以节省内存
    # model_kwargs={"torch_dtype": torch.bfloat16, "quantization_config": {"load_in_4bit": True}}, # 以 8 位或 4 位模式加载。以 4 位模式加载模型大约需要 9 GB 的内存
    # 指定模型使用的数据类型,这里使用bfloat16以节省内存
    device="cpu",  # 指定运行设备为CPU,如果有GPU可改为"cuda"
)

# 开始对话的提示信息
print("----------开始与Gemma对话----------")
history_dialogue = ""  # 初始化历史对话变量,用于累积对话历史
while True:  # 开始一个无限循环,直到用户决定退出
    input_text = input("<Human>: ")  # 获取用户输入
    if input_text == "new dialogue":  # 如果用户输入"new dialogue",则重置对话历史
        print("----------重新开始与Gemma对话----------")
        history_dialogue = ""  # 重置历史对话变量
        continue
    elif input_text == "q":  # 如果用户输入"q",则退出循环
        break
    messages = [
        {"role": "user", "content": input_text},  # 构造当前轮对话的消息
    ]
    # 使用pipeline的tokenizer处理消息,生成模型的输入prompt
    prompt = pipeline.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
    history_dialogue = history_dialogue + prompt  # 更新历史对话变量,累积对话历史
    # 确保history_dialogue的token长度不超过8k,这是因为模型的限制
    if len(tokenizer(history_dialogue)["input_ids"]) > 8192:
        print("历史对话过长,无法处理。")
        break
    # 使用pipeline生成回复
    outputs = pipeline(
        history_dialogue,
        max_new_tokens=4096,  # 最大新生成token数
        add_special_tokens=True,  # 添加特殊token
        do_sample=True,  # 启用采样
        temperature=0.7,  # 采样温度
        top_k=50,  # Top-K采样
        top_p=0.95  # Top-P采样(nucleus sampling)
    )
    # 提取模型生成的文本作为回复,去除已有的历史对话部分
    reply = outputs[0]["generated_text"][len(history_dialogue):]
    print(f"<Gemma>: {reply}")  # 打印模型的回复
    prompt = reply + "<end_of_turn>"  # 准备下一轮对话的prompt
print("对话结束.")  # 用户退出对话循环后的提示

请注意,为了保证性能和避免内存溢出,history_dialogue的token长度不应超过8192。

对话示例:

gemma对话示例

Gemma模型的主要成就

Gemma模型的推出标志着谷歌在大型语言模型(LLM)领域的一个重要进步,特别是在模型效率和灵活性方面。这些成就主要表现在三个方面:

模型尺寸的优化

Gemma提供了两种不同规模的模型:2B(20亿参数)和7B(70亿参数),这些模型的尺寸相对较小,特别是当考虑到它们强大的性能时。这种尺寸上的优化使得Gemma模型能够在不牺牲性能的情况下运行在硬件资源更受限的环境中。

强大的性能

尽管Gemma模型的参数数量较少,但它们依然能够提供与更大模型相匹配的性能。这得益于谷歌对模型结构和训练过程的优化,包括使用了指令优化版本(-it),进一步提升了模型处理特定任务的能力。

本地电脑部署

Gemma模型的一个显著特点是它们可以直接部署在本地电脑上,不只限于云端或高性能服务器。这使得AI研究和开发更加便捷,降低了入门门槛。对于开发者和研究人员而言,能够在本地机器上快速测试和迭代模型是一个巨大的优势,特别是在资源有限或需要快速原型开发的场景中。

结论

Gemma模型凭借其优化的尺寸、强大的性能以及出色的部署灵活性,在AI领域树立了新的标杆。这些模型不仅支持了开源AI社区的发展,还为在各种硬件上部署高效、强大的AI应用提供了更多可能性。无论您是AI领域的专业人士还是热情爱好者,Gemma模型都值得您深入探索和利用。

版权声明:本文为博主作者:一花·一树原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_39045712/article/details/136241133

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2024年4月10日
下一篇 2024年4月10日

相关推荐