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