如何在 MacBook Pro 上微調 phi-3

社群文章 釋出於 2024 年 4 月 24 日

在這篇部落格中,我將向你展示如何在你的 MacBook Pro 上訓練/微調微軟最新的 phi-3 模型!你需要一臺 M1 或 M2 晶片的 Mac 來完成此操作。我們將使用 AutoTrain Advanced!

要安裝 AutoTrain Advanced,你可以執行:

$ pip install autotrain-advanced

注意:autotrain 不會自動安裝 pytorch、torchvision 等。所以,你需要自己安裝它們。你可以建立一個 conda 環境並安裝這些依賴項。

$ conda create -n autotrain python=3.10
$ conda activate autotrain
$ conda install pytorch::pytorch torchvision torchaudio -c pytorch
$ pip install autotrain-advanced

完成後,你就可以在你的 Mac 機器上使用 AutoTrain CLI 或 UI 了!我們將兩者都看一下!

AutoTrain 不僅提供 LLM 微調,還提供許多其他任務,如文字分類、影像分類、Dreambooth LoRA 等。但在這篇博文中,我們專注於 LLM 微調。

你可以透過以下命令檢視所有可用於 LLM 微調的引數:

$ autotrain llm --help

下一步是獲取資料。在這篇部落格中,我將向你展示如何在你的 MacBook 上進行 SFT 訓練和 ORPO 微調(DPO 的小兄弟)。

  • 對於 SFT 訓練,我們需要一個只包含單個文字列的資料集。我們可以使用像 timdettmers/openassistant-guanaco 或類似 alpaca 的資料集。注意:這些資料集已經被格式化為包含系統提示、使用者指令和助手訊息的文字。如果你的資料是以下格式:
[ { "content": "Definition: In this task, you need to count the number of vowels (letters 'a', 'e', 'i', 'o', 'u') / consonants (all letters other than vowels) in the given sentence.\nInput: Sentence: 'a baseball player is in his hitting stance as a few people watch'. Count the number of consonants in the given sentence.\nOutput:", "role": "user" }, { "content": "32", "role": "assistant" } ]

你可以使用 AutoTrain 的 chat-template 引數。我們稍後在這篇文章中會看到它,但在 ORPO 訓練部分。因此,我們將先介紹使用預格式化資料集進行 SFT 訓練,然後用聊天模板進行 ORPO 訓練。

使用 AutoTrain,最耗時的部分只是建立或尋找資料集。現在,當我們有了資料集,就可以使用以下命令進行 SFT 訓練:

autotrain llm \
--train \
--model microsoft/Phi-3-mini-4k-instruct \
--data-path timdettmers/openassistant-guanaco \
--lr 2e-4 \
--batch-size 2 \
--epochs 1 \
--trainer sft \
--peft \
--project-name my-own-phi-3-on-mac \
--username abhishek \
--push-to-hub \
--token $HF_TOKEN

其中 $HF_TOKEN 是你的 Hugging Face 寫入令牌,如果你想將訓練好的模型推送到 Hugging Face Hub 以便輕鬆部署和分享。你可以在這裡找到你的令牌。

請注意,我們正在使用 LoRA,因此我們有 --peft 引數。另外,如果你的資料集中的文字列不叫 text,你可以新增另一個引數 --text-column 你的資料集文字列名。如果你想使用自己的 CSV/JSON 檔案而不是 Hugging Face Hub 上的資料集,你可以將其命名為 train.csv / train.jsonl 並放在一個本地資料夾中。訓練的命令會稍有變化:

autotrain llm \
--train \
--model microsoft/Phi-3-mini-4k-instruct \
--data-path /path/to/folder/containing/training/file \
--text-column text_column_in_your_dataset \
--lr 2e-4 \
--batch-size 2 \
--epochs 1 \
--trainer sft \
--peft \
--project-name my-own-phi-3-on-mac \
--username abhishek \
--push-to-hub \
--token $HF_TOKEN

接下來,我們來看 ORPO 訓練。對於 ORPO 訓練,我們將 --trainer sft 改為 --trainer orpo

autotrain llm \
--train \
--model microsoft/Phi-3-mini-4k-instruct \
--data-path argilla/distilabel-capybara-dpo-7k-binarized \
--text-column chosen \
--rejected-text-column rejected \
--lr 2e-4 \
--batch-size 2 \
--epochs 1 \
--trainer orpo \
--chat-template chatml \
--peft \
--project-name my-own-phi-3-on-mac-orpo \
--username abhishek \
--push-to-hub \
--token $HF_TOKEN

上面有 4 處改動。除了資料集和 trainer 的改變,僅僅是列的對映發生了變化。另一個主要變化是使用了 --chat-template 引數,並將其設定為 chatml。對於 --chat-template,可選項有:zephyrchatmltokenizer 或 None。如果你已經像我們在 SFT 訓練中那樣自己格式化好了資料,則使用 None。

現在,如果你覺得命令列太複雜,你也可以使用 UI!UI 更簡單,還允許你上傳檔案。

要使用 UI,請執行:

$ export HF_TOKEN=your_huggingface_write_token

$ autotrain app --host 127.0.0.1 --port 10000

然後在瀏覽器中訪問 http://127.0.0.1:10000,享受 AutoTrain UI 吧!🚀 下圖展示了與上述 ORPO 訓練相同的引數設定。

image/png

如果你在模型下拉列表中找不到 phi3,你可以使用這個 URL:http://127.0.0.1:7860/?custom_models=microsoft/Phi-3-mini-4k-instruct。注意:我已將 phi-3 新增為自定義模型。你也可以對 Hub 上的任何其他相容模型執行相同的操作。;)

SFT 和 ORPO 訓練都已在 M2 Max MacBook Pro 上成功測試。

如有任何問題或功能請求,請使用 GitHub 倉庫

P.S. AutoTrain 的詳細文件可以在這裡找到。

祝你(自動)訓練愉快!🚀

社群

註冊登入 以發表評論

© . This site is unofficial and not affiliated with Hugging Face, Inc.