これはインタラクティブなノートブックです。ローカルで実行することも、以下のリンクを使用することもできます。
前提条件
pipを使って、weave、pandas、unsloth、wandb、litellm、pydantic、torch、faiss-gpuをインストールします。
- 環境内の必要なAPIキーを追加します。
- W&B にログインし、新しいプロジェクトを作成します。
Models Registry から ChatModel をダウンロードし、UnslothLoRAChatModel を実装する
unsloth ライブラリを使用してパフォーマンス最適化向けにファインチューニングされており、W&B Models Registry で利用できます。この step では、Registry からファインチューニング済みの ChatModel を取得し、RagModel と互換性を持たせるために weave.Model に変換します。
以下で参照している
RagModel は、完全な RAG application と見なせるトップレベルの 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 を更新して、新たにファインチューニングしたモデルを使用するようにします。このシームレスな差し替えにより、ベクトルデータベース (VDB) やプロンプトなどの他のコンポーネントには手を加えず、アプリケーション全体の構造を維持したままパフォーマンスを向上できます。
以下のコードは、Weave プロジェクトの参照を使用して RagModel オブジェクトを取得します。次に、RagModel の chat_model 属性を更新し、前の step で作成した新しい UnslothLoRAChatModel インスタンスを使用するようにします。その後、更新した RagModel を公開して新しいバージョンを作成します。最後に、更新した RagModel を使用してサンプルの予測クエリを実行し、新しいチャットモデルが使用されていることを確認します。
weave.Evaluation を実行する
weave.Evaluation を使用して、更新した RagModel のパフォーマンスを評価します。このプロセスにより、新たにファインチューニングしたチャットモデルが、RAG アプリケーション内で期待どおりに動作していることを確認できます。インテグレーションを簡素化し、Models チームと Apps チームのコラボレーションを可能にするため、評価結果をモデルの W&B run と Weave Workspace の両方にログします。
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 を Models チームと Apps チームの両方が今後使用できるようにするため、参照 artifact として W&B Models Registry にプッシュします。
以下のコードでは、更新した RagModel の weave オブジェクトのバージョンと名を取得し、それらを使用して参照リンクを作成します。続いて、モデルの Weave URL を含むメタデータを持つ新しい artifact を W&B に作成します。この artifact は W&B Registry にログされ、指定した registry path にリンクされます。
コードを実行する前に、ENTITY 変数と PROJECT 変数がご利用の W&B 環境に合っていること、および対象の registry path が正しく指定されていることを確認してください。このプロセスにより、新しい RagModel が W&B エコシステムに公開され、共同作業や再利用をしやすくしたうえで workflow が完了します。