Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

0 評(píng)論 6614 瀏覽 15 收藏 15 分鐘

作為開源大模型,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。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

然而,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)練腳本。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

為了方便大家快速上手,我已經(jīng)將其翻譯成中文并簡(jiǎn)化:https://colab.research.google.com/drive/1pvzl7E2rdTF7LkDQZOTyl32_Vu9Zwe4N?usp=sharing

如果你是初學(xué)者,建議使用我修改過(guò)的Colab筆記。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

2. 創(chuàng)建Colab筆記副本

使用Colab的好處是標(biāo)準(zhǔn)化的環(huán)境,免去了很多問(wèn)題。我們先將筆記復(fù)制為副本,這樣它能保存到自己的Google Drive中。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

3. 連接T4 GPU

你可以免費(fèi)使用Google提供的GPU資源,選擇連接T4。當(dāng)連接成功后,就可以開始了。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

你也可以在彈框中選擇T4 GPU。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

當(dāng)鏈接成功后,你就準(zhǔn)備就緒了。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

4. 連接Google Drive

我們需要連接Google Drive,以便將訓(xùn)練好的模型保存到云端。使用Colab非常簡(jiǎn)單,你基本只需依次點(diǎn)擊運(yùn)行每個(gè)代碼塊即可。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

5. 安裝Unsloth

點(diǎn)擊運(yùn)行,這段代碼主要是安裝Unsloth和模型訓(xùn)練相關(guān)的必要庫(kù)。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

展示執(zhí)行時(shí)間表示已經(jīng)執(zhí)行過(guò)了。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

二、步入正題

一切準(zhǔn)備就緒,我們要進(jìn)入正式流程了

1. 選擇預(yù)訓(xùn)練模型

這一段代碼主要用于選擇我們要訓(xùn)練的模型,代碼中已經(jīng)幫我們選擇好了”unsloth/llama-3-8b-bnb-4bit”。繼續(xù)點(diǎn)擊運(yùn)行,等待模型下載完成。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

點(diǎn)擊之后,我們會(huì)看到它正在下載模型,需要等待它執(zhí)行完畢。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

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)行。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

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ù)集。

  1. instruction(指令):這部分定義了要求AI執(zhí)行的任務(wù)或問(wèn)題。它是一條明確的指示,告訴AI需要做什么。例如,”識(shí)別以下句子中的名詞”或”我應(yīng)該投資股票嗎?”。
  2. input(輸入):這部分提供了執(zhí)行指令所需的具體信息或上下文。在某些情況下,這個(gè)部分可能為空,表示指令本身已經(jīng)包含了執(zhí)行任務(wù)所需的所有信息。
  3. output(輸出):這部分是AI根據(jù)給定的指令和輸入生成的答案或結(jié)果。它是AI處理完輸入信息后的響應(yīng)或解決方案。

繼續(xù)點(diǎn)擊播放,執(zhí)行代碼。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

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)擊播放:

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

然后,就可以開始正式訓(xùn)練模型了。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

5. 測(cè)試訓(xùn)練效果

訓(xùn)練完成后,我們可以測(cè)試模型效果。這里我們先讓它生成斐波那契數(shù)列(Fibonacci sequence)。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

你也可以更改指令instruction和輸入input,測(cè)試你想要的內(nèi)容。但是注意需要使用英文。

另外,我們還可以使用流格式,像使用GPT一樣,一個(gè)個(gè)字地輸出。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

6. 保存模型和加載模型

目前,我們模型已經(jīng)訓(xùn)練好了,我們可以將剛剛訓(xùn)練的LoRA保存下來(lái)。

6.1.保存和加載LoRA模型

點(diǎn)擊運(yùn)行,將LoRA模型保存到Colab的臨時(shí)服務(wù)器中。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

訓(xùn)練好的LoRA模型保存在lora_model文件夾中。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

如果你想加載剛剛訓(xùn)練的LoRA模型進(jìn)行測(cè)試,可以執(zhí)行相應(yīng)的代碼。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

6.2 保存為GGUF模型

目前較為常用的模型格式是GGUF,我們可以使用LM Studio在本地加載使用。

這段代碼可以將模型保存為不同的精度格式,建議使用Q4_K,生成的體積比較小,只有4GB。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

生成的模型在這里,但是直接下載比較難。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

我們可以執(zhí)行這段代碼,將生成的模型移動(dòng)到Google云端硬盤中,這樣下載更方便。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

移動(dòng)完成后,訪問(wèn)Google云端硬盤即可下載GGUF模型。

地址:https://drive.google.com/drive/my-drive

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

這樣我們微調(diào)的整個(gè)過(guò)程就完成了。恭喜你!

三、本地使用模型

1. 下載LM Studio的客戶端

訪問(wèn):https://lmstudio.ai 下載LM Studio的客戶端,它可以加載我們剛剛訓(xùn)練的模型。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

2. 導(dǎo)入模型

將GGUF文件放到LM Studio的模型文件夾中。打開保存模型的文件夾目錄:models。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

在指定路徑中創(chuàng)建文件夾,目錄結(jié)構(gòu)為llama3/model-unsloth/。在models文件夾中新建一個(gè)文件夾llama3,然后再創(chuàng)建一個(gè)模型文件夾model-unsloth,將下載的模型放進(jìn)去。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

設(shè)置完成后,重啟LM Studio。

3. 開始聊天

選擇模型后,就可以開始聊天了。

Llama3微調(diào)教程:超簡(jiǎn)單,人人都可以打造屬于自己的GPT!

總結(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é):

  1. 數(shù)據(jù)準(zhǔn)備,這一步?jīng)Q定了質(zhì)量;
  2. 模型訓(xùn)練,這一步硬件資源決定了時(shí)間;
  3. 模型測(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ù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒評(píng)論,等你發(fā)揮!