Qwen3-FineTuning-Playgroundは、大規模言語モデルのQwen3ファミリーのファインチューニングに特化した完全なコードベースを提供するオープンソースプロジェクトです。このプロジェクトの基本は、開発者や研究者が様々な主流のファインチューニング技術を簡単に実践できるように、明確で専門的、かつ拡張しやすいファインチューニング・コード例を提供することです。プロジェクトのコードは明確に構造化されており、教師ありファインチューニング、強化学習、知識抽出、推論などの異なる機能を別々のディレクトリにモジュール化している。すべての学習スクリプトと推論スクリプトは、コマンドラインからパラメータを渡すことで設定をサポートする。さらに、このプロジェクトでは、初心者でも環境設定からデータ準備、モデル学習、推論までの全プロセスをドキュメントに従ってステップ・バイ・ステップで進めることができるように、エンド・ツー・エンドの詳細なチュートリアルをいくつか提供している。
機能一覧
- 複数の監視付き微調整プログラム(SFT)モデルの完全なパラメータ微調整をサポートし、LoRA(Low Rank Adaptation)などのテクニックを使用した効率的な微調整により、異なるハードウェアリソースやトレーニング要件に適応します。
- 強化学習アライメント(RL)対話の質と指示への追従性を向上させるための、人間のフィードバックに基づく複数の強化学習アルゴリズムの統合。
- PPOアルゴリズム報酬モデル(RM)を通じてモデル学習を導く古典的な近接政策最適化アルゴリズムを実装している。
- ORPOアルゴリズム報酬モデルを追加することなく、学習プロセスを単純化する効率的なプリファレンス・アラインメント・アルゴリズムを提供します。
- トレーニング後の最適化技術:
- 知識の蒸留例:Qwen3-4B のような大きな教師用モデルから、Qwen3-1.7B のような小さな生徒用モデルへの知識の移行をサポート。
- モジュラー・コード構造このプロジェクトでは、コードを機能別に明確にディレクトリ分けしている。
Supervised_FineTuning
そしてRL_FineTuning
など、コードを理解しやすくし、保守しやすくする。 - パラメトリック・ラン・スクリプトすべてのスクリプトはコマンドラインパラメータによる設定をサポートしており、ユーザーはコードを変更することなく、モデルパス、データセット、出力ディレクトリなどのパラメータを柔軟に調整することができます。
- エンド・ツー・エンドのサンプル・チュートリアルで
example/
このカタログでは、SFTからPPOへの完全なプロセス、ORPOのためのシングルステップアライメント、知識の蒸留、ドメイン固有のアプリケーション(心理学における多ラウンドダイアログの微調整など)をカバーする、完全なハンズオンチュートリアルが提供されている。
ヘルプの使用
このコードベースは、Qwen3 モデルのファインチューニングを迅速に開始するための完全なプロセスを提供します。以下では、SFT-LoRA のファインチューニングを例に、その手順を詳しく説明します。
1.準備:プロジェクトのクローンと環境の設定
まず、GitHubからプロジェクト・コードをローカル・コンピューターにクローンし、プロジェクト・ディレクトリーに移動する必要がある。
git clone https://github.com/Muziqinshan/Qwen3-FineTuning-Playground.git
cd Qwen3-FineTuning-Playground
次のステップはPython環境の設定です。すでにシステム上にあるライブラリとの衝突を避けるためにconda
全く新しいスタンドアロン環境を作成する。このプロジェクトではPythonバージョン3.10を推奨します。
# 创建一个名为 qwen3_ft 的新环境
conda create -n qwen3_ft python=3.10
# 激活这个新创建的环境
conda activate qwen3_ft
環境をアクティブにした後、プロジェクトに必要な依存ライブラリをすべてインストールする必要があります。プロジェクトのルートディレクトリでrequirements.txt
このファイルには、すでに必要なライブラリーがすべてリストアップされています。以下のコマンドを実行してインストールしてください:
pip install -r requirements.txt
2.モデルのダウンロードとデータの準備
微調整の前に、ベースモデルとトレーニング用のデータセットを準備する必要がある。
ダウンロードモデル
このプロジェクトにお勧めmodelscope
このライブラリは、Magic Matchコミュニティから事前にトレーニングされたQwen3モデルをダウンロードする。modelscope
ライブラリーは前のステップを実行しているpip install
コマンドがインストールされた。
以下のコマンドを実行して、このプロジェクト例で使用する2つのベースモデルをダウンロードする:
# 下载Qwen3-1.7B模型,它将主要用于SFT、ORPO和PPO等微调任务
modelscope download --model Qwen/Qwen3-1.7B --local_dir ./Qwen3/Qwen3-1.7B
# 下载Qwen3-4B模型,它主要用作知识蒸馏任务中的教师模型
modelscope download --model Qwen/Qwen3-4B --local_dir ./Qwen3/Qwen3-4B
コマンドが実行されると、モデルファイルは自動的にダウンロードされ、プロジェクトのルート・ディレクトリである./Qwen3/Qwen3-1.7B
歌で応える./Qwen3/Qwen3-4B
カタログ
データの準備
このプロジェクトで使用されるデータには特定のJSON形式があります。で使用されるデータには特定のJSON形式があります。data/
という名前のディレクトリを提供する。dirty_chinese_dpo.json
の例ファイルを参照し、自分のデータセットを作成するための書式を設定することができる。
3.SFT-LoRA微調整の開始
すべての準備が整ったら、いよいよトレーニングを開始する。以下のコマンドは、教師あり微調整(SFT)タスクを開始し、LoRAテクニックを使用して効率を向上させます。
python Supervised_FineTuning/train_sft_dirty.py \
--model_path ./Qwen3/Qwen3-1.7B \
--dataset_path data/dirty_chinese_dpo.json \
--sft_adapter_output_dir ./output/sft_adapter_demo
--model_path
先ほどダウンロードしたベースモデルへのパスを指定します。--dataset_path
学習に使用するデータセットファイルを指定します。--sft_adapter_output_dir
トレーニング終了後、LoRA アダプタの重みが保存されるディレクトリを指定する。
トレーニングはハードウェアの性能に応じて一定期間行われます。トレーニングの終了時には、以下のことが行われます。./output/sft_adapter_demo
生成されたモデル・アダプタ・ファイルをディレクトリから探します。
4.微調整されたモデルによる推論
モデルの学習が完了したら、最も重要なステップはその有効性を検証することです。以下の推論スクリプトを実行することで、微調整したモデルと対話形式でチャットをすることができます。
python inference/inference_dirty_sft.py \
--model_path ./Qwen3/Qwen3-1.7B \
--adapter_path ./output/sft_adapter_demo \
--mode interactive
--model_path
:: 繰り返すが、ベースモデルのパスだ。--adapter_path
前のステップで学習した LoRA アダプタがあるディレクトリを指す。--mode interactive
コマンドラインから直接質問を入力してモデルと会話することができます。
これで、特定のタスクについてモデルのパフォーマンスをテストする準備が整いました。ORPOや知識蒸留など、他の微調整方法を試したい場合はexample/
ディレクトリ内の詳細なチュートリアル・ドキュメントにも同様の手順がある。
アプリケーションシナリオ
- ドメイン別インテリジェント・カスタマー・サービス
一般的なQwen3モデルを業界固有の知識ベース(金融、医療、法律など)上で微調整することで、専門的な質問に正確に回答できるインテリジェントなカスタマーサービスロボットを作ることができます。プロジェクトで提供されるSFTチュートリアルは、このシナリオを実現するための理想的な出発点です。 - パーソナライズされたコンテンツ制作アシスタント
特定の文体(例えば、特定の作家の作品や、特定のスタイルのマーケティングコピー)のテキストデータを使ってモデルを微調整することで、その文体を模倣できるアシスタントを作成し、コンテンツ作成、詩の執筆、広告コピーの生成の補助として使用することができる。 - モデルの軽量化とプライベート・デプロイメント
演算リソースが限られたシナリオでは、知識蒸留機能を使用して、大規模モデル(例:Qwen3-4B)の機能を小規模モデル(例:Qwen3-1.7B)に移行することができる。これにより、性能の大部分が維持され、推論コストが大幅に削減されるため、個人用デバイスやエッジコンピューティングデバイスへの私的展開が容易になる。 - モデル・ダイアログの安全性と一貫性の向上
強化学習の手法(PPOやORPOなど)を使って、モデルを人間の嗜好データに合わせることで、出力される反応がより人間の価値観に沿ったものになり、有害または不適切なコンテンツの生成を減らし、対話の信頼性と安全性を向上させることができる。
品質保証
- このプロジェクトでサポートされているQwen3の主なモデルは何ですか?
このプロジェクトは、主にQwen3シリーズの開発・テスト用モデルをベースにしており、サンプルコードはQwen3-1.7BとQwen3-4Bモデルへの直接アクセスを提供し、ダウンロードして使用することができます。理論的には、Qwen3シリーズの他のサイズのモデルとも互換性があります。 - 微調整を行うには、どのようなハードウェア構成が必要ですか?
ハードウェア要件は、選択する微調整方法とモデルサイズによって異なります。SFT-LoRAによるQwen3-1.7Bのファインチューニングのような小規模なモデルでは、通常、コンシューマーグレードのグラフィックカード(NVIDIA 3090または4090など)で十分です。しかし、完全なファインチューニングや大規模モデルのトレーニングには、より多くのビデオメモリと計算リソースが必要です。 - ORPOとPPOの微調整の違いは?
PPOは古典的な強化学習アルゴリズムであり、モデルの出力を得点化するために、事前に訓練された別の報酬モデルを必要とし、訓練プロセスは比較的複雑である。一方、ORPOは新しいアルゴリズムで、報酬モデルを追加する必要がなく、嗜好データから直接モデルを最適化するため、プロセスがよりシンプルで効率的です。 - 自分のデータセットを使うことはできますか?
まったくだ。データセットを項目に整理するだけです。data/
ディレクトリを作成し、トレーニングスクリプトを実行する際に--dataset_path
パラメータでファイルパスを指定するだけです。