使用 Unslot 輕鬆微調您的資料上的 LLaMA-3

使用 Unslot 這個強大的工具,您可以輕鬆地在您的資料上微調 LLaMA-3,並可達到最多 30 倍的加速訓練。了解如何設置、優化並儲存您的微調模型,以便在各個平台上進行無縫推論。解鎖 LLaMA-3 在您特定用例中的全部潛力。

2025年2月14日

party-gif

微調 LLAMA-3,這個強大的開源語言模型,使用優化的 Unslot 套件輕鬆在您自己的資料上進行微調。解鎖這個 AI 模型的全部潛力並根據您的特定需求進行定制,無需複雜的設置或資源密集型的訓練。

使用 Unslot 微調 LLAMA-3:強大且高效的方法

解鎖是一個非常棒的工具,可以讓您有效地在自己的數據集上微調 LLAMA-3 模型。以下是一步一步的指南介紹如何操作:

  1. 安裝所需的套件: 首先克隆 Unslot GitHub 儲存庫,並根據您的硬體配置安裝必要的套件。

  2. 設定訓練參數: 定義您的訓練參數,如最大序列長度、數據類型和量化方法。Unslot 使用 Lora 適配器來實現高效的微調。

  3. 格式化您的訓練數據: 確保您的數據按要求的格式進行結構化,包含指令、輸入和輸出的列。Unslot 提供了使用 Alpaca 數據集的示例,但您可以根據自己的數據進行調整。

  4. 設定 SFT 訓練器: 從 Hugging Face Transformers 庫中創建一個 SFT (Supervised Fine-Tuning) 訓練器對象,指定模型、標記器、數據集和其他訓練參數。

  5. 訓練模型: 在 SFT 訓練器對象上調用 train() 函數開始微調過程。Unslot 的優化內存使用和速度確保了即使在有限的 GPU 資源上也能高效地進行訓練。

  6. 進行推理: 訓練完成後,您可以使用 Unslot 特有的 FastLanguageModel 類來生成來自微調模型的響應。Unslot 還提供了保存模型和加載 Lora 適配器以供將來使用的選項。

  7. 探索其他功能: Unslot 提供了高級功能,如能夠在其他框架(如 PyTorch Lightning)中使用模型,以及將模型轉換為 GGML 格式以供 LLAMA-CPP 或 GoLLAMA 使用。

Unslot 微調 LLAMA-3 的方法非常高效,利用了優化的內存使用和速度。它提供了一個用戶友好且全面的解決方案,是微調大型語言模型的絕佳選擇。

設置訓練參數

首先,我們需要從 unslot 庫中導入必要的類:

from unslot.models.fast_language_model import FastLanguageModel

接下來,我們設定訓練參數:

  • max_sequence_length: 輸入的最大序列長度。我們將其設為 248 個標記,因為我們使用的數據集文本相對較短。
  • data_type: 我們使用 4 位量化進行高效訓練。
max_sequence_length = 248
data_type = "4bit"

Unslot 使用 Lora 適配器來實現高效的微調。有兩種選擇:

  1. 使用 unslot Hugging Face 儲存庫中預先加載的模型,它已經合併了 Lora 適配器。
  2. 使用 Hugging Face 儲存庫中的模型,並自行添加 Lora 適配器。

在本例中,我們將使用預先加載的模型,因此不需要進行任何其他步驟。

model = FastLanguageModel.from_pretrained("unslot/alpaca-7b")

如果您需要使用其他模型並自行添加 Lora 適配器,可以取消註釋以下部分並提供必要的參數。

# model_id = "your-hugging-face-model-id"
# model = FastLanguageModel.from_pretrained(model_id)
# model.add_lora_adapters()

現在我們可以進入下一步:格式化訓練數據。

準備微調所需的數據

要使用 Unslot 微調 Lama 3 模型,您需要以特定方式格式化訓練數據。示例中使用的數據集有三列:指令、輸入和輸出。

指令列包含模型應完成的任務描述。輸入列提供了任務的附加背景信息,而輸出列包含了模型的預期響應。

在格式化自己的數據時,請確保以相同的方式構建,包含指令、輸入和輸出列。如果某個示例缺少輸入,這也沒有問題,因為單單指令就可以為模型提供生成輸出所需的信息。

下載數據後,您需要將這三列轉換為單個文本字符串,並遵循特定的格式。這種格式包括指令、輸入和響應的特殊標記。示例中的代碼演示了如何執行這種轉換,創建一個單列,可用於訓練模型。

請注意,雖然示例使用了標準的 Alpaca 數據集,但您也可以使用其他提示模板,如 OpenAI 引入的 ChatML 格式,來構建您的數據。只需確保正確格式化您的輸入示例,因為它們將在訓練期間輸入到語言模型中。

使用 Unslot 的監督式微調訓練器訓練模型

首先,我們需要設置訓練參數。我們將從 Unslot 導入 FastLanguageModel 類,並定義最大序列長度、數據類型和量化方法。

接下來,我們將處理需要為模型添加 Lora 適配器的情況。如果我們使用的是 Hugging Face 儲存庫中的模型,我們可能需要提供一個令牌來接受服務條款。

現在,我們需要格式化訓練數據。數據集應該有三列:指令、輸入和輸出。我們將從 Hugging Face 下載數據,並將其映射到此格式。

然後,我們將從 Hugging Face Transformers 庫中設置 Supervised Fine-Tuning Trainer。此訓練器將接受模型對象、標記器、數據集和其他參數,如優化器、學習率計劃和輸出目錄。

最後,我們將在訓練器對象上調用 train() 函數。我們將觀察訓練損失的下降,這表示模型正在學習。請注意,我們只運行了一小部分數據作為示例,但您將需要運行至少一個時期或兩個時期才能獲得更好的結果。

訓練完成後,我們可以保存模型並加載 Lora 適配器以進行推理。Unslot 還提供了在其他框架(如 PyTorch Lightning 和 TensorFlow)中使用模型的選項。

使用微調後的模型進行推論

模型訓練完成後,您可以將其用於推理。Unslot 提供了一個簡單的接口來實現這一點:

  1. 從 Unslot 導入 FastLanguageModel 類。
  2. 提供訓練好的模型,並告訴它執行推理。
  3. 使用 Alpaca 格式(指令、輸入和預期輸出)對輸入進行標記化。
  4. 將輸入移動到 GPU 以利用可用的資源。
  5. 調用 generate 函數,提供標記化的輸入、要生成的最大令牌數和是否使用緩存。

模型將根據提供的輸入生成響應。您還可以使用 TextStreamer 類來流式傳輸文本響應。

訓練完成後,您可以通過以下方式保存模型:

  • 將模型推送到 Hugging Face Hub,這將單獨保存 Lora 適配器。
  • 在本地保存模型,同樣單獨保存 Lora 適配器。

要為推理加載保存的模型,您可以設置一個標誌來合併 Lora 適配器與模型。

Unslot 還提供了其他推理選項,如使用 Hugging Face Transformers 庫中的 AutoModelForCausalLM 類,這可能更慢但允許您將模型與 LLaMA-CPP 或 GoLLaMA 等其他工具一起使用。

保存和載入微調後的模型

模型訓練完成後,您可以通過多種方式保存它,以便稍後用於推理。Unslot 提供了幾種保存和加載微調模型的選項:

  1. 保存到 Hugging Face Hub: 您可以將微調後的模型推送到 Hugging Face Hub,這樣可以與他人共享和使用該模型。要做到這一點,您需要提供您的 Hugging Face 令牌。
model.push_to_hub("your-model-name")
  1. 本地保存: 您也可以在本地保存模型,這只會保存 Lora 適配器,而不是整個模型。這使您可以輕鬆地加載 Lora 適配器並將其與基本模型合併。
model.save_pretrained("path/to/save/model")
  1. 加載保存的 Lora 適配器: 當您想要使用微調模型進行推理時,可以加載保存的 Lora 適配器並將其與基本模型合併。
model = FastLLamaForCausalLM.from_pretrained("path/to/base/model")
model.load_adapter("path/to/saved/model")
  1. 轉換為 GGML 格式: Unslot 還提供了將微調模型轉換為 GGML 格式的功能,這可以與 Llama-CPP 或 GoLlama 等工具一起使用。這使您可以在僅有 CPU 的環境中使用該模型。
model.save_pretrained("path/to/save/model", quantization_method="nf16")

利用這些選項,您可以輕鬆地保存、加載和使用微調模型,包括在不同環境中部署以及與社區共享。

結論

本文提供了一個全面的指南,介紹如何使用 Unslot 套件微調 Lama 3 模型。本節涵蓋的關鍵要點包括:

  1. Unslot 提供了一種高效和優化的方式來微調 Lama 3 和其他語言模型,具有減少內存使用和更快訓練等功能。
  2. 文章介紹了設置訓練環境、格式化數據以及使用 Unslot 特定類和方法訓練模型的步驟。
  3. 它還演示了如何使用微調模型進行推理,包括通過 Unslot 接口和將模型轉換為其他格式(如 ONNX)以供其他推理工具使用。
  4. 作者強調了 Unslot 的優點,如其能夠處理 GPU 限制以及與其他微調選擇(如 AutoTrain)相比的易用性。
  5. 文章最後鼓勵讀者探索 Unslot 和其他微調工具,並邀請他們提出任何問題或遇到的問題。

常問問題