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