NVIDIA NeMo AutoModelを使用したQwen3のLoRA微調整:完全なシングルGPU Google Colabワークフローチュートリアル
このチュートリアルでは、Google Colab上の単一GPUでNVIDIA NeMo AutoModelを使用してQwen3-0.6BモデルをLoRAでパラメータ効率よく微調整する方法を詳細に説明します。環境検証、ソースインストール、レシピの読み込みと調整、コマンドラインでのトレーニング、モデル評価、Python APIの呼び出しをカバーします。
本チュートリアルでは、Google Colabの単一GPU上でNVIDIA NeMo AutoModelを用いたエンドツーエンドのワークフローを構築します。このワークフローは設定駆動型のトレーニングアーキテクチャに基づいており、分散マルチGPU環境にも容易にスケール可能です。環境検証、NeMo AutoModelのソースインストール、公式Qwen3-0.6B LoRA微調整レシピの読み込みと調整、コマンドラインからの微調整、モデル出力の比較、そしてPython APIの利用方法を順を追って解説します。
Colabワークスペースのセットアップ まず、必要なPythonライブラリをインポートし、リポジトリ、作業ディレクトリ、チェックポイントディレクトリを定義します。コマンド実行と出力ストリーム表示のためのシェルヘルパー関数を作成し、エラー時には例外を発生させるようにします。
GPUの確認とNeMo AutoModelのインストール PyTorchを使用してCUDA対応GPUの有無を確認し、GPU名、VRAM容量、bfloat16対応状況を表示します。次に、NeMo AutoModelリポジトリをクローンし(未クローンの場合)、ソースからインストールします。さらに、pyyamlとpeftの依存パッケージをインストールし、nemo_automodelが正しくインポートできることを確認します。
Qwen3 LoRAレシピの読み込みと調整 NeMo AutoModelのYAMLレシピファイル(PEFT用)を見つけ、その設定内容を表示します。Colabの単一GPU環境に合わせて、再帰的に設定を調整します:bfloat16非対応GPUの場合は精度をfloat32に、バッチサイズを制限(ローカル4、グローバル8)、最大ステップ数を40、チェックポイント間隔も40に設定し、チェックポイントを有効にします。調整後のレシピを新しいYAMLファイルとして保存し、ベースモデルIDを抽出します。
HellaSwagデータセットでのLoRA微調整の実行 NeMo AutoModelのコマンドラインインターフェースを使用して微調整を開始します。Hugging Face転送とtokenizer並列処理を無効にする環境変数を設定し、Colabでの予測可能性を高めます。プライマリコマンドが失敗した場合のフォールバックとして、旧構文のコマンドも用意します。
ベースモデルと微調整モデルの出力比較 トークナイザーとベース因果言語モデルを読み込み、固定プロンプト(例:「男性が屋根に座っています。彼は屋根瓦を剥がし始めます。次に何が起こるでしょうか?」)で生成を行い、ベースラインを確立します。トレーニング出力ディレクトリから最新のLoRAアダプタチェックポイントを検索し、PEFTを使ってベースモデルにアタッチします。アダプタ適用後のモデルで再度生成を行い、結果を比較します。GPUメモリを解放して評価を終了します。
NeMo AutoModel Python APIの利用 コマンドライン以外にも、NeMo AutoModelはHugging FaceライクなPython APIを提供します。NeMoAutoModelForCausalLMを使用してモデルを直接読み込み、テキスト生成を行う方法をデモンストレーションします。バージョンやGPUに依存するエラーはキャッチしてスキップし、ノートブックが正常に完了できるようにします。
まとめ 本チュートリアルでは、環境検証からPython APIまで、実用的なNeMo AutoModelパイプラインを構築しました。NeMo AutoModelは、モデル、データセット、最適化、並列化などの設定をYAMLレシピで分離するため、同一レシピを単一GPUからマルチノード環境まで容易にスケールできます。このワークフローを基に、他の言語モデルやビジョン言語モデル、拡散モデルのレシピにも挑戦できます。詳細は公式ドキュメントを参照してください。
完全なコードは元記事をご覧ください。Twitter、150k+ ML SubReddit、Newsletterもぜひフォローください。