メインコンテンツへスキップ
このページに掲載されているコードサンプルは、すべて Python で記述されています。
このページでは、Hugging Face Hub を W&B Weave と統合して、機械学習アプリケーションをトラッキングおよび分析する方法を説明します。モデル推論をログし、関数callを監視し、Weave のトレース機能とバージョン管理機能を使って 実験 を整理する方法を学べます。ここで紹介する例に沿って進めることで、知見を取得し、アプリケーションをデバッグし、異なるモデル設定を比較できます。これらはすべて Weave の Web インターフェース内で行えます。
Google Colab で Hugging Face Hub と Weave を試す 面倒な設定なしで Hugging Face Hub と Weave を試してみたいですか? ここで紹介しているコードサンプルは、Google Colab 上の Jupyter Notebook として試せます。Colab で開く

概要

Hugging Face Hub は、クリエイターやコラボレーター向けの機械学習プラットフォームで、多様な種類のプロジェクトに利用できる事前トレーニング済みのモデルやデータセットを豊富に提供しています。 huggingface_hub Python ライブラリは、Hub でホストされているモデルに対して、複数のサービスをまたいで推論を実行できる統一インターフェースを提供します。これらのモデルは InferenceClient を使用して呼び出せます。 Weave は InferenceClient のトレースを自動的に取得します。トラッキングを開始するには、weave.init() を呼び出してから、通常どおりライブラリを使用します。

事前準備

開始する前に、必要なライブラリをインストールし、Hugging Face Hub へのアクセスを設定するために、次のセットアップ手順を完了してください。
  1. Weave で huggingface_hub を使用する前に、必要なライブラリをインストールするか、最新バージョンにアップグレードする必要があります。次のコマンドは、huggingface_hubweave をインストールし、すでにインストール済みの場合は最新バージョンにアップグレードします。また、インストール時の出力も抑制します。
  2. Hugging Face Hub 上のモデルで 推論 を使用するには、User Access Token を設定します。トークンは Hugging Face Hub の Settings ページ で設定することも、プログラムから設定することもできます。次のコード例では、HUGGINGFACE_TOKEN の入力を求め、そのトークンを環境変数に設定します。

基本的なトレース

開発時と本番環境では、言語モデルアプリケーションのトレースを一元的に保存することが重要です。これらのトレースはデバッグに役立つだけでなく、アプリケーションを改善するためのデータセットにもなります。 Weave は InferenceClient のトレースを自動的に取得します。トラッキングを開始するには、weave.init() を呼び出して Weave を初期化し、その後は通常どおりライブラリを使用します。 次の例では、Weave を使用して Hugging Face Hub への推論 Call をログする方法を示します。
前のコードを実行すると、Weave は Hugging Face Inference Client で行われたすべての LLM Call をトラッキングしてログします。これらのトレースは Weave のウェブインターフェースで確認できます。
Weave は各推論 Call をログし、inputs、outputs、metadata の詳細を表示します。
Weave は各推論 Call をログし、inputs、outputs、metadata の詳細を表示します。 モデルとのチャット履歴全体を表示する、UI上の Weave のチャットビュー Weave はその Call を UI上でチャットビューとして表示し、モデルとのチャット履歴全体を確認できます。

関数をトレースする

アプリケーション内でデータがどのように流れるかをより深く把握するには、@weave.op を使用して関数のcallをトラッキングできます。これにより、入力、出力、実行ロジックが記録され、デバッグやパフォーマンス分析に役立ちます。 複数の op をネストすると、トラッキングされた関数の構造化されたツリーを構築できます。Weave はコードも自動的にバージョン管理するため、Git に変更をコミットする前であっても、実験中の中間状態が保持されます。 トラッキングを開始するには、トラッキングしたい関数に @weave.op デコレータを付けます。 次の例では、Weave は generate_imagecheck_image_correctnessgenerate_image_and_check_correctness の 3 つの関数をトラッキングします。これらの関数は画像を生成し、それが指定されたプロンプトに一致するかどうかを検証します。
Weave では、@weave.op でラップされたすべての関数callがログされるため、Weave UI で実行の詳細を分析できます。
Weave では、@weave.op でラップされたすべての関数callがログされるため、Weave UI で実行の詳細を分析できます。Weave は関数の実行も記録して可視化するため、アプリケーション内のデータフローやロジックを把握しやすくなります。Weave は関数の実行も記録して可視化するため、アプリケーション内のデータフローやロジックを把握しやすくなります。

実験には Model を使用する

複数のコンポーネントが関わる場合、LLM の実験管理は難しくなりがちです。Weave の Model クラスを使うと、system prompt やモデル設定などの実験の詳細を記録して整理でき、異なるイテレーションを比較できます。 コードのバージョン管理や入力と出力の記録に加えて、Model にはアプリケーションの動作を制御する構造化されたパラメーターも保存されます。これにより、どの設定が最良の結果をもたらしたかをトラッキングできます。さらに詳しく分析するために、Weave Model を Weave ServeEvaluations と統合することもできます。 次の例では、旅行のおすすめ用の CityVisitRecommender モデルを定義します。パラメーターを変更するたびに新しいバージョンが生成されるため、反復的な実験を進められます。
Weave はモデルを自動的にログし、各バージョンをトラッキングするため、パフォーマンスや実験履歴を分析できます。
Weave はモデルを自動的にログし、各バージョンをトラッキングするため、パフォーマンスや実験履歴を分析できます。