智源千萬(wàn)級(jí)指令微調(diào)數(shù)據(jù)集Infinity-Instruct持續(xù)迭代,Llama3.1僅微調(diào)即可接近GPT-4
指令微調(diào)是引導(dǎo)語(yǔ)言模型落地、構(gòu)建高性能對(duì)話(huà)模型的關(guān)鍵一步。針對(duì)目前開(kāi)源的指令數(shù)據(jù)集質(zhì)量低、覆蓋領(lǐng)域少、數(shù)據(jù)信息不透明等問(wèn)題,智源研究院推出了千萬(wàn)級(jí)指令微調(diào)數(shù)據(jù)集Infinity Instruct。該數(shù)據(jù)集今年6月發(fā)布,近日完成了新一輪迭代,包括Infinity-Instruct-7M基礎(chǔ)指令數(shù)據(jù)集和Infinity-Instruct-Gen對(duì)話(huà)指令數(shù)據(jù)集。
Infinity-Instruct-7M包含744萬(wàn)條數(shù)學(xué)、代碼、常識(shí)問(wèn)答等領(lǐng)域的基礎(chǔ)指令數(shù)據(jù),用于進(jìn)一步全面提升預(yù)訓(xùn)練模型的基礎(chǔ)能力。Opencompass測(cè)試結(jié)果顯示,經(jīng)過(guò)在Infinity-Instruct-7M數(shù)據(jù)集上的微調(diào),Llama3.1-70B、Mistral-7B-v0.1綜合能力評(píng)價(jià)可基本對(duì)齊官方自己發(fā)布的對(duì)話(huà)模型,且InfInstruct-7M-Mistral-7B的綜合評(píng)分超過(guò)了GPT-3.5,InfInstruct-7M-Llama3.1-70B已十分接近GPT-4。
*官方匯報(bào)結(jié)果
Infinity-Instruct-Gen包含149萬(wàn)條合成的復(fù)雜指令,用于提升模型在各種真實(shí)對(duì)話(huà)場(chǎng)景中回復(fù)的魯棒性。基于該數(shù)據(jù),對(duì)經(jīng)過(guò)Infinity-Instruct-7M增強(qiáng)的模型做進(jìn)一步SFT,即可取得超過(guò)官方對(duì)話(huà)模型的效果。而大多數(shù)的官方對(duì)話(huà)模型除了做基本的SFT外,還會(huì)做DPO/RLHF等對(duì)齊訓(xùn)練以提升模型的對(duì)話(huà)能力,產(chǎn)生額外的訓(xùn)練成本。
智源在MTBench、AlpacaEval2、Arena-Hard三個(gè)主流榜單上評(píng)測(cè)了Infinity-Instruct 7M+Gen對(duì)模型對(duì)話(huà)能力的增益,其中,AlpacaEval2和Arena-Hard與真實(shí)人類(lèi)評(píng)價(jià)榜單Chatbot Arena有很高的一致率,MTBench則評(píng)測(cè)模型的多輪對(duì)話(huà)能力。
如下左圖所示,InfInstruct-7M-Gen-Mistral-7B,InfInstruct-7M-Gen-Llama3.1-8B,InfInstruct-7M-Gen-Llama3.1-70B等經(jīng)過(guò)Infinity Instruct微調(diào)的模型已經(jīng)超越了官方對(duì)話(huà)模型的性能。Arena-Hard上InfInstruct-7M-Gen-Llama3.1-70B(66)超過(guò)了Llama3.1-70B-Instruct(55.7)和Llama3.1-405B-Instruct(64.1)。此外,如右下圖所示,AlpacaEval2.0榜單上,InfInstruct-7M-Gen-Llama3.1-70B(46.1)更是超過(guò)了GPT4-0314(35.3),非常接近GPT4-1106(50)的水準(zhǔn),真正實(shí)現(xiàn)了GPT-4級(jí)別的對(duì)話(huà)能力。
Infinity Instruct數(shù)據(jù)集今年6月在Flopsera,Huggingface等平臺(tái)發(fā)布后,快速到達(dá)了Huggingface Dataset的Trending第一,且吸引大量基于Infinity Instruct的開(kāi)源微調(diào)工作。
下載使用 Infinity-Instruct可在Huggingface、DataHub、Flopsera等平臺(tái)下載。
Huggingface: https://huggingface.co/datasets/BAAI/Infinity-Instruct
DataHub: https://data.baai.ac.cn/details/InfinityInstruct
Flopsera: http://open.flopsera.com/flopsera-open/details/InfinityInstruct
Huggingface提供了快速下載Infinity-Instruct系列數(shù)據(jù)集及模型的代碼。
##數(shù)據(jù)集下載
from datasets import load_dataset
dataset_7M = load_dataset('BAAI/Infinity-Instruct','7M',split='train')
dataset_Gen = load_dataset('BAAI/Infinity-Instruct','Gen',split='train')
##模型下載
from transformers import AutoModelForCausalLM, AutoTokenizer
model_llama3_1_70B = AutoModelForCausalLM.from_pretrained("BAAI/Infinity-Instruct-7M-Gen-Llama3_1-70B",
torch_dtype=torch.bfloat16,
device_map="auto"
)
tokenizer_llama3_1_70B = AutoTokenizer.from_pretrained("BAAI/Infinity-Instruct-7M-Gen-Llama3_1-70B")
model_mistral_7B = AutoModelForCausalLM.from_pretrained("BAAI/Infinity-Instruct-7M-Gen-Mistral-7B",
torch_dtype=torch.bfloat16,
device_map="auto"
)
tokenizer_mistral_7B = AutoTokenizer.from_pretrained("BAAI/Infinity-Instruct-7M-Gen-Mistral-7B")
Infinity-Instruct給每一條指令數(shù)據(jù)標(biāo)注了語(yǔ)種、能力類(lèi)型、任務(wù)類(lèi)型、數(shù)據(jù)來(lái)源等信息,便于使用者根據(jù)自身需要篩選數(shù)據(jù)子集。
技術(shù)路線(xiàn)
智源研究院搜集了7500萬(wàn)余條開(kāi)源指令作為待選指令池,采用數(shù)據(jù)選擇與指令合成兩條途徑快速迭代,構(gòu)建高質(zhì)量的基礎(chǔ)、對(duì)話(huà)指令數(shù)據(jù)集,以填補(bǔ)開(kāi)源對(duì)話(huà)模型與GPT-4之間的基礎(chǔ)能力、對(duì)話(huà)能力差距。
基礎(chǔ)指令數(shù)據(jù)篩選
對(duì)于基礎(chǔ)指令數(shù)據(jù)集,篩選流程主要考慮訓(xùn)練數(shù)據(jù)集和目標(biāo)數(shù)據(jù)集數(shù)據(jù)分布的對(duì)齊,基于DSIR的思路,在訓(xùn)練數(shù)據(jù)集上進(jìn)行排序,選取訓(xùn)練集的子集,擬合目標(biāo)數(shù)據(jù)集的分布。
對(duì)話(huà)數(shù)據(jù)集生成、進(jìn)化、評(píng)價(jià)
對(duì)于對(duì)話(huà)指令數(shù)據(jù)集,Infinity-Instruct首先采樣了部分高質(zhì)量的開(kāi)源指令集,并為每條指令分配一組標(biāo)簽,描述完成指令所需的能力和知識(shí)。標(biāo)簽系統(tǒng)共有兩個(gè)級(jí)別:
第一級(jí)標(biāo)簽: 宏觀類(lèi)別,如 "自然語(yǔ)言處理 "和 "數(shù)學(xué)推理"。共包括 26 個(gè)類(lèi)別。
第二集標(biāo)簽:刻畫(huà)具體任務(wù),包含超過(guò)1.5w個(gè)類(lèi)別。
基于此系統(tǒng),就能識(shí)別指令集的內(nèi)容分布以及完成不同任務(wù)所需的能力,構(gòu)建一個(gè)高質(zhì)量的種子數(shù)據(jù)集。隨后,Infinity-Instruct參考WizardLM的方法對(duì)種子指令在廣度、深度方向上進(jìn)行擴(kuò)展,并用AI Agent從指令合規(guī)性的角度剔除未能進(jìn)化的數(shù)據(jù)。最后,進(jìn)化后的指令作為初始輸入,使用AI Agent扮演不同角色,為每條指令生成 2 至 4 輪對(duì)話(huà)。
數(shù)據(jù)去污、去重
為避免構(gòu)造的數(shù)據(jù)存在自身重復(fù)、或與評(píng)測(cè)榜單重復(fù)的樣本,Infinity-Instruct對(duì)所有數(shù)據(jù)應(yīng)用了MinHash進(jìn)行去重。并基于BGE檢索剔除了和AlpacaEval、MT-Bench等評(píng)測(cè)榜單重復(fù)的樣本。
訓(xùn)練框架
考慮到微調(diào)成本,項(xiàng)目使用FlagScale去掉訓(xùn)練樣本中不必要的pad,壓縮樣本量,同時(shí)應(yīng)用模型切分、切分支持大模型在數(shù)百萬(wàn)量級(jí)指令數(shù)據(jù)集上的訓(xùn)練。初步測(cè)試可比傳統(tǒng)微調(diào)框架,如FastChat+Accelerate快三倍以上。
未來(lái)規(guī)劃 Infinity Instruct未來(lái)將開(kāi)源基礎(chǔ)、對(duì)話(huà)指令數(shù)據(jù)處理的全流程代碼,以及模型訓(xùn)練代碼。同時(shí),智源將探索擴(kuò)展Infinity Instruct數(shù)據(jù)策略到對(duì)齊、預(yù)訓(xùn)練階段,支持語(yǔ)言模型構(gòu)建全生命周期的高質(zhì)量數(shù)據(jù)需求。
Infinity RLAIF:基于Infinity Instruct標(biāo)簽體系以及生成指令構(gòu)建了50K 對(duì)齊數(shù)據(jù)的第一個(gè)版本,實(shí)驗(yàn)結(jié)果顯示,Infinity-Gemma-2-9B-SimPO 在AlpacaEval上達(dá)到 73.4,在Arena Hard上達(dá)到 59.1。未來(lái)會(huì)進(jìn)行更多對(duì)齊數(shù)據(jù)、算法的探索。
Infinity Math:基于多個(gè)開(kāi)源數(shù)學(xué)數(shù)據(jù)集構(gòu)建了可無(wú)限擴(kuò)增的數(shù)學(xué)領(lǐng)域指令數(shù)據(jù)集,其中POT指令數(shù)據(jù)可提升在多個(gè)7B的基礎(chǔ)語(yǔ)言模型和基礎(chǔ)代碼模型的zero-shot數(shù)學(xué)能力180%-510%,相關(guān)論文被CIKM 2024接收,歡迎引用。
@misc{zhang2024inifinitymath,
title={InfinityMATH: A Scalable Instruction Tuning Dataset in Programmatic Mathematical Reasoning},
author={Bo-Wen Zhang and Yan Yan and Lin Li and Guang Liu},
year={2024},
eprint={2408.07089},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2408.07089},
}