簡介|安裝|開始使用|文件|社區|許可證|引用火炬手
重要的
2024 年 9 月 25 日更新:torchtune 支援Llama 3.2 11B Vision 、 Llama 3.2 3B和Llama 3.2 1B型號!請按照此處的安裝說明進行嘗試,然後執行此處的任何文字配置或此處的視覺配置。
torchtune 是一個 PyTorch 函式庫,可以輕鬆地使用 LLM 進行創作、微調和實驗。
torchtune 提供:
來自 Llama、Gemma、Mistral、Phi 和 Qwen 模型系列的流行 LLM 的 PyTorch 實現
用於全面微調、LoRA、QLoRA、DPO、PPO、QAT、知識蒸餾等的可修改訓練方案
開箱即用的記憶體效率、效能改進以及使用最新 PyTorch API 的擴展
YAML 配置可輕鬆設定訓練、評估、量化或推理方法
內建支援許多流行的資料集格式和提示模板
torchtune 目前支援以下型號。
模型 | 尺寸 |
---|---|
Llama3.2-視覺 | 11B [型號、配置] |
駱駝3.2 | 1B、3B [型號、配置] |
駱駝3.1 | 8B、70B、405B [型號、配置] |
駱駝3 | 8B、70B [型號、配置] |
駱駝2 | 7B、13B、70B [型號、配置] |
代碼-Llama2 | 7B、13B、70B [型號、配置] |
米斯特拉爾 | 7B [型號、配置] |
芽 | 2B、7B [型號、配置] |
微軟Phi3 | 迷你[型號、配置] |
Qwen2 | 0.5B、1.5B、7B [型號、配置] |
我們一直在添加新模型,但如果您希望在 torchtune 中看到新模型,請隨時提出問題。
torchtune 提供以下微調方案,用於在一台或多台裝置上進行訓練。
微調方法 | 裝置 | 食譜 | 配置範例 |
---|---|---|---|
全面微調 | 1-8 | full_finetune_single_device full_finetune_distributed | Llama3.1 8B單設備 駱駝 3.1 70B 分佈式 |
LoRA 微調 | 1-8 | lora_finetune_single_device lora_finetune_distributed | Qwen2 0.5B單設備 Gemma 7B 分佈式 |
QLoRA 微調 | 1-8 | lora_finetune_single_device lora_finetune_distributed | Phi3 Mini 單機 駱駝 3.1 405B 分佈式 |
DoRA/QDoRA 微調 | 1-8 | lora_finetune_single_device lora_finetune_distributed | Llama3 8B QDoRA 單一設備 Llama3 8B DoRA 分散式 |
量化感知訓練 | 4-8 | qat_分散式 | 駱駝3 8B QAT |
直接偏好優化 | 1-8 | lora_dpo_single_device lora_dpo_分佈式 | Llama2 7B 單設備 Llama2 7B 分佈式 |
近端策略優化 | 1 | ppo_full_finetune_single_device | 米斯特拉爾7B |
知識蒸餾 | 1 | Knowledge_distillation_single_device | Qwen2 1.5B -> 0.5B |
上面的配置只是幫助您入門的範例。如果您看到上面未列出的型號,我們可能仍然支援它。如果您不確定某些內容是否受支持,請在儲存庫上提出問題。
以下是不同 Llama 3.1 模型的記憶體需求和訓練速度的範例。
筆記
為了方便比較,以下所有數字均針對批次大小 2(無梯度累積)、打包至序列長度 2048 的資料集以及啟用的 torch 編譯提供。
如果您有興趣在不同的硬體或不同的型號上運行,請在此處查看我們有關內存優化的文檔,以找到適合您的設定。
模型 | 微調方法 | 可運行 | 每個 GPU 的峰值內存 | 令牌/秒 * |
---|---|---|---|---|
羊駝3.1 8B | 全面微調 | 1x 4090 | 18.9 GiB | 1650 |
羊駝3.1 8B | 全面微調 | 1 個 A6000 | 37.4GiB | 2579 |
羊駝3.1 8B | 洛拉 | 1x 4090 | 16.2GiB | 3083 |
羊駝3.1 8B | 洛拉 | 1 個 A6000 | 30.3GiB | 4699 |
羊駝3.1 8B | QLoRA | 1x 4090 | 7.4GiB | 2413 |
羊駝3.1 70B | 全面微調 | 8x A100 | 13.9 GiB ** | 1568 |
羊駝3.1 70B | 洛拉 | 8x A100 | 27.6GiB | 3497 |
羊駝3.1 405B | QLoRA | 8x A100 | 44.8GB | 第653章 |
*= 在一個完整的訓練週期內測量
**= 使用帶有融合優化器的 CPU 卸載
torchtune 使用最新穩定的 PyTorch 版本以及夜間預覽版本進行了測試。 torchtune 利用 torchvision 來微調多模式 LLM,並利用 torchao 來獲得最新的量化技術;你也應該安裝這些。
# 安裝穩定的 PyTorch、torchvision、torchao stablereleasespip install torch torchvision torchao pip 安裝 torchtune
# 安裝 PyTorch、torchvision、torchao nightliespip install --pre --upgrade torch torchvision torchao --index-url https://download.pytorch.org/whl/nightly/cu121 # 完整選項為 cpu/cu118/cu121/cu124p install --pre --upgrade torchtune --extra-index-url https://download.pytorch.org/whl/nightly/cpu
您還可以查看我們的安裝文件以獲取更多信息,包括從源代碼安裝 torchtune。
若要確認軟體包是否已正確安裝,可以執行以下命令:
調整--幫助
並且應該看到以下輸出:
用法:調整 [-h] {ls,cp,下載,運行,驗證} ... 歡迎使用 torchtune CLI! -h, --help 顯示此說明訊息並退出...
要開始使用 torchtune,請參閱我們的第一個 Finetune 教學。我們的端到端工作流程教學將向您展示如何使用 Llama 模型評估、量化和運行推理。本節的其餘部分將快速概述 Llama3.1 的這些步驟。
請按照官方meta-llama
儲存庫上的說明進行操作,以確保您可以存取官方 Llama 模型權重。確認存取後,您可以執行以下命令將權重下載到本機。這也將下載分詞器模型和負責任的使用指南。
要下載 Llama3.1,您可以運行:
調下載meta-llama/Meta-Llama-3.1-8B-Instruct --output-dir /tmp/Meta-Llama-3.1-8B-Instruct --ignore-patterns "original/consolidated.00.pth" --hf-token
提示
設定環境變數HF_TOKEN
或將--hf-token
傳遞給命令以驗證您的存取權限。您可以在 https://huggingface.co/settings/tokens 找到您的令牌
您可以使用以下命令在單一 GPU 上透過 LoRA 微調 Llama3.1 8B:
調整執行 lora_finetune_single_device --config llama3_1/8B_lora_single_device
對於分散式訓練,tune CLI 與 torchrun 整合。要在兩台 GPU 上運行 Llama3.1 8B 的完整微調:
調整運行 --nproc_per_node 2 full_finetune_distributed --config llama3_1/8B_full
提示
確保將所有 torchrun 指令放在配方規格之前。此後的任何 CLI 參數都將覆蓋配置並且不會影響分散式訓練。
您可以透過兩種方式修改配置:
配置覆蓋
您可以直接從命令列覆蓋配置欄位:
調整運行 lora_finetune_single_device --config llama2/7B_lora_single_device 批量大小=8 enable_activation_checkpointing=True max_steps_per_epoch=128
更新本地副本
您也可以將設定複製到本機目錄並直接修改內容:
調整 cp llama3_1/8B_full ./my_custom_config.yaml 複製到 ./my_custom_config.yaml
然後,您可以透過將tune run
命令定向到本機檔案來執行自訂配方:
調整執行 full_finetune_distributed --config ./my_custom_config.yaml
查看tune --help
以了解所有可能的 CLI 命令和選項。有關使用和更新配置的更多信息,請查看我們的配置深入研究。
torchtune 支援對各種不同資料集進行微調,包括指令式、聊天式、偏好資料集等。如果您想了解有關如何應用這些元件對您自己的自訂資料集進行微調的更多信息,請查看提供的連結以及我們的 API 文件。
torchtune 專注於與生態系統中的流行工具和庫整合。這些只是一些範例,更多範例正在開發中:
Hugging Face Hub 用於存取模型權重
EleutherAI 的 LM Eval Harness 用於評估經過訓練的模型
擁抱人臉資料集以存取訓練和評估資料集
用於分散式訓練的 PyTorch FSDP2
torchao 用於較低精度的資料類型和訓練後量化技術
用於記錄指標和檢查點以及追蹤訓練進度的權重和偏差
Comet 作為日誌記錄的另一種選擇
ExecuTorch 使用微調模型進行裝置上推理
用於我們的單設備配方的低內存優化器的bitsandbytes
PEFT 用於在 Hugging Face 生態系統中使用 torchtune 模型進行持續微調或推理
我們非常重視我們的社群以及我們出色的用戶所做的貢獻。我們將使用本節來列出其中的一些貢獻。如果您也想提供協助,請參閱貢獻指南。
@SalmanMohammadi 增加了全面的端到端強化學習方法,用於透過 PPO 進行人類回饋強化學習 (RLHF) 微調。
@fyabc 用於將 Qwen2 模型、分詞器和配方整合添加到 torchtune
@solitude-alive 用於將 Gemma 2B 模型新增至 torchtune,包括配方變更、模型的數位驗證和配方正確性
@yechenzhi 將直接偏好優化 (DPO) 添加到 torchtune,包括配方和配置以及正確性檢查
此儲存庫中的 Llama2 程式碼受到原始 Llama2 程式碼的啟發。
我們要大力讚揚 EleutherAI、Hugging Face 和 Weights & Biases,他們是出色的合作者,並與我們一起在 torchtune 中進行一些整合。
我們也想感謝生態系統中一些很棒的函式庫和工具:
gpt-fast 用於高效能 LLM 推理技術,我們已採用開箱即用的技術
加入 llama2 社群的 llama 食譜
bitsandbytes 將多種基於記憶體和效能的技術引入 PyTorch 生態系統
@winglian 和 axolotl 對 torchtune 的設計和功能集進行早期反饋和集思廣益。
lit-gpt 推動 LLM 微調社群向前發展。
HF TRL 讓 PyTorch 社群更容易存取獎勵建模。
torchtune 在 BSD 3 許可證下發布。但是,您可能還有其他法律義務來約束您對其他內容的使用,例如第三方模型的服務條款。
如果您發現 torchtune 庫有用,請在您的作品中引用它,如下所示。
@software{torchtune, title = {torchtune: PyTorch 的微調庫},作者= {torchtune 維護者和貢獻者},url = {https://github.com/pytorch/torchtune},許可證= {BSD-3 -Clause},月份= 四月,年份 = {2024}}