Hugging Face Hub Search API Updates

Hugging Faceは、モデル、データセット、およびSpacesを検索するための、より直感的でプログラムによるインターフェースを提供するために、huggingface_hubライブラリを更新しました。これらの更新により、ユーザーがウェブインターフェースを手動で操作したり、APIクエリパラメータを推測したりする必要がなくなり、PythonやJupyter環境内で直接複雑なフィルタリングが可能になります。

Simplified Search with ModelSearchArguments

ModelSearchArgumentsおよびDatasetSearchArgumentsクラスは、ユーザーフレンドリーな用語をHugging Face APIが必要とする特定のフォーマット済み文字列にマッピングする、人間が読みやすい「チートシート」として機能します。これにより、パラメータをどのように記述すべきかを判断するための試行錯誤のプロセスが排除されます。

Available Search Attributes

ModelSearchArgumentsクラスは、以下の検索可能な属性のための名前空間を提供します:

  • author: モデルの作成者でフィルタリングします。
  • dataset: トレーニングに使用されたデータセットでフィルタリングします(例:model_args.dataset.glue'dataset:glue'を返します)。
  • language: モデルの言語でフィルタリングします。
  • library: PyTorchなどのフレームワークでフィルタリングします(例:model_args.library.PyTorch'pytorch'を返します)。
  • license: モデルのライセンスでフィルタリングします。
  • model_name: 特定のモデル名でフィルタリングします。
  • pipeline_tag: Text Classificationなどのタスクでフィルタリングします(例:model_args.pipeline_tag.TextClassification'text-classification'を返します)。

ユーザーは、api.list_models()メソッドにfilterパラメータを使用してこれらの引数を渡し、一致するモデルを取得できます。

Advanced Filtering with ModelFilter

複数の基準や基準ごとの複数の値を含む複雑なクエリの場合、ModelFilterクラスが検索のための調整されたアプローチを提供します。単純な文字列の代わりに、ModelFilterを使用すると、ユーザーはタスク、データセット、およびライブラリの要件リストを定義できます。

例えば、ユーザーは、以下のすべての基準を同時に満たすモデルを検索できます:

  • Tasks: text-classificationzero-shot-classificationの両方。
  • Datasets: Multi NLIとGLUEの両方。
  • Libraries: PyTorchとTensorFlowの両方。

Technical Implementation: AttributeDictionary

改善された検索体験は、AttributeDictionaryと呼ばれるユーティリティクラスによって支えられています。fastcoreライブラリのAttrDictクラスに触発されたAttributeDictionaryは、キーのタブ補完を可能にすることで標準的なPython辞書を強化し、これは探索的なプログラミングにおいて極めて重要です。

Key Characteristics of AttributeDictionary

  • Attribute Access: キーは辞書キー(例:ad['key'])としてだけでなく、属性(例:ad.key)としてもアクセスできます。
  • Nested Exploration: ネストされた辞書をサポートしており、APIレスポンスの深い探索を可能にします。
  • Deletion: キーはdel ad.keyまたはdel ad[key]のいずれかを使用して削除できます。
  • Constraint: キーに数字や特殊文字が含まれている場合、Pythonの構文では属性が数字で始まったり特殊文字を含んだりすることを許可していないため、標準的な辞書インデックス(ad['key'])を使用してアクセスする必要があります。

Programmatic Model Information

検索に加えて、huggingface_hubライブラリを使用すると、api.model_info('model_id')メソッドを介してモデルIDを使用して特定のモデルに関する詳細情報を取得できます。

Sources

関連

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch