メインコンテンツへスキップ
このノートブックでは、W&B Models と Weave を組み合わせて、Retrieval-Augmented Generation (RAG) アプリケーションを構築、評価、公開するエンドツーエンドのワークフローを説明します。W&B Models Registry からファインチューニング済みのチャットモデルを取得し、Weave でトラッキングされている既存の RagModel に組み込み、weave.Evaluation で更新したアプリケーションを評価したうえで、新しい RAG モデルを Registry に公開します。このワークフローは、W&B Models でモデルをトレーニングおよびファインチューニングし、それらを Weave でトラッキングおよび評価する LLM アプリケーションに統合したい Teams を対象としています。
これはインタラクティブなノートブックです。ローカルで実行することも、以下のリンクを使用することもできます。

前提条件

まず、必須のライブラリをインストールし、APIキーを設定して、W&B にログインし、新しい W&B プロジェクトを作成します。
  1. pip を使って、weavepandasunslothwandblitellmpydantictorchfaiss-gpu をインストールします。
  1. 環境内の必須APIキーを追加します。
  1. W&B にログインし、新しいプロジェクトを作成します。

Models Registry から ChatModel をダウンロードし、UnslothLoRAChatModel を実装する

このシナリオでは、Model Team はすでに unsloth ライブラリを使用して Llama-3.2 モデルをパフォーマンス最適化向けにファインチューニングしており、このモデルは W&B Models Registry で利用できます。この step では、Registry からファインチューニング済みの ChatModel を取得し、RagModel と互換性を持たせるために weave.Model に変換します。
以下のコードで参照している RagModel は、完全な RAG アプリケーションと見なせるトップレベルの weave.Model です。これには ChatModel、ベクトルデータベース、プロンプトが含まれます。ChatModelweave.Model であり、W&B Registry から artifact をダウンロードするコードを含んでいます。ChatModel は、RagModel の一部として他の種類の LLM チャットモデルにも対応できるよう、モジュール単位で変更できます。詳細については、Weave でモデルを表示してください。
ChatModel をロードするには、アプリに効率的にインテグレーションするために、アダプター付きの unsloth.FastLanguageModel または peft.AutoPeftModelForCausalLM を使用します。Registry からモデルをダウンロードした後、model_post_init method を使用して初期化と予測ロジックを設定します。この step に必要なコードは Registry の Use タブで利用でき、そのまま実装にコピーできます。 以下のコードは、W&B Models Registry から取得したファインチューニング済み Llama-3.2 モデルを管理、初期化、使用するための UnslothLoRAChatModel クラスを定義しています。UnslothLoRAChatModel は、最適化された推論のために unsloth.FastLanguageModel を使用します。model_post_init method はモデルをダウンロードして設定し、predict method はユーザーのクエリを処理して応答を生成します。コードをユースケースに合わせて調整するには、MODEL_REG_URL をファインチューニングしたモデルの正しい Registry パスに更新し、max_seq_lengthdtype などのパラメーターをハードウェアや要件に基づいて調整してください。

新しい ChatModel バージョンを RagModel に統合する

ファインチューニングしたチャットモデルを基に RAG アプリケーションを構築すると、パイプライン全体を作り直さなくても、用途に合わせて調整したコンポーネントを再利用できます。この step では、Weave プロジェクトから既存の RagModel を取得し、その ChatModel を更新して、ファインチューニングしたモデルを使用するようにします。新しいチャットモデルに差し替えても、ベクトルデータベースやプロンプトなどの他のコンポーネントには手を加えず、アプリケーション全体の構造を維持したままパフォーマンスを向上できます。 以下のコードは、Weave プロジェクトの参照を使用して RagModel オブジェクトを取得します。次に、RagModelchat_model 属性を更新し、前の step で作成した新しい UnslothLoRAChatModel インスタンスを使用するようにします。その後、更新した RagModel を公開して新しいバージョンを作成します。最後に、更新した RagModel を使用してサンプルの予測クエリを実行し、新しいチャットモデルが使用されていることを確認します。

weave.Evaluation を実行する

更新した RagModel を公開したら、次の step は、新たにファインチューニングしたチャットモデルがアプリケーション内で期待どおりに動作することを確認することです。この step では、既存の weave.Evaluation を使用して、更新した RagModel のパフォーマンスを評価します。このプロセスにより、新たにファインチューニングしたチャットモデルが、RAG アプリケーション内で期待どおりに動作していることを確認できます。インテグレーションを簡素化し、Models チームと Apps チームのコラボレーションを可能にするため、評価結果をモデルの W&B run と Weave Workspace の両方にログします。 In Models:
  • 評価 summary は、ファインチューニング済みチャットモデルのダウンロードに使用した W&B run にログされます。これには、分析用の workspace view に表示される summary メトリクスとグラフが含まれます。
  • 評価のトレース ID は run の設定に追加され、Model Team が追跡しやすいように Weave ページへ直接リンクされます。
In Weave:
  • ChatModel の artifact または Registry へのリンクが、RagModel への入力として保存されます。
  • W&B run ID は、コンテキストをわかりやすくするために、評価トレースの追加列として保存されます。
以下のコードは、評価オブジェクト を取得し、更新した RagModel を使用して評価を実行し、その結果を W&B と Weave の両方にログする方法を示しています。評価 reference (WEAVE_EVAL) がプロジェクトの設定と一致していることを確認してください。

新しい RAG model を Registry に保存

更新した RagModel を評価したので、最後のステップは、それを W&B Models Registry に再び公開し、他のチームが見つけて再利用できるようにすることです。更新した RagModel を Models チームと Apps チームの両方が今後使用できるようにするため、参照 artifact として W&B Models Registry にプッシュします。 以下のコードでは、更新した RagModelweave オブジェクトのバージョンと名を取得し、それらを使用して参照リンクを作成します。続いて、このコードはモデルの Weave URL を含むメタデータを持つ新しい artifact を W&B に作成します。このコードはこの artifact を W&B Registry にログし、指定した Registry パス にリンクします。 コードを実行する前に、ENTITY 変数と PROJECT 変数がご利用の W&B 環境に合っていることを確認し、正しい対象 Registry パス を指定してください。このプロセスにより、新しい RagModel が共同作業と再利用のために W&B エコシステムへ公開され、workflow が完了します。 このセクションのコードを実行すると、更新した RagModel は参照 artifact として W&B Models Registry で利用可能になり、W&B Models と Weave の間の往復が完了します。