当前位置: 首页 > news >正文

IBM Granite 3.0:一款开源,SOTA 企业模型

今天,我们非常高兴地发布了 IBM Granite 3.0,这是 Granite 系列大型语言模型(LLM)和辅助工具的第三代产品。 新的 IBM Granite 3.0 模型体现了我们对功能强大与实用性之间平衡的关注,相对于模型大小,它提供了最先进的性能,同时最大限度地提高了企业用例的安全性、速度和成本效益。

在这里插入图片描述

Granite 3.0 系列中最重要的是一款全新的、经过指令调整的、仅用于密集解码器的 LLM:Granite 3.0 8B Instruct。 Granite 3.0 8B Instruct 采用新颖的两阶段方法,对 12 种不同的自然语言和 116 种不同的编程语言中超过 12 万亿个经过仔细审核的词块数据进行训练,是开发人员友好型的企业级模型,可作为复杂工作流和基于工具的用例的主要构建模块。 Granite 3.0 8B Instruct 在学术基准上与领先的同类开放模型不相上下,而在企业任务和安全性基准上则优于同类产品。

对像 Granite 这样的小型适用模型进行微调,能让企业以极低的成本追求前沿模型的性能。 通过 InstructLab(一种利用系统生成的合成数据和分阶段培训协议增强模型知识和技能的协作式开源方法)根据企业的独特需求定制 Granite 模型,可以进一步降低成本和缩短时间。

为了与 IBM 一贯对开源的坚定承诺保持一致,所有 Granite 模型都是在 Apache 2.0 许可下发布的,一反近期在特异专有许可协议下发布封闭模型或开放权重模型的趋势。 与开放模型的行业趋势不同,IBM 在 Granite 3.0 技术文件中详细披露了训练数据集和方法,重申 IBM 致力于建立人工智能产品的透明度、安全性和信任度。

IBM’s Granite 3.0 家族成员包括:

  • General Purpose/Language: Granite 3.0 8B Instruct, Granite 3.0 2B Instruct, Granite 3.0 8B Base, Granite 3.0 2B Base
  • Guardrails & Safety: Granite Guardian 3.0 8B, Granite Guardian 3.0 2B
  • Mixture-of-Experts: Granite 3.0 3B-A800M Instruct, Granite 3.0 1B-A400M Instruct, Granite 3.0 3B-A800M Base, Granite 3.0 1B-A400M Base

强大的性能、安全性和保密性

前几代 Granite 模型优先考虑专业用例,在金融、法律、代码和学术等各行各业的特定领域任务中表现出色。 除了在这些领域提供更高的效能外,IBM Granite 3.0 模型在学术和企业基准测试中的总体性能与领先的开放式 LLM 不相上下,在某些情况下甚至超过了它们。

在 Hugging Face 的 OpenLLM Leaderboard v2 中的学术基准测试中,Granite 3.0 8B Instruct 可与 Meta 和 Mistral AI 的同类模型相媲美。 IBM 模型评估方法的代码已在随附的技术论文和 Granite GitHub 存储库中公开。

在这里插入图片描述
IBM 为企业用例优化 Granite 3.0 8B Instruct 所做的努力也是显而易见的。 例如,Granite 3.0 8B Instruct 在 RAGBench 评估中处于领先地位,RAGBench 由 100,000 个检索增强生成(RAG)任务组成,这些任务来自用户手册等行业语料库。 在 11 个 RAGBench 数据集中对模型进行了比较,对忠实性(衡量输出在多大程度上得到了检索文档的支持)和正确性(衡量模型的输出在多大程度上与给定输入的事实内容和基本事实的语义相匹配)等质量进行了评估。

在这里插入图片描述
花岗岩 3.0 模型也同样经过训练,在网络安全等关键企业领域表现出色: Granite 3.0 8B Instruct 在 IBM 专有的网络安全基准和著名的公共安全基准方面都表现出色。

在这里插入图片描述
开发人员可以利用全新的 Granite 3.0 8B Instruct 模型来处理经典的自然语言用例(包括文本生成、分类、摘要、实体提取和客户服务聊天机器人)、编程语言用例(如代码生成、代码解释和代码编辑)以及需要工具调用的代理用例。 在 6 个不同的工具调用基准(包括伯克利函数调用排行榜评估集)中进行评估时,Granite 3.0 8B Instruct 的表现优于同重量级的领先开放模型。

在这里插入图片描述

信任、安全、透明和创新的培训技术

IBM 相信负责任的人工智能是一种竞争优势,尤其是在企业环境中。 IBM Granite 3.0 的领先性能与模型安全性并重。

Granite 3.0 8B Instruct 在 AttaQ 基准测试中表现出业界领先的鲁棒性,该基准测试用于衡量 LLM 在对抗性提示面前的脆弱性,目的是激怒模型生成有害、不恰当或不理想的提示。

在这里插入图片描述
整个 Granite 系列模型都是在精心策划的企业数据集上进行训练的,并在考虑到治理、风险、隐私和减少偏差等关键问题的基础上过滤了不良内容,详情请参见《IBM Granite 负责任使用指南》(Responsible Use Guide for IBM Granite)。 与业界日益隐匿训练数据的趋势相反,IBM 继续公开 Granite 的预训练数据集。 IBM 为第三方针对 IBM 开发的模型提出的知识产权索赔提供无上限的赔偿,这充分表明了 IBM 对 Granite 系列产品的充分信心。

在模型构建过程中,团队对每个模型大小的数据配方进行了大量实验。在不同的数据混合物上进行了数千次实验,同时还进行了数百次 1-2B 的小型参数探索,以便用尽可能高质量的数据完善最终的数据配方。

IBM 研究人员最近在预训练 LLM 的最佳学习率方面取得了突破性进展,使得这种程度的实验成为可能。 学习率决定了反向传播后模型参数更新的幅度:精心选择的学习率可确保更快地收敛到最佳模型权重(从而提高训练的成本效益),同时避免过度拟合。 传统的学习率调度器需要事先定义训练步数,灵活性差,这对大规模模型来说是个问题,因为很难预测有多少训练标记和更新步数是理想的。 IBM Power 调度器根据标记数和批量大小调整学习率,其依据是一个幂律方程,该方程模拟了训练变量和超参数之间的复杂关系。

在训练 Granite 3.0 语言模型的过程中,团队利用了数据准备工具包(Data Prep Kit),这是一个由 IBM 开发并开源的框架和工具包,用于形成数据处理管道,对非结构化数据进行端到端处理。 具体来说,数据准备工具包用于将数据处理模块从单台笔记本电脑扩展到大型集群,并提供线程跟踪、元数据日志和检查点功能,以便从故障中恢复。

Granite Guardian:行业领先的安全护栏

第三代 IBM Granite 还引入了全新的基于 LLM 的护栏模型系列,提供了当今市场上最全面的风险和危害检测功能。 Granite Guardian 3.0 8B 和 Granite Guardian 3.0 2B 可用于监控和管理任何 LLM 的输入和输出,无论是开放的还是专有的。 在广泛的测试中,Granite Guardian 模型的性能优于 Meta LlamaGuard 的所有三代产品,同时还提供了后者所不具备的关键幻觉检查功能。

新的花岗岩卫士模型是各自相应大小的基础预训练花岗岩模型的变体,经过微调后可对模型的输入和输出进行评估和分类,将其归入各类风险和危害维度,包括越狱、偏见、暴力、亵渎、性内容和不道德行为。 在 IBM 测试中,IBM Granite Guardian 3.0 8B 在常见公共风险检测基准的平均 F1 分数上比 LLamaGuard 3 8B 提高了 4 分。

在这里插入图片描述
Granite Guardian 3.0 模型还涵盖了一系列 RAG 特定问题。 IBM 的测试表明,IBM Granite Guardian 3.0 8B 与目前最先进的 RAG 事实核查模型 Bespoke-Minicheck-7B 相比,在检测 RAG 幻觉的基准上具有很强的竞争力。

在这里插入图片描述

IBM Granite 的首款 MoE 模型

Granite 3.0 3B-A800M 和 Granite 3.0 1B-A400M 以最小的性能折衷实现了极高的推理效率。 新的 Granite MoE 模型在超过 10 万亿代币的数据基础上进行了训练,非常适合部署在设备上应用、CPU 服务器和需要极低延迟的场合。

它们的模型名称既指总参数数(分别为 3B 和 1B),也指活动参数数:3B MoE 在推理时使用 800M 个参数,而较小的 1B 在推理时使用 400M 个参数。 Granite 3.0 3B-A800M 包括 40 个专家网络,而 Granite 3.0 1B-A400M 包括 32 个专家网络。

Granite 3.0 MoE 模型有基础预训练型和指令调整型两种。 Granite 3.0 3B-A800M Instruct 现可通过 Hugging Face、Ollama 和 NVIDIA 下载。 较小的 Granite 3.0 1B-A400M 可通过 Hugging Face 和 Ollama 下载。 花岗岩 MoE 基础预训练模型目前仅在 Hugging Face 提供。

Demo

ibm-granite/granite-3.0-8b-instruct

支持的语言 英语、德语、西班牙语、法语、日语、葡萄牙语、阿拉伯语、捷克语、意大利语、韩语、荷兰语和中文。 除这 12 种语言外,用户还可对 Granite 3.0 模型的语言进行微调。

预期用途: 该模型旨在响应一般指令,可用于构建多个领域(包括商业应用)的人工智能助手。

Capabilities

  • Summarization
  • Text classification
  • Text extraction
  • Question-answering
  • Retrieval Augmented Generation (RAG)
  • Code related tasks
  • Function-calling tasks
  • Multilingual dialog use cases
pip install torch torchvision torchaudio
pip install accelerate
pip install transformers
import torch
from transformers import AutoModelForCausalLM, AutoTokenizerdevice = "auto"
model_path = "ibm-granite/granite-3.0-8b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_path)
# drop device_map if running on CPU
model = AutoModelForCausalLM.from_pretrained(model_path, device_map=device)
model.eval()
# change input text as desired
chat = [{ "role": "user", "content": "Please list one IBM Research laboratory located in the United States. You should only output its name and location." },
]
chat = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
# tokenize the text
input_tokens = tokenizer(chat, return_tensors="pt").to(device)
# generate output tokens
output = model.generate(**input_tokens, max_new_tokens=100)
# decode output tokens into text
output = tokenizer.batch_decode(output)
# print output
print(output)

模型架构: Granite-3.0-8B-Instruct 基于纯解码器密集变压器架构。 该架构的核心组件包括 GQA 和 RoPE、带有 SwiGLU 的 MLP、RMSNorm 以及共享输入/输出嵌入。

Model2B Dense8B Dense1B MoE3B MoE
Embedding size2048409610241536
Number of layers40402432
Attention head size641286464
Number of attention heads32321624
Number of KV heads8888
MLP hidden size819212800512512
MLP activationSwiGLUSwiGLUSwiGLUSwiGLU
Number of Experts3240
MoE TopK88
Initialization std0.10.10.10.1
Sequence Length4096409640964096
Position EmbeddingRoPERoPERoPERoPE
# Parameters2.5B8.1B1.3B3.3B
# Active Parameters2.5B8.1B400M800M
# Training tokens12T12T10T10T

http://www.mrgr.cn/news/57388.html

相关文章:

  • 侯捷 | C++ | 内存管理 | 学习笔记(四):第四章节 loki::allocator
  • Would you like conda to send this report to the core maintainers? [y/N]:
  • C 语言入门教程
  • 关于武汉芯景科技有限公司的限流开关芯片XJ6241开发指南(兼容LTC4411)
  • Linux:在xshell中演示在没有图形化界面的情况下如何使用gdb工具对代码进行调试
  • 总结拓展十四:批次管理(4)
  • python画图|坐标轴显隐设置
  • 【开源鸿蒙】OpenHarmony 5.0轻量系统最小开发环境搭建
  • AI自主学习:未来的智能系统
  • 近似推断 - 最大后验推断和稀疏编码篇
  • AI学习指南深度学习篇-对比学习的变种
  • Python | Leetcode Python题解之第503题下一个更大元素II
  • SELinux详解
  • Golang | Leetcode Golang题解之第504题七进制数
  • 一文彻底搞透Redis的数据类型及具体的应用场景
  • 重温Java基础语法随笔录
  • 【QT】常用控件(四)
  • 12_Linux进程管理命令详解
  • 使用Dask在多块AMD GPU上加速XGBoost
  • 深度学习(五):语音处理领域的创新引擎(5/10)
  • 大模型的特点、重要概念及工作方式详解
  • Leetcode 875 KoKo Eats banana
  • 问:数据库,脏读、幻读、不可重复读~
  • 分布式系统集群中节点管理
  • C++ -stack、queue
  • Golang | Leetcode Golang题解之第503题下一个更大元素II