從零實現(xiàn)BERT、GPT及Difussion類算法:文章簡介及目錄
本教程特點:
除了python基礎庫和pytorch基礎運算外,不借助其他第三方庫
從零推導、實現(xiàn)Transformer及Bert、GPT、Diffusion等熱門模型
從零實現(xiàn)data parallel、tensor parallel、pipeline parallel等并行訓練策略
借助開源大模型權重,從零實現(xiàn)SFT+RLHF的訓練、部署
平時工作忙,如果有同學有精力和意愿來一起完善代碼和教程,歡迎私信聯(lián)系
隨著Transformer在文本、圖像等領域的應用,以及ChatGPT的爆火,可以說只要掌握了基礎算法知識和Transformer,幾乎能開發(fā)出任意AI算法。但是huggingface的Transformers有很多穩(wěn)定性代碼導致學習成本太高,所以打算從頭寫一寫Transformer及bert、gpt、diffusion(up主自己是做NLP的,所以diffusion模型會放在最后)等模型,并把這個過程記錄一下,一方面是為了自身鞏固,另一方面也希望給還沒完全掌握算法細節(jié)的同學提供參考。希望通過本教程的學習,可以理解AIGC模型的開發(fā)原理。本教程完全基于個人學習過程中的理解,難免有不足和錯誤,歡迎指正和探討。
本教程分成8個部分(配套代碼見https://github.com/firechecking/CleanTransformer)
第一部分:我們會開發(fā)NLP中的BPE、WordPiece、ULM分詞,實現(xiàn)分詞器的train、tokenize、encode、decode;
第二部分:會復現(xiàn)《attention is all you need》中的LayerNorm、MultiHeadAttention,以及TransformerBlock;
第三部分:實現(xiàn)完整的Bert和GPT1/2分詞器、模型搭建,并將下載huggingface的Bert、GPT2模型權重加載到我們的框架中完成推理;
第四部分:為了實現(xiàn)生成模型的推理,我們在這一章會實現(xiàn)常用的3種生成策略:Greedy Search、Beam Search、Beam Sample;
第五部分:這部分我們將實現(xiàn)SGD、Adam這2個常用的Optimizer,MSELoss和CrossEntropyLoss這2個常用loss,并在小規(guī)模數(shù)據(jù)集上驗證模型訓練和模型部署;
前5個部分的配套代碼已經(jīng)開發(fā)完成,大家可以clone代碼自己測試和修改。后面幾個部分的代碼還在開發(fā)中,會隨著教程一起在代碼庫中更新。
第六部分:加載LLaMA模型權重,基于指令微調數(shù)據(jù)集和RLHF數(shù)據(jù)集,實現(xiàn)模型的指令微調,然后部署一個可對外提供服務的大模型實例;
第七部分:為了實現(xiàn)更大規(guī)模的模型訓練,這部分我們要在框架中實現(xiàn)分布式訓練(將要實現(xiàn)data parallel、tensor parallel、pipeline parallel這三種并行方法),同時會嘗試activition checkpoint及懶加載等方式,在盡可能少的GPU上實現(xiàn)大模型訓練;
第八部分:Diffusion等圖像生成模型開發(fā)、訓練、優(yōu)化、部署等