Hub Python Library documentation

ユーティリティ

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v2.4.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ユーティリティ

ログの構成

huggingface_hubパッケージは、パッケージ自体のログレベルを制御するためのloggingユーティリティを提供しています。 次のようにインポートできます:

from huggingface_hub import logging

次に、ログの表示量を調整するために冗長性(verbosity)を定義できます。

from huggingface_hub import logging

logging.set_verbosity_error()
logging.set_verbosity_warning()
logging.set_verbosity_info()
logging.set_verbosity_debug()

logging.set_verbosity(...)

レベルは次のように理解してください。

  • error: エラーや予期しない動作につながる可能性のある使用法に関する重大なログのみを表示します。
  • warning: 重大ではないが、使用すると意図しない動作を引き起こす可能性があるログを表示します。 また、重要な情報提供ログが表示される場合があります。
  • info: 内部で何が起きているかに関する詳細なログを含む、最も多くのログを表示します。 何かが予期しない動作を示している場合は、より多くの情報を得るために、詳細レベルをこれに切り替えることをお勧めします。
  • debug: 内部で何が起きているかを正確に追跡するために使用される可能性のある一部の内部ログを含む、すべてのログを表示します。

huggingface_hub.utils.logging.get_verbosity

< >

( )

HuggingFace Hubのルートロガーの現在のレベルを返します。

HuggingFace Hubには、以下のログレベルがあります。

  • huggingface_hub.logging.CRITICAL, huggingface_hub.logging.FATAL
  • huggingface_hub.logging.ERROR
  • huggingface_hub.logging.WARNING, huggingface_hub.logging.WARN
  • huggingface_hub.logging.INFO
  • huggingface_hub.logging.DEBUG

huggingface_hub.utils.logging.set_verbosity

< >

( verbosity: int )

パラメータ

  • verbosity (int) — ログレベル。例: huggingface_hub.logging.DEBUG、huggingface_hub.logging.INFO。

HuggingFace Hubのルートロガーのレベルを設定します。

huggingface_hub.utils.logging.set_verbosity_info

< >

( )

冗長性をlogging.INFOに設定します。

huggingface_hub.utils.logging.set_verbosity_debug

< >

( )

冗長度をlogging.DEBUGに設定します。

huggingface_hub.utils.logging.set_verbosity_warning

< >

( )

冗長性をlogging.WARNINGに設定します。

huggingface_hub.utils.logging.set_verbosity_error

< >

( )

冗長性をlogging.ERRORに設定します。

huggingface_hub.utils.logging.disable_propagation

< >

( )

ライブラリのログ出力の伝播を無効にします。なお、ログの伝播はデフォルトで無効になっています。

huggingface_hub.utils.logging.enable_propagation

< >

( )

ライブラリのログ出力の伝播を有効にします。ルートロガーが設定されている場合、重複ログを防ぐために HuggingFace Hub のデフォルトハンドラーを無効にしてください。

リポジトリ固有のヘルパーメソッド

以下に示すメソッドは、huggingface_hub ライブラリ自体のモジュールを変更する場合に関連します。 huggingface_hub を使用し、モジュールを変更しない限り、これらの使用は必要ありません。

huggingface_hub.utils.logging.get_logger

< >

( name: str | None = None )

パラメータ

  • name (str, 省略可) — 取得するロガーの名前。通常はファイル名です

指定された名前のロガーを返します。この関数は、ライブラリのユーザーが直接アクセスすることを想定していません。

例:

>>> from huggingface_hub import logging

>>> logger = logging.get_logger(__name__)
>>> logging.set_verbosity_info()

進捗バーを設定する

プログレスバーは、長時間実行されるタスク(ファイルのダウンロードやアップロードなど)の実行中に、ユーザーに情報を表示するための便利なツールです。huggingface_hub は、ライブラリ全体でプログレスバーを一貫した方法で表示するために、tqdm のラッパーを提供しています。

デフォルトでは、プログレスバーが有効になっています。HF_HUB_DISABLE_PROGRESS_BARS 環境変数を設定することで、グローバルに無効化できます。また、enable_progress_bars() および disable_progress_bars を使用して、有効化/無効化することもできます。環境変数が設定されている場合、ヘルパーよりも優先されます。

>>> from huggingface_hub import snapshot_download
>>> from huggingface_hub.utils import are_progress_bars_disabled, disable_progress_bars, enable_progress_bars

>>> # Disable progress bars globally
>>> disable_progress_bars()

>>> # Progress bar will not be shown !
>>> snapshot_download("gpt2")

>>> are_progress_bars_disabled()
True

>>> # Re-enable progress bars globally
>>> enable_progress_bars()

グループごとのプログレスバーの制御

特定のグループに対して、進捗バーの有効化または無効化も可能です。これにより、アプリケーションやライブラリの異なる部分で、進捗バーの表示をより細かく管理できます。グループに対して進捗バーが無効化されると、明示的に上書きされない限り、その配下のすべてのサブグループにも影響が及ぶようになります。

# Disable progress bars for a specific group
>>> disable_progress_bars("peft.foo")
>>> assert not are_progress_bars_disabled("peft")
>>> assert not are_progress_bars_disabled("peft.something")
>>> assert are_progress_bars_disabled("peft.foo")
>>> assert are_progress_bars_disabled("peft.foo.bar")

# Re-enable progress bars for a subgroup
>>> enable_progress_bars("peft.foo.bar")
>>> assert are_progress_bars_disabled("peft.foo")
>>> assert not are_progress_bars_disabled("peft.foo.bar")

# Use groups with tqdm
# No progress bar for `name="peft.foo"`
>>> for _ in tqdm(range(5), name="peft.foo"):
...     pass

# Progress bar will be shown for `name="peft.foo.bar"`
>>> for _ in tqdm(range(5), name="peft.foo.bar"):
...     pass
100%|███████████████████████████████████████| 5/5 [00:00<00:00, 117817.53it/s]

are_progress_bars_disabled

huggingface_hub.utils.are_progress_bars_disabled

< >

( name: str | None = None ) → bool

パラメータ

  • name (str, 省略可) — 確認するグループ名。None の場合は、グローバル設定を確認します。

戻り値

bool

進捗バーが無効の場合は True、それ以外の場合は False。

進捗バーがグローバルで無効化されているか、特定のグループに対して無効化されているかを確認します。

この関数は、指定されたグループまたはグローバルでプログレスバーが無効化されているかどうかを返します。 まずHF_HUB_DISABLE_PROGRESS_BARS環境変数をチェックし、次にプログラマティックな設定を調べます。

disable_progress_bars

クラス huggingface_hub.utils.disable_progress_bars

< >

( name: str | None = None )

パラメータ

  • name (str, 省略可) — プログレスバーを無効にするグループの名前です。None の場合、プログレスバーはグローバルに無効化されます。

例外

Warning

  • Warning — 環境変数が変更を妨げる場合。

進捗バーをグローバルで、または指定されたグループに対して無効にします。

この関数は、グループ名に基づいてプログレスバーの状態を更新します。 グループ名が指定されない場合、すべてのプログレスバーが無効になります。この操作は、HF_HUB_DISABLE_PROGRESS_BARS 環境変数の設定を尊重します。

通常の呼び出しとコンテキストマネージャーの両方として機能します: disable_progress_bars() # enable_progress_bars() が呼ばれるまで無効化 with disable_progress_bars(): # ブロック内では無効化し、終了時に再有効化 …

enable_progress_bars

huggingface_hub.utils.enable_progress_bars

< >

( name: str | None = None )

パラメータ

  • name (str, 省略可) — プログレスバーを有効にするグループの名前です。None の場合、プログレスバーがグローバルに有効になります。

例外

Warning

  • Warning — 環境変数が変更を妨げる場合。

進捗バーをグローバルで、または指定されたグループに対して有効にします。

この関数は、指定されたグループ、またはグループが指定されていない場合はグローバルに、プログレスバーを有効に設定します。この操作は、HF_HUB_DISABLE_PROGRESS_BARS環境設定の対象となります。

HTTPバックエンドの構成

huggingface_hub v0.x では、HTTP リクエストは requests で処理され、設定は configure_http_backend を通じて行われていました。現在 httpx2 を使用しているため、設定の仕組みが異なります。引数を取らずに httpx2.Client を返すファクトリ関数を指定する必要があります。デフォルトでどのパラメータが使用されるかを確認するには、デフォルト実装をこちらでご覧ください。

一部の構成では、プロキシ環境で作業する場合など、HTTP リクエストの発行方法を制御する必要がある場合があります。huggingface_hub ライブラリでは、set_client_factory() を使用してこれをグローバルに設定できます。設定後、Hub へのすべてのリクエストでカスタム設定が使用されます。huggingface_hub は内部で httpx2.Client に依存しているため、利用可能なパラメータの詳細については、httpx2 のドキュメントを参照してください。

サードパーティ製ライブラリを構築しており、Hub への直接リクエストを行う必要がある場合は、get_session() を使用して、正しく設定された httpx2 クライアントを取得してください。適切な動作を確保するために、httpx2.get(...) への直接呼び出しをすべて get_session().get(...) に置き換えてください。

huggingface_hub.set_client_factory

< >

( client_factory: Callable )

huggingface_hubで使用するHTTPクライアントファクトリを設定します。

クライアントファクトリは、httpx2.Clientオブジェクトを返すメソッドです。get_session()が初めて呼び出されたとき、クライアントファクトリが使用されて新しいhttpx2.Clientオブジェクトが作成され、huggingface_hubによるすべての呼び出しで共有されます。

スクリプトを、カスタム設定(カスタムプロキシや証明書など)を必要とする特定の環境で実行する場合に、この機能は役立ちます。

httpx2.Client を正しく設定するために、get_session() を使用します。

huggingface_hub.get_session

< >

( )

ユーザーのトランスポートファクトリを使用して、httpx2.Clientオブジェクトを取得します。

このクライアントは、huggingface_hub によって行われるすべての呼び出しで共有されます。そのため、手動で閉じないでください。

httpx2.Clientをカスタマイズするには、set_client_factory()を使用します。

まれなケースでは、現在のセッションを手動で閉じたい場合があります(一時的なSSLErrorが発生した後の場合など)。これはclose_session()で実行できます。次のget_session()の呼び出し時に、新しいセッションが自動的に作成されます。

セッションは、プロセスが終了すると常に自動的に閉じられます。

huggingface_hub.close_session

< >

( )

huggingface_hubで使用されているグローバルのhttpx2.Clientを閉じます。

Client がクローズされている場合、get_session() の次の呼び出し時に再作成されます。

SSL証明書が更新された場合などに有用です。

非同期コードでは、set_async_client_factory() を使用して httpx2.AsyncClient を設定し、get_async_session() を使用して取得します。

huggingface_hub.set_async_client_factory

< >

( async_client_factory: Callable )

huggingface_hubで使用するHTTP非同期クライアントファクトリを設定します。

非同期クライアントファクトリは、httpx2.AsyncClientオブジェクトを返すメソッドです。 スクリプトを、カスタム設定(カスタムプロキシや証明書など)を必要とする特定の環境で実行する場合に、この機能は役立ちます。 正しく設定されたhttpx2.AsyncClientを取得するには、get_async_session()を使用してください。

huggingface_hub によるすべての呼び出しで共有される httpx2.Client とは異なり、httpx2.AsyncClient は共有されません。 コンテキストが終了した際にクライアントが適切に閉じられるようにするため、非同期コンテキストマネージャーの使用を推奨します。

huggingface_hub.get_async_session

< >

( )

ユーザーのトランスポートファクトリを使用して、httpx2.AsyncClientオブジェクトを返します。

httpx2.AsyncClientをカスタマイズするには、set_async_client_factory()を使用します。

huggingface_hub によるすべての呼び出しで共有される httpx2.Client とは異なり、httpx2.AsyncClient は共有されません。 コンテキストが終了した際にクライアントが適切に閉じられるようにするため、非同期コンテキストマネージャーの使用を推奨します。

同期クライアントとは異なり、非同期クライアントのライフサイクルは自動的に管理されません。適切に処理するには、非同期コンテキストマネージャーを使用してください。

httpxモジュール

huggingface_hub は、内部で使用している HTTP ライブラリを huggingface_hub.utils.httpx として再エクスポートします:

from huggingface_hub.utils import httpx

try:
    ...
except httpx.HTTPError:
    ...

これは主に、huggingface_hub を基盤として構築されたサードパーティ製ライブラリに有用です。huggingface_hub の v1.x は httpx を基盤としていますが、v2.x は httpx2(後継パッケージとして別パッケージで配布されています)を基盤としています。httpx を直接インポートするのではなく、huggingface_hub.utils からモジュールをインポートすることで、常に huggingface_hub が実際に使用しているバージョンを取得でき、ライブラリがメジャーバージョンの両方と互換性を保ちます。移行計画の詳細については、この issue を参照してください。

httpx の型や例外(エラーのキャッチなど)が必要な場合のみ、これを使用してください。Hub へのリクエストには、上記で説明した get_session() を使用してください。

HTTPエラーの処理

huggingface_hub は、サーバーから返送される追加の情報を用いて、httpx2 が送出する HTTPError を詳細化するために、独自の HTTP エラーを定義しています。

ステータスで例外を送出

hf_raise_for_status() は、Hub へのリクエストから「ステータスに基づいて例外を送出する」ための中心的なメソッドとして設計されています。ベースとなる httpx2.Response.raise_for_status をラップし、追加の情報を提供します。送出される HTTPError はすべて HfHubHTTPError に変換されます。

from huggingface_hub.utils import get_session, hf_raise_for_status, HfHubHTTPError

response = get_session().post(...)
try:
    hf_raise_for_status(response)
except HfHubHTTPError as e:
    print(str(e)) # formatted message
    e.request_id, e.server_message # details returned by server

    # Complete the error message with additional information once it's raised
    e.append_to_message("\n`create_commit` expects the repository to exist.")
    raise

huggingface_hub.hf_raise_for_status

< >

( response: Responseendpoint_name: str | None = None )

パラメータ

  • response (Response) — サーバーからの応答。
  • endpoint_name (str, 省略可) — 呼び出されたエンドポイントの名前です。指定すると、エラーメッセージがより詳細になります。

response.raise_for_status() の内部バージョンで、潜在的な HTTPError を詳細化します。 例外として送出されるのは HfHubHTTPError のインスタンスです。

This helper is meant to be the unique method to raise_for_status when making a call to the Hugging Face Hub.

リクエストが失敗した場合に発生します:

  • RepositoryNotFoundError ダウンロード元のリポジトリが見つからない場合に発生します。リポジトリが存在しない、repo_type が正しく設定されていない、リポジトリがprivateでアクセス権限がないなどの理由が考えられます。
  • GatedRepoError リポジトリが存在するが、ゲート付きであり、ユーザーが承認リストに含まれていない場合に発生します。
  • RevisionNotFoundError リポジトリは存在するが、リビジョンが見つからない場合に発生します。
  • EntryNotFoundError リポジトリは存在するが、エントリ(要求されたファイルなど)が見つからない場合。
  • BadRequestError リクエストが HTTP 400 BadRequest エラーで失敗した場合。
  • HfHubHTTPError 上記に列挙されていない理由でリクエストが失敗した場合。

オフラインモードを確認

is_offline_mode を使用して、オフラインモードが有効かどうかをプログラムで確認できます。オフラインモードは、環境変数として HF_HUB_OFFLINE=1 を設定することで有効になります。

huggingface_hub.is_offline_mode

< >

( )

Hubのオフラインモードかどうかを返します。

オフラインモードが有効な場合、get_sessionを使用して行われるすべてのHTTPリクエストでOfflineModeIsEnabled例外が発生します。

例:

from huggingface_hub import is_offline_mode

def list_files(repo_id: str):
    if is_offline_mode():
        ... # list files from local cache (degraded experience but still functional)
    else:
        ... # list files from Hub (complete experience)

HTTPエラー

huggingface_hubでスローされるHTTPエラーの一覧です。

HfHubHTTPError

HfHubHTTPError は、HF Hub の HTTP エラーすべての親クラスです。サーバーのレスポンスを解析し、エラーメッセージを整形することで、ユーザーに可能な限り多くの情報を提供します。

クラス huggingface_hub.errors.HfHubHTTPError

< >

( message: strresponse: Responseserver_message: str | None = None )

HF Hub で発生するカスタム HTTP エラー用に継承するための HTTPError。

すべての HTTPError は、少なくとも HfHubHTTPError に変換されます。サーバーから情報が返された場合、その情報はエラーメッセージに追加されます。

追加の詳細:

  • リクエストIDは、優先順位に従ってヘッダーから取得されます: “X-Request-Id”、“X-Amzn-Trace-Id”、“X-Amz-Cf-Id”。
  • ヘッダー「X-Error-Message」からのサーバーエラーメッセージ。
  • レスポンスボディ内で見つかった場合のサーバーエラーメッセージ。

例:

    import httpx2
    from huggingface_hub.utils import get_session, hf_raise_for_status, HfHubHTTPError

    response = get_session().post(...)
    try:
        hf_raise_for_status(response)
    except HfHubHTTPError as e:
        print(str(e)) # formatted message
        e.request_id, e.server_message # details returned by server

        # Complete the error message with additional information once it's raised
        e.append_to_message("
ate_commit` expects the repository to exist.")
        raise

append_to_message

< >

( additional_message: str )

HfHubHTTPErrorの初期メッセージに追加情報を付加します。

RepositoryNotFoundError

クラス huggingface_hub.errors.RepositoryNotFoundError

< >

( message: strresponse: Responseserver_message: str | None = None )

パラメータ

  • repo_id (str または None) — リクエストの URL から特定できた場合、見つからなかったリポジトリの ID。
  • repo_type (str または None) — リクエスト URL から特定できた場合の、リポジトリの種類(“model”、“dataset”、または “space”)。

無効なリポジトリ名で hf.co の URL にアクセスしようとした場合、またはユーザーがアクセス権限を持たないプライベートリポジトリ名でアクセスしようとした場合に発生します。

例:

>>> from huggingface_hub import model_info
>>> model_info("<non_existent_repository>")
(...)
huggingface_hub.errors.RepositoryNotFoundError: 401 Client Error. (Request ID: PvMw_VjBMjVdMz53WKIzP)

Repository Not Found for url: https://huggingface.co/api/models/%3Cnon_existent_repository%3E.
Please make sure you specified the correct `repo_id` and `repo_type`.
If the repo is private, make sure you are authenticated and your token has the required permissions.
Invalid username or password.

GatedRepoError

クラス huggingface_hub.errors.GatedRepoError

< >

( message: strresponse: Responseserver_message: str | None = None )

ユーザーが承認リストに含まれていないゲート付きリポジトリにアクセスしようとした際に発生します。

注: 後方互換性を確保するために、RepositoryNotFoundErrorを継承しています。

例:

>>> from huggingface_hub import model_info
>>> model_info("<gated_repository>")
(...)
huggingface_hub.errors.GatedRepoError: 403 Client Error. (Request ID: ViT1Bf7O_026LGSQuVqfa)

Cannot access gated repo for url https://huggingface.co/api/models/ardent-figment/gated-model.
Access to model ardent-figment/gated-model is restricted and you are not in the authorized list.
Visit https://huggingface.co/ardent-figment/gated-model to ask for access.

RevisionNotFoundError

クラス huggingface_hub.errors.RevisionNotFoundError

< >

( message: strresponse: Responseserver_message: str | None = None )

パラメータ

  • repo_id (str または None) — リクエストの URL から特定できた場合のリポジトリ ID。
  • repo_type (str または None) — リクエスト URL から特定できた場合の、リポジトリの種類(“model”、“dataset”、または “space”)。

有効なリポジトリを持つが、無効なリビジョンの hf.co URL にアクセスしようとした際に発生します。

例:

>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', 'config.json', revision='<non-existent-revision>')
(...)
huggingface_hub.errors.RevisionNotFoundError: 404 Client Error. (Request ID: Mwhe_c3Kt650GcdKEFomX)

Revision Not Found for url: https://huggingface.co/bert-base-cased/resolve/%3Cnon-existent-revision%3E/config.json.

RevisionResolutionError

クラス huggingface_hub.errors.RevisionResolutionError

< >

( )

リビジョンをコミットハッシュに解決できない場合に、HfApi.resolve_revision() によって発生します。Hub にアクセスできなかった(オフラインモード、接続エラー、タイムアウト、Hub の停止など)こと、かつローカルキャッシュに一致するエントリが見つからなかったことを示します。

BadRequestError

クラス huggingface_hub.errors.BadRequestError

< >

( message: strresponse: Responseserver_message: str | None = None )

サーバーが HTTP 400 エラーを返した際に、hf_raise_for_status によって発生します。

例:

>>> resp = httpx2.post("hf.co/api/check", ...)
>>> hf_raise_for_status(resp, endpoint_name="check")
huggingface_hub.errors.BadRequestError: Bad request for check endpoint: {details} (Request ID: XXX)

EntryNotFoundError

クラス huggingface_hub.errors.EntryNotFoundError

< >

( )

ローカルでもリモートでもエントリが見つからない場合に発生します。

例:

>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-existent-file>')
(...)
huggingface_hub.errors.RemoteEntryNotFoundError (...)
>>> hf_hub_download('bert-base-cased', '<non-existent-file>', local_files_only=True)
(...)
huggingface_hub.utils.errors.LocalEntryNotFoundError (...)

RemoteEntryNotFoundError

クラス huggingface_hub.errors.RemoteEntryNotFoundError

< >

( message: strresponse: Responseserver_message: str | None = None )

パラメータ

  • repo_id (str または None) — リクエストの URL から特定できた場合のリポジトリ ID。
  • repo_type (str または None) — リクエスト URL から特定できた場合の、リポジトリの種類(“model”、“dataset”、または “space”)。

有効なリポジトリとリビジョンを持つ hf.co の URL にアクセスしようとした際に、ファイル名が無効な場合に発生します。

例:

>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-existent-file>')
(...)
huggingface_hub.errors.EntryNotFoundError: 404 Client Error. (Request ID: 53pNl6M0MxsnG5Sw8JA6x)

Entry Not Found for url: https://huggingface.co/bert-base-cased/resolve/main/%3Cnon-existent-file%3E.

LocalEntryNotFoundError

クラス huggingface_hub.errors.LocalEntryNotFoundError

< >

( message: str )

ネットワークが無効または利用不可(接続の問題)の場合、ディスク上に存在しないファイルやスナップショットへのアクセスを試みた際に発生します。そのエントリは Hub 上に存在する可能性があります。

例:

>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-cached-file>',  local_files_only=True)
(...)
huggingface_hub.errors.LocalEntryNotFoundError: Cannot find the requested files in the disk cache and outgoing traffic has been disabled. To enable hf.co look-ups and downloads online, set 'local_files_only' to False.

IncompleteSnapshotError

クラス huggingface_hub.errors.IncompleteSnapshotError

< >

( message: strsnapshot_path: str )

Hubにアクセスできない場合(オフライン、接続の問題、またはlocal_files_only=True)かつ、キャッシュされたスナップショットが不完全であることが既知の場合に、snapshot_download()によって発生します。リポジトリのキャッシュされたツリー一覧に列挙されている一部のファイルが、ローカルスナップショットから欠落しています。

これは後方互換性のために用意されたLocalEntryNotFoundErrorのサブクラスです。

snapshot_path 属性は、不完全なローカルスナップショットへのパスを保持します。これにより、下流のライブラリは、ファイルが不完全であることが既知であっても、最新のキャッシュ済みファイルを特定できます。

CachedRepoTreeNotFoundError

クラス huggingface_hub.errors.CachedRepoTreeNotFoundError

< >

( )

要求されたリビジョンのツリー一覧がキャッシュされていない場合に、get_cached_repo_tree()によって発生します。

snapshot_download() の副作用として、ツリーの一覧が生成されます。

OfflineModeIsEnabled

class huggingface_hub.errors.OfflineModeIsEnabled

< >

( )

リクエストが行われたが、環境変数としてHF_HUB_OFFLINE=1が設定されている場合に発生します。

テレメトリ

huggingface_hubには、テレメトリデータを送信するためのヘルパーが含まれています。この情報は、問題のデバッグや新機能の優先順位付けに役立ちます。 ユーザーは、HF_HUB_DISABLE_TELEMETRY=1環境変数を設定することで、いつでもテレメトリ収集を無効にできます。 オフラインモード(つまり、HF_HUB_OFFLINE=1を設定した場合)でも、テレメトリは無効になります。

サードパーティ製ライブラリのメンテイナーの方は、send_telemetryを呼び出すだけでテレメトリデータを送信できます。 データは別スレッドで送信されるため、ユーザーへの影響を最小限に抑えています。

huggingface_hub.utils.send_telemetry

< >

( topic: strlibrary_name: str | None = Nonelibrary_version: str | None = Noneuser_agent: dict | str | None = None )

パラメータ

  • topic (str) — 監視するトピックの名前です。トピックはURLの構築に直接使用されます。サブトピックを監視する場合は、”/” で区切ってください。例: “gradio”, “transformers/examples”,…
  • library_name (str, 省略可) — HTTP リクエストを発行するライブラリの名前です。user-agent ヘッダーに追加されます。
  • library_version (str、省略可) — HTTP リクエストを発行するライブラリのバージョンです。user-agent ヘッダーに追加されます。
  • user_agent (str, dict, 省略可) — 辞書または単一の文字列形式のユーザーエージェント情報です。インストールされているパッケージに関する情報が補完されます。

異なるHFライブラリの使用状況をトラッキングするために役立つテレメトリを送信します。

この使用データは、問題のデバッグや新機能の優先順位付けに役立ちます。ただし、すべてのユーザーが追加情報を共有したいわけではないことを理解しており、プライバシーを尊重しています。HF_HUB_DISABLE_TELEMETRY=1 を環境変数として設定することで、テレメトリの収集を無効にできます。オフラインモード(HF_HUB_OFFLINE=1 を設定した場合)でも、テレメトリは無効になります。

テレメトリの収集は、ユーザーへの影響を最小限に抑えるため、別スレッドで実行されます。

例:

>>> from huggingface_hub.utils import send_telemetry

# Send telemetry without library information
>>> send_telemetry("ping")

# Send telemetry to subtopic with library information
>>> send_telemetry("gradio/local_link", library_name="gradio", library_version="3.22.1")

# Send telemetry with additional data
>>> send_telemetry(
...     topic="examples",
...     library_name="transformers",
...     library_version="4.26.0",
...     user_agent={"pipeline": "text_classification", "framework": "flax"},
... )

バリデータ

huggingface_hubには、メソッドの引数を自動的に検証するカスタムバリデータが含まれています。 この検証は、型ヒントを検証するためにPydanticで行われた作業に着想を得ていますが、機能はより限定的です。

汎用デコレーター

validate_hf_hub_args() は、huggingface_hub の命名規則に従った引数を持つメソッドをカプセル化するための汎用デコレーターです。デフォルトでは、バリデータが実装されているすべての引数が検証されます。

入力が無効な場合、HFValidationError がスローされます。最初の無効な値のみがエラーをスローし、検証プロセスを停止します。

使用方法:

>>> from huggingface_hub.utils import validate_hf_hub_args

>>> @validate_hf_hub_args
... def my_cool_method(repo_id: str):
...     print(repo_id)

>>> my_cool_method(repo_id="valid_repo_id")
valid_repo_id

>>> my_cool_method("other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.

>>> my_cool_method(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.

validate_hf_hub_args

huggingface_hub.utils.validate_hf_hub_args

< >

( fn: ~CallableT )

huggingface_hubの公開メソッドの引数として受け取られた値を検証します。

このデコレータの目的は、あらゆる場所で再利用される引数の検証を統一することです。デフォルトでは、定義されたすべてのバリデータがテストされます。

バリデータ:

  • validate_repo_id(): repo_id は "repo_name" または "namespace/repo_name" である必要があります。Namespace はユーザー名または組織名です。
  • ~utils.smoothly_deprecate_legacy_arguments: ファイルのダウンロード時にproxiesを無視します(グローバルに設定されるべきです)。

例:

>>> from huggingface_hub.utils import validate_hf_hub_args

>>> @validate_hf_hub_args
... def my_cool_method(repo_id: str):
...     print(repo_id)

>>> my_cool_method(repo_id="valid_repo_id")
valid_repo_id

>>> my_cool_method("other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.

>>> my_cool_method(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.

HFValidationError

クラス huggingface_hub.errors.HFValidationError

< >

( )

huggingface_hubのバリデータによってスローされる汎用の例外です。

ValueErrorを継承します。

引数バリデータ

Validatorsは個別でも使用できます。以下は、検証可能なすべての引数のリストです。

repo_id

huggingface_hub.utils.validate_repo_id

< >

( repo_id: str | None )

repo_id が有効であることを検証します。

これは、Hub上で行われる正式なバリデーションに代わるものではなく、可能な限りローカルでの不整合を回避するためのものです(例:repo_idにrepo_typeを渡すことは禁止されています)。

ルール:

  • 1文字以上96文字以下。
  • “repo_name”または“namespace/repo_name”
  • [a-zA-Z0-9] または ”-”、”_”、”.”
  • “—”と“..”は禁止されています

有効: "foo"、"foo/bar"、"123"、"Foo-BAR_foo.bar123"

無効な例: "datasets/foo/bar"、".repo_id"、"foo--bar"、"foo.git"

例:

>>> from huggingface_hub.utils import validate_repo_id
>>> validate_repo_id(repo_id="valid_repo_id")
>>> validate_repo_id(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.

https://github.com/huggingface/huggingface_hub/issues/1008 で議論されました。 moon-landing(内部リポジトリ)では:

smoothly_deprecate_legacy_arguments

厳密にはバリデータではありませんが、実行されました。

huggingface_hub.utils._validators.smoothly_deprecate_legacy_arguments

< >

( fn_name: strkwargs: dict )

huggingface_hubのコードベースにおいて、レガシー引数をスムーズに非推奨化します。

この関数は、kwargs 内の非推奨の引数を無視し、それらが無視されることをユーザーに警告します。 既存のコードを壊さずに、ユーザーを新しい方法へと導くことが目的です。

非推奨引数のリスト:

  • proxies: プロキシを設定するには、ユーザーは HTTP_PROXY 環境変数を使用するか、set_client_factory() 関数を使用して httpx2.Client を手動で設定する必要があります。

    huggingface_hub 0.x では、proxies は requests.request に直接渡される辞書でした。 huggingface_hub 1.x 以降、リクエストごとの proxies はサポートされなくなりました。 具体的には、リクエストごとにプロキシを設定することはできません。解決策として、set_client_factory() 関数または HTTP_PROXY 環境変数を使用して、グローバルに設定してください。

    詳細については、以下を参照してください:

  • resume_download: 代替手段なしで非推奨になりました。huggingface_hub は、可能な限り常にダウンロードを再開します。

  • force_filename: 代替なしで非推奨になりました。ファイル名は常に Hub 上のものと同じです。

  • local_dir_use_symlinks: 代替手段なしで非推奨になりました。ローカルディレクトリへのダウンロードは、シンボリックリンクを使用しなくなりました。

Update on GitHub