LLMs九層妖塔
【LLMs九層妖塔】分享 LLMs在自然語言處理(ChatGLM、Chinese-LLaMA-Alpaca、小羊駝 Vicuna、LLaMA、GPT4ALL等)、信息檢索(langchain)、語言合成、語言識別、多模態(tài)等領域(Stable Diffusion、MiniGPT-4、VisualGLM-6B、Ziya-Visual等)等 實戰(zhàn)與經(jīng)驗。
Github 地址:https://github.com/km1994/LLMsNineStoryDemonTower
!! LLMs九層妖塔 交流群 (注:人滿 可 添加 小編wx:yzyykm666 加群!)
第一層 LLMs to Natural Language Processing (NLP)
第一重 ChatGLM-6B 系列
ChatGLM-6B
【ChatGLM-6B入門-一】清華大學開源中文版ChatGLM-6B模型學習與實戰(zhàn)
介紹:ChatGLM-6B 環(huán)境配置 和 部署
【ChatGLM-6B入門-二】清華大學開源中文版ChatGLM-6B模型微調(diào)實戰(zhàn)
ChatGLM-6B P-Tuning V2 微調(diào):Fine-tuning the prefix encoder of the model.
【ChatGLM-6B入門-三】ChatGLM 特定任務微調(diào)實戰(zhàn)
【ChatGLM-6B入門-四】ChatGLM + LoRA 進行finetune
介紹:ChatGLM-6B LoRA 微調(diào):Fine-tuning the low-rank adapters of the model.
ChatGLM-6B 小編填坑記
介紹:ChatGLM-6B 在 部署和微調(diào) 過程中 會遇到很多坑,小編掉坑了很多次,為防止 后人和小編一樣繼續(xù)掉坑,小編索性把遇到的坑都填了。
【LLMs學習】關于大模型實踐的一些總結(jié)
...
ChatGLM2-6B
【關于 ChatGLM2 + LoRA 進行finetune 】那些你不知道的事
【LLMs 入門實戰(zhàn) 】基于 ??PEFT 的高效 ??ChatGLM2-6B 微調(diào)
【LLMs 入門實戰(zhàn)】基于 ??QLoRA 的高效 ??ChatGLM2-6B 微調(diào)
第十一重 Llama2
【LLMs 入門實戰(zhàn)】Chinese-Llama-2-7b 模型學習與實戰(zhàn)
https://huggingface.co/ziqingyang/chinese-llama-2-7b
https://huggingface.co/LinkSoul/Chinese-Llama-2-7b-4bit
官網(wǎng):https://ai.meta.com/llama/
論文名稱:《Llama 2: Open Foundation and Fine-Tuned Chat Models》
論文地址:https://ai.meta.com/research/publications/llama-2-open-foundation-and-fine-tuned-chat-models/
演示平臺:https://huggingface.co/spaces/LinkSoul/Chinese-Llama-2-7b
Github 代碼:https://github.com/LinkSoul-AI/Chinese-Llama-2-7b
模型下載地址:
介紹:自打 LLama-2 發(fā)布后就一直在等大佬們發(fā)布 LLama-2 的適配中文版,也是這幾天蹲到了一版由 LinkSoul 發(fā)布的 Chinese-Llama-2-7b,其共發(fā)布了一個常規(guī)版本和一個 4-bit 的量化版本,今天我們主要體驗下 Llama-2 的中文邏輯順便看下其訓練樣本的樣式,后續(xù)有機會把訓練和微調(diào)跑起來。
第十重 Baichuan
Baichuan-13B
【LLMs 入門實戰(zhàn) 】 Baichuan-13B 模型學習與實戰(zhàn)
更大尺寸、更多數(shù)據(jù):Baichuan-13B 在 Baichuan-7B 的基礎上進一步擴大參數(shù)量到 130 億,并且在高質(zhì)量的語料上訓練了 1.4 萬億 tokens,超過 LLaMA-13B 40%,是當前開源 13B 尺寸下訓練數(shù)據(jù)量最多的模型。支持中英雙語,使用 ALiBi 位置編碼,上下文窗口長度為 4096。
同時開源預訓練和對齊模型:預訓練模型是適用開發(fā)者的“基座”,而廣大普通用戶對有對話功能的對齊模型具有更強的需求。因此本次開源同時發(fā)布了對齊模型(Baichuan-13B-Chat),具有很強的對話能力,開箱即用,幾行代碼即可簡單的部署。
更高效的推理:為了支持更廣大用戶的使用,本次同時開源了 int8 和 int4 的量化版本,相對非量化版本在幾乎沒有效果損失的情況下大大降低了部署的機器資源門檻,可以部署在如 Nvidia 3090 這樣的消費級顯卡上。
開源免費可商用:Baichuan-13B 不僅對學術研究完全開放,開發(fā)者也僅需郵件申請并獲得官方商用許可后,即可以免費商用。
官方微調(diào)過(指令對齊):https://huggingface.co/baichuan-inc/Baichuan-13B-Chat
預訓練大模型(未經(jīng)過微調(diào)):https://huggingface.co/baichuan-inc/Baichuan-13B-Base
baichuan-inc/Baichuan-13B:https://github.com/baichuan-inc/Baichuan-13B
Baichuan-13B 大模型:
介紹:Baichuan-13B 是由百川智能繼 Baichuan-7B 之后開發(fā)的包含 130 億參數(shù)的開源可商用的大規(guī)模語言模型,在權(quán)威的中文和英文 benchmark 上均取得同尺寸最好的效果。Baichuan-13B 有如下幾個特點:
baichuan-7B
【LLMs 入門實戰(zhàn) 】 baichuan-7B 學習與實戰(zhàn)
論文名稱:
論文地址:
Github 代碼: https://github.com/baichuan-inc/baichuan-7B
模型:
介紹:由百川智能開發(fā)的一個開源可商用的大規(guī)模預訓練語言模型。基于Transformer結(jié)構(gòu),在大約1.2萬億tokens上訓練的70億參數(shù)模型,支持中英雙語,上下文窗口長度為4096。在標準的中文和英文權(quán)威benchmark(C-EVAL/MMLU)上均取得同尺寸最好的效果。
第二重 Stanford Alpaca 7B
【LLMs 入門實戰(zhàn) —— 五 】Stanford Alpaca 7B 模型學習與實戰(zhàn)
介紹:本教程提供了對LLaMA模型進行微調(diào)的廉價親民 LLMs 學習和微調(diào) 方式,主要介紹對于 Stanford Alpaca 7B 模型在特定任務上 的 微調(diào)實驗,所用的數(shù)據(jù)為OpenAI提供的GPT模型API生成質(zhì)量較高的指令數(shù)據(jù)(僅52k)。
第三重 Chinese-LLaMA-Alpaca
【LLMs 入門實戰(zhàn) —— 六 】Chinese-LLaMA-Alpaca 模型學習與實戰(zhàn)
介紹:本教程主要介紹了 Chinese-ChatLLaMA,提供中文對話模型 ChatLLama 、中文基礎模型 LLaMA-zh 及其訓練數(shù)據(jù)。 模型基于 TencentPretrain 多模態(tài)預訓練框架構(gòu)建
第四重 小羊駝 Vicuna
【LLMs 入門實戰(zhàn) —— 七 】小羊駝 Vicuna模型學習與實戰(zhàn)
介紹:UC伯克利學者聯(lián)手CMU、斯坦福等,再次推出一個全新模型70億/130億參數(shù)的Vicuna,俗稱「小羊駝」(駱馬)。小羊駝號稱能達到GPT-4的90%性能
第五重 MOSS
【LLMs 入門實戰(zhàn) —— 十三 】MOSS 模型學習與實戰(zhàn)
介紹:MOSS是一個支持中英雙語和多種插件的開源對話語言模型,moss-moon系列模型具有160億參數(shù),在FP16精度下可在單張A100/A800或兩張3090顯卡運行,在INT4/8精度下可在單張3090顯卡運行。MOSS基座語言模型在約七千億中英文以及代碼單詞上預訓練得到,后續(xù)經(jīng)過對話指令微調(diào)、插件增強學習和人類偏好訓練具備多輪對話能力及使用多種插件的能力。
局限性:由于模型參數(shù)量較小和自回歸生成范式,MOSS仍然可能生成包含事實性錯誤的誤導性回復或包含偏見/歧視的有害內(nèi)容,請謹慎鑒別和使用MOSS生成的內(nèi)容,請勿將MOSS生成的有害內(nèi)容傳播至互聯(lián)網(wǎng)。若產(chǎn)生不良后果,由傳播者自負。
第六重 BLOOMz
【LLMs 入門實戰(zhàn) —— 十四 】 BLOOMz 模型學習與實戰(zhàn)
介紹:大型語言模型(LLMs)已被證明能夠根據(jù)一些演示或自然語言指令執(zhí)行新的任務。雖然這些能力已經(jīng)導致了廣泛的采用,但大多數(shù)LLM是由資源豐富的組織開發(fā)的,而且經(jīng)常不對公眾開放。作為使這一強大技術民主化的一步,我們提出了BLOOM,一個176B參數(shù)的開放性語言模型,它的設計和建立要感謝數(shù)百名研究人員的合作。BLOOM是一個僅有解碼器的Transformer語言模型,它是在ROOTS語料庫上訓練出來的,該數(shù)據(jù)集包括46種自然語言和13種編程語言(共59種)的數(shù)百個來源。我們發(fā)現(xiàn),BLOOM在各種基準上取得了有競爭力的性能,在經(jīng)歷了多任務提示的微調(diào)后,其結(jié)果更加強大。
模型地址:https://huggingface.co/bigscience/bloomz
第七重 BELLE
【LLMs 入門實戰(zhàn) —— 十五 】 BELLE 模型學習與實戰(zhàn)
介紹:相比如何做好大語言模型的預訓練,BELLE更關注如何在開源預訓練大語言模型的基礎上,幫助每一個人都能夠得到一個屬于自己的、效果盡可能好的具有指令表現(xiàn)能力的語言模型,降低大語言模型、特別是中文大語言模型的研究和應用門檻。為此,BELLE項目會持續(xù)開放指令訓練數(shù)據(jù)、相關模型、訓練代碼、應用場景等,也會持續(xù)評估不同訓練數(shù)據(jù)、訓練算法等對模型表現(xiàn)的影響。BELLE針對中文做了優(yōu)化,模型調(diào)優(yōu)僅使用由ChatGPT生產(chǎn)的數(shù)據(jù)(不包含任何其他數(shù)據(jù))。
github 地址: https://github.com/LianjiaTech/BELLE
第八重 ChatRWKV
【LLMs 入門實戰(zhàn) —— 十八 】 ChatRWKV 模型學習與實戰(zhàn)
Raven 模型:適合直接聊天,適合 +i 指令。有很多種語言的版本,看清楚用哪個。適合聊天、完成任務、寫代碼。可以作為任務去寫文稿、大綱、故事、詩歌等等,但文筆不如 testNovel 系列模型。
Novel-ChnEng 模型:中英文小說模型,可以用 +gen 生成世界設定(如果會寫 prompt,可以控制下文劇情和人物),可以寫科幻奇幻。不適合聊天,不適合 +i 指令。
Novel-Chn 模型:純中文網(wǎng)文模型,只能用 +gen 續(xù)寫網(wǎng)文(不能生成世界設定等等),但是寫網(wǎng)文寫得更好(也更小白文,適合寫男頻女頻)。不適合聊天,不適合 +i 指令。
Novel-ChnEng-ChnPro 模型:將 Novel-ChnEng 在高質(zhì)量作品微調(diào)(名著,科幻,奇幻,古典,翻譯,等等)。
目前 RWKV 有大量模型,對應各種場景,各種語言,請選擇合適的模型:
github: https://github.com/BlinkDL/ChatRWKV
模型文件:https://huggingface.co/BlinkDL
第九重 ChatGPT
《ChatGPT Prompt Engineering for Developers》 學習 之 如何 編寫 Prompt?
第一個方面:編寫清晰、具體的指令
第二個方面:給模型些時間思考
吳恩達老師與OpenAI合作推出《ChatGPT Prompt Engineering for Developers》
動機:吳恩達老師與OpenAI合作推出《ChatGPT Prompt Engineering for Developers》課程
介紹:如何編寫 Prompt:
《ChatGPT Prompt Engineering for Developers》 學習 之 如何 優(yōu)化 Prompt?
吳恩達老師與OpenAI合作推出《ChatGPT Prompt Engineering for Developers》
動機:吳恩達老師與OpenAI合作推出《ChatGPT Prompt Engineering for Developers》課程
介紹:優(yōu)化編寫好 Prompt
《ChatGPT Prompt Engineering for Developers》 學習 之 如何使用 Prompt 處理 NLP特定任務?
吳恩達老師與OpenAI合作推出《ChatGPT Prompt Engineering for Developers》
動機:吳恩達老師與OpenAI合作推出《ChatGPT Prompt Engineering for Developers》課程
介紹:如何構(gòu)建ChatGPT Prompt以處理文本摘要、推斷和轉(zhuǎn)換(翻譯、糾錯、風格轉(zhuǎn)換、格式轉(zhuǎn)換等)這些常見的NLP任務
第九層 LLMs to interview
LLMs 降龍十八掌
為什么 LLMs 不容易出現(xiàn) 災難性遺忘問題?
LLMs to NLP 下游任務 經(jīng)驗貼
訓練數(shù)據(jù)如何構(gòu)建?
如何 融入 之前對話信息
如果只跑一個私有大模型,但是很多用戶同時訪問。這些針對不同用戶的chat history怎么存取比較高效?
chatglm微調(diào)完針對相同的問題輸出都是一樣的,有辦法讓他隨機一點嗎?
使用fastllm加速推理
如何解決大模型遺忘問題#ChatGPT# #LLM (大型語言模型)
Fine-Tuning max_length 選擇 問題
Fine-Tuning Learning rate 選擇 問題
如何 向GPT/LLM模型添加額外知識?
如何解決LLM大模型fine-tune過擬合問題?
英文模型需要做詞表擴充嗎?
全參finetune,數(shù)據(jù)配比?
百川13b強化學習時遇到參數(shù)不更新的問題?
使用lion優(yōu)化器節(jié)省顯存?
使用lora訓練的參數(shù)配置?
...
LLMs Fine-Tuning 經(jīng)驗貼
LLMs 推理 經(jīng)驗貼
LLMs 部署 經(jīng)驗貼
LLMs 多輪對話 經(jīng)驗貼
數(shù)據(jù)構(gòu)建篇
LLMs 胡思亂想
【LLMs】大模型 千面郎君
大模型【LLMs】提示工程 是什么?
提示工程 如何添加進 大模型【LLMs】?
微調(diào)(FineTuning) vs 提示工程?
微調(diào)(FineTuning) vs 提示工程 在應用場景中關系雨聯(lián)系?
大模型【LLMs】Few-shot提示方法 是什么?
大模型【LLMs】中有一種 涌現(xiàn)現(xiàn)象,你知道么?
大模型【LLMs】涌現(xiàn)現(xiàn)象主要體現(xiàn)在哪些方面?
大模型【LLMs】涌現(xiàn)現(xiàn)象主激活方式?
大模型【LLMs】思維鏈問題?
大模型【LLMs】思維鏈本質(zhì)是什么?
大模型【LLMs】思維鏈優(yōu)點是什么?
大模型【LLMs】思維鏈類型和策略?
大模型【LLMs】逐步Zero-shot 介紹?
大模型【LLMs】Zero-shot-CoT提示策略定義?
大模型【LLMs】Zero-shot-CoT提示策略應用方法?
大模型【LLMs】Few-shot-CoT提示策略定義?
大模型【LLMs】Few-shot-CoT提示策略核心思想是什么?
大模型【LLMs】Few-shot-CoT提示策略應用方法是什么?
大模型【LLMs】泛化問題?
大模型【LLMs】微調(diào)問題?
大模型【LLMs】微調(diào)有哪些優(yōu)點?
大模型【LLMs】指令微調(diào)問題?
簡單介紹強化學習?
簡單介紹一下 RLHF?
簡單 介紹一下 大模型【LLMs】?
大模型【LLMs】后面跟的 175B、60B、540B等 指什么?
大模型【LLMs】具有什么優(yōu)點?
大模型【LLMs】具有什么缺點?
大模型常識面
大模型強化學習面
大模型【LLMs】微調(diào)篇
大模型【LLMs】思維鏈篇
大模型【LLMs】涌現(xiàn)現(xiàn)象篇
大模型【LLMs】提示工程篇
大模型的重復生成現(xiàn)象如何緩解?
為何會出現(xiàn)重復生成現(xiàn)象?
如何減少大模型重復生成?
LoRA這種微調(diào)方法和全參數(shù)比起來有什么劣勢嗎?
什么是 LoRA?
LoRA 優(yōu)點是什么?
LoRA 缺點是什么?
LoRA這種微調(diào)方法和全參數(shù)比起來有什么劣勢嗎?
LoRA這種微調(diào)方法和全參數(shù) 如何選擇?
LLaMa-1 從原理到實踐分析
LLaMa-1 理論介紹
LLaMa 模型架構(gòu)介紹
LLaMa 優(yōu)化器介紹
LLaMa-1 實踐介紹
LLaMa-2 從原理到實踐分析
LLaMa-2 理論介紹
LLaMa-2 實踐介紹
基于PyTorch來優(yōu)化大模型訓練的內(nèi)存(顯存)
為什么需要 使用梯度累積創(chuàng)建微批次(Using Gradient Accumulation to Create Microbatches)?
什么是 使用梯度累積創(chuàng)建微批次(Using Gradient Accumulation to Create Microbatches)?
...
為什么需要 降低訓練批處理大小(Reducing the Batchsize)?
什么是 降低訓練批處理大小(Reducing the Batchsize)?
...
為什么需要 低精度訓練(Lower-Precision Training)?
什么是 低精度訓練(Lower-Precision Training)?
...
為什么需要 混合精度訓練(Mixed-Precision Training)?
什么是 混合精度訓練(Mixed-Precision Training)?
混合精度訓練(Mixed-Precision Training)實現(xiàn)步驟?
...
LLMs Fine-Tuning 框架依賴問題?
LLMs Fine-Tuning 顯存問題?
如何解決大模型遺忘問題#ChatGPT# #LLM (大型語言模型)?
...
動機:峰值內(nèi)存(顯存)的消耗直接決定了 機器 是否 支撐大模型訓練
LLMs Fine-Tuning 經(jīng)驗貼
混合精度訓練(Mixed-Precision Training)
低精度訓練(Lower-Precision Training)
降低訓練批處理大小(Reducing the Batchsize)
使用梯度累積創(chuàng)建微批次(Using Gradient Accumulation to Create Microbatches)
如何緩解大模型幻覺?
為什么 會 出現(xiàn) 大模型幻覺?
如何 緩解 大模型幻覺?
第八層 LLMs to Inference acceleration
LLM(大語言模型)部署加速方法——PagedAttention
什么是 PagedAttention?
PagedAttention 如何存儲 連續(xù)的key和value?
PagedAttention 技術細節(jié)?
PagedAttention 如何 實現(xiàn)安全共享?
PagedAttention 源碼介紹?
LLM(大語言模型)部署加速方法——Faster Transformer
為什么需要 Faster Transformer?
什么是 FasterTransformer?
FasterTransformer 核心?
FasterTransformer 優(yōu)化?
純Python超輕量高性能LLM推理框架 —— LightLLM
TGI由于顯存碎片化嚴重,所以很難達到較高的吞吐量;
vLLM因引入了PageAttention,但是由于整體實現(xiàn)細節(jié)更利于小模型推理,所以在大模型上的并發(fā)性能并不是十分理想(使用的默認配置);
相比之下,LightLLM則可以在各種大小的模型下都保持穩(wěn)健的性能,在大模型上(LLaMA-65B)相對TGI和vLLM實現(xiàn)了3倍左右的2提升。
顯存碎片化嚴重
請求調(diào)度效率低
kernel定制化難度高
為什么 需要 LightLLM ?
介紹:基于純Python語言的大模型推理部署框架LightLLM,方便研究員進行輕量級的本地部署和定制修改,用于快速擴展對不同模型的支持,吸納層出不窮的優(yōu)秀開源特性,探索最優(yōu)服務架構(gòu)。
LightLLM 性能表現(xiàn)
大模型推理加速工具 —— vLLM
最先進的服務吞吐量;
PagedAttention 可以有效的管理注意力的鍵和值;
動態(tài)批處理請求;
優(yōu)化好的 CUDA 內(nèi)核;
介紹:vLLM是一個開源的LLM推理和服務引擎。它利用了全新的注意力算法「PagedAttention」,有效地管理注意力鍵和值。
vLLM 具有哪些特點 ?
第二層 LLMs to Parameter Efficient Fine-Tuning (PEFT)
第一重 分布式訓練神器
分布式訓練神器 之 ZeRO 學習
動機:雖然 DataParallel (DP) 因為簡單易實現(xiàn),所以目前應用相比于其他兩種 廣泛,但是 由于 DataParallel (DP) 需要 每張卡都存儲一個模型,導致 顯存大小 成為 制約模型規(guī)模 的 主要因素。
核心思路:去除數(shù)據(jù)并行中的冗余參數(shù),使每張卡只存儲一部分模型狀態(tài),從而減少顯存占用。
圖解分布式訓練(一) —— 流水線并行(Pipeline Parallelism)
回顧ChatGPT的發(fā)展歷程,我們可以總結(jié)出大語言模型(LLM)取得驚艷效果的要點(重要性從高到低排序):
愿意燒錢,且接受“燒錢 != 好模型”的現(xiàn)實
高質(zhì)量的訓練語料
高效的分布式訓練框架和充沛優(yōu)質(zhì)的硬件資源
算法的迭代創(chuàng)新
動機:
介紹:在大模型訓練這個系列里,我們將一起探索學習幾種經(jīng)典的分布式并行范式,包括流水線并行(Pipeline Parallelism),數(shù)據(jù)并行(Data Parallelism)和張量并行(Tensor Parallesim)。
圖解分布式訓練(二) —— nn.DataParallel
計算如何協(xié)同?因為每個GPU都需要計算模型參數(shù)的梯度并將其發(fā)送給其他GPU,因此需要使用同步機制來保證計算正確性。一般有兩種同步方式:
數(shù)據(jù)同步:在每個GPU上計算模型參數(shù)的梯度,然后將梯度發(fā)送到其他GPU上進行匯總,最終更新模型參數(shù)。
模型同步:在每個GPU上計算模型參數(shù)的梯度,然后將模型參數(shù)廣播到其他GPU上進行匯總,最終更新模型參數(shù)。
多GPU并行訓練的原理就是將模型參數(shù)和數(shù)據(jù)分布到多個GPU上,同時利用多個GPU計算加速訓練過程。具體實現(xiàn)需要考慮以下兩個問題:
數(shù)據(jù)如何劃分?因為模型需要處理的數(shù)據(jù)通常很大,將所有數(shù)據(jù)放入單個GPU內(nèi)存中可能會導致內(nèi)存不足,因此我們需要將數(shù)據(jù)劃分到多個GPU上。
動機:
介紹:
圖解分布式訓練(三) —— nn.parallel.DistributedDataParallel
**數(shù)據(jù)如何劃分?**因為模型需要處理的數(shù)據(jù)通常很大,將所有數(shù)據(jù)放入單個GPU內(nèi)存中可能會導致內(nèi)存不足,因此我們需要將數(shù)據(jù)劃分到多個GPU上。一般有兩種劃分方式:
**計算如何協(xié)同?**因為每個GPU都需要計算模型參數(shù)的梯度并將其發(fā)送給其他GPU,因此需要使用同步機制來保證計算正確性。一般有兩種同步方式:
DP 只支持 單機多卡場景,在 多機多卡 場景 下,DP 的 通訊問題將被放大:
數(shù)據(jù)并行:將數(shù)據(jù)分割成多個小批次,每個GPU處理其中的一個小批次,然后將梯度匯總后更新模型參數(shù)。
模型并行:將模型分解成多個部分,每個GPU處理其中一個部分,并將處理結(jié)果傳遞給其他GPU以獲得最終結(jié)果。
數(shù)據(jù)同步:在每個GPU上計算模型參數(shù)的梯度,然后將梯度發(fā)送到其他GPU上進行匯總,最終更新模型參數(shù)。
模型同步:在每個GPU上計算模型參數(shù)的梯度,然后將模型參數(shù)廣播到其他GPU上進行匯總,最終更新模型參數(shù)。
DDP首先要解決的就是通訊問題:將Server上的通訊壓力均衡轉(zhuǎn)到各個Worker上。實現(xiàn)這一點后,可以進一步去Server,留Worker。
動機:
介紹:上節(jié)講到 DP 只支持 單機多卡場景,主要原因是 DP 無法數(shù)據(jù)并行中通訊負載不均的問題, 而 DDP 能夠解決 該問題 的 核心在于 Ring-AllReduce。它由百度最先提出,非常有效地解決了數(shù)據(jù)并行中通訊負載不均的問題,使得DDP得以實現(xiàn)。
圖解分布式訓練(四) —— torch.multiprocessing 詳細解析
介紹:torch.multiprocessing是本機multiprocessing模塊的封裝。封裝了multiprocessing模塊。它注冊自定義的reducer,它使用共享內(nèi)存為不同進程中的相同數(shù)據(jù)提供視圖共享。一旦張量/存儲被移動到shared_memory(參見sharememory()),就可以將其發(fā)送到其他進程而不進行其它任何操作。
圖解分布式訓練(五) —— AMP混合精度訓練 詳細解析
動機:PyTorch 1.6版本今天發(fā)布了,帶來的最大更新就是自動混合精度。
介紹:在某些上下文中torch.FloatTensor有優(yōu)勢,在某些上下文中torch.HalfTensor有優(yōu)勢唄。答案進一步可以轉(zhuǎn)化為,相比于之前的默認的torch.FloatTensor,torch.HalfTensor有時具有優(yōu)勢,有時劣勢不可忽視。
圖解分布式訓練(六) —— Pytorch的 DeepSpeed 詳細解析
最常見的深度學習框架應該是TensorFlow、Pytorch、Keras,但是這些框架在面向大規(guī)模模型的時候都不是很方便。
比如Pytorch的分布式并行計算框架(Distributed Data Parallel,簡稱DDP),它也僅僅是能將數(shù)據(jù)并行,放到各個GPU的模型上進行訓練。
也就是說,DDP的應用場景在你的模型大小大于顯卡顯存大小時,它就很難繼續(xù)使用了,除非你自己再將模型參數(shù)拆散分散到各個GPU上。
動機:
介紹:在分布式計算環(huán)境中,需要理解幾個非常基礎的概念:節(jié)點編號、全局進程編號、局部進程編號、全局總進程數(shù)和主節(jié)點。其中,主節(jié)點負責協(xié)調(diào)所有其他節(jié)點和進程的工作,因此是整個系統(tǒng)的關鍵部分。
圖解分布式訓練(七) —— accelerate 分布式訓練 詳細解析
介紹:PyTorch Accelerate 是一個 PyTorch 的加速工具包,旨在簡化 PyTorch 訓練和推斷的開發(fā)過程,并提高性能。它是由 Hugging Face、NVIDIA、AWS 和 Microsoft 等公司聯(lián)合開發(fā)的,是一個開源項目。
第二重 LLMs Trick
LLMs Trick
第三重 LLMTune
【LLMs 入門實戰(zhàn) —— 十六 】 LLMTune 模型學習與實戰(zhàn)
動機:大語言模型雖然能力很強,目前開源生態(tài)也很豐富,但是在特定領域微調(diào)大模型依然需要大規(guī)格的顯卡。例如,清華大學發(fā)布的ChatGLM-6B,參數(shù)規(guī)模60億,在沒有量化的情況下微調(diào)需要14GB顯存(parameter-efficient fine-tuning,PEFT)。在沒有任何優(yōu)化的前提下,每10億參數(shù)的全精度(32bit)模型載入到顯存中就需要4GB,而int8量化后也需要1GB顯存。而目前開源最強的模型LLaMA,其最高參數(shù)維650億規(guī)模,全精度模型載入就需要260GB,顯然已經(jīng)超出了大部分人的硬件水平。更不要說對模型進行微調(diào)(微調(diào)需要訓練更新參數(shù),推理只需要前向計算即可,因此,微調(diào)需要更多的顯存才能支持)。
介紹:Cornell Tech開源的LLMTune就是為了降低大模型微調(diào)難度所提出的一種解決方案。對于650億參數(shù)的LLaMA模型微調(diào)僅需要40GB顯存即可。
github 地址: https://github.com/kuleshov-group/llmtune
第四重 QLoRA
【LLMs 入門實戰(zhàn) —— 二十 】 QLoRA 模型學習與實戰(zhàn)
特點:
(a)4位NormalFloat(NF4),這是一種對于正態(tài)分布權(quán)重來說在信息論上是最優(yōu)的數(shù)據(jù)類型;
(b)雙量化,通過量化量化常數(shù)來減少平均內(nèi)存占用;
(c)分頁優(yōu)化器,用于管理內(nèi)存峰值。
在Vicuna基準測試中表現(xiàn)優(yōu)于所有先前公開發(fā)布的模型,達到ChatGPT性能水平的99.3%,僅需要單個GPU上的24小時微調(diào)時間;
QLORA引入了一些創(chuàng)新來節(jié)省內(nèi)存而不犧牲性能:
https://huggingface.co/BlinkDL
artidoro/qlora
模型:timdettmers (Tim Dettmers)
量化代碼:TimDettmers/bitsandbytes
BLOG : Making LLMs even more accessible with bitsandbytes, 4-bit quantization and QLoRA
Demo環(huán)境:Guanaco Playground Tgi - a Hugging Face Space by uwnlp
介紹:5月24日華盛頓大學的研究者發(fā)布了QLoRA技術及用其生成的Guanaco大模型。
【LLMs 入門實戰(zhàn) —— 二十七 】【QLoRA實戰(zhàn)】使用單卡高效微調(diào)bloom-7b1
https://huggingface.co/BlinkDL
artidoro/qlora
模型:timdettmers (Tim Dettmers)
量化代碼:TimDettmers/bitsandbytes
BLOG : Making LLMs even more accessible with bitsandbytes, 4-bit quantization and QLoRA
【LLMs 入門實戰(zhàn) 】Anima 學習與實戰(zhàn)
Github 代碼:https://github.com/lyogavin/Anima
模型:https://huggingface.co/lyogavin/Anima33B
動機:之前大部分開源可finetune的模型大都是比較小的模型7B或者13B,雖然可以在一些簡單的chatbot評測集上,通過finetune訓練有不錯的表現(xiàn)。但是由于這些模型規(guī)模還是有限,LLM核心的reasoning的能力還是相對比較弱。這就是為什么很多這種小規(guī)模的模型在實際應用的場景表現(xiàn)像是個玩具。chatbot評測集比較簡單,真正比較考驗模型能力的復雜邏輯推理及數(shù)學問題上小模型和大模型差距還是很明顯的。
介紹:QLoRA的優(yōu)化方法,第一次讓33B規(guī)模的模型可以比較民主化的,比較低成本的finetune訓練,讓33B模型的普及使用成為了可能。我們認為33B模型既可以發(fā)揮大規(guī)模模型的比較強的推理能力,又可以針對私有業(yè)務領域數(shù)據(jù)進行靈活的finetune訓練提升對于LLM的控制力。
點擊原文查看【所有內(nèi)容】
