OpenAI終于下定決心——正式開(kāi)放ChatGPT API!
ChatGPT API地址:https://platform.openai.com/docs/guides/chat
gpt-3.5-turbo的新模型
OpenAI正式打開(kāi)了官方的ChatGPT API,為廣大開(kāi)發(fā)者打開(kāi)了新的大門(mén)。
微調(diào)(Fine-tuning)
官方文檔地址:OpenAI API
對(duì)于ChatGPT的表現(xiàn),大家都已經(jīng)感受到他的驚艷了,在試用之余,我們想該如何個(gè)性化為你使用或者為企業(yè)使用,那就不得不提到他的微調(diào)功能。
fine-tune 是指在一個(gè)已經(jīng)訓(xùn)練好的模型上,再利用新的數(shù)據(jù)進(jìn)行微調(diào),以達(dá)到更好的適應(yīng)性。在自然語(yǔ)言處理領(lǐng)域中,fine-tune 主要應(yīng)用于語(yǔ)言模型,通常是在預(yù)訓(xùn)練模型的基礎(chǔ)上,利用一定規(guī)模的新數(shù)據(jù)集對(duì)模型進(jìn)行微調(diào),以適應(yīng)特定任務(wù)的要求。
舉個(gè)例子,假設(shè)有一個(gè)預(yù)訓(xùn)練好的文本生成模型,可以根據(jù)給定的前綴生成一段連貫的文本。但是這個(gè)模型可能并不適用于特定的業(yè)務(wù)場(chǎng)景,例如醫(yī)療問(wèn)答。此時(shí),我們可以利用一定規(guī)模的醫(yī)療問(wèn)答數(shù)據(jù)集對(duì)這個(gè)模型進(jìn)行 fine-tune,以使其更好地適應(yīng)醫(yī)療問(wèn)答場(chǎng)景,生成更貼合實(shí)際需求的文本。
fine-tune 的好處在于,不需要從頭訓(xùn)練一個(gè)模型,因?yàn)轭A(yù)訓(xùn)練模型已經(jīng)具有較好的語(yǔ)言建模能力,并且已經(jīng)包含了大量的語(yǔ)言知識(shí)。我們只要把業(yè)務(wù)數(shù)據(jù)集導(dǎo)進(jìn)去,再進(jìn)行訓(xùn)練即可。
微調(diào)的步驟
- 準(zhǔn)備和上傳訓(xùn)練數(shù)據(jù)
- 訓(xùn)練新的微調(diào)模型
- 使用微調(diào)模型
哪些模型可以微調(diào)?
微調(diào)目前僅適用于以下基本型號(hào):davinci? curie? babbage? ada? ?text-davinci-003。
還沒(méi)去嘗試最新開(kāi)放的ChatGPT同款模型gpt-3.5-turbo的新模型是否支持微調(diào)。
開(kāi)始實(shí)操
1.python3環(huán)境準(zhǔn)備
對(duì)OpenAI的模型進(jìn)行微調(diào),需要具備python3環(huán)境。(以Mac電腦全新安裝為例)
1.1先對(duì)brew更新
brew update
注意,我第一次運(yùn)行失敗了,說(shuō)是訪問(wèn)不到github的倉(cāng)庫(kù),所以又操作了一次就可以了。
1.2安裝python3-注意安裝過(guò)程比較長(zhǎng),我安裝了十幾分鐘
brew install python3
?-注意安裝過(guò)程比較長(zhǎng),我安裝了十幾分鐘。要有耐心
1.3繼續(xù)安裝pip
此時(shí)執(zhí)行官方的命令會(huì)報(bào)錯(cuò)如下:
zsh: command not found: pip
先下載:
curl https://bootstrap.pypa.io/pip/get-pip.py -o get-pip.py
用python3來(lái)安裝
sudo python3 get-pip.py
?安裝完后驗(yàn)證
pip -V
1.4安裝pandas
這步也是必須的,不然后面會(huì)報(bào)錯(cuò),提示缺少pandas。
安裝命令:
pip install pandas
?這樣準(zhǔn)備工作就做完了,可以安裝OpenAI的官方文檔進(jìn)行操作啦。
2.OpenAI環(huán)境準(zhǔn)備
2.1安裝工具
pip install --upgrade openai
?2.2準(zhǔn)備一個(gè)自己的語(yǔ)料庫(kù)
我在硬盤(pán)上新建了一個(gè)1.json的文件,內(nèi)容如下:
{"prompt": "你是誰(shuí)", "completion": "我是唯一客服小助手"}
{"prompt": "你會(huì)做什么", "completion": "我能幫你解答使用唯一客服時(shí)的問(wèn)題"}
2.3設(shè)置環(huán)境變量-需要把OpenAI的api的key設(shè)置進(jìn)去
export OPENAI_API_KEY="自己的key"
2.4由OpenAI的工具對(duì)這個(gè)文件進(jìn)行格式化
openai tools fine_tunes.prepare_data -f 本地的json文件路徑
我的示例:?
openai tools fine_tunes.prepare_data -f /Users/szz/app/1.json
翻譯一下:
正在分析。。。
?
-根據(jù)您的文件擴(kuò)展名,您提供了一個(gè)文本文件
-您的文件包含3個(gè)提示完成對(duì)。一般來(lái)說(shuō),我們建議至少有幾百個(gè)例子。我們發(fā)現(xiàn),示例數(shù)量每增加一倍,性能就會(huì)線性增加
-“completion”列/鍵不應(yīng)包含空字符串。這些是行:[2]
-所有完成都以前綴“{”prompt“:”開(kāi)頭你`. 大多數(shù)情況下,您應(yīng)該只將輸出數(shù)據(jù)添加到完成中,而不添加任何前綴
-完成應(yīng)該以空白字符(``)開(kāi)頭。由于我們使用的標(biāo)記化,這往往會(huì)產(chǎn)生更好的結(jié)果??匆?jiàn)https://beta.openai.com/docs/guides/fine-tuning/preparing-your-dataset有關(guān)詳細(xì)信息
?
根據(jù)分析,我們將采取以下措施:
-[必要]您的格式“TXT”將轉(zhuǎn)換為“JSONL”`
-[必要]刪除1行空白完成符
-[推薦]刪除前綴“{”prompt“:”你` 來(lái)自所有完成[Y/n]:
-[推薦]在完成開(kāi)頭添加空白字符[Y/n]:
?
您的數(shù)據(jù)將寫(xiě)入新的JSONL文件。繼續(xù)[Y/n]:
?
將修改后的文件寫(xiě)入`/tmp/json_prepared.jsonl`
隨便看一看!
現(xiàn)在在微調(diào)時(shí)使用該文件:
>openai api fine_tunes.create-t“/tmp/jsonprepared.jsonl”
確保包含`stop=[“”}“]`,以便生成的文本在預(yù)期位置結(jié)束。
一旦你的模型開(kāi)始訓(xùn)練,訓(xùn)練一個(gè)“curie”模型大約需要2.47分鐘,而“ada”和“babbage”則需要更少的時(shí)間。在您之前,每個(gè)作業(yè)排隊(duì)大約需要半小時(shí)。?
這個(gè)工具會(huì)把你提供的json文件進(jìn)行格式化,格式化后的文件后綴名為jsonl,文件跟你提供的json文件放在同一個(gè)目錄下面。
?內(nèi)容為:
{"prompt":"你是誰(shuí) ->","completion":" 我是唯一客服小助手\n"}
{"prompt":"你會(huì)做什么 ->","completion":" 我能幫你解答使用唯一客服時(shí)的問(wèn)題\n"}
可以看到跟你提供的原始文件略有差別。
3.OpenAI開(kāi)始訓(xùn)練
3.1創(chuàng)建一個(gè)微調(diào)模型
基于達(dá)芬奇模型,創(chuàng)建一個(gè)自己的模型,只有幾種模型可以訓(xùn)練:
ada
,?babbage
,?curie
,davinci
openai api fine_tunes.create -t 數(shù)據(jù)文件路徑 -m 基礎(chǔ)模型
我的示例:?
openai api fine_tunes.create -t /Users/szz/app/1_prepared.jsonl -m davinci
這時(shí)候有可能報(bào)錯(cuò),說(shuō)沒(méi)有找到你的OpenAI的key,那你就再執(zhí)行一次export命令
報(bào)錯(cuò):
成功:
這個(gè)時(shí)候請(qǐng)耐心等待幾分鐘或者幾個(gè)小時(shí),根據(jù)你的文本大小不同而定,官方說(shuō)最大可以1GB的文件。
3.2列出所有微調(diào)任務(wù)的列表
openai api fine_tunes.list
?可以看到狀態(tài)是pending~訓(xùn)練中。。。
?3.3查看微調(diào)任務(wù)的狀態(tài)
ID就是上面列表的ID,可以看到正在運(yùn)行中
openai api fine_tunes.get -i 任務(wù)ID
openai api fine_tunes.get -i ft-K2iPDoch4D3Aj2fkGATUKXeM
?3.4訓(xùn)練完成
當(dāng)任務(wù)完成以后,fine_tuned_model 字敦會(huì)有模型名稱(chēng),狀態(tài)顯示為綠色的successed。
?后面就可以使用這個(gè)模型了,可以看到模型名稱(chēng)。
3.5使用模型
openai api completions.create -m 模型名稱(chēng) -p 提示
注意: 由于訓(xùn)練集過(guò)小,而已使用的是達(dá)芬奇的模型,所以訓(xùn)練完的數(shù)據(jù)集沒(méi)那么好用。我問(wèn)了ChatGPT的,他給的答復(fù)如下:
ChatGPT:
你的數(shù)據(jù)集非常小,這可能是你不太好用的原因之一。一個(gè)合適大小的數(shù)據(jù)集對(duì)于fine-tuning是非常重要的,因?yàn)樵趂ine-tuning過(guò)程中,模型需要學(xué)習(xí)如何將原始語(yǔ)言數(shù)據(jù)映射到特定任務(wù)的語(yǔ)言表示。當(dāng)你的數(shù)據(jù)集很小的時(shí)候,模型可能會(huì)在數(shù)據(jù)中找到一些不相關(guān)的模式,這可能導(dǎo)致不合適的輸出。此外,OpenAI的達(dá)芬奇模型可以生成各種各樣的內(nèi)容,包括一些不適當(dāng)?shù)膬?nèi)容。為了減少不適當(dāng)內(nèi)容的生成,你需要更多的控制生成的過(guò)程。你可以使用一些技巧,例如給生成器提供更具體的上下文或者采用一些生成策略來(lái)控制生成結(jié)果。
最后,你可以嘗試使用更大的模型來(lái)進(jìn)行fine-tuning,這樣模型就可以更好地處理復(fù)雜的任務(wù)和語(yǔ)言數(shù)據(jù),從而提高生成結(jié)果的質(zhì)量。
?Q:如何給生成器提供更具體的上下文或者采用一些生成策略來(lái)控制生成結(jié)果?
提供更具體的上下文可以通過(guò)為生成器提供更多的輸入文本來(lái)實(shí)現(xiàn),這些文本可以是與要生成的內(nèi)容相關(guān)的信息。例如,如果要生成一個(gè)關(guān)于烹飪的段落,可以提供一些有關(guān)食材、烹飪工具、做法等方面的信息,以便生成器可以更好地理解要生成的內(nèi)容。
采用生成策略來(lái)控制生成結(jié)果可以有多種方法,其中一些包括:
預(yù)設(shè)模板:提前準(zhǔn)備好一些生成模板,通過(guò)將生成內(nèi)容嵌入這些模板中來(lái)實(shí)現(xiàn)控制生成結(jié)果的目的。
調(diào)整生成器參數(shù):調(diào)整生成器的參數(shù),如溫度、抽樣方法等,以控制生成結(jié)果的多樣性和準(zhǔn)確性。
過(guò)濾生成結(jié)果:使用一些自然語(yǔ)言處理技術(shù),如關(guān)鍵詞提取、命名實(shí)體識(shí)別等,對(duì)生成的結(jié)果進(jìn)行過(guò)濾,保留符合要求的內(nèi)容。
4.拾遺
4.1在PlayGroud查看并測(cè)試你自己創(chuàng)建的模型
OpenAI API
你自己訓(xùn)練好的模型會(huì)出現(xiàn)在這個(gè)位置。
4.2訓(xùn)練費(fèi)用問(wèn)題
訓(xùn)練模型是要收費(fèi)的,會(huì)從給你的18美元配額中扣除,但只要你的數(shù)據(jù)集不是很大,扣的錢(qián)都很少,我昨天扣了0.12美元。但需要注意的是,扣完錢(qián)或者在三個(gè)月到期后,你的配額會(huì)被清空,你可以設(shè)置你的付款賬號(hào),然后就會(huì)送你120美元的配額了。
————————————————
參考鏈接:
開(kāi)發(fā)自己私有chatGPT(五)訓(xùn)練微調(diào)openai模型_小紅帽2.0的博客-CSDN博客微調(diào)了解如何為應(yīng)用程序自定義模型。介紹通過(guò)微調(diào),您可以通過(guò)提供以下內(nèi)容從通過(guò) API 提供的模型中獲得更多收益:比提示設(shè)計(jì)更高質(zhì)量的結(jié)果能夠訓(xùn)練比提示所能容納的更多示例由于提示時(shí)間較短,可以節(jié)省token更低的延遲請(qǐng)求GPT-3 已經(jīng)對(duì)來(lái)自開(kāi)放互聯(lián)網(wǎng)的大量文本進(jìn)行了預(yù)訓(xùn)練。當(dāng)給出一個(gè)只有幾個(gè)例子的提示時(shí),它通??梢灾庇^地判斷你正在嘗試執(zhí)行什么任務(wù)并生成一個(gè)合理的完成。...https://blog.csdn.net/taoshihan/article/details/129036452文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-456727.html
開(kāi)發(fā)自己私有chatGPT(六)訓(xùn)練自己的chatGPT openai模型,微調(diào)模型,列出微調(diào)任務(wù),使用自定義模型教程..._小紅帽2.0的博客-CSDN博客在開(kāi)發(fā)私有chatGPT的時(shí)候,如果我們使用官方的基礎(chǔ)模型,那么回答的問(wèn)題可能不符合我們自己的預(yù)設(shè)答案現(xiàn)在就是通過(guò)官方的訓(xùn)練方法,提供一部分?jǐn)?shù)據(jù)進(jìn)去,訓(xùn)練出自己的私有模型按照工具pip install --upgrade openai設(shè)置環(huán)境變量export OPENAI_API_KEY="自己的key"準(zhǔn)備本地?cái)?shù)據(jù){"prompt": "你是誰(shuí)", "complet...https://blog.csdn.net/taoshihan/article/details/129053834文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-456727.html
到了這里,關(guān)于訓(xùn)練自己的ChatGPT-OpenAI 微調(diào)模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!