Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!
作為開源大模型,Llama的能力不容小覷。本文總結(jié)了Llama3微調(diào)教程,教你如何打造自己的GPT。
隨著Llama 3的發(fā)布,國(guó)內(nèi)各路英雄豪杰紛紛開啟了煉丹之旅。Llama-3 8b在驚人的15萬(wàn)億令牌上訓(xùn)練,而Llama-2僅為2萬(wàn)億。毋庸置疑,Llama 3目前是開源大模型中能力最強(qiáng)的!其跑分成績(jī)已經(jīng)趕上了GPT-4。
然而,Llama的優(yōu)勢(shì)不僅限于此。作為開源大模型,每個(gè)人都可以對(duì)其進(jìn)行定制,這意味著相比GPT,它具有更強(qiáng)的定制性和安全性。Llama可應(yīng)用于針對(duì)B端企業(yè)的自然語(yǔ)言處理、機(jī)器翻譯、文本生成、問(wèn)答系統(tǒng)、聊天機(jī)器人等場(chǎng)景。
目前,我們主要通過(guò)微調(diào)(Fine-Tuning)來(lái)定制所需的模型。例如,Llama 3原生不支持中文,但我們可以通過(guò)微調(diào)讓它支持中文。
微調(diào)是指在已經(jīng)經(jīng)過(guò)大規(guī)模預(yù)訓(xùn)練的基礎(chǔ)模型上,使用特定領(lǐng)域或任務(wù)的數(shù)據(jù)集對(duì)模型進(jìn)行額外訓(xùn)練,以適應(yīng)特定任務(wù)或問(wèn)題。微調(diào)過(guò)程通常包括在預(yù)訓(xùn)練模型的基礎(chǔ)上進(jìn)行少量迭代訓(xùn)練,以調(diào)整模型參數(shù),使其在特定任務(wù)上表現(xiàn)更好。
通過(guò)這個(gè)簡(jiǎn)單的Llama 3微調(diào)案例,我們可以體驗(yàn)整個(gè)大模型微調(diào)的過(guò)程。對(duì)于普通人來(lái)說(shuō),這是一個(gè)免費(fèi)體驗(yàn)算法工程師工作方式的機(jī)會(huì);如果你想轉(zhuǎn)入AI行業(yè),這也是一個(gè)很好的入門案例。
愿每個(gè)人都能從中受益,開啟自己的AI探索之旅!
接下來(lái),你將學(xué)習(xí)如何進(jìn)行環(huán)境配置、數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練、模型運(yùn)行、模型保存以及本地模型使用。在開始之前,讓我們先完成一些準(zhǔn)備工作。
一、準(zhǔn)備工作
1. 訪問(wèn)Unsloth
目前,最簡(jiǎn)單的方法是使用Unsloth,它是一個(gè)微調(diào)模型的集成工具。通過(guò)Unsloth微調(diào)Mistral、Gemma、Llama,速度提高2-5倍,內(nèi)存減少70%!
訪問(wèn)Unsloth的GitHub地址:https://github.com/unslothai/unsloth,點(diǎn)擊”??Start on Colab””即可打開Colab訓(xùn)練腳本。
為了方便大家快速上手,我已經(jīng)將其翻譯成中文并簡(jiǎn)化:https://colab.research.google.com/drive/1pvzl7E2rdTF7LkDQZOTyl32_Vu9Zwe4N?usp=sharing
如果你是初學(xué)者,建議使用我修改過(guò)的Colab筆記。
2. 創(chuàng)建Colab筆記副本
使用Colab的好處是標(biāo)準(zhǔn)化的環(huán)境,免去了很多問(wèn)題。我們先將筆記復(fù)制為副本,這樣它能保存到自己的Google Drive中。
3. 連接T4 GPU
你可以免費(fèi)使用Google提供的GPU資源,選擇連接T4。當(dāng)連接成功后,就可以開始了。
你也可以在彈框中選擇T4 GPU。
當(dāng)鏈接成功后,你就準(zhǔn)備就緒了。
4. 連接Google Drive
我們需要連接Google Drive,以便將訓(xùn)練好的模型保存到云端。使用Colab非常簡(jiǎn)單,你基本只需依次點(diǎn)擊運(yùn)行每個(gè)代碼塊即可。
5. 安裝Unsloth
點(diǎn)擊運(yùn)行,這段代碼主要是安裝Unsloth和模型訓(xùn)練相關(guān)的必要庫(kù)。
展示執(zhí)行時(shí)間表示已經(jīng)執(zhí)行過(guò)了。
二、步入正題
一切準(zhǔn)備就緒,我們要進(jìn)入正式流程了
1. 選擇預(yù)訓(xùn)練模型
這一段代碼主要用于選擇我們要訓(xùn)練的模型,代碼中已經(jīng)幫我們選擇好了”unsloth/llama-3-8b-bnb-4bit”。繼續(xù)點(diǎn)擊運(yùn)行,等待模型下載完成。
點(diǎn)擊之后,我們會(huì)看到它正在下載模型,需要等待它執(zhí)行完畢。
2. 配置LoRA參數(shù)
我們的微調(diào)是通過(guò)LoRA實(shí)現(xiàn)的。LoRA(Low-Rank Adaptation of Large Language Models)是大語(yǔ)言模型的低階適配器,用于在模型微調(diào)過(guò)程中只更新整個(gè)模型參數(shù)的一小部分,通常在1%到10%之間。
繼續(xù)點(diǎn)擊運(yùn)行。
3. 準(zhǔn)備數(shù)據(jù)
微調(diào)模型最重要的是數(shù)據(jù)。這里我們使用yahma的Alpaca數(shù)據(jù)集,它包含52,000條由OpenAI的text-davinci-003引擎生成的指令和演示數(shù)據(jù)。這些指令數(shù)據(jù)可用于對(duì)語(yǔ)言模型進(jìn)行指令調(diào)優(yōu),使其更好地遵循指令。
Alpaca的數(shù)據(jù)結(jié)構(gòu)如下:
“instruction”: “描述原子的結(jié)構(gòu)。”,
“input”: “”,
“output”: “原子是所有物質(zhì)的基本組成部分,由三種類型的粒子組成:質(zhì)子、中子和電子。原子的結(jié)構(gòu)可以描述為中心有一個(gè)原子核,周圍環(huán)繞著電子云。原子核由質(zhì)子和中子組成。質(zhì)子是帶正電的粒子,中子是不帶電荷的中性粒子……”
每條數(shù)據(jù),結(jié)構(gòu)由三部分組成:instruction (指令)、input(輸入)和output(輸出),我們可以根據(jù)這個(gè)格式準(zhǔn)備自己的數(shù)據(jù)集。
- instruction(指令):這部分定義了要求AI執(zhí)行的任務(wù)或問(wèn)題。它是一條明確的指示,告訴AI需要做什么。例如,”識(shí)別以下句子中的名詞”或”我應(yīng)該投資股票嗎?”。
- input(輸入):這部分提供了執(zhí)行指令所需的具體信息或上下文。在某些情況下,這個(gè)部分可能為空,表示指令本身已經(jīng)包含了執(zhí)行任務(wù)所需的所有信息。
- output(輸出):這部分是AI根據(jù)給定的指令和輸入生成的答案或結(jié)果。它是AI處理完輸入信息后的響應(yīng)或解決方案。
繼續(xù)點(diǎn)擊播放,執(zhí)行代碼。
4. 訓(xùn)練模型
現(xiàn)在讓我們使用Huggingface TRL的SFTTrainer庫(kù)來(lái)訓(xùn)練模型,我們?cè)O(shè)置max_steps最大步數(shù)為60步來(lái)加快訓(xùn)練速度,讓我們繼續(xù)無(wú)腦的點(diǎn)擊播放:
然后,就可以開始正式訓(xùn)練模型了。
5. 測(cè)試訓(xùn)練效果
訓(xùn)練完成后,我們可以測(cè)試模型效果。這里我們先讓它生成斐波那契數(shù)列(Fibonacci sequence)。
你也可以更改指令instruction和輸入input,測(cè)試你想要的內(nèi)容。但是注意需要使用英文。
另外,我們還可以使用流格式,像使用GPT一樣,一個(gè)個(gè)字地輸出。
6. 保存模型和加載模型
目前,我們模型已經(jīng)訓(xùn)練好了,我們可以將剛剛訓(xùn)練的LoRA保存下來(lái)。
6.1.保存和加載LoRA模型
點(diǎn)擊運(yùn)行,將LoRA模型保存到Colab的臨時(shí)服務(wù)器中。
訓(xùn)練好的LoRA模型保存在lora_model文件夾中。
如果你想加載剛剛訓(xùn)練的LoRA模型進(jìn)行測(cè)試,可以執(zhí)行相應(yīng)的代碼。
6.2 保存為GGUF模型
目前較為常用的模型格式是GGUF,我們可以使用LM Studio在本地加載使用。
這段代碼可以將模型保存為不同的精度格式,建議使用Q4_K,生成的體積比較小,只有4GB。
生成的模型在這里,但是直接下載比較難。
我們可以執(zhí)行這段代碼,將生成的模型移動(dòng)到Google云端硬盤中,這樣下載更方便。
移動(dòng)完成后,訪問(wèn)Google云端硬盤即可下載GGUF模型。
地址:https://drive.google.com/drive/my-drive
這樣我們微調(diào)的整個(gè)過(guò)程就完成了。恭喜你!
三、本地使用模型
1. 下載LM Studio的客戶端
訪問(wèn):https://lmstudio.ai 下載LM Studio的客戶端,它可以加載我們剛剛訓(xùn)練的模型。
2. 導(dǎo)入模型
將GGUF文件放到LM Studio的模型文件夾中。打開保存模型的文件夾目錄:models。
在指定路徑中創(chuàng)建文件夾,目錄結(jié)構(gòu)為llama3/model-unsloth/。在models文件夾中新建一個(gè)文件夾llama3,然后再創(chuàng)建一個(gè)模型文件夾model-unsloth,將下載的模型放進(jìn)去。
設(shè)置完成后,重啟LM Studio。
3. 開始聊天
選擇模型后,就可以開始聊天了。
總結(jié)
本教程詳細(xì)介紹了如何使用Unsloth和Google Colab環(huán)境對(duì)Llama 3進(jìn)行微調(diào)。使用Colab基本上是無(wú)腦點(diǎn)擊運(yùn)行就好了。
經(jīng)過(guò)這個(gè)教程,我們發(fā)現(xiàn)微調(diào)模型主要有三個(gè)核心環(huán)節(jié):
- 數(shù)據(jù)準(zhǔn)備,這一步?jīng)Q定了質(zhì)量;
- 模型訓(xùn)練,這一步硬件資源決定了時(shí)間;
- 模型測(cè)試,因?yàn)槲覀兂醪襟w驗(yàn),所以比較簡(jiǎn)略,后續(xù)可以進(jìn)一步探討。
通過(guò)本教程,即使是AI領(lǐng)域的新手也能夠掌握大模型的微調(diào)技術(shù)。Unsloth不僅降低了技術(shù)門檻,也為個(gè)人和小團(tuán)隊(duì)提供了強(qiáng)大的工具。后續(xù)還會(huì)討論更生深入話題。
專欄作家
PM熊叔,微信公眾號(hào):PM熊叔,人人都是產(chǎn)品經(jīng)理專欄作家。教育類產(chǎn)品產(chǎn)品經(jīng)理出身,學(xué)過(guò)設(shè)計(jì),做過(guò)開發(fā),做過(guò)運(yùn)營(yíng)的產(chǎn)品經(jīng)理。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒評(píng)論,等你發(fā)揮!