如何使用單個(gè)指令微調(diào)GPT-3.5或Llama?2
譯文由于在各種任務(wù)中的通用性,像ChatGPT和Llama 2這樣的大型語言模型(LLM)廣受歡迎。然而,有些應(yīng)用程序需要使用自定義數(shù)據(jù)對(duì)這些模型進(jìn)行微調(diào),以獲得更好的性能。
不幸的是,針對(duì)特定應(yīng)用程序?qū)Υ笮驼Z言模型(LLM)進(jìn)行微調(diào)通常是復(fù)雜和令人沮喪的,并且在很大程度上取決于應(yīng)用程序類型和所需的數(shù)據(jù)。幸運(yùn)的是,HyperWrite公司首席執(zhí)行官M(fèi)att Schumer開發(fā)了一個(gè)非常有用的工具--gpt-llm-trainer,它簡(jiǎn)化了Llama 2或GPT-3.5 Turbo的微調(diào)過程。
gpt-llm-trainer將微調(diào)LLM的復(fù)雜任務(wù)減少到單個(gè)簡(jiǎn)單明了的指令,讓用戶更容易根據(jù)自己的需求調(diào)整這些模型。
gpt-llm-trainer是如何工作的
gpt-llm-trainer采用了一種稱為“模型蒸餾”(Model Distillation)的技術(shù)。這個(gè)過程在本質(zhì)上是將知識(shí)從一個(gè)規(guī)模較大的機(jī)器學(xué)習(xí)模型(教師)轉(zhuǎn)移到一個(gè)規(guī)模較小的機(jī)器學(xué)習(xí)模型(學(xué)生)。在LLM的場(chǎng)景中,模型蒸餾通常涉及教師模型生成特定于任務(wù)的訓(xùn)練示例,這些示例隨后用于訓(xùn)練規(guī)模較小的模型。
gpt-llm-trainer對(duì)開發(fā)者的任務(wù)進(jìn)行描述,使用GPT-4自動(dòng)為其要訓(xùn)練的規(guī)模較小模型生成訓(xùn)練示例。然后,這些示例用于開發(fā)者微調(diào)選擇的模型,目前包括Llama 2和GPT-3.5 Turbo。
需要注意的是,模型蒸餾并不是一種微調(diào)LLM的萬能解決方案。在許多情況下,開發(fā)者可能仍然需要經(jīng)歷手動(dòng)管理自己數(shù)據(jù)的艱難過程。然而,模型蒸餾在教師模型的表現(xiàn)上超過學(xué)生的情況下被證明特別有效。
為了確定蒸餾是否是完成任務(wù)的一種正確方法,開發(fā)者可以參考基準(zhǔn)績(jī)效報(bào)告,或者對(duì)教師和學(xué)生模型進(jìn)行自己的實(shí)證研究。這將幫助開發(fā)者做出明智的決定,并優(yōu)化微調(diào)過程。
圖1:LLM模型蒸餾
如何使用gpt-llm-trainer
開發(fā)者可以在相關(guān)網(wǎng)站訪問gpt-llm-trainer的GitHub頁面。Matt還準(zhǔn)備了兩個(gè)谷歌Colab筆記本,一個(gè)用于GPT-3.5 Turbo,另一個(gè)用于Llama 2,這使得無需設(shè)置自己的Python環(huán)境即可輕松運(yùn)行它們。
要使用gpt-llm-trainer工具,首先需要一個(gè)OpenAI帳戶和一個(gè)有效的API密鑰。這把密鑰應(yīng)該記在筆記本上,上面寫著“你的密鑰在這里”(YOUR KEY HERE)。
在筆記本的第一個(gè)單元格中,將輸入任務(wù)的描述、所需示例的數(shù)量以及溫度,這將調(diào)整模型的創(chuàng)造力水平。接下來的步驟很簡(jiǎn)單:依次運(yùn)行單元以生成示例并訓(xùn)練模型。
如果使用的是Llama 2筆記本,生成的模型將保存到谷歌云盤中。如果使用的是GPT-3.5筆記本,則模型將存儲(chǔ)在開發(fā)者的OpenAI帳戶中。
值得注意的是,OpenAI的服務(wù)條款禁止使用其LLM來訓(xùn)練競(jìng)爭(zhēng)產(chǎn)品的模型。這意味著開發(fā)者不能將經(jīng)過gpt-llm-trainer微調(diào)的模型用于商業(yè)目的。但可以很容易地使用它來創(chuàng)建自己的寫作或編碼助手或其他個(gè)人日常使用的工具。
還要注意的是,數(shù)據(jù)生成和訓(xùn)練過程可能很耗時(shí),這取決于開發(fā)者希望生成和微調(diào)模型的示例數(shù)量。由于示例是使用GPT-4生成的,因此監(jiān)控訓(xùn)練成本非常重要,可以用不到一美元的費(fèi)用生成大約50個(gè)簡(jiǎn)短的訓(xùn)練樣本。但是,如果計(jì)劃生成一個(gè)大型數(shù)據(jù)集,需要謹(jǐn)慎地考慮成本。你可以從生成一小批示例開始,然后評(píng)估它們的質(zhì)量并根據(jù)需要調(diào)整指令,然后再繼續(xù)創(chuàng)建整個(gè)數(shù)據(jù)集。
對(duì)于使用Llama 2筆記本的用戶,gpt-llm-trainer將默認(rèn)微調(diào)“NousResearch/ Llama -2-7b-chat-hf”模型,無需填寫申請(qǐng)表即可訪問。如果想調(diào)整原來的Meta Llama 2,需要修改代碼并提供Hugging Face密碼。另外,微調(diào)將使用Colab的GPU執(zhí)行,因此請(qǐng)確保將運(yùn)行環(huán)境配置為使用GPU。
改進(jìn)gpt-llm-trainer
雖然gpt-llm-trainer是一個(gè)功能強(qiáng)大的工具,但它基于谷歌Colab的界面并不是最友好的,因?yàn)镃olab通常不是為生產(chǎn)環(huán)境設(shè)計(jì)的。
此外,還有幾個(gè)功能可以增強(qiáng)這個(gè)工具的可用性。例如,生成的訓(xùn)練示例將不會(huì)被存儲(chǔ),并且在Colab會(huì)話結(jié)束后將被丟棄。但是,這些示例在會(huì)話期間存儲(chǔ)在Pandas DataFrame中,并且通過一些編碼,可以將它們導(dǎo)出到CSV文件以供將來使用。
一個(gè)有趣的想法是將gpt-llm-trainer移植到Streamlit,這將為微調(diào)LLM提供一個(gè)更加用戶友好的界面,允許使用開發(fā)者自己的訓(xùn)練示例進(jìn)行引導(dǎo),并允許存儲(chǔ)生成的示例以供以后使用。雖然gpt-llm-trainer是LLM蒸餾的一個(gè)很好的起點(diǎn),但是有很多方法可以改進(jìn)它。
原文標(biāo)題:How to fine-tune GPT-3.5 or Llama 2 with a single instruction,作者:Ben Dickson
鏈接:https://bdtechtalks.com/2023/11/03/gpt-llm-trainer/