大模型的規(guī)模和能力在迅猛發(fā)展,更大的參數(shù)、更長的序列及更多的模態(tài)是未來大模型技術(shù)的發(fā)展趨勢。更大的規(guī)模的模型意味著更大規(guī)模的算力平臺,算力設(shè)備的部件與任務(wù)之間的復(fù)雜關(guān)系導(dǎo)致調(diào)試調(diào)優(yōu)的復(fù)雜度增加,需要系統(tǒng)的管理和收集訓(xùn)練過程中各維度數(shù)據(jù),才能快速鎖定模型精度及性能瓶頸,加速大模型訓(xùn)練。
MindStudio全流程開發(fā)工具鏈?zhǔn)侨A為面向昇騰AI開發(fā)者提供的一站式開發(fā)環(huán)境和工具集。針對大模型分布式訓(xùn)練復(fù)雜場景,MindStudio提供了從大模型遷移到精度調(diào)試到性能調(diào)優(yōu)的統(tǒng)一工具能力,幫助開發(fā)者輕松get大模型開發(fā)密碼。
一、模型遷移
由于不同硬件體系之間處理器架構(gòu)、模型腳本存在差異性,基于GPU硬件體系原生開發(fā)的開源大模型,要想在昇騰處理器上運(yùn)行,首先需要進(jìn)行模型的遷移。
那么模型遷移主要遷哪些東西呢?
模型腳本的基本組成元素主要為“算子、API、三方庫”,通常在框架層會通過這幾個(gè)核心元素來搭建模型腳本,所以模型遷移的實(shí)質(zhì)也是對“算子、API、三方庫”的遷移。
以同框架下遷移場景為例,MindStudio遷移工具會自動掃描并完成“算子、API、三方庫”兼容性分析,同時(shí)完成腳本代碼替換,并在遷移完成后生成評估報(bào)告,報(bào)告中會詳細(xì)說明替換信息以及是否存在無法直接替換的元素,譬如用戶自定義的算子。整個(gè)遷移過程僅需要幾分鐘。
二、精度調(diào)試
精度決定了大模型預(yù)測的準(zhǔn)確性,因此精度調(diào)試是大模型訓(xùn)練的關(guān)鍵步驟之一。
為了幫助開發(fā)人員快速解決算子精度問題,MindStudio通過溢出檢測、精度比對等核心工具,提供了自有實(shí)現(xiàn)的算子運(yùn)算結(jié)果與業(yè)界標(biāo)準(zhǔn)算子運(yùn)算結(jié)果之間進(jìn)行多維度的精度差異對比的能力,提升訓(xùn)練精度調(diào)測效率,單機(jī)和集群的精度問題定位時(shí)間縮短至周級。
精度預(yù)檢:預(yù)檢避免了常見精度工具在規(guī)模集群下的困境、對數(shù)據(jù)dump的依賴以及對整網(wǎng)累計(jì)誤差的感知。在預(yù)檢過程中,可以通過輕量化的流程提取單API統(tǒng)計(jì)量信息,同時(shí),根據(jù)統(tǒng)計(jì)信息隨機(jī)生成數(shù)據(jù)輸入在NPU上運(yùn)行,最大程度還原真實(shí)訓(xùn)練場景。最終根據(jù)相對誤差、絕對誤差等指標(biāo)綜合判定API精度是否達(dá)標(biāo),并提供真值比對選項(xiàng),輸出評估報(bào)告。以上預(yù)檢流程可以在小時(shí)級的時(shí)間內(nèi)完成,在訓(xùn)前就解決80%以上的算子及API精度問題。
溢出檢測:應(yīng)對大模型開發(fā)過程中產(chǎn)生大量溢出以及溢出導(dǎo)致參數(shù)不斷更新等復(fù)雜問題。通過溢出問題性質(zhì)自動分類、典型溢出問題自動分析等能力,輸出問題算子報(bào)告并提供專家處理建議。
三、性能調(diào)優(yōu)
大模型領(lǐng)域性能是一個(gè)非常受到關(guān)注的指標(biāo),一個(gè)大模型的訓(xùn)練可能需要成百上千張卡,耗時(shí)數(shù)個(gè)月才能完成,性能上的優(yōu)化能直接且顯著地降低訓(xùn)練成本。
同時(shí),大模型領(lǐng)域的性能調(diào)優(yōu)存在很多挑戰(zhàn),譬如:采集數(shù)據(jù)量大、解析耗時(shí)長、TimeLine數(shù)據(jù)量限制、缺少自動拆解比對工具、卡間同步、慢卡慢鏈路等。
MindStudio提供了系統(tǒng)級的集群性能調(diào)優(yōu)能力,通過性能問題拆解、多維可視化Profiling及集群數(shù)據(jù)多界面可視化能力,幫助開發(fā)者迅速鎖定性能瓶頸。
性能拆解:將訓(xùn)練數(shù)據(jù)拆解為“通信、算子、調(diào)度、內(nèi)存”四個(gè)維度,通過對訓(xùn)練耗時(shí)和內(nèi)存占用的比對分析,定位到具體劣化的算子,良好地解決性能數(shù)據(jù)timeline信息量巨大用戶難以入手、算子詳細(xì)信息及搬運(yùn)內(nèi)存信息多等問題,用戶可直接確認(rèn)性能的主要瓶頸。
多維可視化Profiling:針對PyTorch框架開發(fā)的性能數(shù)據(jù)采集和解析,提供Ascend PyTorch Profiler性能采集接口。用戶通過在PyTorch訓(xùn)練腳本中插入Ascend PyTorch Profiler接口,執(zhí)行訓(xùn)練的同時(shí)采集性能數(shù)據(jù),完成訓(xùn)練后直接輸出可視化的性能數(shù)據(jù)文件,支持單次加載多組數(shù)據(jù)并可靈活比對,內(nèi)存級Profiling展示性能遠(yuǎn)超原社區(qū)水平。同時(shí),工具中提供了Tensorboard可視化、算子級內(nèi)存Profiling兩個(gè)功能,支持調(diào)用棧、算子信息關(guān)聯(lián),幫助開發(fā)者在代碼層級細(xì)粒度鎖定性能瓶頸。
集群數(shù)據(jù)多界面可視化:提供集群可視化調(diào)優(yōu)工具Ascend Insight來提升大模型集群性能調(diào)優(yōu)效率。通過Ascend Insight提供Timeline流水視圖、Memory視圖、Operator視圖、Summary視圖等多維視圖分析幫助用戶快速發(fā)現(xiàn)異常點(diǎn),識別性能瓶頸:
1)Timeline流水視圖:支持多卡匯聚、按層過濾、數(shù)據(jù)對比、單卡時(shí)間校準(zhǔn)、算子搜索以及統(tǒng)計(jì)信息
2)Memory視圖:支持內(nèi)存占用折線圖,含進(jìn)程級預(yù)留、算子級預(yù)留以及算子級占用。用戶可以根據(jù)折線圖找到峰值的內(nèi)存占用點(diǎn),并獲取到對應(yīng)的算子明細(xì)。
3)Operator視圖:支持通過分析算子耗時(shí)統(tǒng)計(jì)及詳情信息,快速找到計(jì)算性能瓶頸點(diǎn)。
4)Summary視圖:支持通信/計(jì)算耗時(shí)分析以及PP場景耗時(shí)分析,基于拓?fù)浜筒⑿胁呗裕Y(jié)合可視分析鏈路進(jìn)行調(diào)度分析,定位通信慢、計(jì)算慢等性能問題。
結(jié)語
以上完整地介紹了MindStudio全流程開發(fā)工具鏈如何通過大模型遷移、精度調(diào)試、性能調(diào)優(yōu)三大步驟,支持用戶以低成本快速提升百億千億大模型訓(xùn)練性能,提高開發(fā)效率。欲了解更多詳情,請參閱: MindStudio-昇騰社區(qū) (hiascend.com)
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )