練配方全復(fù)盤:4300萬條指令、16張A100與8-bit AdamW優(yōu)化器)
GPT-NeoXT-Chat-Base-20B訓(xùn)練配方全復(fù)盤4300萬條指令、16張A100與8-bit AdamW優(yōu)化器【免費(fèi)下載鏈接】GPT-NeoXT-Chat-Base-20B項(xiàng)目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/GPT-NeoXT-Chat-Base-20BGPT-NeoXT-Chat-Base-20B 是 Together AI 基于 EleutherAI GPT-NeoX 微調(diào)而來的 200 億參數(shù)開源對話大模型使用 4300 萬條高質(zhì)量指令在 100% 碳負(fù)計(jì)算上訓(xùn)練完成。本文為你完整復(fù)盤這套訓(xùn)練配方數(shù)據(jù)從哪里來、16 張 A100 如何撐起 52 萬 token 的巨量批處理、8-bit AdamW 優(yōu)化器為什么能省顯存以及新手如何把模型跑起來。 一分鐘認(rèn)識它是什么模型項(xiàng)目說明模型規(guī)模20B 參數(shù)約 200 億基礎(chǔ)模型EleutherAI GPT-NeoX模型類型對話式語言模型英文授權(quán)協(xié)議Apache 2.0可免費(fèi)商用訓(xùn)練方式4300 萬條指令微調(diào) 少量人類反饋微調(diào)它不是從零訓(xùn)練的新模型而是給通用大模型上了一套對話專項(xiàng)課重點(diǎn)強(qiáng)化了問答、文本分類、信息抽取和摘要四類任務(wù)。訓(xùn)練完成后又用一批人類反饋數(shù)據(jù)做了二次微調(diào)讓模型的回答更貼合人的偏好。 訓(xùn)練配方核心參數(shù)一覽配置項(xiàng)數(shù)值訓(xùn)練硬件2 節(jié)點(diǎn) × 8 張 A100共 16 張優(yōu)化器8-bit AdamWbitsandbytes 實(shí)現(xiàn)梯度累積2全局批大小2 × 2 × 64 × 2048 524,288 tokens學(xué)習(xí)率前 100 步升溫至 1e-6之后保持恒定訓(xùn)練數(shù)據(jù)4300 萬條高質(zhì)量指令上下文長度2048 tokens這張表就是整個(gè)訓(xùn)練配方的骨架下面逐項(xiàng)拆解背后的原因。 4300 萬條指令數(shù)據(jù)從哪里來數(shù)據(jù)規(guī)模4300 萬條43 million指令-回答對全部來自 LAION 開源的 OIG 數(shù)據(jù)集。數(shù)據(jù)整理Together 聯(lián)合 LAION 和 Ontocord.ai 共同完成數(shù)據(jù)篩選與質(zhì)量控制任務(wù)覆蓋問答、分類、抽取、摘要等對話式任務(wù)數(shù)據(jù)開放整套訓(xùn)練數(shù)據(jù)通過 Together 的 OpenDataHub 開源歡迎研究者復(fù)現(xiàn)反饋微調(diào)在指令微調(diào)之后又加入少量人類偏好反饋數(shù)據(jù)提升模型對話時(shí)的貼心程度。對新手來說這里最大的啟示是大模型對話能力的差距往往不在架構(gòu)而在指令數(shù)據(jù)的規(guī)模和質(zhì)量。?? 16 張 A100 如何撐起 52 萬 token 批處理訓(xùn)練采用 2 個(gè)節(jié)點(diǎn)、每節(jié)點(diǎn) 8 張 A100 的 16 卡集群。每個(gè)優(yōu)化器步處理的全局批大小為524,288 tokens按 2 × 2 × 64 × 2048 計(jì)算再疊加 2 次梯度累積單步計(jì)算量相當(dāng)可觀。兩個(gè)容易忽視的細(xì)節(jié)學(xué)習(xí)率只有 1e-6比常規(guī)訓(xùn)練小兩個(gè)數(shù)量級——因?yàn)檫@是微調(diào)而非從零訓(xùn)練超小的學(xué)習(xí)率能溫和地注入對話能力同時(shí)保住基礎(chǔ)模型的通用知識先 100 步升溫再保持恒定——避免訓(xùn)練初期因?qū)W習(xí)率突變導(dǎo)致的震蕩后期恒定學(xué)習(xí)率則保證收斂穩(wěn)定。 為什么選 8-bit AdamW 優(yōu)化器這是整套配方里最省的一筆 AdamW 優(yōu)化器需要為每個(gè)參數(shù)額外維護(hù)兩個(gè)動量狀態(tài)一階矩和二階矩。如果按 32 位浮點(diǎn)存儲200 億參數(shù)僅優(yōu)化器狀態(tài)就要約160GB 顯存而 8-bit AdamW 把這些狀態(tài)量化到 8 位存儲直接壓縮到約40GB節(jié)省了約 120GB。正是這份顯存紅利讓 20B 模型的微調(diào)可以落在 16 張 A100 上完成——否則集群規(guī)模至少還要翻倍。這也是如今大模型省卡訓(xùn)練的主流思路之一權(quán)重用半精度優(yōu)化器用低精度。 模型結(jié)構(gòu)與關(guān)鍵配置解讀打開倉庫中的 config.json 文件純文本配置可以看到模型的全部身份證信息44 層 Transformer隱藏層寬度 6144注意力頭 64 個(gè)前饋中間層 24576旋轉(zhuǎn)位置編碼RoPE只作用于 25% 的維度rotary_pct 0.25兼顧長距離建模與穩(wěn)定性詞表大小 50,432最大上下文 2048 tokens權(quán)重以fp16 半精度保存共切分為 5 個(gè)分片文件pytorch_model-00001-of-00005.bin 至 pytorch_model-00005-of-00005.bin合計(jì)約41.3 GB分片映射關(guān)系記錄在 pytorch_model.bin.index.json 中。對話格式非常簡單直接套用即可human: 你好換行bot:特殊標(biāo)記定義在 special_tokens_map.json 中|imstart|編號 0同時(shí)充當(dāng)開始/結(jié)束/未知 token和|padding|編號 1填充用。 如何獲取并在本地運(yùn)行一鍵獲取模型倉庫地址git clone https://gitcode.com/hf_mirrors/ai-gitcode/GPT-NeoXT-Chat-Base-20B顯存需求速查表運(yùn)行方式最低顯存適合人群FP16 全精度GPU約 48GB單張 A6000/4090 48G 級別顯卡8-bit 量化GPU約 24GB4090、A10 等 24G 顯卡bfloat16CPU無顯卡要求體驗(yàn)流程速度較慢最簡推理示例3 行核心代碼from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer AutoTokenizer.from_pretrained(togethercomputer/GPT-NeoXT-Chat-Base-20B) model AutoModelForCausalLM.from_pretrained(togethercomputer/GPT-NeoXT-Chat-Base-20B, torch_dtypetorch.float16).to(cuda:0) inputs tokenizer(human: 你好\nbot:, return_tensorspt).to(model.device) print(tokenizer.decode(model.generate(**inputs, max_new_tokens10, do_sampleTrue, temperature0.8)[0]))? 強(qiáng)項(xiàng)與短板速覽 開箱即用的強(qiáng)項(xiàng)摘要 上下文內(nèi)問答把長文壓縮成一句話并能基于原文連續(xù)多輪追問結(jié)構(gòu)化抽取從郵件、合同中提取信息并生成表格文本分類情感、類別判斷準(zhǔn)確率高少樣本few-shot提示下表現(xiàn)更好。 需要留意的短板短板建議知識類封閉問答可能一本正經(jīng)地胡說重要信息務(wù)必人工核查代碼能力有限訓(xùn)練時(shí)源代碼語料不足寫代碼建議換專用模型偶爾重復(fù)回答刷新開啟新對話即可緩解話題切換不靈活中途換話題時(shí)明確重申新話題不擅長長文創(chuàng)意寫作故事、長文創(chuàng)作非其強(qiáng)項(xiàng)? 新手常見問題 FAQQ1GPT-NeoXT-Chat-Base-20B 和 GPT-NeoX 是什么關(guān)系A(chǔ)GPT-NeoX 是 EleutherAI 的 20B 通用基座模型GPT-NeoXT 是 Together AI 在其基礎(chǔ)上做對話指令微調(diào) 反饋微調(diào)后的聊天專用版。Q2Apache 2.0 協(xié)議意味著什么A模型權(quán)重可免費(fèi)商用、可修改、可再分發(fā)只要求保留原版權(quán)聲明對企業(yè)和研究機(jī)構(gòu)都很友好。Q3上下文只有 2048夠用嗎A日常多輪對話綽綽有余處理長文檔時(shí)建議先做分塊或摘要再交給模型。 倉庫文件清單文件作用README.md模型文檔訓(xùn)練配置、使用示例、強(qiáng)項(xiàng)與局限config.json模型結(jié)構(gòu)配置層數(shù)、維度、位置編碼等pytorch_model-00001~00005-of-00005.bin權(quán)重分片fp16共約 41.3GBpytorch_model.bin.index.json權(quán)重分片索引映射tokenizer.json / tokenizer_config.json分詞器詞表與配置源自 GPT-NeoXspecial_tokens_map.json特殊 token 定義\|imstart\|、\|padding\|寫在最后回顧這套訓(xùn)練配方它給出了一個(gè)可復(fù)制的開源對話模型標(biāo)準(zhǔn)答案4300 萬條高質(zhì)量指令打底 16 張 A100 的合理算力 8-bit AdamW 的顯存優(yōu)化 超小學(xué)習(xí)率的穩(wěn)妥微調(diào)。Apache 2.0 協(xié)議讓它成為研究與落地都非常友好的選擇——如果你的場景是客服問答、文檔摘要或信息抽取現(xiàn)在就可以把這份 41GB 的成品下載下來試試 【免費(fèi)下載鏈接】GPT-NeoXT-Chat-Base-20B項(xiàng)目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/GPT-NeoXT-Chat-Base-20B創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考