立即下载 DOCA,开启高性能AI 网络之旅,实现“一站式” 编程
AI 平台/部署

借助 iGenius 和 NVIDIA DGX 云,继续为主权 AI 和受监管行业预训练先进的 LLM

近年来,大语言模型(LLMs)在推理、代码生成、机器翻译和摘要等领域取得了非凡的进步。然而,尽管基础模型具有先进的功能,但在涉及特定领域的专业知识(例如金融或医疗健康)或捕捉英语以外的文化和语言细微差别时,它们存在局限性。

通过使用持续预训练 (CPT)、指令微调和检索增强型生成 (RAG) 进行进一步开发,可以克服这些限制。这需要高质量的特定领域的数据集、强大的 AI 平台 (软件和硬件堆栈) 以及先进的 AI 专业知识。

iGenius 

iGenius 是一家意大利技术公司,专门为金融服务和公共管理等高度监管行业的企业提供人工智能服务。iGenius 在欧洲和美国之间开展工作,致力于让 AI 为人们和企业服务。该公司成立于 2016 年,其使命是实现数据人性化和业务知识普及。

iGenius 是 NVIDIA Inception 合作伙伴 ,其目标是在紧张的时间内开发先进的基础 LLM,但在访问大规模 GPU 集群 (数千个 GPU) 和确保对高度可扩展的训练框架的支持方面面临挑战。在此次合作中,iGenius 开发了 Colosseum 355B LLM ,专为高度监管的环境而设计和开发,可让企业确信模型输出的准确性和安全性,并且不会泄露其任何信息或 IP。

借助 NVIDIA DGX Cloud ,客户可以利用企业级软件和 NVIDIA AI 专业知识访问专为高性能 AI 训练而设计的大型集群。因此, iGenius 选择与 NVIDIA 合作 ,加速 Colosseum 355B 的 LLM 开发。

在不到一周的时间里,iGenius 就能访问专为 AI 工作负载 (拥有超过 3K 个 GPU) 而调整的大型专用基础架构,并且在两个月内,iGenius 完成了其大型 LLM (Colosseum 355B) 的持续预训练。这项工作包括:

  • 增加参数数量
  • 增加上下文长度
  • 在 FP8 中实现 CPT
  • 根据特定领域的专业知识调整模型的功能

Colosseum 355B 的功能

作为代理 AI 环境中的一个关键用例,iGenius 开发了 LLM,为其商业智能代理 Crystal ( 一种主权 AI 解决方案 ) 提供支持。通过构建端到端堆栈,iGenius 无需依赖集中式模型即可提供安全体验:

  • 数据库集成
  • AI 辅助配置
  • LLM 助力的工具使用、查询执行和生成编排
  • 专用部署基础设施

这种方法使 Crystal 能够作为一个独立的 AI 操作系统发挥作用,使用编排器有效管理任务并集成专用工具。通过使用自己的基础 LLM,iGenius 可确保更好地控制数据隐私、自定义和性能,并定制 AI,以满足高度监管环境中的特定业务需求。

DGX 云环境 

提升 LLM 推理能力需要强大的分布式硬件和软件解决方案,其中加速计算、网络、存储和库必须无缝协作。系统中的任何瓶颈都会显著减慢甚至停止整个训练过程。

为 Colosseum 构建高性能 AI 训练基础设施需要大量的技术专业知识,并且需要时间来启动、设置和验证系统。

NVIDIA DGX SuperPOD 通过提供由 NVIDIA 设计、构建和验证的全面优化的解决方案 ,在将即用型系统交给客户之前,降低了风险和复杂性。

但是,对于需要立即访问 AI 优化基础架构的客户,NVIDIA DGX Cloud 可在 NVIDIA 主要云服务提供商合作伙伴 (CSP) 环境中访问此类环境。通过与 Microsoft Azure、Google Cloud Platform (GCP)、OCI 和 AWS 等 CSP 合作伙伴密切合作,NVIDIA 能够构建以 AI 为中心的基础设施的大型连续块,这些基础设施已针对 NVIDIA AI Enterprise 软件套件进行了全面测试和验证。这种紧密协作使客户能够立即在大型集群上开始大规模训练。

最后,DGX Cloud 服务还包括获取 NVIDIA AI 专业知识,从而加快首次训练的运行速度,并有助于解决任何软件或硬件障碍。在 iGenius 项目期间,他们建立了从数据准备、LLM 训练和对齐到模型验证和推理优化的多个工作流。

在注册 NVIDIA DGX Cloud 后的一周内,iGenius 便获得了对搭载超过 3K NVIDIA H100 GPUs 的环境的私人访问权限,并且这些环境均可使用以下资源:

  • 基于 RDMA 的高带宽专用网络,可促进 Colosseum 355B 的模型训练通信
  • 500 TB 基于 Lustre 的高性能存储
  • 访问最新的 NVIDIA NeMo Framework 容器

iGenius 数据集亮点 

在 CPT 背景下,必须保留大部分原始训练数据集,以缓解数据中的重大分布偏移,而这些偏移可能会导致训练不稳定或加剧灾难性的遗忘等问题。

鉴于 LLM 的训练数据集主要由 Web 文档和开源资源库 (例如 ArXiv、PubMed Central、Github 以及类似来源) 组成,iGenius 选择构建一个 CPT 数据集,以保留可与之相比的编码和多语言令牌分布,确保与原始数据集的构成保持一致。

该模型的多语种功能可扩展到 50 多种语言,并特别侧重于意大利语、德语、法语、西班牙语、葡萄牙语、俄语、罗马尼亚语和波兰语等欧洲语言。训练数据集还包含非欧洲语言 (包括日语、中文、阿拉伯语、越南语和韩语) 的可靠表示。

Colosseum 355B 整合了金融和推理等领域的专业来源,从特定领域的高质量数据集中提取,以提高其在这些领域的性能。

总体而言,CPT 数据集由包含约 2.5 T 个令牌的大量集合组成,如果考虑到基数数量为 8 T,则总计可生成 10 T 个令牌。

相比之下,用于监督式微调(SFT)的数据集由约 1M 个样本组成,这些样本经过精心挑选,符合特定的下游任务和目标,例如问题解决、事实召回、分析推理和编码问题。

LLM 继续进行预训练 

改进像 Colosseum 355B 这样已经非常先进的大型语言模型绝非易事,尤其是在您使用包含数千亿参数的模型时!

新知识、更好的推理、甚至扩展整体模型大小等改进都需要更改当前模型的每个参数。采用已建立的模型并将其改进到这种程度被称为持续预训练。在这种规模下,这是一项只有精通模型构建器才能完成的任务。

iGenius 采用了 NVIDIA NeMo 框架 ,并利用其最新的训练和优化技术。NeMo 框架通过简单的 YAML 配置文件公开模型特定的超参数和训练超参数。

高效训练 Colosseum 355B 的过程包括实验性探索,以找到最佳训练配置。模型 FLOP/s 利用率 (MFU) 指标量化了在训练期间使用 GPUs 的效率,这会影响整体训练时间。MFU 是 iGenius 致力于改进的关键指标。

iGenius 团队从 4K 上下文长度的先进基础模型及其默认训练配置开始,致力于优化训练配置,以实现出色的 MFU 值。此配置最初将模型分布在 12 个节点 (96 个 H100 GPU) 中,并在 BF16 中实现了 25% 的 MFU。

The diagram shows the MFU results achieved and training parameters modified for the goals of each phase. From the baseline, scale to 2880 GPUs and identify optimal parameters. After the first phase, increase the sequence length and number of parameters. After the second phase, enable FP8.
图 1、iGenius Colosseum 355B LLM 的训练阶段

预训练的第一阶段侧重于确定优化训练参数,以增强 MFU。他们通过几项实验实现了这一点,这些实验涉及短期训练,目的是探索每个配置对训练时长的影响。

其中一些关键实验包括将模型分布缩减到最小节点数,从而使 iGenius 能够更大限度地提高每个 GPU 的计算能力。具体而言,pipeline 并行性从 12 减少到 8,从而实现跨 8 个节点 (64 个 GPU) 的模型分布。此外,一些 NVIDIA NeMo 通信重叠配置对于加速整体训练至关重要。有关更多信息,请参阅 NVIDIA NeMo 框架用户指南 中的 Communication Overlap 部分。

以下代码显示了关键的 CPT 参数:

Global Batch Size: 2880 
Micro Batch Size: 1
Context Parallel Size: 1 
Tensor Parallelism: 8 
Pipeline Parallelism: 8 
Virtual Pipeline Parallelism: 12 
Learning rate: [1e-5, 5e-6] 
Sequence length: 4096 
Checkpoint format: torch_dist 
precision: bf16 
 
# communication configurations 
defer_embedding_wgrad_compute: True  
wgrad_deferral_limit: 22  
cross_entropy_loss_fusion: True  
enable_vboost: True  
overlap_p2p_comm: True  
batch_p2p_comm: False  
ub_tp_comm_overlap: True  
apply_rope_fusion: True  
deterministic_mode: False 

利用这些参数和模型分布,iGenius 实现了 40%的 MFU,比最初的 25%有了显著提高。这一显著改进直接涉及财务问题,使 iGenius 能够在更短的时间内完成更多的工作。这凸显了在启动大规模 LLM 训练之前探索超参数的重要性。

预训练的第二阶段侧重于通过添加多个层并将上下文长度从 4K 增加到 16K,将基础模型扩展到大小为 355B 参数的模型。

经过几次超参数实验训练扩展模型后,由于 Colosseum 355B 增加了序列长度和额外的层,实现的 MFU 从 40%下降到 33%。

随着模型大小的增加,最佳模型分布包括将上下文并行大小从 1 增加到 4,并将工作流并行度从 8 增加到 10。有关更多信息,请参阅 NVIDIA NeMo Framework User Guide 中的 Context Parallelism。

通过这种配置,数据并行 (DP) 大小为 360 个节点 (2,880 H100 GPUs) 上的 9 个。以下代码展示了 BF16 中 Colosseum 355B 的关键 CPT 参数:

Global Batch Size: 1260
Micro Batch Size: 1 
Context Parallel Size: 4 
Tensor Parallelism: 8 
Pipeline Parallelism: 10 
Virtual Pipeline Parallelism: 10 
Validation check interval: 100 
Learning rate: [1e-5, 5e-6] 
Sequence length: 16384 
Checkpoint format: torch_dist 
precision: bf16 
The line chart shows the pretraining results on DGX Cloud, from above 1.455 to less than 1.452 at 10K steps.
图 2. Colosseum 355B base CPT 验证损失

NVIDIA Hopper 架构 NVIDIA H100 GPU 的基础,包含用于 8 位浮点 (FP8) 运算的硬件加速。iGenius 在预训练的第三阶段使用 FP8 来加速训练并减少模型的内存占用。

NeMo 框架将开箱即用的 FP8 训练与 Transformer Engine 库 集成。可以通过向训练配置文件中添加以下参数来启用 FP8:

transformer_engine: True 
fp8: True
fp8_params: True  
fp8_e4m3: False  
fp8_hybrid: True 
fp8_margin: 0  
fp8_interval: 1  
fp8_amax_history_len: 1024  
fp8_amax_compute_algo: max  
fp8_wgrad: True 
ub_tp_comm_overlap: False  

iGenius 成功继续在 FP8 中进行预训练,从而将 MFU 从使用 BF16 时的 33%增加到使用 FP8 时的 37%。此外,FP8 可将整体训练步长提升 1.15 倍。这种加速仅通过启用 FP8 即可实现,如果考虑到 FP8 节省的内存,可以提高速度。通过调整并行性和微批量大小,您可以更好地优化 FP8 中的可用内存,从而实现更高的速度提升。

The diagram shows a drop for both BF16 and FP8 precision, with the colosseum355B_fp8 model having the greatest decrease over the global steps.
图 3、使用 NVIDIA NeMo Framework 的 BF16 和 FP8 训练结果

在 CPT 期间将模型表示从 BF16 更改为 FP8 需要仔细考虑,以避免训练发散。为了实现 FP8 训练的稳定性,iGenius 探索了各种方法,但最有效的方法是在出现不稳定迹象时降低学习率。

考虑的其他技术是,在对张量运行直方图分析以检测 FP8 中会溢出或下溢的张量后,按原始 BF16 精度保留模型的特定层。

iGenius 采用了各种基准测试来全面评估 Colosseum 355B 基础模型的性能提升。其中,由于 Massive Multitask Language Understanding (MMLU) 基准测试的范围广泛且普遍适用于不同主题领域,因此 iGenius 优先考虑了该基准。

通过使用 MMLU,iGenius 旨在量化通过 CPT 实现的知识保留和集成的程度,从而为模型与人类一般知识和推理能力的一致性改进提供可靠的衡量标准。在训练结束时,iGenius 借助 Colosseum 355B 在 5-shot 设置下实现了 82.04% 的准确率。

LLM 对齐 

完成 LLM 训练后,LLM 对其数据集中的语言以及单词、段落和复杂概念之间的关联有基本的了解。但是,模型尚未学会如何执行特定任务,例如总结、翻译或对话内容。

模型开发的下一阶段专注于下一阶段的学习。模型构建者可以使用多种技术。iGenius 专注于使用 Direct Preference Optimization (DPO) 进行监督式微调和人类偏好调整。

监督式微调 

监督式微调 (SFT) 是将 LLM 输出与用户定义的行为保持一致的基础步骤。SFT 包括使用已标记的输入和所需输出对来优化预训练模型的参数。

指令调优结合了使用自然语言表述指令的微调和提示,例如“Summarize this article,”或“Translate to Italian。”SFT 可应用于此类一次性问题回答,也可针对聊天交互进行优化,使模型能够在对话式设置中回答问题。

iGenius 使用 NVIDIA NeMo Curator 对 Colosseum 355B 的聊天指令进行微调。聊天数据模板的语法使用以下结构大纲:

{ 
"system": "",  
"conversations": [{"from": "User", "value": "What’s the name of the main index on the Italian Stock Exchange?", "label": null}, {"from": "Assistant", "value": "The main index on the Italian Stock Exchange is the FTSE MIB.", label": ""}], 
"mask": "User",  
"type": "VALUE_TO_TEXT" 
} 

iGenius 在 350 个节点上使用 NeMo-Aligner/examples/nlp/gpt/train_gpt_sft.py 运行 SFT。以下是 SFT 训练 recipe 相对于 iGenius 数据的关键设置:NeMo-Aligner、NeMo、nlp、gpt、train_gpt_sft.py、SFT、iGenius

chat: True 
chat_prompt_tokens: 
  system_turn_start: <extra_id_0> 
  turn_start: <extra_id_1> 
  label_start: <extra_id_2> 
  end_of_turn: "\x0A" 
  end_of_name: "\x0A" 
num_workers: 0 
shuffle: True 

iGenius 进行了学习率范围为[1e-7, 5e-7]的实验,使用的全局批量大小为 140。值得注意的是,iGenius 在采用固定或退火学习率计划时,并未观察到性能有任何重大变化。

为了评估 SFT 和对齐策略的有效性,iGenius 使用了 IFEval 基准测试 ,该基准测试评估了模型遵循指示并符合用户意图的能力。iGenius 在不同的数据混合模型上进行了约 1 个 epoch 的训练,主要依靠此基准测试来选择最佳检查点。

The line chart with all data points and a trend line shows the loss curve decreases indicating model alignment with the target SFT objectives.
图 4、Colosseum 355B 聊天指令 SFT 训练损失

人类偏好调整 

完成 SFT 阶段后,iGenius 使用 DPO 根据人类偏好进一步优化语言模型,专注于在首选或拒绝的回答之间进行选择。iGenius 在 350 个节点上使用 NeMo-Aligner/examples/nlp/gpt/train_gpt_dpo.py 运行 DPO。

为优化性能,我们使用性能最佳的 SFT 检查点生成被拒绝的响应。iGenius 的精选数据集排除了示例,而且所选响应和拒绝响应之间的差异极小,从而确保只选择有意义的首选项。数据集的格式采用 SFT 聊天模板,用于构建所选的响应和被拒绝的响应。

{ 
"prompt": "<extra_id_0>System\n\n<extra_id_1>User\nWhich year was the Magna Carta signed?\n<extra_id_1>Assistant\n",  
"chosen_response": "1215\n<extra_id_1>",  
"rejected_response": "I refuse to answer this question.\n<extra_id_1>" 
}

iGenius 使用大约 100K 个样本对模型进行了大约三次训练,并且与 SFT 阶段类似,它依靠 IFEval 等基准来选择最佳检查点。

构建 LLMs 的挑战和最佳实践

随着训练规模的扩大,小问题变得至关重要。仅加载检查点文件,在 3K 个 GPU 上运行 Colosseum 355B 训练作业可能需要 15 – 20 分钟,这将消耗 5 TB 的内存占用。

当单个工作负载要求所有 GPU 同时读写检查点时,在数千个 GPU 上出色处理多项小型作业的存储系统可能会遇到困难,从而导致延迟和潜在超时。网络暂时中断会导致训练作业失败。

此类别中的主要挑战是网络链路的抖动,这种抖动会在上升和下降状态之间反复交替。DGX Cloud 可管理这些类型的基础架构复杂性,使您能够专注于自己的 AI 训练目标。

扩展还存在之前未检测到的问题,需要采用严格的实验跟踪和调试方法。以下是大规模运行 LLM 训练时的一些最佳实践和经验教训:

  • 以较小的规模探索基础知识
  • 有效监控并大规模追踪

以较小的规模探索基础知识

渐进式扩展是关键,可实现快速实验、错误识别,并节省时间和资源。

  • 小型调试模型 :探索大规模训练配置极具挑战性。例如,训练 Colosseum 355B 需要 80 个 H100 GPU 才能够作为单个实例加载。在此项目期间,iGenius 使用了一个 8B 的小型调试模型(适合 2 个 GPU)进行快速配置探索,例如 checkpoint 格式、FP8 参数,或调试遇到的一些 NCCL 问题。
  • 端到端流程测试 :LLM 训练流程执行训练步骤、验证、保存和恢复检查点的循环。缩短检查点间隔有助于加快测试循环。
  • 可靠的检查点格式 :当训练分布发生变化时,某些检查点格式可能难以恢复,而 torch_dist 等格式支持恢复和试验不同的并行化布局。
  • 从最小分布扩展到大规模分布: 在逐渐增加 DP 大小之前,以最小的训练分布开始测试执行。
  • 数据集测试: 鉴于数据处理涉及大量工作和复杂性,必须对数据集进行小规模测试,以便在训练阶段尽早识别潜在的数据集准备错误或样本损坏。

有效监控并大规模追踪

由于训练过程可能涉及数百甚至数千个节点,因此必须保持作业可观测性、基础架构运行状况和整体资源利用率,以进行相应的调整、调整和响应,确保基础架构的最大利用率。

  • 性能 :监控 MFU,同时相应地扩展和调整超参数。
  • 准确的实验追踪 :必须在运行过程中记录环境变量、模型配置和脚本,以确保再现性,并帮助识别潜在问题或改进。
  • 基础架构可观测性: 监控系统运行状况,并确定资源何时未得到充分利用或何时被推向极限。
  • 预定义测试: 不健康节点不可避免,因此必须准备好在任何可疑节点上运行预定义测试,以确定问题并实施补救。添加到集群的任何新节点也应进行这些测试,以确认整体运行状况。明智的做法是,将这些测试的轻量级版本作为作业的 Prolog 和 Epilog 的一部分运行,以增加作业成功的几率。

总结 

通过在特定领域使用大规模 CPT 和对齐,iGenius 构建了 Colosseum 355B,这是使用 NVIDIA DGX Cloud 基础架构和 NVIDIA AI Enterprise 软件以及 NVIDIA NeMo Framework 开发的基础 LLM。

iGenius 通过 FP8 精度的 CPT 降低了计算成本并提高了效率。这种方法不仅增强了 MMLU 等关键基准测试的基准性能,而且证明了 iGenius 能够以更低的成本随着时间的推移不断改进基础 LLM。这体现了 iGenius 致力于为其核心用例和客户提供可持续解决方案。

展望未来,iGenius 将继续探索持续学习策略,不断改进其模型并使其适应各种业务领域,从而确保持续的性能提升和成本效益。

Colosseum 355B 现在还可在 NVIDIA API Catalog 上作为 NVIDIA NIM 微服务 提供。NIM 微服务旨在随时随地跨 NVIDIA 加速基础设施 (包括云、数据中心和工作站) 简化和加速生成式 AI 模型的部署。NIM 使用推理优化引擎、行业标准 API 和预构建容器,提供可随需求扩展的高吞吐量 AI 推理。

探索 Colosseum 355B NIM 微服务。

致谢 

感谢以下 iGenius 贡献者:Michele Resta、Andrea Valenti 和 Danilo Numeroso。 还要感谢以下 NVIDIA 贡献者 Oleg Sudakov。

 

标签