RagModel に組み込み、weave.Evaluation で更新後のアプリケーションを評価したうえで、新しい RAG モデルを Registry にパブリッシュします。このワークフローは、W&B Models でモデルのトレーニングやファインチューニングを行い、そのモデルを Weave で追跡・評価している LLM アプリケーションに統合したいチームを対象としています。
これはインタラクティブなノートブックです。ローカルで実行するか、次のリンクから利用できます。
前提条件
まず、必要なライブラリをインストールし、APIキーを設定したうえで Forge にログインし、新しい Weights & Biases project を作成します。pipを使用してweave、pandas、unsloth、wandb、litellm、pydantic、torch、faiss-gpuをインストールします。
- 環境から必要な APIキーを追加します。
- Forge にログインし、新しい project を作成します。
Registry から ChatModel をダウンロードして UnslothLoRAChatModel を実装する
このシナリオでは、Model Team がパフォーマンス最適化のために unsloth ライブラリを使用して Llama-3.2 モデルをすでにファインチューニングしており、そのモデルは W&B Registry で利用できます。このステップでは、ファインチューニングした ChatModel を Registry から取得し、RagModel で使用できるように weave.Model に変換します。
以下のコードで参照している
RagModel は、完全な RAG アプリケーションと見なせるトップレベルの weave.Model です。RagModel には ChatModel、ベクトルデータベース、プロンプトが含まれます。ChatModel も weave.Model であり、W&B Registry からアーティファクトをダウンロードするコードを含んでいます。ChatModel はモジュールとして差し替えられるため、RagModel の一部として他の任意の LLM チャットモデルに対応させることができます。詳細については、Weave でモデルを確認してください。ChatModel を読み込むには、アダプターとともに unsloth.FastLanguageModel または peft.AutoPeftModelForCausalLM を使用します。これにより、アプリへ効率的に組み込めます。Registry からモデルをダウンロードしたら、model_post_init メソッドで初期化と予測のロジックを設定します。このステップに必要なコードは Registry の Use タブに用意されており、そのまま実装にコピーできます。
以下のコードでは、Registry から取得したファインチューニング済みの Llama-3.2 モデルを管理、初期化、使用するための UnslothLoRAChatModel クラスを定義します。UnslothLoRAChatModel は、推論を最適化するために unsloth.FastLanguageModel を使用します。model_post_init メソッドはモデルのダウンロードと設定を行い、predict メソッドはユーザーのクエリを処理して応答を生成します。ユースケースに合わせてコードを調整するには、MODEL_REG_URL をファインチューニングしたモデルの正しい Registry パスに更新し、ハードウェアや要件に応じて max_seq_length や dtype などのパラメーターを調整してください。
新しい ChatModel バージョンを RagModel に統合する
ファインチューン済みチャットモデルを使って RAG アプリケーションを構築すると、パイプライン全体を作り直すことなく、カスタマイズしたコンポーネントを再利用できます。このステップでは、Weave プロジェクトから既存の RagModel を取得し、その ChatModel を更新して、ファインチューニングしたモデルを使用するようにします。新しいチャットモデルに差し替えても、ベクトルデータベースやプロンプトなどの他のコンポーネントには影響しません。そのため、アプリケーション全体の構造を維持したまま、パフォーマンスを向上させることができます。
次のコードでは、まず Weave プロジェクトの ref を使用して RagModel オブジェクトを取得します。続いて、RagModel の chat_model 属性を更新し、前のステップで作成した新しい UnslothLoRAChatModel インスタンスを使用するようにします。その後、更新した RagModel をパブリッシュして新しいバージョンを作成します。最後に、更新した RagModel でサンプルの予測クエリを実行し、新しいチャットモデルが使用されていることを確認します。
weave.Evaluation を実行する
更新した RagModel をパブリッシュしたら、次は新しいファインチューン済みチャットモデルがアプリケーション内で期待どおりに動作するかを確認します。このステップでは、既存の weave.Evaluation を使用して、更新した RagModel のパフォーマンスを評価します。これにより、新しいファインチューン済みチャットモデルが RAG アプリケーション内で期待どおりに動作することを確認できます。インテグレーションを効率化し、Models チームと Apps チームが連携しやすくなるよう、評価結果はモデルの W&B run と Weave の workspace の両方にログします。
Models の場合:
- 評価のサマリーは、ファインチューン済みチャットモデルのダウンロードに使用した W&B run にログされます。これには、分析用に Workspace ビュー に表示されるサマリー メトリクスとグラフが含まれます。
- 評価のトレース ID が run の設定に追加され、Weave ページに直接リンクされます。これにより、Model Team によるトレーサビリティが向上します。
ChatModelのアーティファクトまたは Registry のリンクが、RagModelへの入力として保存されます。- コンテキストを補うため、W&B の run ID が評価トレースに追加の列として保存されます。
RagModel で評価を実行して、結果を W&B と Weave の両方にログする方法を示しています。評価 ref (WEAVE_EVAL) がお使いの project の設定と一致していることを確認してください。
新しい RAG モデルを Registry に保存する
更新したRagModel の評価が完了したら、最後のステップとして、他のチームが検索して再利用できるように Registry にパブリッシュします。Models チームと Apps チームの両方が更新した RagModel を今後使用できるように、reference artifact として Registry にプッシュします。
次のコードは、更新した RagModel の weave オブジェクトのバージョンと名前を取得し、それらを使用して参照リンクを作成します。続いて、モデルの Weave URL をメタデータに含む新しいアーティファクトを W&B に作成します。最後に、このアーティファクトを Registry にログし、指定した Registry パスにリンクします。
コードを実行する前に、ENTITY 変数と PROJECT 変数が W&B の設定と一致していることを確認し、正しいリンク先の Registry パスを指定してください。このプロセスで新しい RagModel を W&B エコシステムにパブリッシュすることで、コラボレーションと再利用が可能になり、ワークフローが完了します。
このセクションのコードを実行すると、更新した RagModel が reference artifact として Registry で使用できるようになり、W&B Models と Weave の間のラウンドトリップが完了します。