これはインタラクティブなノートブックです。ローカルで実行するか、以下のリンクを使用できます:
事前準備
まず、必要なライブラリをインストールし、APIキーを設定して、W&B にログインし、新しい W&B プロジェクトを作成します。pipを使用してweave、pandas、unsloth、wandb、litellm、pydantic、torch、およびfaiss-gpuをインストールします。
- 環境から必要な APIキー を追加します。
- W&B にログインし、新しいプロジェクトを作成します。
Models Registry から ChatModel をダウンロードし、UnslothLoRAChatModel を実装する
このシナリオでは、Llama-3.2 モデルがパフォーマンス最適化のために unsloth ライブラリを使用してモデルチームによってすでにファインチューニングされており、W&B Models Registry で利用可能 です。このステップでは、ファインチューニング済みの ChatModel を Registry から取得し、それを weave.Model に変換して RagModel と互換性を持たせます。
以下で参照される
RagModel は、完全な RAG アプリケーションと見なすことができるトップレベルの weave.Model です。これには、ChatModel、ベクトルデータベース、およびプロンプトが含まれています。ChatModel も weave.Model であり、W&B Registry から アーティファクト をダウンロードするコードが含まれています。ChatModel は、RagModel の一部として他のあらゆる種類の LLM チャットモデルをサポートするようにモジュール式に変更できます。詳細については、Weave でモデルを表示 してください。ChatModel をロードするには、アダプターを備えた unsloth.FastLanguageModel または peft.AutoPeftModelForCausalLM が使用され、アプリへの効率的な統合が可能になります。Registry からモデルをダウンロードした後、model_post_init メソッドを使用して初期化と予測ロジックを設定できます。このステップに必要なコードは Registry の Use タブにあり、実装に直接コピーできます。
以下のコードは、W&B Models Registry から取得したファインチューニング済み Llama-3.2 モデルを管理、初期化、および使用するための UnslothLoRAChatModel クラスを定義しています。UnslothLoRAChatModel は、最適化された推論のために unsloth.FastLanguageModel を使用します。model_post_init メソッドはモデルのダウンロードとセットアップを処理し、predict メソッドはユーザーのクエリを処理して応答を生成します。コードをユースケースに合わせるには、MODEL_REG_URL をファインチューニング済みモデルの正しい Registry パスに更新し、ハードウェアや要件に基づいて max_seq_length や dtype などのパラメータを調整してください。
新しい ChatModel バージョンを RagModel に統合する
ファインチューニングされたチャットモデルから RAG アプリケーションを構築すると、パイプライン全体を再構築することなく、カスタマイズされたコンポーネントを使用して会話型 AI を向上させることができます。このステップでは、既存の RagModel を Weave プロジェクトから取得し、その chat_model を新しくファインチューニングされたモデルを使用するように更新します。このシームレスな入れ替えにより、ベクトルデータベース(VDB)やプロンプトなどの他のコンポーネントは変更されず、アプリケーション全体の構造を維持しながらパフォーマンスを向上させることができます。
以下のコードは、Weave プロジェクトからの参照を使用して RagModel オブジェクトを取得します。次に、RagModel の chat_model 属性を、前のステップで作成した新しい UnslothLoRAChatModel インスタンスを使用するように更新します。この後、更新された RagModel がパブリッシュされ、新しいバージョンが作成されます。最後に、更新された RagModel を使用してサンプルの予測クエリを実行し、新しいチャットモデルが使用されていることを確認します。
weave.Evaluation を実行する
次のステップでは、既存の weave.Evaluation を使用して、更新された RagModel のパフォーマンスを評価します。このプロセスにより、新しいファインチューニング済みチャットモデルが RAG アプリケーション内で期待どおりに機能していることが保証されます。統合を合理化し、モデルチームとアプリチーム間のコラボレーションを可能にするために、モデルの W&B run と Weave ワークスペースの両方に評価結果をログに記録します。
Models において:
- 評価の概要は、ファインチューニングされたチャットモデルのダウンロードに使用された W&B run に記録されます。これには、分析のために ワークスペース ビュー に表示されるサマリーメトリクスとグラフが含まれます。
- 評価のトレース ID が run の設定に追加され、モデルチームによる追跡を容易にするために Weave ページに直接リンクされます。
ChatModelの アーティファクト または registry リンクがRagModelへの入力として保存されます。- W&B の run ID が、コンテキストをより良く把握するために評価トレースの追加カラムとして保存されます。
RagModel を使用して評価を実行し、結果を W&B と Weave の両方に記録する方法を示しています。評価のリファレンス(WEAVE_EVAL)がプロジェクトのセットアップと一致していることを確認してください。
新しい RAG モデルを Registry に保存する
更新されたRagModel をモデルチームとアプリチームの両方が将来利用できるように、参照 アーティファクト として W&B Models Registry にプッシュします。
以下のコードは、更新された RagModel の weave オブジェクトバージョンと名前を取得し、それらを使用してリファレンスリンクを作成します。次に、モデルの Weave URL を含むメタデータを持つ新しい アーティファクト が W&B に作成されます。この アーティファクト は W&B Registry に記録され、指定された registry パスにリンクされます。
コードを実行する前に、ENTITY と PROJECT 変数が W&B の設定と一致していること、およびターゲットの registry パスが正しく指定されていることを確認してください。このプロセスにより、新しい RagModel を W&B エコシステムにパブリッシュし、容易なコラボレーションと再利用を可能にすることで、ワークフローが完了します。