はじめに|インストール|始めましょう|ドキュメント|コミュニティ|ライセンス|トーチチューンを引用
重要
2024 年 9 月 25 日更新: torchtune はLlama 3.2 11B Vision 、 Llama 3.2 3B 、およびLlama 3.2 1Bモデルをサポートしています。こちらのインストール手順に従ってこれらを試してから、ここでテキスト構成またはビジョン構成を実行してください。
torchtune は、LLM を簡単に作成、微調整、実験するための PyTorch ライブラリです。
トーチチューンは以下を提供します:
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 [モデル、構成] |
コードラマ2 | 7B、13B、70B [モデル、構成] |
ミストラル | 7B [モデル、構成] |
ジェマ | 2B、7B [モデル、構成] |
マイクロソフト Phi3 | ミニ [モデル、構成] |
クウェン2 | 0.5B、1.5B、7B [モデル、構成] |
私たちは常に新しいモデルを追加していますが、torchtune で確認したい新しいモデルがある場合はお気軽に問題を提出してください。
torchtune は、1 つ以上のデバイスでトレーニングするための次の微調整レシピを提供します。
微調整方法 | デバイス | レシピ | 設定例 |
---|---|---|---|
完全な微調整 | 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 シングルデバイス ジェムマ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_distributed | ラマ3 8B QAT |
直接的なプリファレンスの最適化 | 1-8 | lora_dpo_single_device lora_dpo_distributed | Llama2 7B 単一デバイス Llama2 7B 配布中 |
近接ポリシーの最適化 | 1 | ppo_full_finetune_single_device | ミストラル 7B |
知識の蒸留 | 1 | 知識_蒸留_単一デバイス | クウェン2 1.5B -> 0.5B |
上記の構成は、開始するための単なる例です。上記のモデルがここにリストされていない場合は、おそらくまだサポートされています。何かがサポートされているかどうか不明な場合は、リポジトリで問題を開いてください。
以下は、さまざまな Llama 3.1 モデルのメモリ要件とトレーニング速度の例です。
注記
比較を容易にするために、以下の数値はすべて、バッチ サイズ 2 (勾配累積なし)、シーケンス長 2048 にパックされたデータセット、およびトーチ コンパイルが有効な場合に提供されています。
異なるハードウェアまたは異なるモデルでの実行に興味がある場合は、ここでメモリの最適化に関するドキュメントを参照して、適切な設定を見つけてください。
モデル | 微調整方法 | 実行可能日 | GPUあたりのピークメモリ | トークン/秒 * |
---|---|---|---|---|
ラマ 3.1 8B | 完全な微調整 | 1x 4090 | 18.9 GiB | 1650 |
ラマ 3.1 8B | 完全な微調整 | 1x A6000 | 37.4 GiB | 2579 |
ラマ 3.1 8B | LoRA | 1x 4090 | 16.2 GiB | 3083 |
ラマ 3.1 8B | LoRA | 1x A6000 | 30.3 GiB | 4699 |
ラマ 3.1 8B | QLoRA | 1x 4090 | 7.4 GiB | 2413 |
ラマ 3.1 70B | 完全な微調整 | 8x A100 | 13.9 GiB ** | 1568年 |
ラマ 3.1 70B | LoRA | 8x A100 | 27.6 GiB | 3497 |
ラマ 3.1 405B | QLoRA | 8x A100 | 44.8GB | 653 |
*= 1 つの完全なトレーニング エポックにわたって測定
**= 融合オプティマイザによる CPU オフロードを使用します
torchtune は、最新の安定した PyTorch リリースとプレビューの夜間バージョンでテストされています。 torchtune は、マルチモーダル LLM を微調整するために torchvision を活用し、最新の量子化技術のために torchao を活用します。これらもインストールする必要があります。
# 安定した PyTorch、torchvision、torchao をインストールします安定したリリースspip インストール torch torchvision torchao pip インストールトーチチューン
# PyTorch、torchvision、torchao をインストールします nightliespip install --pre --upgrade torch torchvision torchao --index-url https://download.pytorch.org/whl/nightly/cu121 # 完全なオプションは cpu/cu118/cu121/cu124pip install --pre --upgrade torchtune --extra-index-url https://download.pytorch.org/whl/nightly/cpu
ソースからの torchtune のインストールなどの詳細については、インストール ドキュメントを参照してください。
パッケージが正しくインストールされていることを確認するには、次のコマンドを実行します。
調整 --ヘルプ
次の出力が表示されるはずです。
使用法:tune [-h] {ls,cp,download,run,validate} ... torchtune CLI へようこそ!オプション: -h、--help このヘルプ メッセージを表示して終了します...
torchtune を始めるには、「最初の Finetune チュートリアル」を参照してください。エンドツーエンドのワークフロー チュートリアルでは、Llama モデルを使用して推論を評価、量子化、実行する方法を説明します。このセクションの残りの部分では、Llama3.1 を使用したこれらの手順の概要を説明します。
公式のmeta-llama
リポジトリの指示に従って、公式の Llama モデルの重みにアクセスできることを確認します。アクセスを確認したら、次のコマンドを実行して重みをローカル マシンにダウンロードできます。これにより、トークナイザー モデルと責任ある使用ガイドもダウンロードされます。
Llama3.1 をダウンロードするには、次のコマンドを実行します。
曲のダウンロード metal-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
分散トレーニングの場合、CLI を torchrun と統合して調整します。 2 つの GPU で Llama3.1 8B の完全な微調整を実行するには:
調整実行 --nproc_per_node 2 full_finetune_distributed --config llama3_1/8B_full
ヒント
torchrun コマンドはレシピ仕様の前に必ず配置してください。これ以降の CLI 引数は設定をオーバーライドし、分散トレーニングには影響しません。
構成を変更するには 2 つの方法があります。
構成の上書き
コマンドラインから設定フィールドを直接上書きできます。
チューニング実行 lora_finetune_single_device --config llama2/7B_lora_single_device バッチサイズ=8 Enable_activation_checkpointing=True エポックごとの最大ステップ数=128
ローカルコピーを更新する
設定をローカル ディレクトリにコピーして、内容を直接変更することもできます。
cp llama3_1/8B_full ./my_custom_config.yaml を調整します ./my_custom_config.yaml にコピーされました
次に、 tune run
コマンドをローカル ファイルに指示することで、カスタム レシピを実行できます。
調整実行 full_finetune_distributed --config ./my_custom_config.yaml
すべての可能な CLI コマンドとオプションについては、 tune --help
確認してください。構成の使用と更新の詳細については、構成の詳細をご覧ください。
torchtune は、指示スタイル、チャット スタイル、好みのデータセットなど、さまざまなデータセットの微調整をサポートしています。これらのコンポーネントを適用して独自のカスタム データセットを微調整する方法について詳しく知りたい場合は、提供されているリンクと API ドキュメントを確認してください。
torchtune は、エコシステムの人気のあるツールやライブラリとの統合に重点を置いています。これらはほんの数例であり、さらに開発中です。
モデルの重みにアクセスするためのフェイスハブのハグ
トレーニング済みモデルを評価するための EleutherAI の LM Eval Harness
顔データセットをハグしてトレーニングおよび評価データセットにアクセスする
分散トレーニング用の PyTorch FSDP2
低精度の dtype とトレーニング後の量子化手法用の torchao
メトリクスとチェックポイントを記録し、トレーニングの進行状況を追跡するための重みとバイアス
ログ記録の別のオプションとして Comet
微調整されたモデルを使用したオンデバイス推論のための ExecuTorch
単一デバイス レシピの低メモリ オプティマイザー用の bitsandbytes
Hugging Face エコシステムのトーチチューン モデルを使用した継続的な微調整または推論のための PEFT
私たちはコミュニティと素晴らしいユーザーの貢献を本当に大切にしています。このセクションでは、これらの貢献の一部を取り上げます。同様に支援したい場合は、貢献ガイドを参照してください。
@SalmanMohammadi は、PPO を使用したヒューマン フィードバックからの強化学習 (RLHF) 微調整のための包括的なエンドツーエンド レシピをトーチチューンに追加してくれました。
@fyabc Qwen2 モデル、トークナイザー、レシピ統合を torchtune に追加してください
@solitude-alive は、レシピの変更、モデルの数値検証、レシピの正確性など、Gemma 2B モデルをトーチチューンに追加します。
@yechenzhi、レシピと構成、正確性チェックを含む Direct Preference Optimization (DPO) を torchtune に追加してくれました
このリポジトリの Llama2 コードは、元の Llama2 コードからインスピレーションを得ています。
私たちは、EleutherAI、Hugging Face および Weights & Biases が素晴らしい協力者であり、torchtune 内でこれらの統合のいくつかに協力してくれたことに大きな感謝の意を表したいと思います。
また、エコシステムのいくつかの素晴らしいライブラリとツールにも感謝したいと思います。
gpt-fast は、すぐに使用できるパフォーマンスの LLM 推論技術を採用しています。
ラマ 2 コミュニティに飛び込むためのラマ レシピ
bitsandbytes は、メモリとパフォーマンスに基づいたいくつかの技術を PyTorch エコシステムに導入します。
@winglian と axolotl は、torchtune の設計と機能セットに関する初期のフィードバックとブレインストーミングに協力してくれました。
LLM 微調整コミュニティを前進させるための lit-gpt。
PyTorch コミュニティが報酬モデリングをより利用しやすくするための HF TRL。
torchtune は BSD 3 ライセンスに基づいてリリースされています。ただし、サードパーティ モデルの利用規約など、他のコンテンツの使用を規定する他の法的義務が課される場合があります。
torchtune ライブラリが役立つと思われる場合は、以下のように作品内で引用してください。
@software{torchtune、タイトル = {torchtune: PyTorch の微調整ライブラリ}、著者 = {torchtune のメンテナーと寄稿者}、url = {https//github.com/pytorch/torchtune}、ライセンス = {BSD-3-Clause}、月= 4 月、年 = {2024}}