likes
comments
collection
share

IBM开源Granite Code模型,多尺寸可选,支持多种代码任务,性能媲美 CodeLlama

作者站长头像
站长
· 阅读数 29

前言

近年来,大型语言模型(LLM)在代码领域展现出惊人的潜力,为软件开发流程带来了革命性的改变。代码 LLM 不仅能够生成高质量代码,还能帮助程序员修复错误、解释代码、编写文档等等,极大地提高了软件开发效率。然而,现有的代码 LLM 存在着一些局限性,例如模型体积过大,部署成本高昂,以及对特定代码任务的性能表现不佳等等。为了解决这些问题,IBM 研究院推出了 Granite Code 模型家族,旨在为企业软件开发提供一个功能强大、灵活易用的代码 LLM 工具。

IBM开源Granite Code模型,多尺寸可选,支持多种代码任务,性能媲美 CodeLlama

技术特点

Granite Code 模型家族包含多个尺寸的模型,参数量级从 30 亿到 340 亿不等,能够满足不同场景的应用需求。模型架构基于 Transformer 解码器,并采用了多阶段训练策略,使其在代码理解和生成能力方面展现出卓越的性能。

IBM开源Granite Code模型,多尺寸可选,支持多种代码任务,性能媲美 CodeLlama

116 种语言支持,覆盖主流编程语言

Granite Code 模型在 116 种编程语言上进行了训练,涵盖了几乎所有主流编程语言,包括 Python、JavaScript、Java、Go、C++、Rust 等等。这种广泛的语言支持,能够帮助开发者在不同编程语言之间进行代码转换和理解,并提高代码开发的效率。

多阶段训练策略,提升模型的综合能力

Granite Code 模型采用了双阶段训练策略,第一阶段仅使用代码数据进行训练,第二阶段则引入高质量的自然语言数据,进一步提升模型的推理能力。模型在训练过程中使用了因果语言建模目标和 Fill-In-the-Middle (FIM) 目标,使其能够更好地处理代码补全和代码插值任务。

多尺寸模型,满足不同场景的应用需求

Granite Code 模型家族包含 4 个不同尺寸的模型,分别是 3B、8B、20B 和 34B。用户可以根据自己的需求选择合适的模型。例如,对于资源受限的端侧设备,可以使用 3B 模型,而对于需要处理复杂代码任务的应用,则可以选择 34B 模型。

IBM开源Granite Code模型,多尺寸可选,支持多种代码任务,性能媲美 CodeLlama

优化训练细节,提升模型的性能和效率

为了提升模型的性能和效率,Granite Code 模型在训练过程中采用了多种优化策略,包括:

  • FlashAttention 2: 加速注意力机制的计算速度。
  • 混合精度训练: 使用 BF16 精度进行训练,减少内存消耗。
  • 序列 并行 : 降低大型上下文长度训练过程中的内存消耗。
  • 深度扩展: 通过深度扩展技术,将 20B 模型的层数增加到 88 层,提升模型的性能。

性能表现

Granite Code 模型在多个基准测试中展现出了优异的性能,并与 CodeLlama 等最新模型在代码生成、修复、解释等任务中表现相当。

IBM开源Granite Code模型,多尺寸可选,支持多种代码任务,性能媲美 CodeLlama

IBM开源Granite Code模型,多尺寸可选,支持多种代码任务,性能媲美 CodeLlama

代码生成:性能领先,多语言支持

在 HumanEvalSynthesize、MultiPL-E 和 MBPP(+) 等代码生成任务基准测试中,Granite Code 模型在不同尺寸下均展现出了强大的性能,其在 6 种语言的 HumanEvalSynthesize 测试中,平均准确率超过了 CodeLlama,其中 3B 模型的性能甚至超越了 CodeLlama-34B-Instruct。在 MultiPL-E 测试中,8B 模型在 18 种编程语言中取得了最佳表现,而 34B 模型也超越了 CodeLlama-34B,展现了其强大的多语言代码生成能力。

代码修复和解释:性能优异,应用场景广泛

在 HumanEvalFix 和 HumanEvalExplain 等代码修复和解释任务中,Granite Code 模型同样表现出色。 8B 模型在代码修复任务中接近 CodeLlama-70B,而在代码解释任务中则超过了 CodeLlama-34B。 在实际应用中,Granite Code 模型能够有效地识别和修复代码中的错误,并给出清晰的代码解释,帮助开发者更深入地理解代码逻辑。

代码编辑和翻译:灵活高效,功能强大

在 CanItEdit 和 CodeLingua 等代码编辑和翻译任务中,Granite Code 模型展现了灵活高效的性能。在 CanItEdit 测试中,8B 模型的性能优于 CodeGemma 和 CodeLlama,表明其能够更准确地理解用户的意图,并对代码进行精准的修改。在 CodeLingua 测试中,Granite Code 模型的代码翻译能力也与 CodeGemma 模型相当,并且能够更有效地处理代码翻译中的复杂情况。

代码推理和执行:性能提升,应用场景拓展

在 CRUXEval 和 Berkeley Function-Calling Leaderboard (BFCL) 等代码推理和执行任务中,Granite Code 模型展现了更强的推理能力。在 CRUXEval 测试中,Granite Code 模型在不同尺寸下均取得了领先的性能。 在 BFCL 测试中,8B 模型的性能超越了 CodeLlama-7B,展现了其在调用函数和工具方面的优势。

模型 鲁棒性 测试:表现稳定,适应性强

在 ReCode 模型鲁棒性测试中,Granite Code 模型在不同尺寸下表现稳定,其在代码生成任务中展现了较强的鲁棒性,即使在面对各种扰动的情况下,也能保持良好的性能表现。

模型的优势

Granite Code 模型拥有以下优势:

  • 全能型: 能够处理多种代码任务,包括代码生成、修复、解释、编辑、翻译、推理、执行等等,能够为开发者提供全面的代码智能支持。
  • 企业级: 模型训练数据源于 IBM 自有数据,并遵循 IBM AI 伦理原则和法律团队的指导,确保模型的可靠性和安全性,适合企业级应用。
  • 开源: 所有 Granite Code 模型均采用 Apache 2.0 许可证,支持商业使用,为开发者提供了更多的灵活性和选择。

IBM开源Granite Code模型,多尺寸可选,支持多种代码任务,性能媲美 CodeLlama

应用场景

Granite Code 模型在多个领域具有广泛的应用潜力,例如:

  • 代码辅助工具: 可以帮助开发者快速生成代码、修复错误、解释代码等。
  • 代码自动补全: 可以为开发者提供智能代码补全功能,提升代码编写效率。
  • 代码安全检测: 可以帮助开发者识别代码中的安全漏洞和潜在问题。
  • 代码重构: 可以帮助开发者将旧代码进行重构,提高代码质量。
  • 代码翻译: 可以用于将一种编程语言的代码翻译成另一种语言。

总结

Granite Code 模型家族的推出,标志着代码 LLM 技术迈上了新的台阶,它为开发者提供了功能强大、灵活易用的代码智能工具。随着技术的不断进步,相信 Granite Code 模型将会在更多领域发挥重要作用,推动软件开发的智能化进程。

模型下载

Huggingface模型下载

huggingface.co/ibm-granite

AI快站模型免费加速下载

aifasthub.com/models/ibm-…

转载自:https://juejin.cn/post/7374651496619573282
评论
请登录