0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

只需添加幾行代碼,就能實現(xiàn)大模型的低成本訓練和微調(diào)

iotmag ? 來源:物聯(lián)網(wǎng)技術(shù) ? 作者:物聯(lián)網(wǎng)技術(shù) ? 2022-07-14 14:15 ? 次閱讀

不得不說,為了讓更多人能用上大模型,技術(shù)圈真是各出奇招!

模型不夠開放?有人自己上手搞免費開源版。

比如最近風靡全網(wǎng)的DALL·E Mini,Meta開放的OPT-175B(Open Pretrained Transformer)

都是通過復刻的方式,讓原本不夠open的大模型,變成人人可用。

2bd08cd0-033c-11ed-ba43-dac502259ad0.png

還有人覺得模型太大,個人玩家很難承受起天價成本。

所以提出異構(gòu)內(nèi)存、并行計算等方法,讓大模型訓練加速又降本。

比如開源項目Colossal-AI,前不久剛實現(xiàn)了讓一塊英偉達3090就能單挑180億參數(shù)大模型。

2be23674-033c-11ed-ba43-dac502259ad0.png

而在這兩天,他們又來了一波上新:

無縫支持Hugging Face社區(qū)模型,只需添加幾行代碼,就能實現(xiàn)大模型的低成本訓練和微調(diào)。

2bf8b2aa-033c-11ed-ba43-dac502259ad0.png

要知道,Hugging Face作為當下最流行的AI庫之一,提供了超過5萬個AI模型的實現(xiàn),是許多AI玩家訓練大模型的首選。

而Colossal-AI這波操作,是讓公開模型的訓練微調(diào)變得更加切實可行。

并且在訓練效果上也有提升。

單張GPU上,相比于微軟的DeepSpeed,使用Colossal-AI的自動優(yōu)化策略,最快能實現(xiàn)40%的加速。

而PyTorch等傳統(tǒng)深度學習框架,在單張GPU上已經(jīng)無法運行如此大的模型。

對于使用8張GPU的并行訓練,僅需在啟動命令中添加-nprocs 8就能實現(xiàn)。

2c08a782-033c-11ed-ba43-dac502259ad0.jpg

這波下來,可以說是把個人AI玩家需要考慮的成本、效率、實操問題,都拿捏住了~

無需修改代碼邏輯

光說不練假把式。

下面就以O(shè)PT為例,詳細展開看看Colossal-AI的新功能到底怎么用。

OPT,全稱為Open Pretrained Transformer。

它由Meta AI發(fā)布,對標GPT-3,最大參數(shù)量可達1750億。

最大特點就是,GPT-3沒有公開模型權(quán)重,而OPT開源了所有代碼及權(quán)重。

因此,每一位開發(fā)者都能在此基礎(chǔ)上開發(fā)個性化的下游任務(wù)。

下面的舉例,就是根據(jù)OPT提供的預(yù)訓練權(quán)重,進行因果語言模型(Casual Language Modelling)的微調(diào)。

主要分為兩個步驟:

  • 添加配置文件

  • 運行啟動

第一步,是根據(jù)想進行的任務(wù)添加配置文件。

比如在一張GPU上,以異構(gòu)訓練為例,只需在配置文件里加上相關(guān)配置項,并不需要更改代碼的訓練邏輯。

比如,tensor_placement_policy決定了異構(gòu)訓練的策略,參數(shù)可以為CUDA、CPU及auto。

每個策略的優(yōu)點不同、適應(yīng)的情況也不一樣。

CUDA:將全部模型參數(shù)都放置于GPU上,適合不offload時仍然能進行訓練的傳統(tǒng)場景。

CPU:將模型參數(shù)都放置在CPU內(nèi)存中,僅在GPU顯存中保留當前參與計算的權(quán)重,適合超大模型的訓練。

auto:根據(jù)實時的內(nèi)存信息,自動決定保留在GPU顯存中的參數(shù)量,這樣能最大化利用GPU顯存,同時減少CPU-GPU之間的數(shù)據(jù)傳輸。

對于普通用戶來說,使用auto策略是最便捷的。

這樣可以由Colossal-AI自動化地實時動態(tài)選擇最佳異構(gòu)策略,最大化計算效率。

 
from colossalai.zero.shard_utils import TensorShardStrategy
zero = dict(model_config=dict(shard_strategy=TensorShardStrategy(),                              tensor_placement_policy="auto"),            optimizer_config=dict(gpu_margin_mem_ratio=0.8))            

第二步,是在配置文件準備好后,插入幾行代碼來啟動新功能。

首先,通過一行代碼,使用配置文件來啟動Colossal-AI。

Colossal-AI會自動初始化分布式環(huán)境,讀取相關(guān)配置,然后將配置里的功能自動注入到模型及優(yōu)化器等組件中。


colossalai.launch_from_torch(config='./configs/colossalai_zero.py')

然后,還是像往常一樣定義數(shù)據(jù)集、模型、優(yōu)化器、損失函數(shù)等。

比如直接使用原生PyTorch代碼,在定義模型時,只需將模型放置于ZeroInitContext下初始化即可。

在這里,使用的是Hugging Face提供的OPTForCausalLM模型以及預(yù)訓練權(quán)重,在Wikitext數(shù)據(jù)集上進行微調(diào)。


with ZeroInitContext(target_device=torch.cuda.current_device(),                     shard_strategy=shard_strategy,                    shard_param=True):    model = OPTForCausalLM.from_pretrained(                'facebook/opt-1.3b'                config=config            )

接下來,只需要調(diào)用colossalai.initialize,便可將配置文件里定義的異構(gòu)內(nèi)存功能統(tǒng)一注入到訓練引擎中,即可啟動相應(yīng)功能。


engine, train_dataloader, eval_dataloader, lr_scheduler = colossalai.initialize(model=model,                                                                               optimizer=optimizer,                                                                               criterion=criterion,                                                                               train_dataloader=train_dataloader,                                                                               test_dataloader=eval_dataloader,                                                                               lr_scheduler=lr_scheduler)

還是得靠GPU+CPU異構(gòu)

而能夠讓用戶實現(xiàn)如上“傻瓜式”操作的關(guān)鍵,還是AI系統(tǒng)本身要足夠聰明。

發(fā)揮核心作用的是Colossal-AI系統(tǒng)的高效異構(gòu)內(nèi)存管理子系統(tǒng)Gemini。

它就像是系統(tǒng)內(nèi)的一個總管,在收集好計算所需的信息后,動態(tài)分配CPU、GPU的內(nèi)存使用。

具體工作原理,就是在前面幾個step進行預(yù)熱,收集PyTorch動態(tài)計算圖中的內(nèi)存消耗信息。

在預(yù)熱結(jié)束后,計算一個算子前,利用收集的內(nèi)存使用記錄,Gemini將預(yù)留出這個算子在計算設(shè)備上所需的峰值內(nèi)存,并同時從GPU顯存移動一些模型張量到CPU內(nèi)存。

2c12ffac-033c-11ed-ba43-dac502259ad0.png

Gemini內(nèi)置的內(nèi)存管理器給每個張量都標記一個狀態(tài)信息,包括HOLD、COMPUTE、FREE等。

然后,根據(jù)動態(tài)查詢到的內(nèi)存使用情況,不斷動態(tài)轉(zhuǎn)換張量狀態(tài)、調(diào)整張量位置。

帶來的直接好處,就是能在硬件非常有限的情況下,最大化模型容量和平衡訓練速度。

要知道,業(yè)界主流方法ZeRO (Zero Reduency Optimizer),盡管也利用CPU+GPU異構(gòu)內(nèi)存的方法,但是由于是靜態(tài)劃分,還是會引起系統(tǒng)崩潰、不必要通信量等問題。

而且,使用動態(tài)異構(gòu)CPU+GPU內(nèi)存的辦法,還能用加內(nèi)存條的辦法來擴充內(nèi)存。

怎么也比買高端顯卡劃算多了。

目前,使用Colossal-AI的方法,RTX 2060 6GB普通游戲本能訓練15億參數(shù)模型;RTX 3090 24GB主機直接單挑180億參數(shù)大模型;Tesla V100 32GB連240億參數(shù)都能拿下。

除了最大化利用內(nèi)存外,Colossal-AI還使用分布式并行的方法,讓訓練速度不斷提升。

它提出同時使用數(shù)據(jù)并行、流水并行、2.5維張量并行等復雜并行策略

方法雖復雜,但上手卻還是非常“傻瓜操作”,只需簡單聲明,就能自動實現(xiàn)。

無需像其他系統(tǒng)和框架侵入代碼,手動處理復雜的底層邏輯。


parallel = dict(    pipeline=2,    tensor=dict(mode='2.5d', depth = 1, size=4))

Colossal-AI還能做什么?

實際上,自開源以來,Colossal-AI已經(jīng)多次在GitHub及Papers With Code熱榜位列世界第一,在技術(shù)圈小有名氣。

除了如上提到的用單張GPU訓練大模型外,Colossal-AI在擴展至數(shù)十張甚至數(shù)百張GPU的大規(guī)模并行場景時,相比于英偉達Megatron-LM等現(xiàn)有系統(tǒng),性能可以翻倍,使用資源可以降低至其十分之一之下。

換算一下,在預(yù)訓練GPT-3等超大AI模型上,節(jié)省的費用可以達到數(shù)百萬元。

2c330bbc-033c-11ed-ba43-dac502259ad0.png

據(jù)透露,Colossal-AI相關(guān)的解決方案已經(jīng)被自動駕駛、云計算、零售、醫(yī)藥、芯片等行業(yè)的知名廠商用上了。

與此同時,他們也非常注重開源社區(qū)建設(shè),提供中文教程、開放用戶社群論壇,根據(jù)大家的需求反饋不斷更新迭代。

比如我們發(fā)現(xiàn),之前有粉絲留言詢問,Colossal-AI能否直接加載Hugging Face上的一些模型?

好嘛,這次更新就來了。

2c3f0c46-033c-11ed-ba43-dac502259ad0.png

所以,對于大模型訓練,你覺得現(xiàn)在還有哪些難點亟需解決呢?

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3128

    瀏覽量

    42074
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3032

    瀏覽量

    48374
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67775
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    2136

    瀏覽量

    1988

原文標題:1塊GPU+幾行代碼,大模型訓練提速40%!無縫支持HuggingFace,來自國產(chǎn)開源項目?

文章出處:【微信號:iotmag,微信公眾號:iotmag】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AI大模型訓練成本飆升,未來三年或達千億美元

    在科技日新月異的今天,人工智能(AI)領(lǐng)域的發(fā)展正以前所未有的速度推進,其中,AI大模型的崛起尤為引人注目。然而,隨著模型參數(shù)的持續(xù)膨脹,其背后的訓練成本也呈現(xiàn)出驚人的增長態(tài)勢。近日,AI新創(chuàng)公司
    的頭像 發(fā)表于 07-11 15:06 ?364次閱讀

    大語言模型的預(yù)訓練

    能力,逐漸成為NLP領(lǐng)域的研究熱點。大語言模型的預(yù)訓練是這一技術(shù)發(fā)展的關(guān)鍵步驟,它通過在海量無標簽數(shù)據(jù)上進行訓練,使模型學習到語言的通用知識,為后續(xù)的任務(wù)
    的頭像 發(fā)表于 07-11 10:11 ?249次閱讀

    模型為什么要微調(diào)?大模型微調(diào)的原理

    難以達到最佳性能。為了提升模型在特定任務(wù)上的表現(xiàn),微調(diào)(Fine-tuning)成為了一個關(guān)鍵步驟。本文將詳細探討大模型為什么要進行微調(diào)以及微調(diào)
    的頭像 發(fā)表于 07-10 10:43 ?1962次閱讀

    人臉識別模型訓練是什么意思

    人臉識別模型訓練是指通過大量的人臉數(shù)據(jù),使用機器學習或深度學習算法,訓練出一個能夠識別和分類人臉的模型。這個模型可以應(yīng)用于各種場景,如安防監(jiān)
    的頭像 發(fā)表于 07-04 09:16 ?338次閱讀

    預(yù)訓練模型的基本原理和應(yīng)用

    訓練好的模型,這些模型通常在某些通用任務(wù)上表現(xiàn)出色,并且可以作為后續(xù)特定任務(wù)的起點,通過遷移學習或微調(diào)(Fine-tuning)等方式進行適應(yīng)和優(yōu)化。以下是對預(yù)
    的頭像 發(fā)表于 07-03 18:20 ?1436次閱讀

    谷歌Gemini Ultra模型訓練成本近2億美元

    斯坦福大學與研究巨頭Epoch AI聯(lián)合揭示了云計算時代下AI模型訓練成本的飛速增長。最新研究結(jié)果顯示,AI巨頭OpenAI的GPT-4訓練成本高達7840萬美元,這一數(shù)字令人咋舌。
    的頭像 發(fā)表于 06-07 09:36 ?484次閱讀

    【大語言模型:原理與工程實踐】大語言模型的預(yù)訓練

    大語言模型的核心特點在于其龐大的參數(shù)量,這賦予了模型強大的學習容量,使其無需依賴微調(diào)即可適應(yīng)各種下游任務(wù),而更傾向于培養(yǎng)通用的處理能力。然而,隨著學習容量的增加,對預(yù)訓練數(shù)據(jù)的需求也相
    發(fā)表于 05-07 17:10

    【大語言模型:原理與工程實踐】核心技術(shù)綜述

    其預(yù)訓練微調(diào),直到模型的部署和性能評估。以下是對這些技術(shù)的綜述: 模型架構(gòu): LLMs通常采用深層的神經(jīng)網(wǎng)絡(luò)架構(gòu),最常見的是Transformer網(wǎng)絡(luò),它包含多個自注意力層,能夠捕
    發(fā)表于 05-05 10:56

    谷歌發(fā)布用于輔助編程的代碼模型CodeGemma

    谷歌發(fā)布了用于輔助編程的代碼模型 CodeGemma。CodeGemma 基于谷歌今年 2 月發(fā)布的輕量級開源大模型 Gemma,針對 Gemma 的兩個不同參數(shù)規(guī)模的版本 Gemma 2B 和 Gemma 7B 發(fā)布了 Co
    的頭像 發(fā)表于 04-17 16:07 ?532次閱讀
    谷歌發(fā)布用于輔助編程的<b class='flag-5'>代碼</b>大<b class='flag-5'>模型</b>CodeGemma

    掌握成本計算:大模型AI應(yīng)用的關(guān)鍵要素

    目前看起來,訓練數(shù)據(jù)的質(zhì)量比數(shù)量更重要。對于大模型廠商來說,如何從繁多的數(shù)據(jù)中拿到高質(zhì)量的訓練數(shù)據(jù)是他們降低成本的重要工作。
    發(fā)表于 01-17 11:43 ?740次閱讀
    掌握<b class='flag-5'>成本</b>計算:大<b class='flag-5'>模型</b>AI應(yīng)用的關(guān)鍵要素

    四種微調(diào)模型的方法介紹

    微調(diào)(Full Fine-tuning):全微調(diào)是指對整個預(yù)訓練模型進行微調(diào),包括所有的模型
    發(fā)表于 01-03 10:57 ?2.2w次閱讀
    四種<b class='flag-5'>微調(diào)</b>大<b class='flag-5'>模型</b>的方法介紹

    如何基于深度學習模型訓練實現(xiàn)工件切割點位置預(yù)測

    Hello大家好,今天給大家分享一下如何基于深度學習模型訓練實現(xiàn)工件切割點位置預(yù)測,主要是通過對YOLOv8姿態(tài)評估模型在自定義的數(shù)據(jù)集上訓練
    的頭像 發(fā)表于 12-22 11:07 ?608次閱讀
    如何基于深度學習<b class='flag-5'>模型</b><b class='flag-5'>訓練</b><b class='flag-5'>實現(xiàn)</b>工件切割點位置預(yù)測

    如何基于深度學習模型訓練實現(xiàn)圓檢測與圓心位置預(yù)測

    Hello大家好,今天給大家分享一下如何基于深度學習模型訓練實現(xiàn)圓檢測與圓心位置預(yù)測,主要是通過對YOLOv8姿態(tài)評估模型在自定義的數(shù)據(jù)集上訓練
    的頭像 發(fā)表于 12-21 10:50 ?1404次閱讀
    如何基于深度學習<b class='flag-5'>模型</b><b class='flag-5'>訓練</b><b class='flag-5'>實現(xiàn)</b>圓檢測與圓心位置預(yù)測

    深度學習如何訓練出好的模型

    和足夠的計算資源,還需要根據(jù)任務(wù)和數(shù)據(jù)的特點進行合理的超參數(shù)調(diào)整、數(shù)據(jù)增強和模型微調(diào)。在本文中,我們將會詳細介紹深度學習模型訓練流程,探討超參數(shù)設(shè)置、數(shù)據(jù)增強技
    的頭像 發(fā)表于 12-07 12:38 ?952次閱讀
    深度學習如何<b class='flag-5'>訓練</b>出好的<b class='flag-5'>模型</b>

    如何用低成本MCU實現(xiàn)音樂頻譜顯示

    如何用低成本MCU實現(xiàn)音樂頻譜顯示
    的頭像 發(fā)表于 10-18 17:10 ?700次閱讀
    如何用<b class='flag-5'>低成本</b>MCU<b class='flag-5'>實現(xiàn)</b>音樂頻譜顯示