欧美xxxx做受欧美_www.xxxx精品_国产一区二区三区蝌蚪_国产原创欧美精品_国产福利精品一区_亚洲精品久久久久久下一站 _久久精品国产网站_久久99精品国产_久久综合给合久久狠狠狠97色69_91久久久久久久久久久

李白:你的模型權(quán)重很不錯,可惜被我沒收了

來源:CSDN博客 | 2022-11-28 10:59:30 |

撰文|CPFLAME

大噶好,年更樓主今天想推的是,主打分布式訓(xùn)練的模型庫_李白(LiBai)。?

https://github.com/Oneflow-Inc/libaihttps://github.com/Oneflow-Inc/libai


【資料圖】

對于目前市面上的模型庫來說,選擇實在是太多了,換了一批又一批,眼睛都挑花了,為什么要用LiBai?(如果你覺得LiBai萬一某天能用到,或者這篇文章讀下來感覺比較開心,可以去GitHub上點贊,如果能三連就更好了。眾所周知,GitHub點贊其實是個收藏夾功能)。

按照現(xiàn)在的趨勢來說,模型越來越大了,大到一張GPU甚至裝不下完整的模型,必須得上分布式并行技術(shù),但是分布式代碼在很多框架下都是高度定制化的,對于新手來說根本讀不懂,也不知道應(yīng)該怎么使用,導(dǎo)致大家上手非常的困難,讓自己珍貴的發(fā)際線顯得更加珍貴。

針對大模型上述存在的痛點,導(dǎo)致我們必須上分布式(數(shù)據(jù)并行、模型并行、流水并行)才能跑起來一個大模型。

那么,LiBai有哪些特點呢?你坐好,我要發(fā)功了。

需要詳細(xì)分章介紹的優(yōu)勢(看上去還不錯,用戶也可以聽得懂,也知道要干什么):

簡單易用的分布式代碼,單機(jī)代碼和分布式代碼基本一致

可以無縫使用PyTorch、HuggingFace的model權(quán)重,并且還可以在LiBai下進(jìn)行多機(jī)多卡的分布式推理

開箱即用,所有的分布式并行配置(Grad Acc,AMP,Checkpointing,ZeRO,Auto Parallel)技術(shù)都只需要在config里面一鍵設(shè)置就可以生效,不需要在算法代碼model.py中額外添加

支持模型一鍵轉(zhuǎn)換 ONNX

我擱這兒就要介紹完的優(yōu)勢(看上去大家也有,很虛的帽子話),為了不讓大家覺得過于虛,在介紹的同時也會插入相關(guān)的例子。?

1. 具有高度靈活性和高效率,同時支持動態(tài)圖eager模式和靜態(tài)圖graph模式,支持一鍵切換,在方便debug和高效性之間反復(fù)橫跳。

2. 對于分布式并行的支持比較全面,大家可以在里面盡情地組合各種分布式并行的組件。

3. LiBai下面有內(nèi)置的layers直接使用,避免重復(fù)造輪子,比如用LiBai下面的Linear層就可以快速地構(gòu)建一個2D并行(數(shù)據(jù)并行+模型并行)的MLP。?

4. 采用LazyCall(借鑒自detectron2)的配置系統(tǒng),基于Python語法構(gòu)建相比于 argparse 和 yacs-based 方式更靈活,而且每次訓(xùn)練都會序列化yaml文件,用戶可以一鍵讀取yaml文件來復(fù)現(xiàn)“上古時期”的實驗結(jié)果。

5. 具有豐富的Projects實現(xiàn)。由于LiBai的分布式并行設(shè)計與算法邏輯進(jìn)行了解耦,使得在Projects下面的算法都可以享受到LiBai下面的分布式并行技術(shù),而且隨著分布式并行技術(shù)的更新,Projects下面的算法代碼不需要任何更新就可以享受到更新后的成果。

6. 和業(yè)界翹楚Megatron比起來,具有不弱于它的吞吐,甚至稍占優(yōu)勢,完整的對比實驗在LiBai tutorialhttps://libai.readthedocs.io/en/latest/tutorials/get_started/Benchmark.html)和《大模型訓(xùn)練難于上青天?效率超群、易用的李白模型庫來了》,這里給一個GPT2的3D并行數(shù)據(jù)簡單感受一下。

可能有人會問,怎么都和Megatron去比,你們各個同行之間有對比數(shù)據(jù)嗎?主要原因有二:1) 只要呂布不說話反駁,那么我邢道榮就有不下于呂布的勇武,人均小呂布,這很合理;2) 大家都是國產(chǎn)框架,中國人不卷中國人,咱們薅著一個外國人可勁兒的打。

下面分章詳細(xì)說說上述優(yōu)點。?開源自助

LiBai最基礎(chǔ)的一個功能:?開源自助。也就是除了LiBai訓(xùn)練出來的模型以外,我們還可以加載PyTorch以及HuggingFace上面的模型進(jìn)行分布式推理。?

由于LiBai的底層是基于OneFlow來實現(xiàn)的,而OneFlow的算子絕大部分都已經(jīng)和PyTorch進(jìn)行了對齊,這能發(fā)揮出什么優(yōu)勢?

使用前還要看看預(yù)備知識。一個完整的模型由兩個部分構(gòu)成:模型結(jié)構(gòu),換種說法就是model.py模型權(quán)重,再換種說法就是model_best.pth。

假設(shè)我們在框架A下面,有modelA.py和model_best_A.pth,我們想在框架B上面跑起來這個框架A下面的模型,應(yīng)該怎么做呢?

在框架B下面,用框架B的算子搭建出一個modelB.py,該modelB的參數(shù)名字可以和modelA的不一致,但是前向推理的邏輯運(yùn)算最好一致,然后去加載model_best_A.pth得到model_A_state_dict(),把model_A_state_dict()里面的參數(shù)格式全部轉(zhuǎn)換成框架B下面支持的格式,其中可以運(yùn)用中間格式進(jìn)行轉(zhuǎn)換。

舉個例子,比如torch.tensor()->np.numpy()(中間格式)->oneflow.tensor()之前提到了modelB中的參數(shù)名字可以和modelA中的不一致,如果不一致,那么需要把model_A_state_dict()中的key值改一下和modelB的一致。

做完了以后,直接加載我們轉(zhuǎn)換好的參數(shù)modelB.load_state_dict(model_A_state_dict),就可以在框架B下面進(jìn)行推理。為了保證模型轉(zhuǎn)換好以后的準(zhǔn)確性,可以喂給modelA以及modelB相同的輸入,檢查一下是否能得到相同輸出。

這個預(yù)備知識不僅限于LiBai,在任何模型復(fù)現(xiàn)或者模型遷移上面都適用。

有了預(yù)備知識以后怎么使用PyTorch或者HuggingFace下面的模型?簡單來說分為以下幾步:

把torch的算子替換為oneflow: 把torch_model.py下面的torch全部替換為oneflow,得到oneflow_model.py.把oneflow_model.py中的layer盡可能地替換成LiBai中支持的layer,只替換你想要的部分也可以(比如只替換Linear層),LiBai會自動把沒有替換的layer 轉(zhuǎn)換成分布式并行所需要的格式。

這一步是支持分布式推理的關(guān)鍵繼承LiBai提供好的分布式推理的基類basic.py,重載轉(zhuǎn)換權(quán)重的函數(shù),按照PyTorch那樣寫好預(yù)處理和后處理,就可以進(jìn)行分布式推理了。

下面鏈接里面有極其詳細(xì)的步驟解答,看在作者不僅授人以魚,還授人以漁,還做了程序員最討厭的文檔活兒,可以順便給LiBai點個star收藏,而且保不齊以后萬一有個什么復(fù)現(xiàn)的任務(wù),這里面的知識點也用得上,至少可以用別人release出來的預(yù)訓(xùn)練權(quán)重來驗證自己復(fù)現(xiàn)的model.py是否正確。這叫什么?這叫call back!

LiBai分布式推理介紹:

http//:github.com/Oneflow-Inc/libai/discussions/386

以MT5應(yīng)用HuggingFace model為例子,我們在2機(jī)4卡下面進(jìn)行模型并行2X流水并行2的分布式推理,跑起來的代碼風(fēng)格如下:

# test_inference.pyfrom libai.inference.text_generation import TextGenerationPipelinefrom libai.utils import distributed as distif __name__ == "__main__": pipeline = TextGenerationPipeline( "projects/MT5/configs/t5_inference.py", data_parallel=1, tensor_parallel=2, pipeline_parallel=2, pipeline_stage_id=[0] * 12 + [1] * 12, pipeline_num_layers=12 * 2, model_path="data_test/t5_inference_model", mode="huggingface", ) text = ["summarize: She is a student, She is tall, She loves study"] dict1 = pipeline(text) if dist.is_main_process(): print(dict1)

那么多機(jī)多卡的分布式推理腳本

在node0上輸入指令:

NODE=2 NODE_RANK=0 ADDR=192.168.0.1 PORT=12345 bash tools/infer.sh test_inference.py 2

在node1上輸入指令:

NODE=2?NODE_RANK=1?ADDR=192.168.0.1?PORT=12345?bash?tools/infer.sh?test_inference.py?2

細(xì)心的朋友已經(jīng)發(fā)現(xiàn)了,LiBai下面可以通過設(shè)置pipeline_stage_id, 來讓用戶自己設(shè)置每個stage上group的層數(shù)是多少,方便在某些極端情況下(比如你的機(jī)器0很強(qiáng),但是機(jī)器1很拉胯,或者你的encoder計算量巨大,但是decoder計算量較小)手動實現(xiàn)負(fù)載均衡。大模型訓(xùn)練眾所周知,大家都喜歡做點"出格"的事情,比如在上班的時候摸魚,在VScode上面炒股......那么LiBai呢?你甚至可以拿它來訓(xùn)練模型!?

在Projects(https://github.com/Oneflow-Inc/libai/tree/main/projects)下支持的模型:

下面來談?wù)勀P椭猓琇iBai有什么不一樣的地方,換句話說,也就是核心競爭力在哪里?

分布式配置和算法邏輯解耦

LiBai進(jìn)行了模塊化的設(shè)計,使得分布式的配置和算法邏輯解耦,這意味著什么??

這意味著用戶只需要把大部分的注意力專注到算法邏輯上面,而不用再苦惱怎么插入各種并行的代碼了。

簡單來說,下面這些模塊都可以在config.py中進(jìn)行一鍵配置。

# my_config.pyfrom libai.config import get_configtrain = get_config("common/train.py").trainoptim = get_config("common/optim.py").optimgraph = get_config("common/models/graph.py").graph# set disttrain.dist.data_parallel_size = 2train.dist.tensor_parallel_size = 2train.dist.pipeline_parallel_size = 2# set model layers for pipelinetrain.dist.pipeline_num_layers = 24# set pipeline_stage_id according to your own needs.# if `None`, LiBai will use its own mode of distributiontrain.dist.custom_pipeline_stage_id = [0]*14 + [1]*10# set auto parallel in LiBaigraph.auto_parallel.enabled = True# enable amp (fp16)train.amp.enabled = True # enable gradient clippingoptim.params.clip_grad_norm = 1.0optim.params.clip_grad_norm_type = 2.0# enable grad accumulation for 8 stepstrain.num_accumulation_steps = 8# enable activation checkpointingtrain.activation_checkpoint.enabled = True# enable zero for leval-2train.zero_optimization.enabled = Truetrain.zero_optimization.stage = 2

單機(jī)和分布式代碼幾乎一致下面給一個簡單的2D并行(數(shù)據(jù)并行+模型并行)的MLP例子, 比如你的Linear層在16384這個維度上面比較大, 需要把它切分在不同的卡上才能裝下, 那么在LiBai下面只需要如下所示就可以完成了,幾乎跟單機(jī)代碼沒有區(qū)別。 ?

from libai.layers.linear import Linearfrom oneflow import nn # write a Simple 2D Parallel MLPclass MLP_2D(nn.Module): def __init__(self,): super().__init__() self.linear1 = Linear(in_features=1024, out_features=16384, parallel="col") self.relu = nn.GELU() self.linear2 = Linear(in_features=16384, out_features=1024, parallel="row") self.dropout = nn.Dropout(p=0.5) def forward(self, x): x = self.linear1(x) x = self.relu(x) x = self.linear2(x) x = self.dropout(x) return x

支持一鍵轉(zhuǎn)換ONNX

本人對一鍵轉(zhuǎn)ONNX的執(zhí)念可謂是相當(dāng)之深了。同樣以MT5為例子,LiBai支持了一鍵轉(zhuǎn)換ONNX的功能,點擊以下鏈接就可以體驗:

https://github.com/Oneflow-Inc/libai/tree/main/libai/onnx_export

更詳細(xì)的說明和教程會在LiBai中持續(xù)發(fā)布。如果這篇文章對你有啟發(fā),請不要吝惜手中的收藏按鈕,歡迎去GitHub上Star、Fork、Watch三連,持續(xù)跟進(jìn)最新進(jìn)展。?

GitHub地址:https://github.com/Oneflow-Inc/libai

引用

1. https://github.com/facebookresearch/detectron2

2. https://github.com/Oneflow-Inc/oneflow

3. https://github.com/Oneflow-Inc/oneflow_convert

4. https://github.com/NVIDIA/Megatron-LM

其他人都在看

機(jī)器學(xué)習(xí)編譯器的前世今生

TPU演進(jìn)十年:Google的十大經(jīng)驗教訓(xùn)

更快的YOLOv5問世,附送全面中文解析教程

中文Stable Diffusion開源;PyTorch優(yōu)化技巧

開源吞噬AI界?從Stable Diffusion的爆火說起

OneEmbedding:單卡訓(xùn)練TB級推薦模型不是夢

大模型訓(xùn)練難?效率超群、易用的“李白”模型庫來了

歡迎Star、試用OneFlow最新版本:GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient. - GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.https://github.com/Oneflow-Inc/oneflow

關(guān)鍵詞:

欧美xxxx做受欧美_www.xxxx精品_国产一区二区三区蝌蚪_国产原创欧美精品_国产福利精品一区_亚洲精品久久久久久下一站 _久久精品国产网站_久久99精品国产_久久综合给合久久狠狠狠97色69_91久久久久久久久久久
久色婷婷小香蕉久久| 日本aⅴ免费视频一区二区三区| 日韩一区二区三区四区五区六区| 国产精品色一区二区三区| 久久99国产精品成人| 欧美电视剧在线观看完整版| 亚洲成人免费在线| 日韩午夜av一区| 日韩精品一二三| 精品国产一区二区三区av性色| 国产综合色在线| 国产精品毛片高清在线完整版 | 亚洲不卡一区二区三区| 欧美日韩不卡一区二区| 久久精品免费观看| 中文字幕一区二区三区不卡| 欧美日本高清视频在线观看| 久久精品国产一区二区三 | 制服丝袜中文字幕一区| 激情综合网激情| 亚洲欧美日韩小说| 日韩免费电影一区| 99久久精品免费精品国产| 日韩av在线播放中文字幕| 亚洲一区二区三区美女| 石原莉奈在线亚洲三区| 欧美在线观看一区| 久久精品国产亚洲aⅴ| 国产精品免费视频观看| 欧美日韩国产区一| 狠狠久久亚洲欧美| 午夜精品免费在线| 国产精品久久三| 欧美sm美女调教| 色综合天天性综合| 国产乱子轮精品视频| 亚洲午夜电影在线观看| 国产精品电影一区二区| 久久亚洲二区三区| 日韩午夜精品电影| 欧美日韩国产一区| 色拍拍在线精品视频8848| 成人一级黄色片| 韩国中文字幕2020精品| 日本三级韩国三级欧美三级| 亚洲国产一区二区视频| 中文av字幕一区| 久久久久久夜精品精品免费| 日韩西西人体444www| 欧美日韩国产另类一区| 欧美三级在线播放| 欧美久久一二区| 欧美色图天堂网| 欧美私人免费视频| 欧美蜜桃一区二区三区| 欧美高清www午色夜在线视频| 在线观看免费成人| 欧美日韩一区在线| 欧美精品18+| 日韩一二三四区| 久久久亚洲精华液精华液精华液| 欧美成人aa大片| 国产欧美日韩不卡免费| 中文字幕在线不卡一区二区三区| 亚洲欧美福利一区二区| 亚洲一区免费观看| 日av在线不卡| 国产91高潮流白浆在线麻豆| 99精品热视频| 在线观看一区二区精品视频| 91精品国产综合久久香蕉麻豆 | 99riav久久精品riav| 成人av资源网站| 欧美亚洲国产怡红院影院| 日韩你懂的电影在线观看| 亚洲国产精品成人综合| 亚洲国产精品影院| 国产精品自拍av| 色哟哟精品一区| 久久众筹精品私拍模特| 亚洲自拍偷拍图区| 黄色精品一二区| 欧美色欧美亚洲另类二区| 久久精品人人做| 水蜜桃久久夜色精品一区的特点| 成人一二三区视频| 久久久亚洲高清| 秋霞av亚洲一区二区三| 91丨九色丨蝌蚪丨老版| 久久精品日产第一区二区三区高清版| 亚洲一二三专区| av爱爱亚洲一区| 久久先锋资源网| 麻豆免费看一区二区三区| 在线观看网站黄不卡| 中文字幕一区二区三区四区| 亚洲成人午夜电影| 精品一区二区日韩| 日韩高清国产一区在线| 91精品国产综合久久精品麻豆| 毛片av中文字幕一区二区| 99精品视频在线观看| 国产肉丝袜一区二区| 韩国成人福利片在线播放| 日韩亚洲欧美在线| 日韩极品在线观看| 欧美三级在线播放| 一区二区三区不卡视频| 老司机午夜精品| 欧美日本乱大交xxxxx| 亚洲欧洲日韩一区二区三区| 亚洲国产综合视频在线观看| 欧美影院午夜播放| 欧美性一二三区| 中文字幕一区二区三区蜜月| 午夜精品一区二区三区三上悠亚| 精品一区精品二区高清| 精品婷婷伊人一区三区三| 久久综合久久鬼色中文字| 91精品免费在线| 尤物在线观看一区| 成人免费视频caoporn| 日韩精品一区二| 亚洲成人动漫在线免费观看| 亚洲免费观看高清完整版在线观看熊| 国模娜娜一区二区三区| 欧美理论片在线| 亚洲综合自拍偷拍| 色综合久久久久综合| 国产日韩精品一区二区三区在线| 久久er精品视频| 91精品国产综合久久国产大片| 亚洲精品伦理在线| 99精品热视频| 亚洲欧美日韩国产综合| 蜜臀精品一区二区三区在线观看| 欧美日韩精品一区二区三区| 亚洲激情图片qvod| 91电影在线观看| 亚洲动漫第一页| 国产精品一卡二卡| 亚洲免费电影在线| 一本色道久久综合精品竹菊| 亚洲三级电影网站| 一本到高清视频免费精品| 亚洲欧美精品午睡沙发| 国产乱子伦视频一区二区三区| 中国色在线观看另类| 99精品黄色片免费大全| 一区二区三区在线播放| 欧美视频一区二区三区| 国内精品国产成人| 久久人人爽人人爽| 91麻豆123| 天堂va蜜桃一区二区三区漫画版| 欧美一级专区免费大片| 91网站黄www| 看电影不卡的网站| 亚洲激情在线激情| 欧美一区二区三区视频在线| 精品一区二区三区免费| 精品久久久久久久人人人人传媒| 福利一区二区在线| 亚洲一二三区视频在线观看| 精品国产成人系列| 色婷婷久久一区二区三区麻豆| 综合中文字幕亚洲| av亚洲精华国产精华| 日产国产欧美视频一区精品| 成人高清免费观看| 五月综合激情网| 国产成人亚洲综合a∨婷婷| 欧美高清视频一二三区| 国产成人av资源| 亚洲国产成人精品视频| 欧美国产一区视频在线观看| 精品成人a区在线观看| 欧美少妇bbb| 菠萝蜜视频在线观看一区| 日本最新不卡在线| 一区二区三区产品免费精品久久75| 国产精品久久久久久福利一牛影视| 欧美一级高清片在线观看| 91老司机福利 在线| 国产精品一区二区在线观看不卡| 午夜精品视频一区| 日本在线播放一区二区三区| 亚洲一区在线免费观看| 亚洲欧美二区三区| 日韩一区在线看| 欧美日韩国产综合一区二区| 欧美在线观看禁18| 欧美视频一区二区三区四区| 91色婷婷久久久久合中文| 国产ts人妖一区二区| 99vv1com这只有精品| 日本乱码高清不卡字幕| 91激情在线视频| 欧美裸体bbwbbwbbw| 日韩欧美国产一区二区在线播放 |