当前位置:   article > 正文

谷歌开源的LLM大模型 Gemma 简介_google llm

google llm

 相关链接:

Gemma简介

谷歌推出了 Gemma,一个开放大型语言模型 (LLM) 的尖端系列,标志着其致力于开源人工智能的重要一步。同时Gemma 与 Hugging Face 平台的无缝集成,可以让AIGC爱好者更好的去使用。

Gemma 是基于 Gemini 技术推出的四款新型大型语言模型(LLM),提供了 2B 和 7B 两种不同规模的版本,每种都包含了预训练基础版本和经过指令优化的版本。所有版本均可在各类消费级硬件上运行,无需数据量化处理,拥有高达 8K tokens 的处理能力:

Gemma 模型的性能如何?以下是其基础版本与其他开放模型在 LLM 排行榜 上的比较(得分越高越好):

Gemma 7B 型号脱颖而出,是一款特别强大的选择,其性能可与 7B 重量级顶级竞争者的性能相媲美,包括 Mistral 7B 等。另一方面,Gemma 2B 型号的尺寸提供了一个有趣的选择。然而,与类似尺寸的最熟练模型(例如 Phi 2)相比,它在排行榜上的排名并不高。

数据集

这些模型在包​​含各种来源、总计 6 万亿个Token的文本数据集上进行训练。以下是关键信息:

  • 网络文档:多样化的网络文本集合确保模型能够接触到广泛的语言风格、主题和词汇。主要是英语内容。
  • 代码:将模型暴露给代码有助于它学习编程语言的语法和模式,从而提高其生成代码或理解与代码相关的问题的能力。
  • 数学:数学文本训练有助于模型学习逻辑推理、符号表示以及解决数学查询。

Prompt 提示词格式

Gemma 的基础模型不限定特定的提示格式。如同其他基础模型,它们能够根据输入序列生成一个合理的续接内容,适用于零样本或少样本的推理任务。这些模型也为针对特定应用场景的微调提供了坚实的基础。指令优化版本则采用了一种极其简洁的对话结构:

  1. <start_of_turn>用户_ _
  2. 敲击<end_of_turn>
  3. <start_of_turn>模型​​​​
  4. 谁在那里< end_of_turn >
  5. < start_of_turn >用户
  6. Gemma <end_of_turn>
  7. <start_of_turn>模型_ _ _ _
  8. 杰玛是谁?<转弯结束>

要有效利用这一格式,必须严格按照上述结构进行对话。

探索未知领域

尽管技术报告提供了关于基础模型训练和评估过程的信息,但关于数据集构成和预处理的具体细节则较为欠缺。据悉,这些模型是基于来自互联网文档、编程代码和数学文本等多种数据源训练而成,经过严格筛选,以排除含有敏感信息和不适内容的数据。

对于 Gemma 的指令优化模型,关于微调数据集以及与顺序微调技术(SFT)和 基于人类反馈的强化学习(RLHF)相关的超参数设置,细节同样未公开。

演示

可以在 Hugging Chat 上体验与 Gemma 指令模型的互动对话!点击此处访问:https://huggingface.co/chat?model=google/gemma-7b-it

或者也可以在其他开源社区体验Gemma。

使用 Transformers

借助 Transformers 的 4.38 版本,你可以轻松地使用 Gemma 模型,并充分利用 Hugging Face 生态系统内的工具,包括:

  • 训练和推理脚本及示例
  • 安全文件格式(safetensors
  • 集成了诸如 bitsandbytes(4位量化)、PEFT(参数效率微调)和 Flash Attention 2 等工具
  • 辅助工具和帮助器,以便使用模型进行生成
  • 导出模型以便部署的机制

另外,Gemma 模型支持 torch.compile() 与 CUDA 图的结合使用,在推理时可实现约 4 倍的速度提升!

确保你使用的是最新版本的 transformers

pip install -U "transformers==4.38.1" --upgrade

以下代码片段展示了如何结合 transformers 使用 gemma-7b-it。运行此代码需大约 18 GB 的 RAM,适用于包括 3090 或 4090 在内的消费级 GPU。

  1. from transformers import AutoTokenizer, pipeline
  2. import torch
  3. model = "google/gemma-7b-it"
  4. tokenizer = AutoTokenizer.from_pretrained(model)
  5. pipeline = pipeline(
  6. "text-generation",
  7. model=model,
  8. model_kwargs={"torch_dtype": torch.bfloat16},
  9. device="cuda",
  10. )
  11. messages = [
  12. {"role": "user", "content": "Who are you? Please, answer in pirate-speak."},
  13. ]
  14. prompt = pipeline.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
  15. outputs = pipeline(
  16. prompt,
  17. max_new_tokens=256,
  18. do_sample=True,
  19. temperature=0.7,
  20. top_k=50,
  21. top_p=0.95
  22. )
  23. print(outputs[0]["generated_text"][len(prompt):])

Avast me, me hearty. I am a pirate of the high seas, ready to pillage and plunder. Prepare for a tale of adventure and booty!

  • 我们使用了 bfloat16 数据类型进行模型推理,该数据类型是所有评估中使用的参考精度。如果你的硬件支持,使用 float16 可能会更快。
  • 你还可以将模型自动量化,以 8 位或 4 位模式加载。以 4 位模式加载模型大约需要 9 GB 的内存,使其适用于多种消费级显卡,包括 Google Colab 上的所有 GPU。以下是以 4 位加载生成 pipeline 的方法:
  1. pipeline = pipeline(
  2. "text-generation",
  3. model=model,
  4. model_kwargs={
  5. "torch_dtype": torch.float16,
  6. "quantization_config": {"load_in_4bit": True}
  7. },
  8. )

更多关于如何使用 transformers 和模型的详情,请参阅 模型卡片

JAX 权重

所有 Gemma 模型变种都可以用 PyTorch 或 JAX / Flax 使用。若要加载 Flax 权重,你需要按照以下方式使用仓库中的 flax 修订版本:

  1. import jax.numpy as jnp
  2. from transformers import AutoTokenizer, FlaxGemmaForCausalLM
  3. model_id = "google/gemma-2b"
  4. tokenizer = AutoTokenizer.from_pretrained(model_id)
  5. tokenizer.padding_side = "left"
  6. model, params = FlaxGemmaForCausalLM.from_pretrained(
  7. model_id,
  8. dtype=jnp.bfloat16,
  9. revision="flax",
  10. _do_init=False,
  11. )
  12. inputs = tokenizer("Valencia and Málaga are", return_tensors="np", padding=True)
  13. output = model.generate(inputs, params=params, max_new_tokens=20, do_sample=False)
  14. output_text = tokenizer.batch_decode(output.sequences, skip_special_tokens=True)

['Valencia and Málaga are two of the most popular tourist destinations in Spain. Both cities boast a rich history, vibrant culture,']

如果你在 TPU 或多个 GPU 设备上运行,可以利用 jit 和 pmap 来编译和并行执行推理任务。

与 Google Cloud 集成

你可以通过 Vertex AI 或 Google Kubernetes Engine (GKE) 在 Google Cloud 上部署和训练 Gemma,利用 文本生成推理 和 Transformers 实现。

要从 Hugging Face 部署 Gemma 模型,请访问模型页面并点击部署 -> Google Cloud。这将引导你进入 Google Cloud Console,在那里你可以通过 Vertex AI 或 GKE 一键部署 Gemma。文本生成推理为 Gemma 在 Google Cloud 上的部署提供支持,这是我们与 Google Cloud 合作伙伴关系的初步成果

你也可以通过 Vertex AI Model Garden 直接访问 Gemma。

要在 Hugging Face 上微调 Gemma 模型,请访问 模型页面 并点击 训练 -> Google Cloud。这将引导你进入 Google Cloud Console,在那里你可以在 Vertex AI 或 GKE 上访问笔记本,以在这些平台上微调 Gemma。

这些集成是我们 与 Google 合作伙伴关系成果的一部分,未来还会有更多精彩内容发布,敬请期待!

与推理端点集成

你可以在 Hugging Face 的 推理端点 上部署 Gemma,该端点使用文本生成推理作为后端。文本生成推理 是由 Hugging Face 开发的可用于生产环境的推理容器,旨在简化大型语言模型的部署。它支持连续批处理、令牌流式传输、多 GPU 张量并行加速推理,并提供生产就绪的日志记录和跟踪功能。

要部署 Gemma 模型,请访问 HF Hub 模型页面 并点击 部署 -> 推理端点。有关 使用 Hugging Face 推理端点部署 LLM的更多信息,请参阅我们之前的博客文章。推理端点通过文本生成推理支持 消息 API,使你可以通过简单地更换 URL 从其他封闭模型切换到开放模型。

  1. from openai import OpenAI
  2. # initialize the client but point it to TGI
  3. client = OpenAI(
  4. base_url="<ENDPOINT_URL>" + "/v1/", # replace with your endpoint url
  5. api_key="<HF_API_TOKEN>", # replace with your token
  6. )
  7. chat_completion = client.chat.completions.create(
  8. model="tgi",
  9. messages=[
  10. {"role": "user", "content": "Why is open-source software important?"},
  11. ],
  12. stream=True,
  13. max_tokens=500
  14. )
  15. # iterate and print stream
  16. for message in chat_completion:
  17. print(message.choices[0].delta.content, end="")

使用
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/300686

推荐阅读