近年來,大語言模型(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。

預訓練的第一階段側重于確定優化訓練參數,以增強 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 |

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 中的可用內存,從而實現更高的速度提升。

在 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 的訓練,主要依靠此基準測試來選擇最佳檢查點。

人類偏好調整?
完成 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。
?