RagModel に組み込み、weave.Evaluation で更新したアプリケーションを評価したうえで、新しい RAG モデルを Registry に公開します。このワークフローは、W&B Models でモデルをトレーニングおよびファインチューニングし、それらを Weave でトラッキングおよび評価する LLM アプリケーションに統合したい Teams を対象としています。
これはインタラクティブなノートブックです。ローカルで実行することも、以下のリンクを使用することもできます。
前提条件
pipを使って、weave、pandas、unsloth、wandb、litellm、pydantic、torch、faiss-gpuをインストールします。
- 環境内の必須APIキーを追加します。
- W&B にログインし、新しいプロジェクトを作成します。
Models Registry から ChatModel をダウンロードし、UnslothLoRAChatModel を実装する
unsloth ライブラリを使用して Llama-3.2 モデルをパフォーマンス最適化向けにファインチューニングしており、このモデルは W&B Models Registry で利用できます。この step では、Registry からファインチューニング済みの ChatModel を取得し、RagModel と互換性を持たせるために weave.Model に変換します。
以下のコードで参照している
RagModel は、完全な RAG アプリケーションと見なせるトップレベルの weave.Model です。これには ChatModel、ベクトルデータベース、プロンプトが含まれます。ChatModel も weave.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_length や dtype などのパラメーターをハードウェアや要件に基づいて調整してください。
新しい ChatModel バージョンを RagModel に統合する
RagModel を取得し、その ChatModel を更新して、ファインチューニングしたモデルを使用するようにします。新しいチャットモデルに差し替えても、ベクトルデータベースやプロンプトなどの他のコンポーネントには手を加えず、アプリケーション全体の構造を維持したままパフォーマンスを向上できます。
以下のコードは、Weave プロジェクトの参照を使用して RagModel オブジェクトを取得します。次に、RagModel の chat_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 ページへ直接リンクされます。
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 にプッシュします。
以下のコードでは、更新した RagModel の weave オブジェクトのバージョンと名を取得し、それらを使用して参照リンクを作成します。続いて、このコードはモデルの 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 の間の往復が完了します。