Hub Python Library documentation
コマンドラインインターフェース(CLI)
コマンドラインインターフェース(CLI)
huggingface_hub Pythonパッケージには、hf という組み込みCLIが付属しています。このツールを使用すると、ターミナルから直接Hugging Face Hubとやり取りできます。例えば、アカウントへのログイン、リポジトリの作成、ファイルのアップロードとダウンロードなどが可能です。また、マシンの設定やキャッシュの管理を行うための便利な機能も備わっています。本ガイドでは、このCLIの主な機能とその使用方法について見ていきます。
このガイドでは、
hfCLIの最も重要な機能について説明します。 すべてのコマンドとオプションの完全なリファレンスについては、CLIリファレンスを参照してください。
AIエージェントで
hfCLIを使用していますか?Skillをインストールし、Hugging Face CLI for AI Agentsガイドをご覧ください。# works with Claude Code, Codex, Cursor, OpenCode, Pi and any agent that loads skills from `.agents/skills` hf skills addスタンドアロンインストーラーが自動的にインストールします(下記を参照)。
hf updateで更新できます。
はじめる
スタンドアロンインストーラー(推奨)
hf CLIは、1つのコマンドでインストールできます:
macOSおよびLinuxでは:
>>> curl -LsSf https://hf.co/cli/install.sh | bashWindowsの場合:
>>> powershell -ExecutionPolicy ByPass -c "irm https://hf.co/cli/install.ps1 | iex"インストーラーは、Claude Code および ~/.agents/skills を読み取るエージェント向けに、hf-cli スキル をグローバルにインストールします。スキップするには --exclude-skill を渡します:
>>> curl -LsSf https://hf.co/cli/install.sh | bash -s -- --exclude-skill>>> powershell -ExecutionPolicy ByPass -c "& ([scriptblock]::Create((irm https://hf.co/cli/install.ps1))) -ExcludeSkill"インストールが完了したら、CLIが正しく設定されていることを確認できます。
>>> hf --help
Usage: hf [OPTIONS] COMMAND [ARGS]...
Hugging Face Hub CLI
Options:
--skills Print the `hf-cli` SKILL.md to stdout (alias for `hf skills preview`).
--install-completion Install completion for the current shell.
--show-completion Show completion for the current shell, to copy it or customize the installation.
-h, --help Show this message and exit.
Main commands:
auth Manage authentication (login, logout, etc.).
buckets Commands to interact with buckets.
cache Manage local cache directory.
collections Interact with collections on the Hub.
datasets Interact with datasets on the Hub.
download Download files from the Hub.
endpoints Manage Hugging Face Inference Endpoints.
extensions Manage hf CLI extensions.
jobs Run and manage Jobs on the Hub.
models Interact with models on the Hub.
papers Interact with papers on the Hub.
repos Manage repos on the Hub.
skills Manage skills for AI assistants.
spaces Interact with spaces on the Hub.
sync Sync files between local directory and a bucket.
upload Upload a file or a folder to the Hub.
Help commands:
env Print information about the environment.
version Print information about the hf version.CLIが正しくインストールされている場合、CLIで利用可能なすべてのオプションのリストが表示されるはずです。command not found: hfのようなエラーメッセージが表示された場合は、インストールガイドを参照してください。
--helpオプションは、コマンドの詳細を確認する際に非常に便利です。いつでも使用して、利用可能なすべてのオプションとその詳細をリスト表示できます。例えば、hf upload --helpを使用すると、CLI を用いたファイルのアップロード方法に関する詳細な情報が得られます。
uvの使用
hf CLI を最も簡単に使う方法は、uvx を使用することです。常に分離された環境で最新バージョンが実行されるため、インストールは不要です!
まずuvがインストールされていることを確認してください。手順については、uvインストールガイドを参照してください。
次に、CLIを直接使用します:
>>> uvx hf auth login
>>> uvx hf download
>>> uvx hf ...
uvx hfはhfPyPI パッケージ を使用します。
pipでインストール
CLIは、コアのhuggingface_hubパッケージにも同梱されています:
>>> pip install -U "huggingface_hub"Homebrewの使用
Homebrewを使用してCLIをインストールすることもできます:
>>> brew install hf詳細については、こちらのHomebrew huggingfaceページをご覧ください。
更新
最新バージョンにアップグレードするには、次のコマンドを実行します:
>>> hf updateこのコマンドは、hf がどのようにインストールされたか(Homebrew、スタンドアロンインストーラー、または pip)を検出し、それに一致する更新コマンドを実行します。hf-cli スキルがグローバルにインストールされている場合、エージェントが新しいコマンドサーフェスを確認できるように、それも更新されます。インストールされていない場合は、インストールされません。スキップまたは削除した場合は、更新によって再インストールされることはありません。
デフォルトでは、PyPI に新しいバージョンが利用可能な場合、CLI は stderr に 1 行の黄色い警告を出力します。これを無効にするには(例: オフライン CI 環境)、HF_HUB_DISABLE_UPDATE_CHECK=1 を設定してください。
出力の書式
ほとんどのhfコマンドは、同じ一連のグローバルなフォーマットフラグを受け付けます。これらは、すべての--helpページにある専用のFormatting optionsセクションにドキュメント化されており、コマンドごとに宣言することなく、任意のコマンドに追加できます:
| フラグ | 同等 | 説明 |
|---|---|---|
--format <value> | — | 出力形式を明示的に指定します。受け入れられる値: auto (デフォルト)、human、agent、json、quiet。 |
--json | --format json | 構造化されたJSONを出力します。jqやその他のスクリプトにパイプする際に便利です。 |
-q, --quiet | --format quiet | IDのみを出力します(1行に1つ)。IDを他のコマンドにパイプで渡す際に便利です。 |
--no-truncate | — | 人間が読むテーブルでは、長い値を...で短縮する代わりに、完全な値を表示します。テーブルがターミナルの幅をオーバーフローする可能性があります。リスト/ディクショナリ列の構造化出力には--format jsonを使用してください。 |
auto(デフォルト)は、対話型ターミナルの場合にhumanを、AIエージェントによってCLIが呼び出された場合にagentを選択します。humanは色と整ったテーブルを追加し、agentは切り詰めなしのタブ区切り値を出力し、jsonはコンパクトなJSONオブジェクトまたは配列を出力します。2つの出力モードフラグを混在させると(例:--jsonと--format tableを同時に指定する)、使用法エラーが発生します。
Human テーブルはターミナルの幅に自動で調整されます。自然な幅が画面をオーバーフローする場合にのみ、最も広い列が短縮されます(そのため、広いターミナルでは通常、... なく完全な値が表示されます)。幅に関係なく完全な値を強制表示するには --no-truncate を渡します。list/dict 列の構造化出力には --format json を使用します。
# JSON output for scripting
>>> hf models ls --search bert --limit 2 --json | jq '.[].id'
# IDs only, one per line
>>> hf collections ls --owner nvidia -q
nvidia/nemotron-supervised-fine-tuning-69eab9824c9120a3a3b1e25e
nvidia/nvidia-nemotron-v3-69388dda16167bb1607171eahf auth login
多くの場合、Hub(プライベートリポジトリのダウンロード、ファイルのアップロード、PRの作成など)とやり取りするには、Hugging Faceアカウントへのログインが必要です。そのために、ターミナルで以下のコマンドを実行してください。
>>> hf auth loginすでにログインしている場合、このコマンドはプロンプトをスキップしてメッセージを表示します。再ログインを強制する場合(例:トークンを切り替える場合)には、--forceを使用します:
>>> hf auth login --forceデフォルトでは、このコマンドはブラウザを介してログインします。URLと短いコードが表示されます。そのURLを開き、コードを入力してリクエストを承認すると、CLIがアクセストークンを取得してあなたのマシンに保存します。トークンは一定期間後に期限切れになりますが、使用を継続している限り自動的に更新されます。
? How would you like to log in? [Use arrows, Enter to confirm]
> Log in with your browser
Paste an access token
Open this URL in your browser:
https://huggingface.co/oauth/device
And enter the code: ABCD-EFGH
Waiting for authorization...
Token is valid.
The token `oauth-wauplin` has been saved to /home/wauplin/.cache/huggingface/stored_tokens
Your token has been saved to /home/wauplin/.cache/huggingface/token
Login successful.User Access Tokenを貼り付けることもできます。これはSettings pageから生成されたものです。インタラクティブに(Paste an access tokenを選択)またはコマンドラインから直接貼り付けることができます。より安全にするため、コマンド履歴に貼り付けないよう、トークンを環境変数として渡すことをお勧めします。
# Or using an environment variable
>>> hf auth login --token $HF_TOKEN --add-to-git-credential
Token is valid (permission: write).
The token `token_name` has been saved to /home/wauplin/.cache/huggingface/stored_tokens
Your token has been saved in your configured git credential helpers (store).
Your token has been saved to /home/wauplin/.cache/huggingface/token
Login successful
The current active token is: `token_name`AIエージェントによって実行された場合(自動検出、または--format agentを指定した場合)、このコマンドはプロンプトを表示しません。ブラウザフローを実行し、エージェントがユーザーに伝達できるプレーンな指示を出力してから、認可を待機します。
>>> hf auth login --format agent
Ask the user to open https://huggingface.co/oauth/device in a browser and enter the code ABCD-EFGH. The code expires in 900 seconds. Waiting for authorization...
Login successful: logged in as wauplin (token saved as 'oauth-wauplin').hf auth login は対話式であるため、--format json および --format quiet はサポートされていません。スクリプトによる非対話的なログインには、--token を指定してください。
認証の詳細については、このセクションを参照してください。
hf auth whoami
ログイン状態を確認するには、hf auth whoamiを使用できます。このコマンドにはオプションがなく、Hub上のユーザー名と所属している組織を出力するだけです。
hf auth whoami
Wauplin
orgs: huggingface,eu-test,OAuthTesters,hf-accelerate,HFSmolClusterログインしていない場合、エラーメッセージが表示されます。
hf auth logout
このコマンドはログアウトを実行します。実際には、マシンに保存されているすべてのトークンが削除されます。特定のトークンのみを削除する場合は、トークン名を引数として指定できます。
このコマンドは、HF_TOKEN 環境変数を使用してログインしている場合(リファレンスを参照)、ログアウトしません。その場合は、マシンの設定から環境変数を解除する必要があります。
hf download
hf download コマンドを使用して、Hub からファイルを直接ダウンロードできます。内部では、ダウンロード ガイドで説明されている hf_hub_download() および snapshot_download() ヘルパーを同じように使用し、返されたパスをターミナルに出力します。以下の例では、最も一般的なユースケースを順に確認します。利用可能なオプションの完全なリストについては、以下を実行できます:
hf download --help単一のファイルをダウンロード
リポジトリから単一のファイルをダウンロードするには、repo_idとファイル名を以下のように指定します。
>>> hf download gpt2 config.json
downloading https://huggingface.co/gpt2/resolve/main/config.json to /home/wauplin/.cache/huggingface/hub/tmpwrq8dm5o
(…)ingface.co/gpt2/resolve/main/config.json: 100%|██████████████████████████████████| 665/665 [00:00<00:00, 2.49MB/s]
/home/wauplin/.cache/huggingface/hub/models--gpt2/snapshots/11c5a3d5811f50298f278a704980280950aedb10/config.jsonこのコマンドは、常に最終行にローカルマシンのファイルへのパスを出力します。
リポジトリのサブディレクトリにあるファイルをダウンロードするには、リポジトリ内のファイルのパスを posix 形式で指定する必要があります。例:
>>> hf download HiDream-ai/HiDream-I1-Full text_encoder/model.safetensorsリポジトリ全体をダウンロード
一部のケースでは、リポジトリからすべてのファイルをダウンロードしたいだけの場合があります。これは、リポジトリIDを指定するだけで実行できます。
>>> hf download HuggingFaceH4/zephyr-7b-beta
Fetching 23 files: 0%| | 0/23 [00:00<?, ?it/s]
...
...
/home/wauplin/.cache/huggingface/hub/models--HuggingFaceH4--zephyr-7b-beta/snapshots/3bac358730f8806e5c3dc7c7e19eb36e045bf720複数のファイルをダウンロード
リポジトリのファイルの一部を、1つのコマンドでダウンロードすることもできます。これには2つの方法があります。ダウンロードしたいファイルの正確なリストがすでに用意されている場合は、それらを順番に指定するだけです:
>>> hf download gpt2 config.json model.safetensors
Fetching 2 files: 0%| | 0/2 [00:00<?, ?it/s]
downloading https://huggingface.co/gpt2/resolve/11c5a3d5811f50298f278a704980280950aedb10/model.safetensors to /home/wauplin/.cache/huggingface/hub/tmpdachpl3o
(…)8f278a7049802950aedb10/model.safetensors: 100%|██████████████████████████████| 8.09k/8.09k [00:00<00:00, 40.5MB/s]
Fetching 2 files: 100%|████████████████████████████████████████████████████████████████| 2/2 [00:00<00:00, 3.76it/s]
/home/wauplin/.cache/huggingface/hub/models--gpt2/snapshots/11c5a3d5811f50298f278a704980280950aedb10もう一つのアプローチは、--includeと--excludeを使用して、ダウンロードしたいファイルをフィルタリングするパターンを指定することです。例えば、stabilityai/stable-diffusion-xl-base-1.0からFP16精度のファイルを除くすべてのsafetensorsファイルをダウンロードしたい場合は、
>>> hf download stabilityai/stable-diffusion-xl-base-1.0 --include "*.safetensors" --exclude "*.fp16.*"*
Fetching 8 files: 0%| | 0/8 [00:00<?, ?it/s]
...
...
Fetching 8 files: 100%|█████████████████████████████████████████████████████████████████████████| 8/8 (...)
/home/wauplin/.cache/huggingface/hub/models--stabilityai--stable-diffusion-xl-base-1.0/snapshots/462165984030d82259a11f4367a4eed129e94a7bデータセット、Spaceまたはカーネルをダウンロード
上記の例は、モデルリポジトリからダウンロードする方法を示しています。データセット、Space、またはカーネルをダウンロードするには、--repo-typeオプションを使用します。
# https://huggingface.co/datasets/HuggingFaceH4/ultrachat_200k
>>> hf download HuggingFaceH4/ultrachat_200k --repo-type dataset
# https://huggingface.co/spaces/HuggingFaceH4/zephyr-chat
>>> hf download HuggingFaceH4/zephyr-chat --repo-type space
...特定のリビジョンをダウンロード
上記の例は、mainブランチの最新コミットからダウンロードする方法を示しています。特定のリビジョン(コミットハッシュ、ブランチ名、タグ)からダウンロードするには、--revisionオプションを使用します。
>>> hf download bigcode/the-stack --repo-type dataset --revision v1.1
...hf:// URI を使用します
リポジトリタイプ、リビジョン、ファイルパスを個別の引数やオプションとして渡す代わりに、単一のhf:// URIを指定できます。このURIは、文法hf://[<TYPE>/]<ID>[@<REVISION>][/<PATH>]に従って、すべての情報を一度にエンコードします(完全な構文については、HF URIs リファレンスを参照してください):
# Equivalent to: hf download bigcode/the-stack --repo-type dataset --revision v1.1
>>> hf download hf://datasets/bigcode/the-stack@v1.1
# Download a single file from a specific revision
>>> hf download hf://datasets/HuggingFaceM4/FineVision@refs/pr/1/data/train.parquet
# Download a subfolder (note the trailing slash)
>>> hf download hf://datasets/HuggingFaceM4/FineVision/art/
# A bare id still works and defaults to a model repo
>>> hf download hf://openai-community/gpt2/config.jsonURI が指定された場合、それらはすでに URI に含まれているため、--repo-type および --revision も設定できません(設定するとエラーが発生します)。また、URI に埋め込まれたファイルパスと位置指定のファイル名を組み合わせることはできません。パスの末尾に / を付与すると、サブフォルダーを指すことを示します(位置指定引数と同様です)。/ を含むブランチ名は、%2F として URL エンコードする必要があります(例: hf://my-org/my-model@feature%2Ffoo)。
ローカルフォルダにダウンロード
Hub からファイルをダウンロードする推奨(かつデフォルト)の方法は、キャッシュシステムを使用することです。ただし、ファイルをダウンロードして特定のフォルダに移動したい場合もあります。これは、git コマンドが提供するワークフローに近いものを実現するために有用です。--local-dir オプションを使用することで、これを行うことができます。
ローカルディレクトリのルートに、ダウンロードされたファイルに関するメタデータを含む.cache/huggingface/フォルダが作成されます。これにより、ファイルがすでに最新である場合の再ダウンロードを防ぎます。メタデータに変更がある場合、新しいファイルバージョンがダウンロードされます。これにより、local-dirは最新の変更のみを取得するように最適化されます。
ローカルファイルへのダウンロードの仕組みの詳細については、downloadガイドを参照してください。
>>> hf download adept/fuyu-8b model-00001-of-00002.safetensors --local-dir fuyu
...
fuyu/model-00001-of-00002.safetensorsドライランモード
一部のケースでは、実際にダウンロードする前に、どのファイルがダウンロードされるかを確認したい場合があります。--dry-run パラメータを使用して、これを確認できます。このオプションは、リポジトリに存在するダウンロード対象のすべてのファイルをリスト表示し、それらがすでにダウンロード済みかどうかをチェックします。これにより、ダウンロードが必要なファイルの数やそのサイズを把握できます。
>>> hf download openai-community/gpt2 --dry-run
[dry-run] Fetching 26 files: 100%|█████████████| 26/26 [00:04<00:00, 6.26it/s]
[dry-run] Will download 11 files (out of 26) totalling 5.6G.
File Bytes to download
--------------------------------- -----------------
.gitattributes -
64-8bits.tflite 125.2M
64-fp16.tflite 248.3M
64.tflite 495.8M
README.md -
config.json -
flax_model.msgpack 497.8M
generation_config.json -
merges.txt -
model.safetensors 548.1M
onnx/config.json -
onnx/decoder_model.onnx 653.7M
onnx/decoder_model_merged.onnx 655.2M
onnx/decoder_with_past_model.onnx 653.7M
onnx/generation_config.json -
onnx/merges.txt -
onnx/special_tokens_map.json -
onnx/tokenizer.json -
onnx/tokenizer_config.json -
onnx/vocab.json -
pytorch_model.bin 548.1M
rust_model.ot 702.5M
tf_model.h5 497.9M
tokenizer.json -
tokenizer_config.json -
vocab.json -詳細については、ダウンロードガイドをご覧ください。
キャッシュディレクトリを指定
--local-dirを使用しない場合、すべてのファイルはデフォルトで、HF_HOME環境変数によって定義されるキャッシュディレクトリにダウンロードされます。--cache-dirを使用してカスタムキャッシュを指定できます:
>>> hf download adept/fuyu-8b --cache-dir ./path/to/cache
...
./path/to/cache/models--adept--fuyu-8b/snapshots/ddcacbcf5fdf9cc59ff01f6be6d6662624d9c745トークンを指定します
プライベートリポジトリまたはゲート付きリポジトリにアクセスするには、トークンを使用する必要があります。デフォルトでは、ローカルに保存されたトークン(hf auth login を使用して保存したもの)が使用されます。明示的に認証を行う場合は、--token オプションを使用します。
>>> hf download gpt2 config.json --token=hf_****
/home/wauplin/.cache/huggingface/hub/models--gpt2/snapshots/11c5a3d5811f50298f278a704980280950aedb10/config.json静粛モード
デフォルトでは、hf downloadコマンドは詳細な出力を行います。警告メッセージ、ダウンロードされたファイルに関する情報、進捗バーなどが表示されます。これらをすべて無効にするには、--quietオプションを使用してください。この場合、最終行(つまり、ダウンロードされたファイルへのパス)のみが表示されます。スクリプト内で出力を別のコマンドに渡す際に便利です。
>>> hf download gpt2 --quiet
/home/wauplin/.cache/huggingface/hub/models--gpt2/snapshots/11c5a3d5811f50298f278a704980280950aedb10ダウンロードのタイムアウト
接続が遅いマシンでは、次のようなタイムアウトの問題が発生する可能性があります。
`httpx2.TimeoutException: (TimeoutException("HTTPSConnectionPool(host='cdn-lfs-us-1.huggingface.co', port=443): Read timed out. (read timeout=10)"), '(Request ID: a33d910c-84c6-4514-8362-c705e2039d38)')`この問題を軽減するには、HF_HUB_DOWNLOAD_TIMEOUT 環境変数をより大きな値に設定できます(デフォルトは 10):
export HF_HUB_DOWNLOAD_TIMEOUT=30詳細については、環境変数リファレンスを参照してください。その後、ダウンロードコマンドを再実行してください。
hf upload
hf upload コマンドを使用して、ファイルを Hub に直接アップロードできます。内部では、Upload ガイドで説明されている upload_file() および upload_folder() ヘルパーを同じように使用しています。以下の例では、最も一般的なユースケースを順に説明します。利用可能なオプションの完全なリストを確認するには、次のコマンドを実行できます。
>>> hf upload --helpフォルダ全体をアップロードする
このコマンドのデフォルトの使い方は以下の通りです:
# Usage: hf upload [repo_id] [local_path] [path_in_repo]リポジトリのルートに現在のディレクトリをアップロードするには、以下を使用します:
>>> hf upload my-cool-model . .
https://huggingface.co/Wauplin/my-cool-model/tree/main/リポジトリがまだ存在しない場合、自動的に作成されます。
特定のフォルダをアップロードすることもできます:
>>> hf upload my-cool-model ./models .
https://huggingface.co/Wauplin/my-cool-model/tree/main/最後に、リポジトリ内の特定の宛先にフォルダをアップロードできます。
>>> hf upload my-cool-model ./path/to/curated/data /data/train
https://huggingface.co/Wauplin/my-cool-model/tree/main/data/train単一ファイルのアップロード
local_pathをローカルマシンのファイルに設定することで、単一のファイルをアップロードすることもできます。その場合、path_in_repoは省略可能で、デフォルトではローカルファイルの名前が使用されます。
>>> hf upload Wauplin/my-cool-model ./models/model.safetensors
https://huggingface.co/Wauplin/my-cool-model/blob/main/model.safetensors特定のディレクトリに単一のファイルをアップロードする場合は、path_in_repoを適切に設定してください。
>>> hf upload Wauplin/my-cool-model ./models/model.safetensors /vae/model.safetensors
https://huggingface.co/Wauplin/my-cool-model/blob/main/vae/model.safetensors複数のファイルをアップロードする
フォルダ全体をアップロードせずに、フォルダ内の複数のファイルを一度にアップロードするには、--include と --exclude パターンを使用します。また、--delete オプションと組み合わせることで、新しいファイルをアップロードしながらリポジトリ上のファイルを削除することもできます。以下の例では、リモートファイルを削除し、/logs 内のファイルを除くすべてのファイルをアップロードして、ローカルの Space を同期しています。
# Sync local Space with Hub (upload new files except from logs/, delete removed files)
>>> hf upload Wauplin/space-example --repo-type=space --exclude="/logs/*" --delete="*" --commit-message="Sync local Space with Hub"
...データセットまたはSpaceにアップロード
データセットやSpaceにアップロードするには、--repo-typeオプションを使用します:
>>> hf upload Wauplin/my-cool-dataset ./data /train --repo-type=dataset
...組織にアップロード
個人のリポジトリではなく、組織が所有するリポジトリにコンテンツをアップロードするには、repo_idで明示的に指定する必要があります:
>>> hf upload MyCoolOrganization/my-cool-model . .
https://huggingface.co/MyCoolOrganization/my-cool-model/tree/main/特定のリビジョンにアップロード
デフォルトでは、ファイルはmainブランチにアップロードされます。別のブランチやリファレンスにファイルをアップロードする場合は、--revisionオプションを使用します:
# Upload files to a PR
>>> hf upload bigcode/the-stack . . --repo-type dataset --revision refs/pr/104
...注: revisionが存在せず、--create-prが設定されていない場合、mainブランチからブランチが自動的に作成されます。
hf:// URI を使用します
hf downloadと同様に、保存先は文法hf://[<TYPE>/]<ID>[@<REVISION>][/<PATH>]に従う単一のhf:// URIで表すことができます(完全な構文についてはHF URIs リファレンスを参照してください)。リポジトリのタイプ、リビジョン、path_in_repoはすべて URI から読み取られます。
# Equivalent to: hf upload Wauplin/my-cool-dataset ./train.csv data/train.csv --repo-type dataset --revision my-branch
>>> hf upload hf://datasets/Wauplin/my-cool-dataset@my-branch/data/train.csv ./train.csv
# Upload a whole folder to the root of a model repo
>>> hf upload hf://Wauplin/my-cool-model ./modelsURIが指定された場合、それらはすでにURIの一部であるため、--repo-typeおよび--revisionも設定できません(設定するとエラーが発生します)。また、URIに埋め込まれたパスはpath_in_repo引数と組み合わせることはできません。
アップロードして PR を作成
リポジトリへのプッシュ権限がない場合は、PR を開き、行いたい変更について著者に伝える必要があります。これは --create-pr オプションを設定することで実行できます。
# Create a PR and upload the files to it
>>> hf upload bigcode/the-stack . . --repo-type dataset --revision refs/pr/104
https://huggingface.co/datasets/bigcode/the-stack/blob/refs%2Fpr%2F104/一定の間隔でアップロード
一部のケースでは、リポジトリに定期的に更新をプッシュしたい場合があります。例えば、モデルの学習中にログフォルダを10分ごとにアップロードしたい場合に便利です。--everyオプションを使用してこれを行うことができます。
# Upload new logs every 10 minutes
hf upload training-model logs/ --every=10コミットメッセージを指定します
デフォルトのメッセージではなく、コミット用のカスタムメッセージと説明を設定するには、--commit-message と --commit-description を使用します。
>>> hf upload Wauplin/my-cool-model ./models . --commit-message="Epoch 34/50" --commit-description="Val accuracy: 68%. Check tensorboard for more details."
...
https://huggingface.co/Wauplin/my-cool-model/tree/mainトークンを指定します
ファイルをアップロードするには、トークンを使用する必要があります。デフォルトでは、ローカルに保存されているトークン(hf auth loginを使用して保存されたもの)が使用されます。明示的に認証を行う場合は、--tokenオプションを使用してください。
>>> hf upload Wauplin/my-cool-model ./models . --token=hf_****
...
https://huggingface.co/Wauplin/my-cool-model/tree/main静粛モード
デフォルトでは、hf uploadコマンドは詳細な出力を行います。警告メッセージ、アップロードされたファイルに関する情報、進捗バーなどが表示されます。これらをすべて無効にするには、--quietオプションを使用してください。この場合、最終行(つまり、アップロードされたファイルへのURL)のみが表示されます。スクリプト内で出力を別のコマンドに渡す際に便利です。
>>> hf upload Wauplin/my-cool-model ./models . --quiet
https://huggingface.co/Wauplin/my-cool-model/tree/mainhf buckets
hf buckets を使用して、Hugging Face Hub 上のバケットを管理します。バケットは Xet ストレージバックエンドによって提供される、Hugging Face 上の S3 類似のオブジェクトストレージです。リポジトリ(git ベースでファイル履歴を追跡するもの)とは異なり、バケットは、コンテンツアドレス可能な重複排除を備えた大規模ファイル用に設計されたリモートオブジェクトストレージコンテナです。バージョン管理が不要な、学習チェックポイント、ログ、中間成果物、または大規模なファイルコレクションの保存など、シンプルで高速な変更可能なストレージが必要なユースケース向けに設計されています。以下の例では、最も一般的なユースケースを順に説明します。完全なガイドについては、Buckets ガイドを参照してください。
バケットを作成する
新しいバケットを作成するには、hf buckets createを使用します。デフォルトでは、バケットはあなたの名前空間の下に作成されます:
>>> hf buckets create my-bucket--private フラグを使用して、プライベートバケットを作成することもできます:
>>> hf buckets create my-bucket --privateバケットのリスト表示と確認
すべてのバケットをリスト表示するには、hf buckets list(またはその短縮形hf buckets ls)を使用します。特定の組織のバケットをリスト表示することもできます。
>>> hf buckets list
ID PRIVATE SIZE TOTAL_FILES CREATED_AT
-------------------- ------- ---------- ----------- ----------
username/my-bucket 32 5 2026-02-16
username/checkpoints 117609095 700 2026-02-13
username/logs 321757477 2000 2026-02-13
# Human-readable sizes
>>> hf buckets list -h
ID PRIVATE SIZE TOTAL_FILES CREATED_AT
-------------------- ------- -------- ----------- ----------
username/my-bucket 32 B 5 2026-02-16
username/checkpoints 117.6 MB 700 2026-02-13
username/logs 321.8 MB 2000 2026-02-13
# List buckets in a specific namespace
>>> hf buckets ls my-org
# Filter buckets by name
>>> hf buckets list --search "checkpoint"特定のバケットの詳細情報(JSON形式で返されます)を取得するには、hf buckets infoを使用します。
>>> hf buckets info username/my-bucket
{
"id": "username/my-bucket",
"private": false,
"created_at": "2026-02-16T15:28:32+00:00",
"size": 32,
"total_files": 5
}バケットの可視性を変更
バケットをプライベートとパブリックの間で切り替えるには、hf buckets settingsを使用します:
# Make a bucket private
>>> hf buckets settings username/my-bucket --private
# Make it public again
>>> hf buckets settings username/my-bucket --publicバケットの削除
バケットを削除するには、hf buckets deleteを使用します。--yesを指定しない限り、確認のプロンプトが表示されます。
>>> hf buckets delete username/my-bucket --yesファイルの削除
hf buckets remove(またはその短縮形 hf buckets rm)を使用して、バケットからファイルを削除します。
単一のファイルを削除するには、そのパスを指定します:
>>> hf buckets rm username/my-bucket/old-model.binプレフィックス配下のすべてのファイルを削除するには、--recursiveを使用します:
>>> hf buckets rm username/my-bucket/logs/ --recursiveプレフィックスなしでバケット内のすべてのファイルをターゲットにすることもできます:
>>> hf buckets rm username/my-bucket --recursive --include "*.tmp"--dry-run を使用すると、実際に削除せずに削除される内容を確認できます:
>>> hf buckets rm username/my-bucket/checkpoints/ --recursive --dry-runファイルの閲覧
バケット ID を指定して hf buckets list を使用すると、バケット内のファイルをリストできます:
>>> hf buckets list username/my-bucket
2048 2026-01-15 10:30:00 big.bin
5 2026-01-15 10:30:00 file.txt
2026-01-15 10:30:00 sub/-R を追加すると再帰的に一覧を表示でき、-h を追加すると人間が読みやすい形式のファイルサイズと短い日付が表示されます。また、--tree を使用して ASCII ツリービューを表示したり、--tree --quiet を使用してメタデータなしのクリーンなツリーを表示したりすることもできます。
# Recursive with human-readable sizes
>>> hf buckets list username/my-bucket -R -h
2.0 KB Jan 15 10:30 big.bin
5 B Jan 15 10:30 file.txt
14 B Jan 15 10:30 sub/nested.txt
4 B Jan 15 10:30 sub/deep/file.txt
# Tree with human-readable sizes
>>> hf buckets list username/my-bucket --tree -h -R
2.0 KB Jan 15 10:30 ├── big.bin
5 B Jan 15 10:30 ├── file.txt
└── sub/
├── deep/
4 B Jan 15 10:30 │ └── file.txt
14 B Jan 15 10:30 └── nested.txt
# Clean tree without metadata
>>> hf buckets list username/my-bucket --tree --quiet -R
├── big.bin
├── file.txt
└── sub/
├── deep/
│ └── file.txt
└── nested.txtプレフィックスでフィルタリングするには、バケットパスにプレフィックスを付加します:
>>> hf buckets list username/my-bucket/sub -Rファイルをコピー
hf cp を使用して、ローカルマシン、リポジトリ、バケット間で単一のファイルをコピーします。ソースとデスティネーションは、それぞれローカルパス、hf:// URI(リポジトリまたはバケット)、または -(stdin/stdout)のいずれかになります。
hf cpはhf repos cpおよびhf buckets cpとしても公開されており、これら3つは完全に同一のコマンドです。ワークフローに合わせて読みやすい方をお使いください。
ファイルをアップロードするには(ローカル → リポジトリまたはバケット):
# To a repository
>>> hf cp ./model.safetensors hf://username/my-model/model.safetensors
# To a bucket (uses the local filename when the destination ends with /)
>>> hf cp ./data.csv hf://buckets/username/my-bucket/logs/ファイルをダウンロードするには(リポジトリまたはバケット → ローカル):
# From a repository
>>> hf cp hf://datasets/username/my-dataset@refs/pr/1/data.csv ./data.csv
# From a bucket, to the current directory (destination omitted)
>>> hf cp hf://buckets/username/my-bucket/config.json- を使用して、stdout へのストリーミングや stdin からのストリーミングも実行できます:
# Download to stdout
>>> hf cp hf://buckets/username/my-bucket/config.json - | jq .
# Upload from stdin
>>> echo "hello" | hf cp - hf://username/my-model/hello.txtHub上の2つの場所間でコピーするには(リポジトリ/バケット → リポジトリ/バケット):
# Repo to repo
>>> hf cp hf://username/source-model/config.json hf://username/dest-model/config.json
# Repo to bucket
>>> hf cp hf://datasets/username/my-dataset/data/train/ hf://buckets/username/my-bucket/datasets/train/
# Bucket to bucket
>>> hf cp hf://buckets/username/source-bucket/logs/ hf://buckets/username/archive-bucket/logs/Hub上の2つの場所間でフォルダをコピーする際、ソースパス末尾の/の有無によって、フォルダ自体がネストされるか、その内容のみがコピーされるかが決まります(rsyncと同様):
# Without trailing slash: "logs" dir is nested => archive/logs/...
>>> hf cp hf://buckets/username/my-bucket/logs hf://buckets/username/archive-bucket/
# With trailing slash: only contents of "logs" are copied => archive/...
>>> hf cp hf://buckets/username/my-bucket/logs/ hf://buckets/username/archive-bucket/注:
hf cpは、ローカルパスが関与する場合に単一のファイルをコピーします。ディレクトリ全体をローカルにコピーする場合は、hf upload/hf download(リポジトリ)またはhf buckets sync(バケット)を使用してください。- Bucket-to-repo copy はまだサポートされていません。
- ローカルからローカルへのコピーはサポートされていません(シェルで
cpを使用してください)。 - 2つのHub間のコピーは、同じストレージリージョン内でのみ機能します。
ディレクトリの同期
hf buckets sync を使用して、ローカルマシンとバケット間のディレクトリを同期します。ソースと宛先を比較し、変更されたファイルのみを転送します。
ローカルディレクトリをバケットにアップロードするには:
>>> hf buckets sync ./data hf://buckets/username/my-bucketバケットからローカルディレクトリにダウンロードするには:
>>> hf buckets sync hf://buckets/username/my-bucket ./data--delete を使用すると、ソースに存在しない宛先のファイルを削除できます:
>>> hf buckets sync ./data hf://buckets/username/my-bucket --delete--includeと--excludeのパターンを使用して、同期するファイルをフィルタリングできます:
>>> hf buckets sync ./data hf://buckets/username/my-bucket --include "*.safetensors" --exclude "*.tmp"既存のファイルのみを更新し(新規ファイルはスキップする)場合は、--existingを使用します。新規ファイルのみを作成し(既存のファイルはスキップする)場合は、--ignore-existingを使用します:
>>> hf buckets sync ./data hf://buckets/username/my-bucket --existing
>>> hf buckets sync ./data hf://buckets/username/my-bucket --ignore-existingさらに安全を確保するために、実行前にレビュー用の計画を生成し、その後適用することができます。
# Generate a plan
>>> hf buckets sync ./data hf://buckets/username/my-bucket --plan sync-plan.jsonl
# Review and apply the plan
>>> hf buckets sync --apply sync-plan.jsonl--dry-run を使用すると、何も実行せずに同期計画を JSONL 形式で標準出力に出力できます。jq やその他のツールにパイプする際に便利です:
>>> hf buckets sync ./data hf://buckets/username/my-bucket --dry-run | jq .
hf syncはhf buckets syncの便利なトップレベルのエイリアスです。すべての同期オプションの詳細については、Buckets ガイドを参照してください。
hf models
hf models を使用して、Hub 上のモデルをリスト表示し、特定のモデルの詳細情報を取得します。
モデルのリスト表示
# List trending models
>>> hf models ls
# Search for models
>>> hf models ls --search "lora"
# Filter by author
>>> hf models ls --author Qwen
# Filter by pipeline tag
>>> hf models ls --pipeline-tag summarization
# Filter by parameter count
>>> hf models ls --num-parameters min:6B,max:128B
# Only non-gated models
>>> hf models ls --no-gated --author google
# Only models runnable by a given app
>>> hf models ls --apps llama.cpp
# Sort by downloads
>>> hf models ls --sort downloads --limit 10モデルIDを引数として呼び出すと、hf models lsは、そのモデルリポジトリ内のファイルをリスト表示します。
# List files in a model repo
>>> hf models ls meta-llama/Llama-3.2-1B-Instruct
# List files recursively
>>> hf models ls meta-llama/Llama-3.2-1B-Instruct -R
# Tree view with human-readable sizes
>>> hf models ls meta-llama/Llama-3.2-1B-Instruct --tree -h
# List files at a specific revision
>>> hf models ls meta-llama/Llama-3.2-1B-Instruct --revision mainモデル情報を取得する
>>> hf models info Lightricks/LTX-2--expand を使用すると、downloads、likes、tags などの追加プロパティを取得できます。
モデルカードを取得する
hf models card を使用して、モデルのモデルカード(README)を取得します。デフォルトでは、カードの全内容を標準出力に出力します。
# Full card (metadata + text)
>>> hf models card google/gemma-4-31B-it
# Just the metadata (from the YAML frontmatter)
>>> hf models card google/gemma-4-31B-it --metadata
# Metadata as JSON (useful for scripting and agents)
>>> hf models card google/gemma-4-31B-it --metadata --format json
# Just the text body (no YAML frontmatter)
>>> hf models card google/gemma-4-31B-it --texthf datasets
hf datasets を使用して、Hub 上のデータセットをリスト表示し、特定のデータセットの詳細情報を取得します。
データセットのリスト表示
# List trending datasets
>>> hf datasets ls
# Search for datasets
>>> hf datasets ls --search "code"
# List official benchmark datasets
>>> hf datasets ls --filter benchmark:official
# Sort by downloads
>>> hf datasets ls --sort downloads --limit 10データセットIDを引数として呼び出すと、hf datasets lsは、そのデータセットリポジトリ内のファイルをリスト表示します。
# List files in a dataset repo
>>> hf datasets ls HuggingFaceFW/fineweb
# List files recursively with human-readable sizes
>>> hf datasets ls HuggingFaceFW/fineweb -R -h
# Tree view
>>> hf datasets ls HuggingFaceFW/fineweb --treeデータセットのリーダーボードをリスト表示する
hf datasets leaderboard を使用すると、ベンチマークデータセットに提出されたモデルのスコアを表示でき、タスクに最適なモデルを見つけたり、ベンチマークスコアでモデルを比較したりできます。
>>> hf datasets leaderboard SWE-bench/SWE-bench_Verified
>>> hf datasets leaderboard SWE-bench/SWE-bench_Verified --limit 5 --format jsonデータセットの情報を取得する
>>> hf datasets info HuggingFaceFW/finewebデータセットカードを取得する
hf datasets card を使用して、データセットのカード(README)を取得します。デフォルトでは、カードの全内容を標準出力に出力します。
# Full card (metadata + text)
>>> hf datasets card HuggingFaceFW/fineweb
# Just the metadata (from the YAML frontmatter)
>>> hf datasets card HuggingFaceFW/fineweb --metadata
# Metadata as JSON (useful for scripting and agents)
>>> hf datasets card HuggingFaceFW/fineweb --metadata --format json
# Just the text body (no YAML frontmatter)
>>> hf datasets card HuggingFaceFW/fineweb --textParquet URLのリスト
SQLクエリを作成する前に、hf datasets parquet を使用して、データセットのparquetファイルのURLを確認してください。
Hub上のデータセットは、対象となるデータセットについて、バックエンドでDataset Viewerサービスによって自動的にParquetに変換されます。
詳細については、Parquet変換ガイドを参照してください。
>>> hf datasets parquet cfahlgren1/hub-stats
>>> hf datasets parquet cfahlgren1/hub-stats --subset models
>>> hf datasets parquet cfahlgren1/hub-stats --split train
>>> hf datasets parquet cfahlgren1/hub-stats --format jsonデフォルトのテーブル出力には、Hub APIからのサブセット、スプリット、およびParquetファイルのURLが含まれます。
dataset parquetでSQLを実行する
hf datasets sql を使用して、DuckDB により、データセットの parquet URL に対して生の SQL クエリを実行できます。
まず hf datasets parquet で URL を特定し、その後 read_parquet(...) を使用して直接クエリを実行します。
>>> hf datasets sql "SELECT COUNT(*) AS rows FROM read_parquet('https://huggingface.co/api/datasets/cfahlgren1/hub-stats/parquet/models/train/0.parquet')"
>>> hf datasets sql "SELECT * FROM read_parquet('https://huggingface.co/api/datasets/cfahlgren1/hub-stats/parquet/models/train/0.parquet') LIMIT 5" --format json必要に応じて、まずDuckDBをインストールしてください:
# Python package
>>> pip install duckdb
# or standalone DuckDB CLI (Homebrew: macOS/Linux)
>>> brew install duckdbhf spaces
hf spaces を使用して、Hub 上の Spaces を一覧表示し、特定の Space に関する詳細情報を取得します。
スペースのリスト表示
# List trending Spaces
>>> hf spaces ls
# Search for Spaces
>>> hf spaces ls --search "3d"
# Sort by likes
>>> hf spaces ls --sort likes --limit 10Space IDを引数として呼び出すと、hf spaces lsは、そのSpaceリポジトリ内のファイルをリスト表示します。
# List files in a Space repo
>>> hf spaces ls victor/deepsite
# List files recursively with tree view
>>> hf spaces ls victor/deepsite --tree -R -hSpace の情報を取得する
>>> hf spaces info victor/deepsiteスペースカードを取得
hf spaces card を使用して、Space のカード(README)を取得します。デフォルトでは、カードの全内容を標準出力に出力します。
# Full card (metadata + text)
>>> hf spaces card mteb/leaderboard
# Just the card metadata (from the YAML frontmatter)
>>> hf spaces card mteb/leaderboard --metadata
# Card metadata as JSON
>>> hf spaces card mteb/leaderboard --metadata --format json
# Just the text body (no YAML frontmatter)
>>> hf spaces card mteb/leaderboard --textSpaceを一時停止または再起動すると、そのコンテナが破棄されるため、エフェメラルファイルシステムに書き込まれたデータはすべて失われます。再起動をまたいでデータを永続化するには、
hf spaces volumes setでVolumeまたはバケットをマウントしてください(詳細はhf spaces volumes --helpを実行してください)。
スペースを一時停止する
使用していない間はhf spaces pauseでSpaceを一時停止できます(一時停止中の時間は課金されません)。後でhf spaces restartを再実行して再開してください。
>>> hf spaces pause username/my-spaceスペースを再起動する
Space を再起動するには hf spaces restart を使用します。ビルドキャッシュを使用せずに Space を最初から再構築するには、--factory-reboot を渡します。
>>> hf spaces restart username/my-space
>>> hf spaces restart username/my-space --factory-rebootSpaceの待機
hf spaces wait を使用すると、Space のビルド/起動が完了して安定した状態に達するまでブロックできます。Space が RUNNING 状態の場合に終了コード 0 で終了し、それ以外の場合は非ゼロ(例: BUILD_ERROR)で終了します。再起動やハードウェア変更後のスクリプト処理に便利です。
>>> hf spaces wait username/my-space
# With a timeout
>>> hf spaces wait username/my-space --timeout 5m
# Chain with restart
>>> hf spaces restart username/my-space && hf spaces wait username/my-space利用可能なハードウェアのリスト
hf spaces hardware を使用すると、Spaces で利用可能なすべてのハードウェアオプションと、その価格を表示できます。
>>> hf spaces hardwareZeroGPUのクォータを確認する
hf spaces zero-gpu quota を使用すると、ZeroGPU のクォータの残量とリセット時刻を確認できます。スクリプト、アプリ、またはエージェントから ZeroGPU Spaces を呼び出す際に、使用状況を追跡するために便利です。
>>> hf spaces zero-gpu quota
✓ ZeroGPU quota (in GPU-seconds)
remaining: 1810
base: 2400
resets_at: 2026-09-30T18:12:03+00:00
overquota_used: 0
>>> hf spaces zero-gpu quota --format json
{"remaining": 1810, "base": 2400, "resets_at": "2026-09-30T18:12:03+00:00", "overquota_used": 0}クォータが不足している場合、コマンドは、請求設定からクレジットを購入して、1日あたりのクォータを超えてもZeroGPUを継続して使用することを提案します(PRO、Team、Enterpriseユーザーのみ)。
Spaceの設定を更新
hf spaces settings を使用して、Space の設定を更新します。
>>> hf spaces settings username/my-space --sleep-time 3600
>>> hf spaces settings username/my-space --hardware t4-medium--sleep-time: Space がスリープするまでのアイドル時間(秒)。-1を使用すると、スリープしなくなります。アップグレードされたハードウェアでのみ利用可能(Spaces のスリープ時間のドキュメントを参照)。--hardware: ハードウェアの種類(例:cpu-basic、t4-medium、l4x4)。hf spaces hardwareを実行すると、すべてのオプションを確認できます。
Spaceのシークレットを管理する
Space のシークレットをリスト表示するには hf spaces secrets ls を、1 つ以上のシークレットを追加または更新するには hf spaces secrets add を、削除するには hf spaces secrets delete を使用します。--secrets-file PATH を渡すことで、.env 形式のファイルからシークレットを読み込むことができます。既存のキーは上書きされます。
>>> hf spaces secrets ls username/my-space
>>> hf spaces secrets add username/my-space -s OPENAI_API_KEY=sk-...
>>> hf spaces secrets add username/my-space --secrets-file .env.secrets
>>> hf spaces secrets delete username/my-space OPENAI_API_KEY --yesシークレット値は書き込み専用であるため、
hf spaces secrets lsはキー、説明、および更新タイムスタンプを表示しますが、シークレット値自体は表示されません。
Spaceの環境変数を管理する
hf spaces variables を使用して、Space 上の非シークレットな環境変数を管理します。シークレットとは異なり、変数は読み取り可能であるため、ls ではキーと値の両方が表示されます。add に --env-file PATH を渡すことで、.env 形式のファイルから読み込むことができます。
>>> hf spaces variables ls username/my-space
>>> hf spaces variables add username/my-space -e MODEL_ID=gpt2 -e MAX_TOKENS=512
>>> hf spaces variables add username/my-space --env-file .env
>>> hf spaces variables delete username/my-space MAX_TOKENS --yesSpaceへのSSH接続(開発モード)
hf spaces ssh を使用して、Space の Dev Mode コンテナに SSH セッションを開きます。Dev Mode が有効になっていない場合、CLI が有効化を促すプロンプトを表示します(--auto を使用するとプロンプトをスキップできます)。
SSH公開鍵は設定に登録する必要があります。詳細については、Dev Modeのドキュメントを参照してください。
# SSH into a Space
>>> hf spaces ssh username/my-space
# Print the SSH command without running it
>>> hf spaces ssh username/my-space --dry-run
# Auto-enable Dev Mode if disabled
>>> hf spaces ssh username/my-space --auto
# Use a specific SSH key
>>> hf spaces ssh username/my-space -i ~/.ssh/id_ed25519hf papers
hf papers を使用して、Hub 上の論文のリスト表示、検索、構造化情報の取得、および Markdown 形式のコンテンツの読み取りを行います。
論文のリスト
# List most recent daily papers
>>> hf papers ls
# List trending papers
>>> hf papers ls --sort=trending
# List papers from a specific date
>>> hf papers ls --date=2025-01-23
# List today's papers
>>> hf papers ls --date=today
# List papers from a specific week
>>> hf papers ls --week=2025-W09
# List papers from a specific month
>>> hf papers ls --month=2025-02
# List papers submitted by a specific user
>>> hf papers ls --submitter=akhaliq
# Limit results
>>> hf papers ls --sort=trending --limit=5論文を検索
# Search papers by keyword
>>> hf papers search "vision language"
# Limit search results
>>> hf papers search "diffusion models" --limit=10
# Output as JSON
>>> hf papers search "attention" --format=json論文情報を取得する
# Get structured metadata for a paper (returns JSON)
>>> hf papers info 2601.15621論文をMarkdownとして読み込む
# Read the full paper content as markdown
>>> hf papers read 2601.15621hf discussions
hf discussions を使用すると、ターミナルから Hub リポジトリのディスカッションとプルリクエストを直接管理できます。ディスカッションと PR の両方について、一覧表示、表示、作成、コメント、クローズ、再開、マージを行うことができます。Hub のコミュニティ機能の動作に関する完全なガイドについては、ディスカッションとプルリクエストのガイドを参照してください。
ディスカッションの一覧
リポジトリの未解決のディスカッションとPRをリスト表示するには、リポジトリIDをhf discussions list(またはその短縮形hf discussions ls)に渡します。
>>> hf discussions list username/my-model結果を種類(discussionまたはpull_request)、ステータス(open、closed、merged、またはall)、または作成者で絞り込むことができます。
>>> hf discussions list username/my-model --kind pull_request --status merged
>>> hf discussions list username/my-model --author aliceスクリプト処理では、構造化された出力を取得するには--format jsonを使用するか、ディスカッション番号のみを出力するには--quietを使用します(1行に1つ):
>>> hf discussions list username/my-model --format json
>>> hf discussions ls username/my-model --quietディスカッションまたはPRの情報取得
特定のディスカッションやPRを確認するには、リポジトリIDとディスカッション番号を渡します。
>>> hf discussions info username/my-model 5出力には、ディスカッションのメタデータ(タイトル、ステータス、作成者など)と、会話イベントの完全なリストが含まれます。Pull Request の差分を表示するには、代わりにhf discussions diffを使用してください。
機械可読の出力には--format jsonを使用し、他のツールにパイプする場合はNO_COLOR=1を設定してANSIカラーを除去してください。
ディスカッションまたはPRを作成する
新しいディスカッションを開始するには、--title でタイトルを指定します。説明は、--body でインラインで含めることも、--body-file でファイルから読み込むこともできます。
>>> hf discussions create username/my-model --title "Bug report"
>>> hf discussions create username/my-model --title "Feature request" --body "Please add X"
>>> hf discussions create username/my-model --title "Report" --body-file report.md通常のディスカッションではなくプルリクエストを作成するには、--pull-request フラグを追加します:
>>> hf discussions create username/my-model --title "Fix typo" --pull-requestディスカッションやPRにコメントする
番号を指定して、既存のディスカッションまたはPRにコメントを追加します。コメント本文は、--bodyでインラインで渡す、--body-fileでファイルから読み込む、または--body-file -を使ってstdinからパイプするかのいずれかの方法で指定できます。
>>> hf discussions comment username/my-model 5 --body "Thanks for reporting!"
>>> hf discussions comment username/my-model 5 --body-file review.md
>>> echo "LGTM" | hf discussions comment username/my-model 5 --body-file -コメントを編集
ディスカッション番号とコメントIDを渡すことで、既存のコメントをその場で編集できます。コメントIDはhf discussions infoで取得できます。
>>> hf discussions edit username/my-model 5 abc123 --body "Updated comment."
>>> hf discussions edit username/my-model 5 abc123 --body-file fixed.md画像と動画の添付
hf discussions create、comment、またはeditに--attachを渡すと、画像、動画、音声ファイルをアップロードして本文に埋め込むことができます。これは、Hubのコメント欄にファイルをドラッグ&ドロップした場合と同様です。本文がすでにファイルを参照している場合、例えばのように、その参照はアップロードされたファイルを指すようになります。それ以外の場合は、ファイルが本文の末尾に追加されます。追加された画像のaltテキストを設定するには、#の後に追加します:
>>> hf discussions create username/my-model --title "Fix rendering" --pr --body "Before: " --attach ./before.png --attach "./after.png#After the fix"
>>> hf discussions comment username/my-model 5 --body "Here is a demo:" --attach demo.mp4サポートされている形式は、PNG、JPEG、GIF、WebP、MP4、MOV、WebM、MP3、WAVです。最大10MB(動画は50MB)までです。
クローズ、再開、マージ
hf discussions close を使用して、ディスカッションや PR を閉じることができます。デフォルトでは、確認のプロンプトが表示されます。プロンプトをスキップするには --yes を、クローズメッセージを残すには --comment を渡します。
>>> hf discussions close username/my-model 5
>>> hf discussions close username/my-model 5 --yes --comment "Resolved"以前にクローズされたディスカッションを再開するには、hf discussions reopenを使用します:
>>> hf discussions reopen username/my-model 5 --yesプルリクエストをマージするには、hf discussions mergeを使用します:
>>> hf discussions merge username/my-model 5 --yesリネームと差分
新しいタイトルを指定することで、ディスカッションの名前を変更できます。
>>> hf discussions rename username/my-model 5 "Updated title"ターミナルでプルリクエストの差分を直接表示するには、hf discussions diffを使用します:
>>> hf discussions diff username/my-model 5hf リポジトリ
hf repos は、Hugging Face Hub 上のリポジトリのリスト表示、作成、複製、削除、移動、設定の更新、ファイルの削除を行うことができます。また、ブランチとタグを管理するためのサブコマンドも含まれています。
リポジトリのリスト表示
hf repos ls を使用すると、ストレージ情報付きで、ストレージ使用量の順にソートされたすべてのリポジトリ(モデル、データセット、スペース、バケット)をリスト表示できます。デフォルトでは、最初の30件のリポジトリのみが表示されます:
# List all your repos (first 30)
>>> hf repos ls
REPOSITORY TYPE UPDATED VISIBILITY STORAGE % OF TOTAL
------------------------ ------- ---------- ---------- -------- ----------
username/bucket-raw bucket 2026-04-29 public 1.7 TB 72.3%
username/my-model model 2026-05-06 public 4.8 GB 18.1%
username/my-dataset dataset 2024-09-14 private 598.4 MB 5.2%
Hint: Showing 30 of 42 repos. Use `--limit 0` to list all.リポジトリの種類で絞り込み、名前で検索、または上限を調整します:
# List only models
>>> hf repos ls --type model
# Search by name
>>> hf repos ls --search "bert"
# List repos from an organization
>>> hf repos ls --namespace my-org
# Combine filters
>>> hf repos ls --namespace my-org --type dataset --search "train"
# List all repos (no limit)
>>> hf repos ls --limit 0スクリプトでの使用には--format jsonを、IDのみを出力するには-qを使用します。パイプ処理を行う場合は、すべてのリポジトリをエクスポートするために--limit 0を使用します:
>>> hf repos ls --limit 0 --format json | jq '.[].id'
>>> hf repos ls -qリポジトリを作成する
>>> hf repos create Wauplin/my-cool-model
Successfully created Wauplin/my-cool-model on the Hub.
Your repo is now available at https://huggingface.co/Wauplin/my-cool-modelプライベートなデータセットまたはSpaceを作成します:
>>> hf repos create my-cool-dataset --repo-type dataset --private
>>> hf repos create my-gradio-space --repo-type space --sdk gradioリポジトリが既に存在する可能性がある場合は--exist-okを使用し、Enterpriseのリソースグループを対象にする場合は--resource-group-idを使用します。
特定のリージョンにリポジトリを作成するには:
>>> hf repos create my-model --region usリポジトリの複製
hf repos duplicate を使用すると、既存のモデル、データセット、または Space を自分のアカウント(または組織)にコピーできます。コピーはサーバー上で実行され、git の履歴が保持されます。
>>> hf repos duplicate openai/gdpval --type dataset
>>> hf repos duplicate openai/gdpval myorg/my-gdpval --type dataset --private新しいリポジトリのLFS/Xetファイルは、コマンドが返却された後もバックグラウンドでコピーされ続ける場合があります。その場合、警告が表示され、コピーが完了するまで新しいリポジトリからこれらのファイルをダウンロードしようとしても失敗する可能性があります。
リポジトリの削除
>>> hf repos delete Wauplin/my-cool-modelDatasets と Spaces:
>>> hf repos delete my-cool-dataset --repo-type dataset
>>> hf repos delete my-gradio-space --repo-type spaceリポジトリを移動する
>>> hf repos move old-namespace/my-model new-namespace/my-modelリポジトリ設定を更新
>>> hf repos settings Wauplin/my-cool-model --gated auto
>>> hf repos settings Wauplin/my-cool-model --private true
>>> hf repos settings Wauplin/my-cool-model --private false--gated:auto、manual、falseのいずれか--private true|false: リポジトリのプライバシー設定
リポジトリからファイルを削除する
hf repos delete-files <repo_id> サブコマンドを使用すると、リポジトリからファイルを削除できます。以下に使用例を示します。
フォルダーを削除します:
>>> hf repos delete-files Wauplin/my-cool-model folder/
Files correctly deleted from repo. Commit: https://huggingface.co/Wauplin/my-cool-mo...複数のファイルを削除する:
>>> hf repos delete-files Wauplin/my-cool-model file.txt folder/pytorch_model.bin
Files correctly deleted from repo. Commit: https://huggingface.co/Wauplin/my-cool-mo...ワイルドカードパターンを使用して、ファイルのセットを削除します。パターンは、こちらにドキュメント化されている標準ワイルドカード(globbingパターン)です。パターンマッチングはfnmatchに基づいています。
fnmatchは、従来の Unix シェルのグロブリングとは異なり、*がパスの境界をまたいで一致します。例えば、"data/*.json"はdata/file.jsonと およびdata/subdir/file.jsonの両方に一致します。現在のディレクトリ内のファイルのみを一致させたい場合は、ファイルを明示的に列挙するか、より具体的なパターンを使用する必要があります。
>>> hf repos delete-files Wauplin/my-cool-model "*.txt" "folder/*.bin"
Files correctly deleted from repo. Commit: https://huggingface.co/Wauplin/my-cool-mo...リポジトリからファイルを削除するには、認証と認可が必要です。デフォルトでは、ローカルに保存されているトークン(hf auth loginを使用して保存)が使用されます。明示的に認証を行う場合は、--tokenオプションを使用します:
>>> hf repos delete-files --token=hf_**** Wauplin/my-cool-model file.txthf repos branch
hf repos branch を使用して、Hub 上のリポジトリのブランチを作成および削除します。
# Create a branch
>>> hf repos branch create Wauplin/my-cool-model dev
# Create a branch from a specific revision
>>> hf repos branch create Wauplin/my-cool-model release-1 --revision refs/pr/104
# Delete a branch
>>> hf repos branch delete Wauplin/my-cool-model devすべてのコマンドは、明示的な認証が必要な場合に
--repo-type(model、dataset、spaceのいずれか)と--tokenを受け付けます。すべてのオプションを確認するには、任意のコマンドに--helpを付けて実行してください。
hf cache
hf cache を使用して、ローカルの Hugging Face キャッシュディレクトリを管理します。このキャッシュには、Hub からダウンロードされたモデル、データセット、Spaces、カーネルが保存されます。
# List cached repositories
>>> hf cache ls
# List cached revisions
>>> hf cache ls --revisions
# Remove specific items from cache
>>> hf cache rm model/gpt2
# Remove unreferenced revisions
>>> hf cache prune
# Verify cached file checksums
>>> hf cache verify gpt2hf cache ls
hf cache ls を使用すると、Hugging Face キャッシュにローカルで保存されている内容を確認できます。デフォルトでは、リポジトリごとに情報を集約して表示します:
>>> hf cache ls
ID SIZE LAST_ACCESSED LAST_MODIFIED REFS
--------------------------- -------- ------------- ------------- -----------
dataset/nyu-mll/glue 157.4M 2 days ago 2 days ago main script
model/LiquidAI/LFM2-VL-1.6B 3.2G 4 days ago 4 days ago main
model/microsoft/UserLM-8b 32.1G 4 days ago 4 days ago main
Found 3 repo(s) for a total of 5 revision(s) and 35.5G on disk.--revisions を追加して特定のスナップショットに絞り込み、フィルタを連鎖させることで、重要な情報にフォーカスできます:
>>> hf cache ls --filter "size>30g" --revisions
ID REVISION SIZE LAST_MODIFIED REFS
------------------------- ---------------------------------------- -------- ------------- ----
model/microsoft/UserLM-8b be8f2069189bdf443e554c24e488ff3ff6952691 32.1G 4 days ago main
Found 1 repo(s) for a total of 1 revision(s) and 32.1G on disk.このコマンドは、スクリプティング用に複数の出力形式をサポートしています。--format json は構造化オブジェクトを出力し、--format csv はカンマ区切りの行を書き出し、--quiet は ID のみを出力します。--sort を使用して、accessed、modified、name、または size でエントリを並べ替えられます(:asc または :desc を追加して順序を制御します)。また、--limit を使用して結果を上位 N 件のエントリに制限できます。これらのオプションを --cache-dir と組み合わせることで、別のキャッシュディレクトリを指定できます。高度なワークフローについては、キャッシュの管理 ガイドを参照してください。
hf cache ls --qで選択したキャッシュエントリを削除するには、IDをhf cache rmにパイプします:
>>> hf cache rm $(hf cache ls --filter "accessed>1y" -q) -y
About to delete 2 repo(s) totalling 5.31G.
- model/meta-llama/Llama-3.2-1B-Instruct (entire repo)
- model/hexgrad/Kokoro-82M (entire repo)
Deleted 2 repo(s) and 2 revision(s); freed 5.31G.hf cache rm
hf cache rm は、キャッシュされたリポジトリ、個々のリビジョン、または単一のファイルを削除します。1 つ以上のリポジトリ ID(model/bert-base-uncased)、hf:// URI、またはリビジョンハッシュを指定します:
>>> hf cache rm model/LiquidAI/LFM2-VL-1.6B
About to delete 1 repo(s) totalling 3.2G.
- model/LiquidAI/LFM2-VL-1.6B (entire repo)
Proceed with deletion? [y/N]: y
Deleted 1 repo(s) and 2 revision(s); freed 3.2G.リポジトリレベルのhf:// URIもサポートされています:
>>> hf cache rm hf://models/openai-community/gpt2 --dry-run
About to delete 1 repo(s) totalling 1.1G.
- model/openai-community/gpt2 (entire repo)
Dry run: no files were deleted.リポジトリ全体ではなく単一のファイルを削除する場合(例えば、GGUF量子化ファイルなど)には、hf://ファイルURIを渡します。ファイルはリポジトリのすべてのキャッシュ済みリビジョンから削除され、他のキャッシュ済みファイルがまだ参照していない場合のみ、そのblobが削除されます。
>>> hf cache rm hf://models/unsloth/gemma-3-27b-it-GGUF/gemma-3-27b-it-Q4_K_M.gguf --dry-run
About to delete 1 file(s) totalling 16.5G.
- model/unsloth/gemma-3-27b-it-GGUF@3f4b5c1d2e6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c/gemma-3-27b-it-Q4_K_M.gguf
Dry run: no files were deleted.リビジョンは引き続き利用可能であり、削除されたファイルは次に必要になった際に再度ダウンロードされます。パスは完全に一致する必要があります。フォルダやグロブパターンはサポートされておらず、ファイルターゲットをリポジトリやリビジョンと同一の呼び出し内で混在させることはできません。
同じ呼び出し内でリポジトリと特定のリビジョンを混在させることができます。--dry-run を使用して影響をプレビューするか、--yes を使用して確認プロンプトをスキップできます。自動化スクリプトでは便利です。
>>> hf cache rm model/t5-small 8f3ad1c --dry-run
About to delete 1 repo(s) and 1 revision(s) totalling 1.1G.
- model/t5-small:
8f3ad1c [main] 1.1G
Dry run: no files were deleted.デフォルトのキャッシュディレクトリ以外で作業する場合は、コマンドに--cache-dir PATHを併せて使用してください。
hf cache prune
hf cache prune は、キャッシュの不要なデータが占める容量を解放するための便利なショートカットです。対象は、ブランチやタグから到達可能なリビジョンのみを残し、参照されていない(デタッチされた)すべてのリビジョン、中断されたダウンロードで残った .incomplete ファイル、そしてキャッシュ済みのリポジトリから参照されなくなった共有ブロブです。
>>> hf cache prune
About to delete 3 unreferenced revision(s) and 2 incomplete download(s) (2.4G total).
- model/t5-small:
1c610f6b [refs/pr/1] 820.1M
d4ec9b72 [(detached)] 640.5M
- dataset/google/fleurs:
2b91c8dd [(detached)] 937.6M
Proceed? [y/N]: y
Deleted 3 unreferenced revision(s) and 2 incomplete download(s); freed 2.4G..incomplete ファイルは、ダウンロードが中断された際に残る部分ダウンロードファイルです。hf cache ls/rm(リビジョンレベルで動作する)では追跡されないため、hf cache ls はヒントとしてこれらを指摘し、hf cache prune が自動的に削除します。
他のキャッシュコマンドと同様に、--dry-run、--yes、--cache-dir が利用可能です。その他の例については、キャッシュの管理ガイドを参照してください。
hf cache verify
hf cache verify を使用して、Hub 上のチェックサムとローカルファイルを検証できます。キャッシュのスナップショットまたは通常のローカルディレクトリのいずれかを検証できます。
例:
# Verify main revision of a model in cache
>>> hf cache verify deepseek-ai/DeepSeek-OCR
# Verify a specific revision
>>> hf cache verify deepseek-ai/DeepSeek-OCR --revision refs/pr/5
>>> hf cache verify deepseek-ai/DeepSeek-OCR --revision ef93bf4a377c5d5ed9dca78e0bc4ea50b26fe6a4
# Verify a private repo
>>> hf cache verify me/private-model --token hf_***
# Verify a dataset
>>> hf cache verify karpathy/fineweb-edu-100b-shuffle --repo-type dataset
# Verify files in a local directory
>>> hf cache verify deepseek-ai/DeepSeek-OCR --local-dir /path/to/repoデフォルトでは、コマンドは欠落または余分なファイルについて警告を表示します。これらの警告をエラーに変換するには、フラグを使用します。
>>> hf cache verify deepseek-ai/DeepSeek-OCR --fail-on-missing-files --fail-on-extra-files成功すると、サマリーが表示されます:
✅ Verified 13 file(s) for 'deepseek-ai/DeepSeek-OCR' (model) in ~/.cache/huggingface/hub/models--meta-llama--Llama-3.2-1B-Instruct/snapshots/9213176726f574b556790deb65791e0c5aa438b6 All checksums match.
不一致が検出された場合、コマンドは詳細なリストを出力し、ゼロ以外のステータスで終了します。
hf repos tag
hf repos tag を使用して、Hub 上のリポジトリのタグを作成、一覧表示、削除できます。
# Create a tag
>>> hf repos tag create my-model v1.0
# List tags
>>> hf repos tag list my-model
# Delete a tag
>>> hf repos tag delete my-model v1.0モデルにタグを付ける
リポジトリにタグを付けるには、repo_idとtag名を指定する必要があります。
>>> hf repos tag create Wauplin/my-cool-model v1.0
You are about to create tag v1.0 on model Wauplin/my-cool-model
Tag v1.0 created on Wauplin/my-cool-model特定のリビジョンでモデルにタグを付ける
特定のリビジョンにタグを付けたい場合は、--revisionオプションを使用できます。デフォルトでは、タグはmainブランチに作成されます。
>>> hf repos tag create Wauplin/my-cool-model v1.0 --revision refs/pr/104
You are about to create tag v1.0 on model Wauplin/my-cool-model
Tag v1.0 created on Wauplin/my-cool-modelデータセットまたはSpaceにタグを付ける
データセットまたはSpaceにタグを付けたい場合は、--repo-typeオプションを指定する必要があります。
>>> hf repos tag create bigcode/the-stack v1.0 --repo-type dataset
You are about to create tag v1.0 on dataset bigcode/the-stack
Tag v1.0 created on bigcode/the-stackタグのリスト
リポジトリのすべてのタグをリスト表示するには、list(またはls)サブコマンドを使用します:
>>> hf repos tag list Wauplin/gradio-space-ci --repo-type space
Tags for space Wauplin/gradio-space-ci:
0.2.2
0.2.1
0.2.0
0.1.2
0.0.2
0.0.1タグの削除
タグを削除するには、delete サブコマンドを使用します:
>>> hf repos tag delete Wauplin/my-cool-model v1.0
You are about to delete tag v1.0 on model Wauplin/my-cool-model
Proceed? [Y/n] y
Tag v1.0 deleted on Wauplin/my-cool-model確認ステップをスキップするには、-y を渡すこともできます。
hf env
hf env コマンドは、マシンのセットアップに関する詳細を表示します。GitHub で問題を報告する際に、メンテナーが問題を調査するのにお役立ていただけます。
>>> hf env
Copy-and-paste the text below in your GitHub issue.
- huggingface_hub version: 1.0.0.rc6
- Platform: Linux-6.8.0-85-generic-x86_64-with-glibc2.35
- Python version: 3.11.14
- Running in iPython ?: No
- Running in notebook ?: No
- Running in Google Colab ?: No
- Running in Google Colab Enterprise ?: No
- Token path ?: /home/wauplin/.cache/huggingface/token
- Has saved token ?: True
- Who am I ?: Wauplin
- Configured git credential helpers: store
- Installation method: unknown
- Torch: N/A
- httpx2: 2.0.0
- hf_xet: 1.1.10
- gradio: 5.41.1
- tensorboard: N/A
- pydantic: 2.11.7
- ENDPOINT: https://huggingface.co
- HF_HUB_CACHE: /home/wauplin/.cache/huggingface/hub
- HF_ASSETS_CACHE: /home/wauplin/.cache/huggingface/assets
- HF_TOKEN_PATH: /home/wauplin/.cache/huggingface/token
- HF_STORED_TOKENS_PATH: /home/wauplin/.cache/huggingface/stored_tokens
- HF_HUB_OFFLINE: False
- HF_HUB_DISABLE_TELEMETRY: False
- HF_HUB_DISABLE_PROGRESS_BARS: None
- HF_HUB_DISABLE_SYMLINKS_WARNING: False
- HF_HUB_DISABLE_EXPERIMENTAL_WARNING: False
- HF_HUB_DISABLE_IMPLICIT_TOKEN: False
- HF_HUB_DISABLE_XET: False
- HF_HUB_DISABLE_SHARED_BLOBS: False
- HF_HUB_ETAG_TIMEOUT: 10
- HF_HUB_DOWNLOAD_TIMEOUT: 10hf jobs
Dockerに似た馴染みのあるインターフェースで、Hugging Faceのインフラストラクチャ上で計算ジョブを実行します。
hf jobs は、Hugging Face のインフラストラクチャ(GPU や TPU を含む!)上で、シンプルなコマンドを使って何でも実行できるコマンドラインツールです。docker run のようなものですが、A100 上でコードを実行するためのものです。
Jobsの概要と料金については、Hub Jobsのドキュメントを参照してください。 CLIと併用したPython APIの使用方法については、Jobsの実行と管理ガイドを参照してください。
# Directly run Python code
>>> hf jobs run --name hello-world python:3.12 python -c 'print("Hello from the cloud!")'
# Use GPUs without any setup
>>> hf jobs run --flavor a10g-small pytorch/pytorch:2.6.0-cuda12.4-cudnn9-devel \
... python -c "import torch; print(torch.cuda.get_device_name())"
# Run in an organization account
>>> hf jobs run --namespace my-org-name python:3.12 python -c 'print("Running in an org account")'
# Run from Hugging Face Spaces
>>> hf jobs run hf.co/spaces/lhoestq/duckdb duckdb -c 'select "hello world"'
# Run a Python script with `uv` (experimental)
>>> hf jobs uv run --name my-script my_script.pyHugging Face Jobs は、前払いクレジットを持つすべてのユーザーや組織で利用できます。
クイックスタート
1. 最初のジョブを実行する
# Run a simple Python script
>>> hf jobs run python:3.12 python -c 'print("Hello from HF compute!")'このコマンドはジョブを実行し、ログを表示します。--detach を渡すと、ジョブをバックグラウンドで実行し、ジョブ ID のみを出力します。-q を追加するとジョブ ID のみを出力するため、スクリプトでキャプチャするのに便利です。
>>> JOB_ID=$(hf jobs run -dq python:3.12 python train.py)
>>> hf jobs wait "$JOB_ID"2. ジョブのステータスを確認する
# List your running jobs
>>> hf jobs ls
# List all jobs
>>> hf jobs ls -a
# Inspect the status of a job
>>> hf jobs inspect <job_id>
# View logs from a job
>>> hf jobs logs <job_id>
# View resources usage stats and metrics of running jobs
>>> hf jobs stats
# View resources usage stats and metrics of some jobs
>>> hf jobs stats [job_ids]...
# Follow live stats until the jobs complete
>>> hf jobs stats -f [job_ids]...
# Cancel a job
>>> hf jobs cancel <job_id>
# Wait until one or more jobs finish (exit code 0 only if all jobs completed successfully)
>>> hf jobs wait <job_id> [<job_id>...]
# Wait for all currently running jobs
>>> hf jobs ls -q | xargs hf jobs waitデタッチされていないhf jobs runおよびhf jobs waitは、Jobが失敗した場合に非ゼロの終了コードで終了するため、&&でコマンドをチェーンできます:
>>> hf jobs run python:3.12 python train.py && echo "training succeeded"3. GPUで実行
--flavor オプションを使用して、GPU または TPU 上でジョブを実行することもできます。例えば、A10G GPU 上で PyTorch ジョブを実行するには:
# Use an A10G GPU to check PyTorch CUDA
>>> hf jobs run --flavor a10g-small pytorch/pytorch:2.6.0-cuda12.4-cudnn9-devel \
... python -c 'import torch; print(f"This code ran with the following GPU: {torch.cuda.get_device_name()}")'これを実行すると、以下の出力が表示されます!
This code ran with the following GPU: NVIDIA A10G
-- を使用して、Jobs のオプションとコマンドまたはスクリプトに渡される引数を区切ります。
Jobs は -- の後のオプションを解釈しません。
>>> hf jobs run --flavor cpu-basic python:3.12 -- python --help以上です!これで Hugging Face のインフラ上でコードを実行できるようになりました。
一般的なユースケース
- モデルの学習: インフラストラクチャの管理なしで、GPU(T4、A10G、A100)上でモデルのファインチューニングや学習を実行
- 合成データ生成: 高性能ハードウェア上でLLMを使用して大規模なデータセットを生成します
- データ処理: 並列ワークロード向けに、高CPU構成で大規模なデータセットを処理します
- バッチ推論: 最適化されたGPU構成を使用して、数千のサンプルに対してオフライン推論を実行します
- 実験とベンチマーク: 再現可能な結果を得るために、一貫したハードウェア上でML実験を実行します
- 開発 & デバッグ: ローカルにCUDA環境を設定せずにGPUコードをテスト
環境変数とシークレットを渡す
…を使用して、ジョブに環境変数を渡すことができます
# Pass environment variables
>>> hf jobs run -e FOO=foo -e BAR=bar python:3.12 python -c 'import os; print(os.environ["FOO"], os.environ["BAR"])'# Pass an environment from a local .env file
>>> hf jobs run --env-file .env python:3.12 python -c 'import os; print(os.environ["FOO"], os.environ["BAR"])'# Pass secrets by name - the value is read from your environment, never from the command line
>>> hf jobs run -s MY_SECRET python:3.12 python -c 'import os; print(os.environ["MY_SECRET"])'# Pass secrets from a local .env.secrets file - they will be encrypted server side
>>> hf jobs run --secrets-file .env.secrets python:3.12 python -c 'import os; print(os.environ["MY_SECRET"])'# Or pipe them in, so the values touch neither the command line nor the disk
>>> printf 'MY_SECRET=psswrd\n' | hf jobs run --secrets-file - python:3.12 python -c 'import os; print(os.environ["MY_SECRET"])'シークレットは、すべての3つの形式でサーバー側で暗号化されます。-s MY_SECRET=psswrdも動作しますが、この場合、値がシェル履歴やプロセス一覧(Linuxでは/proc/<pid>/cmdline)に記録されてしまうため、CLIは使用時にstderrへ警告を出力します。この形式は、機密性が特に高くない値に限定して使用してください。同じことが--token <value>にも当てはまり、hf auth loginまたはHF_TOKEN環境変数の使用を推奨します。環境変数ファイルやシークレットファイルは、自分自身のみが読み取れるように設定してください(chmod 600)。そうでない場合、CLIは警告を表示します。
--secrets HF_TOKENを使用すると、ローカルの Hugging Face トークンを暗黙的に渡すことができます。 この構文では、シークレットは環境変数から取得されます。HF_TOKENの場合、環境変数が設定されていない場合、Hugging Face ホームフォルダにあるトークンファイルを読み取ることがあります。
組み込みの環境変数
ジョブコンテナ内では、以下の環境変数が自動的に利用できます:
| 変数 | 説明 |
|---|---|
JOB_ID | 現在のジョブの一意な識別子です。これをプログラム内でジョブを参照するために使用します。 |
ACCELERATOR | 利用可能なアクセラレータの種類(例: t4-medium、a10g-small、a100x4)。アクセラレータがない場合は空です。 |
CPU_CORES | ジョブで利用可能なCPUコアの数(例: 2、4、8)。 |
MEMORY | ジョブに割り当てられるメモリ量(例: 16Gi、32Gi)。 |
# Access job environment information
>>> hf jobs run python:3.12 python -c "import os; print(f'Job: {os.environ.get(\"JOB_ID\")}, CPU: {os.environ.get(\"CPU_CORES\")}, Mem: {os.environ.get(\"MEMORY\")}')"ジョブのタイムアウト
ジョブには30分のデフォルトのタイムアウトが設定されており、これを過ぎると自動的に停止します。モデルの学習のような長時間実行されるタスクの場合、--timeoutオプションを使用してカスタムのタイムアウトを設定してください。
# Set timeout in seconds (default unit)
>>> hf jobs run --timeout 7200 python:3.12 python train.py
# Use time units: s (seconds), m (minutes), h (hours), d (days)
>>> hf jobs run --timeout 2h pytorch/pytorch:2.6.0-cuda12.4-cudnn9-devel python train.py
>>> hf jobs run --timeout 90m python:3.12 python process_data.py
>>> hf jobs run --timeout 1.5h python:3.12 python train.py # floats are supported--timeout オプションは、UV スクリプトやスケジュールジョブでも機能します:
# UV script with timeout
>>> hf jobs uv run --timeout 2h training_script.py
# Scheduled job with timeout
>>> hf jobs scheduled run @daily --timeout 4h python:3.12 python daily_task.pyジョブがタイムアウトを超過した場合、自動的に終了します。予期しないジョブの終了を避けるため、長時間実行されるタスクには、十分な余裕を確保した適切なタイムアウトを必ず設定してください。
Jobの再試行と再実行
--attempts は、初回実行を含む最大試行回数を設定します。Docker、UV、およびスケジュールされた Job で動作します。Job を再実行すると、同じ保存済み仕様で新しい Job が開始されます:
>>> hf jobs run --attempts 3 --detach python:3.12 python train.py
>>> hf jobs rerun <job_id>試行回数が3の場合、Jobが失敗したときに最大2回の再試行が可能です。hf jobs rerunも元の試行回数を再利用します。hf jobs runと同様に、新しいJobのログを完了までストリーミング表示します。--detachを使用すると、すぐに返却されます。
ハードウェア
利用可能な--flavorオプション:
- CPU:
cpu-basic、cpu-upgrade - GPU:
t4-small、t4-medium、l4x1、l4x4、a10g-small、a10g-large、a10g-largex2、a10g-largex4、a100-large - TPU:
v5e-1x1、v5e-2x2、v5e-2x4
(2025年7月にHugging Faceのsuggested_hardwareドキュメントから更新)
ボリューム
-v または --volume を使用して、Job のディスクにボリュームをマウントします。
Hugging Face リポジトリ(モデル/データセット/スペース)やStorage Bucketは、hf:// URL スキームを使用してマウントできます。例:
- モデルリポジトリのマウント:
-v hf://openai/gpt-oss-120b:/model - データセットリポジトリのマウント:
-v hf://datasets/HuggingFaceFW/fineweb:/data - ストレージバケットのマウント:
-v hf://buckets/username/my-bucket:/mnt - スペースのマウント:
-v hf://spaces/username/my-space:/app - リポジトリ内のサブフォルダをマウントする:
-v hf://datasets/org/ds/train:/data
その後、マウントされたボリュームをローカルディレクトリとして使用できます:
# Docker Job with a mounted volume as input
>>> hf jobs run -v hf://datasets/HuggingFaceFW/fineweb:/dataset \
... duckdb/duckdb duckdb -c "SELECT * FROM '/dataset/**/*.parquet' LIMIT 5"
# UV Job with a mounted volume to save checkpoints when training a model
>>> hf jobs uv run -v hf://buckets/username/my-bucket:/training-outputs \
... sft.py --output-dir /training-outputs/training-v3-final ...モデル、データセット、スペースは常に読み取り専用でマウントされます。ストレージバケットはデフォルトで読み書き可能であり、頻繁に変更されるデータには特に有用です。ファイルはインプレースで上書きまたは削除できます。
:ro を使用して読み取り専用を有効にします:
- 読み取り専用でストレージバケットをマウント:
-v hf://buckets/username/my-bucket:/mnt:ro
ローカルデータのマウント
-v のソース側は、ローカルディレクトリ也可以是ります。まず、jobs-artifacts の Storage Bucket に同期され、その結果として生成されるバケット内のフォルダが Job にマウントされます。
>>> hf jobs uv run -v ./my-data:/data process.pyコマンドを再実行すると、新規または変更されたファイルのみがアップロードされます。ローカルディレクトリはデフォルトで読み取り専用としてマウントされます。ジョブがボリュームに書き込めるようにするには、:rw を使用します。例えば、ジョブが完了した後に出力を取得する場合などです(空のローカルディレクトリでも動作します):
>>> hf jobs uv run -v ./pdfs:/input -v ./md-out:/output:rw ocr.py
...
Hint: Volume '/output' is mounted read-write. Once the job is over, pull back its data with:
hf buckets sync hf://buckets/username/jobs-artifacts/md-out-a1b2c3d4 ./md-outラベル
-l または --label を使用して、Job にラベルを追加します。ラベルは key=value のペアであり、Job にメタデータを適用します。Job に2つのラベルを付与するには、ラベルフラグ(-l または --label)を繰り返します。
>>> hf jobs run -l my-label --label foo=bar ubuntu echo "This Job has multiple labels"my-label キーには値が指定されていないため、その値はデフォルトで空文字列("")になります。
Job を作成する際に --name を使用すると、name ラベルを追加できます。名前を付けることで、UI 上で Job を探しやすく、識別しやすくなります。名前は任意であり、一意である必要はありません。--name を指定しない場合、Docker イメージまたはスクリプトから名前が自動的に導出され、コマンドと解決されたランタイム設定(flavor、タイムアウト、環境変数の値など)の短いハッシュが追加されます。これにより、同じ設定であれば常に同じ名前が生成されます(例: python:3.12 foo --truc → python-3-12-1a2b3c4d)。設定を変更すると、コマンドが同じであっても名前が変わります。既存の Job を名前変更することもできます:
>>> hf jobs run --name training-v2 python:3.12 python train.py
>>> hf jobs labels <job_id> --name training-v2hf jobs ls で --status、--label、--name を使用して Jobs をフィルタリングできます。--status には 1 つ以上のステータスを指定し、--label には key=value のペアを指定します。--name は --label name=NAME のショートカットです。リストに表示されるには、Job がすべてのフィルタに一致する必要があります。Job の名前も独自の NAME 列として表示されます:
# Show completed Jobs
>>> hf jobs ls -a --status completed
# Show running or scheduling Jobs
>>> hf jobs ls --status running,scheduling
# Show Jobs named `training-v2`
>>> hf jobs ls -a --name training-v2
# Show Jobs with the `model=Qwen3-06B` label
>>> hf jobs ls -a --label model=Qwen3-06B
# Combine filters: running Jobs labelled both `env=prod` and `team=ml`
>>> hf jobs ls --status running --label env=prod --label team=mlデフォルトでは、ターミナルの肥大化を避けるため、hf jobs ps は最大 100 件の Job を表示します。この数を変更するには --limit を使用し、すべてを表示するには --limit 0 を使用します:
# Show up to 500 Jobs
>>> hf jobs ps -a --limit 500
# Show all Jobs (no limit)
>>> hf jobs ps -a --limit 0Jobのポートを公開する
トークン保護されたポートには--exposeを、認証なしでのアクセスを許可するポートには--expose-publicを使用します。これらのフラグは繰り返し指定および組み合わせが可能で、Docker、UV、およびスケジュールされたJobsと連携して動作します。
# Start a Job with a public HTTP server
>>> hf jobs run --detach --expose-public 8000 python:3.12 python -m http.server 8000
# Replace the configuration on a running Job: port 8000 is private, 9000 is public
>>> hf jobs expose <job_id> 8000 --public 9000
# Close all exposed ports
>>> hf jobs expose <job_id> --clearhf jobs expose は、トークン保護ポートを位置引数として、--public を使用してパブリックポートを受け取ります。Job を再実行せずに変更を適用します。置換リストから省略されたポートは閉じられます。
ジョブにSSH接続する
hf jobs run(または hf jobs uv run)に --ssh を渡すことで、Job のコンテナを SSH 経由で到達可能にし、hf jobs ssh で接続します:
# Start a job with SSH enabled
>>> hf jobs run --ssh --detach python:3.12 sleep infinity
# Open an SSH session into it
>>> hf jobs ssh <job_id>
# Print the SSH command instead of running it
>>> hf jobs ssh <job_id> --dry-run
# Use a specific identity file
>>> hf jobs ssh <job_id> -i ~/.ssh/id_ed25519Job の namespace への書き込みアクセス権を持つユーザーのみ(Job の作成者、またはオーナー組織のメンバー)が、https://huggingface.co/settings/keys に登録された SSH 公開鍵による認証を経て、アクセスを許可されます。
ネットワークグループ
hf jobs run(または hf jobs uv run)に --network-group <name> を渡すと、同じ namespace と resource group 内の Jobs がすべてのポートで相互に到達できるようになります。各メンバー内で、$HF_NETWORK_GROUP_HOSTNAME はグループ内のすべての Job に解決され、${HF_NETWORK_GROUP_PREFIX}<alias> は --network-alias <alias> でエイリアスを取得したメンバーに解決されます。
# Start a server, reachable by the other members of the group as "master"
>>> hf jobs run --detach --network-group train --network-alias master python:3.12 python -m http.server 8000
# Start a client in the same group
>>> hf jobs run --detach --network-group train python:3.12 sh -c 'curl --retry 10 --retry-connrefused "http://${HF_NETWORK_GROUP_PREFIX}master:8000/"'メンバーは準備が整う前に解決可能になるため、リトライを伴って接続してください。グループ名とエイリアスは小文字の英数字とダッシュのみで、最大46文字および34文字です。
UV Scripts(実験的)
HFインフラ上でUVスクリプト(インライン依存関係を持つPythonスクリプト)を実行します。UVスクリプトは、特別なコメント構文を使用して、そのファイル内に直接依存関係を含むPythonスクリプトです。
# Run a UV script (creates temporary repo)
>>> hf jobs uv run my_script.py
# Run with persistent repo
>>> hf jobs uv run --repo my-uv-scripts my_script.py
# Run with GPU
>>> hf jobs uv run --flavor t4-small ml_training.py
# Pass arguments to script
>>> hf jobs uv run process.py input.csv output.parquet
# Add dependencies
>>> hf jobs uv run --with transformers --with torch train.py
# Run a script directly from a URL
>>> hf jobs uv run https://huggingface.co/datasets/username/scripts/resolve/main/example.py
# Run a command
>>> hf jobs uv run --with lighteval python -c 'import lighteval'UVスクリプトは、特別なコメント構文を使用して依存関係をファイル内に直接記述するPythonスクリプトです。複雑なプロジェクト設定を必要としない自己完結型のタスクに最適です。UVスクリプトの詳細については、UVドキュメントを参照してください。
-- を使用すると、競合するオプションをスクリプトにそのまま渡すことができます。ここでは、--help は Jobs のヘルプを表示するのではなく、train.py に渡されます。
>>> hf jobs uv run --flavor t4-small train.py -- --helpこれはフォーマットフラグにも当てはまります。hf jobs run、hf jobs uv run、およびそれらのscheduledバリアントは、--format、--json、-qがどこに出現しても消費するため、スクリプトでこれらが必要な場合は--を使用してください。
スクリプトにlaunch configを添えて
一部のスクリプトは、特定のランタイムでのみ正しく実行されます。例えば、特定のイメージ、GPUのバリエーション、システムのインタープリターなどです。スクリプトは、PEP 723 ヘッダー内の任意の [tool.hf-jobs] テーブルにその設定を含めることができます。
# /// script
# requires-python = ">=3.11"
# dependencies = ["vllm", "datasets"]
#
# [tool.hf-jobs]
# name = "unlimited-ocr"
# image = "vllm/vllm-openai:unlimited-ocr"
# flavor = "l4x1"
# python = "/usr/bin/python3"
# timeout = "2h"
# env = { PYTHONPATH = "/usr/local/lib/python3.12/dist-packages", BATCH_SIZE = "64" }
# secrets = ["HF_TOKEN"]
# labels = { task = "ocr" }
# volumes = ["hf://datasets/org/pdfs:/input"]
# ///hf jobs uv run ocr.py in_ds out_ds は、誤ったインタープリターを持つ CPU イメージで黙って実行されるのではなく、適切なランタイムで起動します。このテーブルは通常の uv run からは見えません。[tool.*] テーブルは PEP 723 の一部であり、ツールは自分が所有していないテーブルを無視します。
サポートされるキーはすべてオプションです: image、flavor、python、timeout、name、namespace、env、secrets、labels、volumes、network_group、network_aliases。これらは同名のフラグに対応します(name は name ラベルとして保存され、volumes は -v と同じ hf://...:/MOUNT_PATH 仕様の引数を受け取り、network_aliases は --network-alias の値のリストです)。不明なキーはエラーとなり、意図が黙って無視されることはありません — flavour のようなタイプミスは、まさにこの機能が存在する理由である失敗例です。
すべての値は文字列である必要があります。envおよびlabelsの値も同様です。-e BATCH_SIZE=64はenv = { BATCH_SIZE = "64" }に変換されますが、env = { BATCH_SIZE = 64 }ではありません(TOMLは後者を整数として読み取り、テーブルが拒否されます)。唯一の例外はtimeoutで、これは秒数の整数も受け入れます(timeout = 7200はtimeout = "2h"と同じです)。
スクリプト内の値はデフォルトです。明示的なフラグが常に優先され、env、secrets、labels、volumesはエントリごとにマージされるため、-eと-vによってスクリプトが宣言した内容に追加できます。
# Same script, on bigger hardware, with one extra env var
>>> hf jobs uv run --flavor a10g-large -e BATCH_SIZE=64 ocr.py in_ds out_dsnetwork_aliases は例外です。Job が要求するエイリアスは集合を形成するため、--network-alias はスクリプトのリストに追加するのではなく、それを置き換えます。Scheduled Jobs にはネットワークグループが一切存在しないため、hf jobs scheduled uv run は network_group または network_aliases を宣言するスクリプトを拒否します。
secrets はシークレットの名前のみを列挙します。値は常にスクリプトを実行するユーザーの環境から取得され、スクリプト自体からは取得されません(HF_TOKEN も hf auth login から解決されます)。要求されたシークレットがローカルで設定されていない場合は、Job が空の値を黙って受け取るのではなく、エラーとして扱われます。--dry-run を使用すると、代わりに <not set> と表示されるため、シークレットがまだプロビジョニングされていないスクリプトの構成も確認できます。
すべての実行では、送信される設定がエコー表示され、スクリプト由来の値がマークされます。--dry-run を使用すると、何も起動せずに設定を表示できます。
>>> hf jobs uv run --dry-run --flavor a10g-large ocr.py in_ds out_ds
Warning: The script's [tool.hf-jobs] table requests HF_TOKEN: the value(s) from your local environment would be sent to the Job.
Job configuration:
script ocr.py
args in_ds out_ds
image vllm/vllm-openai:unlimited-ocr (from script)
flavor a10g-large
python /usr/bin/python3 (from script)
timeout 2h (from script)
env PYTHONPATH=/usr/local/lib/python3.12/dist-packages (from script)
BATCH_SIZE=64 (from script)
secrets HF_TOKEN=*** (from script)
volumes hf://datasets/org/pdfs:/input (from script)
labels task=ocr (from script)
name=unlimited-ocr (from script)
(dry run) Job not submitted.URL の背後にあるスクリプトにも対応します。Job が送信された時点でスクリプトが一度ダウンロードされ(ヘッダーを読み取るため)、コンテナによって再度ダウンロードされるのではなく、ローカルスクリプトと同様に Job に転送されます。URL はお使いのマシンからアクセス可能である必要があります。ローカルスクリプトと同様に、URL スクリプトは予約済みの
/dataアーティファクトマウントを使用します。入力ボリュームには別のマウントパスを使用してください。
hf jobs scheduled uv runの場合、スクリプトは作成時点の内容に固定されます。ソースURLを更新しても、今後の実行は変更されません。新しいバージョンを反映するには、スケジュールされたJobを再作成してください。
--dry-run は hf jobs run、hf jobs scheduled run、hf jobs scheduled uv run でも利用できます。これにより、ジョブの送信とローカルボリュームのアップロードがスキップされます。Docker Jobs と UV Jobs 両方の自動生成名には、解決された起動設定が含まれるため、ランタイム設定や環境変数の値を変更すると名前も変更されます。
hf jobs scheduled
HFインフラストラクチャ上で実行されるジョブをスケジュールおよび管理します。
スケジュールは、@annually、@yearly、@monthly、@weekly、@daily、@hourly、または CRON スケジュール式(例: 毎週月曜日の午前 9 時を指定する "0 9 * * 1")のいずれかである必要があります。
# Schedule a job that runs every hour
>>> hf jobs scheduled run @hourly --name hourly-task python:3.12 python -c 'print("This runs every hour!")'
# Use the CRON syntax
>>> hf jobs scheduled run "*/5 * * * *" python:3.12 python -c 'print("This runs every 5 minutes!")'
# Schedule with GPU
>>> hf jobs scheduled run @hourly --flavor a10g-small pytorch/pytorch:2.6.0-cuda12.4-cudnn9-devel \
... python -c 'import torch; print(f"This code ran with the following GPU: {torch.cuda.get_device_name()}")'
# Schedule a UV script
>>> hf jobs scheduled uv run @hourly --name hourly-script my_script.py環境変数、シークレット、タイムアウトなどを渡すには、hf jobs run と同じパラメータを使用します。
…を使用してスケジュールされたジョブを管理します
# List your active scheduled jobs
>>> hf jobs scheduled ls
# Same filters as `hf jobs ls`: --status, --label and --name
>>> hf jobs scheduled ls --all
>>> hf jobs scheduled ls --status suspended
>>> hf jobs scheduled ls --name hourly-task --label env=prod
# Inspect the status of a job
>>> hf jobs scheduled inspect <scheduled_job_id>
# Suspend (pause) a scheduled job
>>> hf jobs scheduled suspend <scheduled_job_id>
# Resume a scheduled job
>>> hf jobs scheduled resume <scheduled_job_id>
# Change future run times (Mondays at 9:00)
>>> hf jobs scheduled reschedule <scheduled_job_id> "0 9 * * 1"
# Trigger a scheduled job to run right now (does not change the schedule)
>>> hf jobs scheduled trigger <scheduled_job_id>
# Delete a scheduled job
>>> hf jobs scheduled delete <scheduled_job_id>hf sandbox
hf sandbox は、Jobs を基盤とする隔離されたクラウドマシンを起動します。マシンの作成、ライブストリーミングされた出力付きのコマンド実行、ファイルの読み書きが可能です。/bin/sh を備えた任意の Docker イメージが使用できます。Python API については Sandboxes ガイド、内部の仕組みについては コンセプトガイド を参照してください。
サンドボックスは実験的な機能であり、APIや動作は予告なく変更される場合があります。共有サンドボックスは、同じ信頼境界内のワークロード向けに設計されています。相互に信頼し合わないワークロードには、専用のサンドボックスを使用してください。
# Create a sandbox (waits until it is ready, prints its id)
>>> hf sandbox create
✓ Sandbox ready id=687f911eaea852de79c4a50a image=python:3.12 elapsed=6.0s
# Attach labels to the underlying Job
>>> hf sandbox create --label controller-run=run-42 --label team=data-infra
# Run commands inside it (output is streamed, exit code is propagated)
>>> hf sandbox exec 687f911eaea852de79c4a50a -- python -c "print('hi')"
hi
# Copy files in and out (docker-style)
>>> hf sandbox cp data.csv 687f911eaea852de79c4a50a:/data/data.csv
>>> hf sandbox cp 687f911eaea852de79c4a50a:/app/results.json results.json
# Terminate a sandbox
>>> hf sandbox kill 687f911eaea852de79c4a50a--flavor でハードウェア(例: a10g-small)を選択し、--idle-timeout でサンドボックスの生存期間を制限し、-l / --label でその Job にラベルを付与します。多数の低コストな CPU サンドボックスを扇状に展開するには、hf sandbox pool create でプールをウォームアップし、hf sandbox create --pool <id> でそこに生成します(Sandboxes ガイドを参照)。
サンドボックスに環境変数とシークレットを渡す
異なるストレージ特性を持つ2つの独立したチャンネルがあります:
| チャンネル | フラグ | 専用サンドボックス | プールされたサンドボックス (--pool) |
|---|---|---|---|
| 環境 | -e / --env, --env-file | ジョブのメタデータに保存されます | 作成時にホストに渡され、ジョブのメタデータには保存されません |
| secrets | -s / --secrets, --secrets-file | サーバーサイドで暗号化 | 利用不可 — --env を使用してください |
# Plain environment variables
>>> hf sandbox create -e LOG_LEVEL=debug --env-file .env
# Secrets, read from your environment by name (nothing sensitive on the command line)
>>> hf sandbox create -s OPENAI_API_KEY -s HF_TOKEN
# Secrets from a file, or piped in on stdin
>>> hf sandbox create --secrets-file .env.secrets
>>> printf 'OPENAI_API_KEY=sk-...\n' | hf sandbox create --secrets-file --s KEY=value も機能しますが、値がシェル履歴やプロセス一覧に残るため、CLI は静粛モードを含むすべてのモードで stderr に警告を表示します。プールされたサンドボックスでは --secrets が完全に拒否されます。プールには暗号化されたシークレットのチャネルが存在しないため、hf sandbox create --pool <id> -s KEY=value は --env への参照を伴うエラーになります。
hf webhooks
hf webhooks を使用すると、ターミナルから Hugging Face Hub 上の Webhook を直接管理できます。Webhook を使用すると、リポジトリ、ユーザー、または組織でのイベント(push、ディスカッションなど)を監視し、リモート URL に ping を送るか、Hugging Face のインフラストラクチャ上で Job を実行することでアクションをトリガーできます。
Webhookのリスト表示
>>> hf webhooks ls
ID URL DISABLED DOMAINS WATCHED
wh-abc123 https://example.com/hook False repo model:bert-base-uncased
wh-def456 https://example.com/other-hook False repo org:HuggingFace機械可読の出力には--format jsonを、IDのみを表示するには-qを使用します:
>>> hf webhooks ls --format json
>>> hf webhooks ls -qWebhook情報を取得する
>>> hf webhooks info wh-abc123Webhookの詳細をJSON形式で出力します。
Webhookの作成
URLにペイロードを送信するWebhookを作成します:
>>> hf webhooks create --url https://example.com/hook --watch model:bert-base-uncased
>>> hf webhooks create --url https://example.com/hook --watch org:HuggingFace --watch model:gpt2 --domain repo代わりに、Job をトリガーする Webhook を作成することもできます:
>>> hf webhooks create --job-id 687f911eaea852de79c4a50a --watch user:julien-cソースのJobのシークレットはWebhookにコピーされません。--secrets または --secrets-file(hf jobs run と同じ構文)を使用して、トリガーされたJobに渡してください。例えば、--secrets HF_TOKEN を使用すると、ローカルの Hugging Face トークンを渡すことができます。
>>> hf webhooks create --job-id 687f911eaea852de79c4a50a --watch bucket:my-org/my-bucket --secrets HF_TOKEN--watch オプションは type:name という形式を使用します。ここで type は model、dataset、space、bucket、org、または user のいずれかです。このオプションを繰り返し指定することで、複数のアイテムを監視できます。--domain を使用してイベントを repo または discussion に絞り込み、--secret を使用して署名シークレットを設定します。
Webhookの更新
>>> hf webhooks update wh-abc123 --url https://new-url.com/hook
>>> hf webhooks update wh-abc123 --watch model:gpt2 --domain repo提供されたオプションのみが変更されます。なお、--watchが指定された場合、監視対象のリスト全体が置き換えられます。
Job トリガーの Webhook のシークレットを更新するには、--job-id と --secrets を一緒に渡します。リストされたシークレットは保存されている値を置き換え、その他のシークレットは保持されます。
>>> hf webhooks update wh-abc123 --job-id 687f911eaea852de79c4a50a --secrets HF_TOKENWebhookの有効化/無効化
>>> hf webhooks enable wh-abc123
>>> hf webhooks disable wh-abc123Webhookの削除
>>> hf webhooks delete wh-abc123
Are you sure you want to delete webhook 'wh-abc123'? [y/N]: y
Webhook deleted: wh-abc123確認プロンプトをスキップするには、--yes を使用します:
>>> hf webhooks delete wh-abc123 --yesすべてのコマンドは、
--tokenを受け取り、認証を上書きできます。任意のコマンドに--helpを追加すると、すべてのオプションを確認できます。
hf endpoints
hf endpoints を使用して、Inference Endpoints の一覧表示、デプロイ、詳細の表示、管理をターミナルから直接行えます。互換性のために、従来の hf inference-endpoints エイリアスも引き続き利用可能です。
# Lists endpoints in your namespace
>>> hf endpoints ls
# List the hardware you can deploy on
>>> hf endpoints hardware
# Deploy an endpoint from Model Catalog
>>> hf endpoints catalog deploy --repo openai/gpt-oss-120b --name my-endpoint
# Deploy an endpoint from the Hugging Face Hub
>>> hf endpoints deploy my-endpoint --repo gpt2 --framework pytorch --accelerator cpu --instance-size x2 --instance-type intel-icl
# List catalog entries
>>> hf endpoints catalog ls
# Show status and metadata
>>> hf endpoints describe my-endpoint
# Pause the endpoint
>>> hf endpoints pause my-endpoint
# Delete without confirmation prompt
>>> hf endpoints delete my-endpoint --yes組織をターゲットにするには
--namespaceを、認証を上書きするには--tokenを追加します。
デプロイに使用するハードウェアを見つける
hf endpoints deployには5つのハードウェアフラグ(--vendor、--region、--accelerator、--instance-type、--instance-size)が必要です。hf endpoints hardwareは、有効な組み合わせを、1レプリカあたりの1時間あたりの価格(USD)と、あなたのネームスペースのアクセラレータ割当額とともに一覧表示します:
>>> hf endpoints hardware --vendor aws --region eu-west-1
VENDOR REGION ACCELERATOR INSTANCE_TYPE INSTANCE_SIZE MEMORY_GB GPU_MEMORY_GB PRICE_PER_HOUR QUOTA STATUS
------ --------- ----------- ------------- ------------- --------- ------------- -------------- ----- ---------
aws eu-west-1 cpu intel-spr x1 2.0 0.033 0/60 available
aws eu-west-1 cpu intel-spr x2 4.0 0.067 0/60 available
aws eu-west-1 cpu intel-spr x4 8.0 0.134 0/60 available
aws eu-west-1 cpu intel-spr x8 16.0 0.268 0/60 available
aws eu-west-1 cpu intel-spr x16 32.0 0.536 0/60 available
aws eu-west-1 gpu nvidia-a10g x1 30.0 24 1.0 0/16 available
aws eu-west-1 gpu nvidia-t4 x1 15.0 16 0.5 1/30 available
Hint: Deploy on one of these, e.g.: hf endpoints deploy my-endpoint --repo <repo> --framework <framework> --vendor aws --region eu-west-1 --accelerator cpu --instance-type intel-spr --instance-size x1フィルターフラグはデプロイフラグ(--vendor、--region、--accelerator、--instance-type)であり、フィルターに指定した内容はそのままdeployに渡されます。リストに表示されるのは、現在デプロイ可能なハードウェアのみです。つまり、ステータスが利用可能であり、かつ現在のネームスペースで1レプリカ分のアクセラレータ割当枠が残っている場合です。--allを追加すると、非推奨、一時的に利用不可、または割当枠超過の項目も表示されます。--format jsonを追加すると、各エントリにレプリカごとの残りの仕様(vCPU、アーキテクチャ、アクセラレータ数)が追加されます。
Quota は namespace ごとに設定され、どの行がリストに表示されるかを決定します。組織にデプロイする場合は、
deployに渡すのと同じ--namespaceを渡してください。そうしないと、個人の Quota が参照され、組織がデプロイ可能なハードウェアが隠蔽されたり、デプロイ不可能なハードウェアが表示されたりする可能性があります。
カスタムコンテナのデプロイ
Hugging Face が管理するイメージではなく、独自の Docker イメージをデプロイするには、--framework custom と --custom-image を一緒に渡します。モデルリポジトリはコンテナ内の /repository にマウントされます。引用符で囲んだ起動文字列を渡すには --container-args(および任意で --container-command)を使用し、環境変数を注入するには --env/--secrets を使用し、アクセスタイプ(public、authenticated または private)を設定するには --type を使用します:
>>> hf endpoints deploy nex-n2-pro \
--repo nex-agi/Nex-N2-Pro \
--framework custom \
--accelerator gpu --vendor aws --region us-east-1 \
--instance-type nvidia-h200 --instance-size x8 \
--custom-image nexagi/sglang:v0.5.12 \
--health-route /health --port 30000 \
--container-args "--reasoning-parser qwen3 --tool-call-parser qwen3_coder --mamba-scheduler-strategy extra_buffer --tp 8" \
--env MODEL_ID=/repository \
--type authenticated--container-args と --container-command はカスタムイメージに限定されません。これらは API ペイロード内の model.args および model.command にマッピングされ、マネージドイメージにも適用されます。既存のエンドポイントに対しては、これらのフラグは現在の値に追加するのではなく、現在の値を置き換えます。そのため、希望する完全なリストを渡し、クリアするには空文字列を使用してください。カタログからデプロイされたエンドポイントには、調整済みのエンジンフラグが既に設定されているため、上書きする前に hf endpoints describe で確認してください。
>>> hf endpoints update my-endpoint \
--container-args "--enable-auto-tool-choice --tool-call-parser lfm2"マネージドエンジンイメージのデプロイ
--custom-image 単体では、任意のコンテナをデプロイします。--engine を追加すると、API が管理するエンジン(vllm、sglang、tgi、tei、llamacpp、hf-serve など)のいずれかとして実行できるようになり、--tensor-parallel-size や --data-parallel-size を含む、そのエンジンの設定が利用可能になります。vLLM と SGLang はデフォルトでアクセラレータを 1 つ使用しますが、エンドポイントはインスタンスのすべてのアクセラレータを取得するため、両方を未設定のままにすると、モデルが 1 つのアクセラレータにロードされ、残りはアイドル状態のまま、それでも正常と報告されてしまいます。そのため、API は現在この設定を拒否します。
>>> hf endpoints deploy gpt-oss-120b-vllm \
--repo openai/gpt-oss-120b \
--framework custom \
--accelerator gpu --vendor aws --region us-east-1 \
--instance-type nvidia-h200 --instance-size x8 \
--engine vllm --custom-image vllm/vllm-openai:v0.23.0 \
--tensor-parallel-size 8上記の--container-args "... --tp 8"とは異なります。--tensor-parallel-sizeはエンジンのmodel.image設定に書き込みますが、これはAPIがインスタンスのアクセラレータ数に対して検証する対象です。一方、--container-argsはコマンドラインにフラグを追加するだけです。イメージフィールドを持たないエンジンのフラグや、並列性フィールドを持たない通常のカスタムコンテナには、--container-argsを使用してください。
実行中のエンドポイントを再調整するには、サイズを単独で渡します。model.imageは全体として送信され、urlを必要とするため、エンドポイントの現在のイメージが取得され、その場で更新されます:
>>> hf endpoints update gpt-oss-120b-vllm --tensor-parallel-size 4 --data-parallel-size 2hf endpoints update は --custom-image および --engine も受け取ります。CLI からエンドポイントのイメージを変更できる唯一の方法です。このパスではパッチを当てるのではなく model.image を置き換えるため、まず hf endpoints describe を実行し、保持したい値を渡してください。
hf エンドポイント カタログ
hf endpoints catalog を使用して、Inference Endpoints Model Catalog とやり取りします。カタログから最適化された設定でモデルを直接デプロイできます。
各カタログモデルには、1つ以上のレシピが付属しています。レシピとは、そのモデル用にテスト済みのハードウェアとエンジンの組み合わせです。hf endpoints catalog lsはレシピごとに1行ずつ出力するため、GPUとNeuronの両方のレシピを持つモデルは2回表示されます:
# List available catalog models
>>> hf endpoints catalog ls
REPO_ID TASK LICENSE ACCELERATOR ENGINE GGUF_FILE RECIPE_ID
----------------------------------- ------------------ ---------- ----------- -------- ----------------------------- -------------------------
meta-llama/Llama-3.1-8B-Instruct text-generation Llama 3.1 gpu vllm sizzling-biryani-g4xsi1ac
meta-llama/Llama-3.1-8B-Instruct text-generation Llama 3.1 neuron vllmNeuron artisanal-quinoa-yz9ynamx
bartowski/QwQ-32B-Preview-GGUF text-generation Apache 2.0 gpu llamacpp QwQ-32B-Preview-Q8_0.gguf baked-orange-m863gx7d
# Narrow it down
>>> hf endpoints catalog ls --engine vllm --task text-generation --search llama --limit 10--accelerator、--engine、--license、--task、--search、--limit はすべてサーバーサイドでフィルタリングを行います。
# Deploy the default recipe of a model
>>> hf endpoints catalog deploy --repo meta-llama/Llama-3.2-1B-Instruct
# Deploy an exact recipe listed above
>>> hf endpoints catalog deploy --recipe artisanal-quinoa-yz9ynamx
# Deploy with a custom name
>>> hf endpoints catalog deploy --repo meta-llama/Llama-3.2-1B-Instruct --name my-llama-endpoint--repoを使用すると、--accelerator(cpu、gpu、neuron)および--gguf-file(1つの量子化ごとにレシピを持つモデル用)でデフォルトのレシピを絞り込むことができます。これら2つは、単一のレシピを指定する--recipeと同時に使用すると拒否されます。