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