首页 > Ai资讯 > Ai日报 > Google扩充Gemma开源家族 推出CodeGemma 和 RecurrentGemma模型

Google扩充Gemma开源家族 推出CodeGemma 和 RecurrentGemma模型

发布时间:2024年05月18日

Google发布Gemma 系列的新成员,这是一系列针对开发者和研究者设计的轻量级、最先进的开放模型,建立在创造 Gemini 模型相同的研究和技术基础之上。

新推出的模型包括 CodeGemma 和 RecurrentGemma,旨在为机器学习(ML)开发者提供更多负责任创新的可能性。

  • CodeGemma:专注于代码完成和代码生成任务,以及遵循指令的交互。CodeGemma 提供了 7B 预训练的变体,专门用于代码完成和代码生成任务,7B 指令调优变体用于代码聊天和遵循指令,以及一个 2B 预训练的快速代码完成变体,适用于本地计算机。它的主要优点包括智能的代码完成和生成、提高准确性、多语言能力和简化的工作流程。
  • RecurrentGemma:一个为研究实验优化的高效架构,利用循环神经网络和局部注意力来提高内存效率。尽管与 Gemma 2B 模型有类似的基准分数性能,RecurrentGemma 的独特架构带来了几个优点,包括降低内存使用、提高吞吐量和推动研究创新。

CodeGemma

CodeGemma,包括7B预训练(PT)和指令调优(IT)变体,以及专为延迟敏感环境设计的2B状态最先进的代码完成模型。

模型架构: CodeGemma模型基于Google DeepMind的Gemma模型家族,继承了其架构和预训练方法。CodeGemma模型通过在超过5000亿个主要由代码组成的token上进行进一步训练,加深了对代码和自然语言处理的理解和生成能力。这些模型使用与Gemma相同的架构,但针对代码生成和理解进行了优化和调整。

  • 预训练(PT)与指令调优(IT):**CodeGemma提供了预训练和指令调优变体,7B模型涵盖了广泛的代码和自然语言任务,2B模型则专注于代码填空和开放式生成,适用于延迟敏感的场景。
  • 多文件打包:为了提高模型在实际代码项目中的适用性,CodeGemma采用了多文件打包方法,通过构建文件依赖图和采用单元测试基于词汇的打包策略,使模型能够更好地理解和生成涉及多个文件的代码项目。
  • 填空中间(FIM)任务训练:CodeGemma模型采用了基于填空中间(FIM)任务的训练方法,该方法通过随机隐藏代码片段中的部分内容来训练模型预测缺失部分,从而提高模型的代码补全和推理能力。

CodeGemma 与其他类似模型在单行和多行代码完成任务方面的性能比较

主要能力:

  • 代码生成与补全:CodeGemma在代码生成和补全方面实现了最先进的性能,能够高效处理多种编程语言的代码填空、功能补全、文档字符串生成等任务。CodeGemma 能够完成代码行、函数甚至生成整个代码块,不论是本地工作还是利用云资源。支持 Python、JavaScript、Java 和其他流行语言。
  • 数学和逻辑推理:通过在包括数学问题集在内的多样化数据集上进行训练,CodeGemma模型具备了出色的数学和逻辑推理能力,能够解决复杂的数学问题和进行基于逻辑的代码推理。
  • 自然语言理解:即使主要针对代码任务,CodeGemma模型仍保留了强大的自然语言理解能力,能够处理复杂的自然语言查询和指令,有效地将自然语言描述转化为代码。
  • 实用性与部署考虑:CodeGemma模型考虑了实际使用场景和部署需求,特别是2B模型在保证代码生成质量的同时,优化了推理速度,适合在集成开发环境(IDEs)等延迟敏感的环境中使用。

作用: CodeGemma 主要用于帮助开发者和企业通过自动化编码任务来提高编程效率。它的代码完成和生成能力可以显著减少编码过程中的手工工作量,加快开发速度,同时还能帮助减少错误和提高代码质量。

技术报告:https://storage.googleapis.com/deepmind-media/gemma/codegemma_report.pdf

快速入门:https://ai.google.dev/gemma/docs/codegemma/keras_quickstart

RecurrentGemma

功能特点:

  • 降低内存使用: RecurrentGemma 通过使用循环神经网络和局部注意力机制,优化了内存效率,允许在内存有限的设备上生成更长的样本。
  • 提高吞吐量: 由于内存使用的减少,RecurrentGemma 能够以更高的批处理大小执行推理,生成每秒更多的令牌,尤其是在生成长序列时。
  • 推动研究创新: RecurrentGemma 作为一个非 Transformer 模型,展示了高性能的达成,凸显了深度学习研究的进步。

RecurrentGemma 不受序列长度的影响保持采样速度,而 Gemma 等基于变换器的模型则会随着序列变长而变慢

作用: RecurrentGemma 主要针对研究人员,提供一个高效、快速推理的模型架构,特别适合于需要大规模生成长文本序列的研究实验。它的独特架构使得在资源受限的环境下进行大规模文本生成成为可能,同时也为深度学习领域的研究提供了新的方向和灵感。

技术报告:https://arxiv.org/abs/2402.19427

notebook

共有兼容性

CodeGemma 和 RecurrentGemma 都是使用 JAX 构建的,且与 JAX、PyTorch、Hugging Face Transformers 和 Gemma.cpp 兼容。这一兼容性允许这些模型在不同的软件环境中进行本地实验和成本效益高的部署,支持多样化的硬件平台,包括笔记本电脑、台式机、NVIDIA GPU 和 Google Cloud TPU,为开发者提供了广泛的应用场景和部署选项。

CodeGemma 的额外兼容性

  • 更广泛的框架支持:除了上述共有兼容性外,CodeGemma 还兼容 Keras、NVIDIA NeMo、TensorRT-LLM、Optimum-NVIDIA、MediaPipe,并且在 Vertex AI 上可用。这扩展了 CodeGemma 在不同开发环境下的应用可能性,包括更高效的模型部署和优化,以及在多种平台上实现高级的机器学习和深度学习任务。

RecurrentGemma 的即将到来的支持

  • 即将全面支持:RecurrentGemma 预计将在未来几周内支持所有上述产品,这将为研究人员和开发者提供更多的灵活性和选择,使其能够利用 RecurrentGemma 在更广泛的技术栈和硬件环境中进行创新和实验。

Gemma1.1

Google同时还更新了其开源Gemma模型,发布了Gemma1.1。

新模型在多个方面都有所提升,包括更好的质量、更精确的指令遵循、事实核查、编程能力和逻辑推理,尤其是“7B”模型在这些方面的表现更加出色。

这些改进还包括修复了一个使得模型有时无法在对话中途改变主题时给出回答的bug,以及减少了回答开头使用“Sure,”的频率。尽管使用的训练数据与先前版本相同,但是他们更换了使用的强化学习(RL)算法,希望能够在未来提供更多细节。

为了避免模型回答过于冗长,即使这可能会影响到基准测试的性能,他们还是在训练中对模型施加了冗长惩罚。Gemma模型有倾向于生成列表形式的输出,但如果用户更喜欢段落形式的回答,可以通过指定的提示来引导模型。

详细内容:https://www.kaggle.com/models/google/gemma

模型下载:

https://huggingface.co/google/gemma-1.1-2b-it

https://huggingface.co/google/gemma-1.1-7b-it

如果你想要了解关于智能工具类的内容,可以查看 智汇宝库,这是一个提供智能工具的网站。
在这你可以找到各种智能工具的相关信息,了解智能工具的用法以及最新动态。