—— 用于加速基礎模型創(chuàng)新的云原生開源軟件棧
作者:
Talia Gershon, IBM 研究院混合云架構研究總監(jiān)
Priya Nagpurkar, IBM 研究院混合云平臺研發(fā)副總裁
Carlos Costa, IBM 研究院基礎模型和多云首席研究科學家
Darrell Reimer, IBM 研究院杰出工程師
北京2023年5月15日 /美通社/ -- 基礎模型和生成式 AI 激發(fā)人類的集體想象力,推動我們發(fā)現(xiàn)改善生活和工作方式的新方法。 從通過自然語言實現(xiàn)更加無縫的技術交互,到自動生成代碼或其他數(shù)據(jù),再到跨科學各個領域的用例,基礎模型的應用場景與日俱增。 IBM 的目標是將該技術融入我們的產(chǎn)品組合,幫助我們的客戶快速高效且安全地將基礎模型應用到他們自己的產(chǎn)品中。
在這一過程中,我們分享了為什么在 IBM Cloud 中構建 AI 超級計算機 Vela。 這項工作大力推動我們重構整個技術堆棧,從而加快我們訓練、微調(diào)和部署尖端 AI 模型的步伐。 通過這個過程,我們成功構建了一個面向基礎模型時代進行優(yōu)化的現(xiàn)代化、靈活的 AI 軟件棧。
本博文將介紹在 Red Hat OpenShift Container Platform 上運行的高性能云原生 AI 訓練堆棧,該平臺是新推出的 watsonx 平臺的構建基礎。
作為訓練堆棧的補充,我們的技術棧可降低成本與優(yōu)化性能,對基礎模型進行調(diào)整并為其提供服務。 以下多項技術已貢獻給開源社區(qū),如 PyTorch、Ray、Kserve 和 Open Data Hub (ODH) (一個可在 Kubernetes 上構建、部署和管理數(shù)據(jù)密集型應用的開源平臺)。 在 ODH 上發(fā)展成熟的技術隨后被引入 Red Hat 的 OpenShift AI,IBM 目前的新一代 AI 平臺 watsonx.ai 使用 Red Hat OpenShift AI。 借助這種方法,IBM 和 Red Hat 為客戶提供最先進的開源基礎模型棧,以支持在他們選擇的任何環(huán)境(本地、IBM Cloud 或其他公有云)中運行。
我們的基礎模型訓練方法
我們在開始重構 AI 訓練堆棧時有兩個目標。 首先,希望保持傳統(tǒng) HPC 系統(tǒng)的實用性:最大程度提高硬件利用率,并高效利用高性能基礎架構。 其次,希望提供混合云開發(fā)體驗的靈活性和生產(chǎn)力優(yōu)勢:提高開發(fā)敏捷性和代碼重用率,簡化基礎架構和軟件的管理與擴展。 為了實現(xiàn)第二個目標,我們使用 Kubernetes 構建解決方案,通過容器復用代碼以及擴展軟件。 但這一決定意味著我們需要將 Kubernetes 轉化為可處理高性能工作負載的平臺。
我們還需要一個可以應對每一步 AI 訓練工作流程的解決方案:進行數(shù)據(jù)預處理、分布式訓練和模型驗證。 我們確定了合作的關鍵開源社區(qū),共同處理端到端工作流程,確定了需要克服的關鍵用戶體驗障礙,以便用戶啟動、運行和擴展工作。
下圖 1 的左側介紹了我們的訓練軟件堆棧的整體情況,該堆棧自 2022 年底以來一直在 IBM Cloud 的 Vela 上運行,由 IBM 研究院使用。 圖 1 右側描述了我們用于調(diào)整和提供基礎模型的堆棧,稍后將在博客中詳細討論。
高級 Kubernetes 原生資源利用與管理
這項工作伊始,Kubernetes 生態(tài)系統(tǒng)在大規(guī)模和高性能 AI 工作負載方面仍然存在重大差距。 早期關注的領域之一是將基礎架構功能(如網(wǎng)絡資源)應用于工作負載,而不會產(chǎn)生額外的開銷。 為此,我們創(chuàng)建了一個多 NIC CNI 操作程序,消除了封裝,可配置底層網(wǎng)絡接口并將網(wǎng)絡延遲減少了一半,同時與開箱即用的容器網(wǎng)絡解決方案相比帶寬增加了七倍。 這些改進對最終用戶完全透明。
我們嘗試填補的第二個空白領域是使用正確的云原生作業(yè)調(diào)度程序。 由于大量 AI 開發(fā)人員希望提交作業(yè)以在 Vela 上運行,我們需要一個調(diào)度程序來分配資源并確定作業(yè)的優(yōu)先級,以最大限度地提升資源利用率。 為了解決這個問題,IBM 研究人員創(chuàng)建了多集群應用進程調(diào)度程序 (MCAD),可提供作業(yè)隊列、作業(yè)優(yōu)先級與搶占、超時以及系統(tǒng)用戶之間的資源共享編排。 此外,我們啟用了工作負載打包和分組調(diào)度,以消除資源碎片,這些都通過 OpenShift 實現(xiàn)。 我們進一步開發(fā)了 InstaScale,它與 MCAD 共同動態(tài)擴展云托管的 OpenShift 集群。 通過自動從云提供商獲取 GPU 并按需發(fā)布,InstaScale 讓從業(yè)者不必擔心基礎架構管理和成本問題。
高效、可擴展的數(shù)據(jù)預處理,模型訓練與驗證
為了使 AI 管道中的所有運行步驟簡單高效,我們主要運用 和貢獻PyTorch 和 Ray 這兩項關鍵的開源技術。 借助 Ray,我們使用數(shù)據(jù)科學家友好的 Python API 實現(xiàn)了可擴展的數(shù)據(jù)預處理(例如使用仇恨、濫用和褻瀆過濾器過濾數(shù)據(jù))和后處理步驟(例如模型微調(diào)和驗證)。 通過運行 Ray with MCAD,我們支持并發(fā)運行的異構 Ray 作業(yè)高效共享資源池。
我們正與 PyTorch 合作推進對分布式訓練的支持,包括通過引入 rate_limiter 來改進對完全分片數(shù)據(jù)并行 (FSDP) 訓練 API 的支持。 我們最近展示了在基于以太網(wǎng)的環(huán)境(如 IBM Cloud 中的 Vela)上為參數(shù)為 10B+ 的模型高效擴展分布式訓練作業(yè)。 此外,通過集成 MCAD 與 TorchX(TorchX 是 PyTorch 應用的通用作業(yè)啟動器),我們能夠使用不同 API 和框架以透明方式支持多種基于 PyTorch 的作業(yè)。 這些工作都受底層工作管理系統(tǒng)的支持,無需 AI 從業(yè)者修改代碼。
簡化用戶體驗
工作流程本身的訓練分為以下三個步驟:模型探索(通常是使用一些 GPU 運行的縮小試驗)、擴展分布式訓練作業(yè)(消耗數(shù)百個 GPU)以及模型驗證。 對于許多 AI 從業(yè)者來說,編排這些步驟可能很復雜,而且配置和管理的時間長。 我們通過 CodeFlare 項目解決了這一挑戰(zhàn),它能夠提供引導式、簡化的用戶體驗,以有效地提高訓練、測試和監(jiān)控模型訓練生命周期的效率。
CodeFlare CLI (基于控制臺和 UI)指導用戶應對復雜的遠程 OpenShift 集群運行,同時自動執(zhí)行作業(yè)配置、存儲設置、日志記錄以及管理用于監(jiān)控和分析的端點。CodeFlare SDK(基于 Jupyter)為用戶提供直觀的 Python 界面,進行批處理資源請求處理、作業(yè)提交和觀察。 借助這些功能,我們大大降低了 AI 研究同事進入云原生堆棧的門檻。
在 Vela 上運行我們的軟件棧
到 2022 年底,IBM 的所有基礎模型訓練工作都過渡到在 IBM Cloud 的 Vela 上運行此軟件棧。 如今,MCAD 管理這些 AI 作業(yè)的隊列,從單 GPU 作業(yè)到利用超過 512 個 GPU 的作業(yè),并處理作業(yè)優(yōu)先級和配額管理。 我們在過程中發(fā)現(xiàn)了其他方法,可以讓團隊在以 GPU 為中心的環(huán)境中(如 Vela)中管理 OpenShift 集群更輕松,例如,通過增強 OpenShift Installer 配置基礎架構 (IPI),以便更輕松地在高性能基礎架構上部署和管理 OpenShift。
我們的基礎模型調(diào)優(yōu)和服務方法
訓練和驗證最先進的基礎模型是 AI 價值鏈的關鍵早期階段,但當模型在 AI 工作流程的調(diào)優(yōu)和推理步驟中投入生產(chǎn)使用時,最終會捕獲真正的價值。 我們用于推理和模型調(diào)優(yōu)的軟件棧主要是在底層硬件上高效執(zhí)行模型,以最佳方式批處理傳入的請求,簡化 AI 與應用的集成,并提供最先進的模型適應技術。 上圖 1 的右側介紹了我們的基礎模型調(diào)優(yōu)和服務棧,以下是更為詳細的描述。
推理性能
用于優(yōu)化基礎模型在給定硬件平臺上運行方式的軟件庫可以將吞吐量和延遲提高 10-100 倍。 我們的服務軟件棧中有一組精心設計的成熟優(yōu)化路徑(包括 ONNX 和 Hugging Face Optimum),用于推理常見模型架構,并且可擴展,以適應新的推理服務器或優(yōu)化。 考慮到 AI 和開源社區(qū)的快速創(chuàng)新步伐,可擴展性是我們軟件棧的關鍵設計點。 此外,真正的 AI 服務會同時收到來自多個用戶的、針對多個模型的大量推理請求。 我們的服務堆棧動態(tài)批處理傳入的請求,并通過構建和反饋 Hugging Face、Kserve 和 Model Mesh 社區(qū),有效地在模型之間進行多路復用。
簡化應用程序集成
目前可用于運行 AI 模型的推理服務器需要用戶具備大量的 AI 專業(yè)知識。 模型的輸入和輸出都是張量。 對于希望利用這些模型完成任務的應用開發(fā)人員來說,這種格式并不易于理解。 為了使此過程對開發(fā)人員更加友好,必須將模型輸出轉換為更易于使用的內(nèi)容。 我們創(chuàng)建了 Caikit 抽象層,可為應用開發(fā)人員提供直觀的 API 和數(shù)據(jù)模型,并提供一個穩(wěn)定的接口,支持模型和應用獨立發(fā)展。 這一抽象層在 IBM 的 Watson 模型中使用,用于提供基礎架構,并將很快貢獻給開源。
基礎模型調(diào)優(yōu)
基礎模型的關鍵價值主張之一是能夠利用預訓練的基礎模型,并使用專用數(shù)據(jù)"調(diào)優(yōu)"或"適應",以提高其下游任務的性能。 我們的目標是打包最先進的技術,以實現(xiàn)計算效率高的模型自適應,讓不甚了解其工作原理的人也能夠使用。 我們的可擴展堆棧目前支持多任務提示調(diào)優(yōu) (MPT) 和微調(diào),通過開源項目參數(shù)高效微調(diào) (PEFT) 集成。 在接下來的幾個月里,我們將開源一些提示調(diào)優(yōu)算法和實現(xiàn)。
和 Red Hat合作
IBM 研究院正在與 Red Hat 合作,我們將開發(fā)的功能貢獻給主要開源社區(qū),直接發(fā)布在 Open Data Hub (ODH),讓其他人也從這項工作中受益。 ODH 是一個全面的開源工具集合,旨在利用 OpenShift 的優(yōu)勢來推動整個 AI 開發(fā)生命周期。 Open Data Hub 中引入的許多技術已發(fā)展成為 Red Hat OpenShift AI 的一部分,并作為 watsonx.ai 的中間件基礎提供服務。 圖 2 顯示了本博客中描述的對各種開源貢獻將如何匯集到 ODH 中以支持基礎模型用例。
后續(xù)工作
面向基礎模型時代重構我們的端到端軟件棧對我們的 AI 社區(qū)具有相當大的價值。 AI 研究人員不再需要非常深入的基礎架構知識,就可以讓作業(yè)高性能運行。 他們不再需要弄清楚如何將作業(yè)從幾個 GPU 擴展到數(shù)百個,或者如何精確地分配作業(yè)以實現(xiàn)高工作負載性能,現(xiàn)在這些任務都可以交給軟件棧處理。 代碼可跨團隊重用,試驗也易于重現(xiàn)。 我們還大幅簡化了 AI 開發(fā)人員如何以高計算效率和開發(fā)人員友好的方式提供和調(diào)整基礎模型的方式。
或許最重要的是,在 OpenShift 上構建此堆棧提供了對其他環(huán)境的可移植性,讓合作伙伴可以在本地和任何公有云中使用這些功能。 我們很高興與紅帽一起通過開放數(shù)據(jù)中心將這些創(chuàng)新引入開源社區(qū),在 Kubernetes 上推進 AI 工作流程方面的最新技術,并為在 Red Hat OpenShift AI 和 watsonx.ai 中使用這些創(chuàng)新內(nèi)容奠定了基礎。 通過這種方法,我們?yōu)榛A模型的端到端生命周期啟用了一個企業(yè)級平臺。 我們期待與您在上游社區(qū)進行合作。