Hub documentation

Gérer les tâches

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Gérer les tâches

Liste des tâches

Retrouvez votre liste de Jobs sur la page Jobs ou sur la page Jobs de votre organisation (page utilisateur/organisation > paramètres > Jobs) :

Elle est également disponible dans le CLI Hugging Face. Affichez la liste des Jobs en cours d’exécution avec hf jobs ps et utilisez -a pour afficher tous les Jobs :

>>> hf jobs ps
JOB ID       IMAGE/SPACE      COMMAND     CREATED             STATUS  
------------ ---------------- ----------- ------------------- ------- 
69402ea6c... ghcr.io/astra... uv run p... 2025-12-15 15:52:06 RUNNING
>>> hf jobs ps -a
JOB ID       IMAGE/SPACE COMMAND         CREATED             STATUS    
------------ ---------- --------------- ------------------- --------- 
69402ea6c... ghcr.io... uv run pytho... 2025-12-15 15:52:06 RUNNING   
693b06b8c... ghcr.io... uv run pytho... 2025-12-11 18:00:24 CANCELED  
693b069fc... ghcr.io... uv run pytho... 2025-12-11 17:59:59 ERROR     
693aef401... ghcr.io... uv run pytho... 2025-12-11 16:20:16 COMPLETED 
693aee76c... ubuntu     echo Hello f... 2025-12-11 16:16:54 COMPLETED 
693ae8e3c... python:... python -c pr... 2025-12-11 15:53:07 COMPLETED

Spécifiez l'namespace de votre organisation pour lister les Jobs sous votre organisation :

>>> hf jobs ps --namespace <my-org-name>

Filtrer les offres

Vos étiquettes les plus utilisées sont affichées au-dessus de la liste des Jobs, avec le nombre de Jobs utilisant chacune d’entre elles ; cliquez sur l’une d’elles pour filtrer par celle-ci, ou saisissez n’importe quelle étiquette key=value :

Dans l’interface en ligne de commande, filtrez par statut avec --status et par étiquette avec --label key=value. Répétez --label pour exiger plusieurs étiquettes à la fois :

# Jobs that ended in error
>>> hf jobs ps --status error

# Running or scheduling Jobs with a given label
>>> hf jobs ps --status running,scheduling --label env=prod

# All Jobs (any status) that have both labels
>>> hf jobs ps -a --label model=Qwen3-06B --label dataset=Capybara

# A label added without a value (`--label fine-tuning`) is matched with a trailing "="
>>> hf jobs ps -a --label fine-tuning=

Filtrer par nom avec --name, un raccourci pour --label name=<name>, par exemple pour lister toutes les exécutions d'un Job nommé :

>>> hf jobs ps -a --name daily-report
JOB_ID      NAME         IMAGE/SPACE COMMAND      CREATED      STATUS    RUNTIME
----------- ------------ ----------- ------------ ------------ --------- -------
6a9042c2... daily-report python:3.12 python -c... 2026-08-2... COMPLETED 0s     
6a904162... daily-report python:3.12 python -c... 2026-08-2... CANCELED  --     

Par défaut, hf jobs ps affiche les Jobs en cours d’exécution et en cours de planification. Utilisez -a pour afficher tous les statuts ; -a ne peut pas être combiné avec --status.

Surveiller l'utilisation des ressources

Utilisez hf jobs stats pour obtenir un instantané de l’utilisation du CPU, de la mémoire, du réseau et du GPU (le cas échéant) des Jobs en cours d’exécution :

>>> hf jobs stats
JOB ID                   CPU % NUM CPU MEM % MEM USAGE        NET I/O         GPU UTIL % GPU MEM % GPU MEM USAGE   
------------------------ ----- ------- ----- ---------------- --------------- ---------- --------- --------------- 
695e83c5d2f3efac77e8cf18 8%    12.0    7.18% 10.9GB / 152.5GB 0.0bps / 0.0bps 100%       31.92%    25.9GB / 81.2GB

Spécifiez un ou plusieurs identifiants de Job pour n’afficher que les statistiques de certains Jobs :

>>> hf jobs stats [job-ids]...

Utilisez -f pour suivre les statistiques en direct jusqu’à la fin des Jobs :

>>> hf jobs stats -f [job-ids]...

Inspecter un Job

Vous pouvez consulter les journaux d'état d'un Job sur la page Job :

En utilisant plutôt l’interface en ligne de commande

>>> hf jobs inspect 693994e21a39f67af5a41ad0 
[
    {
        "id": "693994e21a39f67af5a41ad0",
        "created_at": "2025-12-10 15:42:26.835000+00:00",
        "docker_image": "ghcr.io/astral-sh/uv:python3.12-bookworm",
        "space_id": null,
        "command": ["bash", "-c", "python -c \"import urllib.request; import os; from pathlib import Path; o = urllib.request.build_opener(); o.addheaders = [(\\\"Authorization\\\", \\\"Bearer \\\" + os.environ[\\\"UV_SCRIPT_HF_TOKEN\\\"])]; Path(\\\"/tmp/script.py\\\").write_bytes(o.open(os.environ[\\\"UV_SCRIPT_URL\\\"]).read())\" && uv run --with trl /tmp/script.py"],
        "arguments": [],
        "environment": {"UV_SCRIPT_URL": "https://huggingface.co/datasets/lhoestq/hf-cli-jobs-uv-run-scripts/resolve/728cc5682eb402d7ffe66a2f6f97645b34cb08dd/train.py"},
        "secrets": ["HF_TOKEN", "UV_SCRIPT_HF_TOKEN"],
        "flavor": "a100-large",
        "status": {"stage": "COMPLETED", "message": null},
        "owner": {"id": "5e9ecfc04957053f60648a3e", "name": "lhoestq", "type": "user"},
        "endpoint": "https://huggingface.co",
        "url": "https://huggingface.co/jobs/lhoestq/693994e21a39f67af5a41ad0"
    }
]

et pour les journaux

>>> hf jobs logs 693994e21a39f67af5a41ad0
Downloading nvidia-cuda-nvrtc-cu12 (84.0MiB)
Downloading numpy (15.8MiB)
Downloading nvidia-cuda-cupti-cu12 (9.8MiB)
Downloading tokenizers (3.1MiB)
Downloading nvidia-cusolver-cu12 (255.1MiB)
Downloading nvidia-cufft-cu12 (184.2MiB)
Downloading transformers (11.4MiB)
Downloading setuptools (1.1MiB)
... 

Spécifiez l'namespace de votre organisation pour inspecter un Job sous votre organisation :

hf jobs inspect --namespace <my-org-name> <job_id>
hf jobs logs --namespace <my-org-name> <job_id>

Attendre la fin des Jobs

Utilisez hf jobs wait pour bloquer jusqu’à ce qu’un ou plusieurs Jobs atteignent un état terminal (COMPLETED, CANCELED, ERROR ou DELETED). Il se termine avec le code 0 uniquement si tous les Jobs ont abouti avec succès, et avec un code non nul dans le cas contraire — pratique pour enchaîner des étapes dans des scripts shell ou des pipelines CI :

# Wait for a single Job
>>> hf jobs wait 693994e21a39f67af5a41ad0

# Wait for several Jobs at once (all must be in the same namespace)
>>> hf jobs wait <job_id_1> <job_id_2>

# Wait for every currently running Job
>>> hf jobs ps -q | xargs hf jobs wait

Définissez une attente maximale avec --timeout (accepte s, m, h ou d) :

>>> hf jobs wait --timeout 30m 693994e21a39f67af5a41ad0

Comme hf jobs wait renvoie un code de sortie non nul lorsqu’un Job échoue, vous pouvez l’enchaîner avec &&. Un hf jobs run non détaché (ou hf jobs uv run) bloque déjà et se termine avec un code non nul en cas d’échec, de sorte qu’un wait explicite n’est nécessaire que pour les Jobs détachés (-d) ou lors de l’attente d’un lot :

>>> hf jobs wait 693994e21a39f67af5a41ad0 && echo "job completed successfully"

Enregistrer vos résultats

Le système de fichiers d’un Job est supprimé lorsque le Job se termine. Écrivez tout ce que vous souhaitez conserver dans un emplacement durable avant la sortie du Job :

  • Artefacts intermédiaires, points de contrôle et journaux → un volume de type Storage Bucket. Montez un bucket et écrivez les sorties sous le chemin de montage — voir Volumes pour des exemples. Les montages de volumes sont autorisés avec votre identité Hugging Face lors de la création du Job, votre script n’a donc pas besoin de jeton pour y écrire.

  • Modèles et jeux de données finaux → pousser vers un dépôt du Hub. Les Jobs ne disposent d’aucun jeton Hugging Face à moins que vous n’en passiez un, par exemple --secrets HF_TOKEN (la forme simple résout automatiquement vers votre jeton de session). Si votre script appelle push_to_hub() ou create_repo(), assurez-vous que le jeton a un accès en écriture (les jetons à granularité fine nécessitent les permissions d’écriture et de création de dépôt). Un mode d’échec courant est un Job qui termine des heures de calcul puis échoue lors de la téléversement final parce que le jeton ne peut pas écrire — le calcul est terminé, mais les résultats ne sont pas sauvegardés.

  • Afficher les résultats clés dans les journaux. Les journaux du Job sont conservés après la fin du Job et peuvent être récupérés à tout moment avec hf jobs logs <job-id>. L’affichage des métriques finales sur stdout permet de les récupérer même si une étape de téléversement échoue.

Une fois qu'un Job est terminé, vérifiez que vos sorties ont bien été enregistrées (par exemple avec hf buckets list) — un statut COMPLETED signifie que la commande s'est terminée avec succès, pas que les fichiers ont été persistés à l'endroit attendu.

Déboguer un Job

Si un Job présente une erreur, vous pouvez la consulter sur la page du Job

Consultez le message de statut et les journaux sur la page du Job pour identifier ce qui a mal fonctionné.

Vous pouvez également consulter les dernières lignes des journaux pour voir ce qui s’est passé avant l’échec d’un Job. Vous pouvez le voir dans la page du Job, ou en utilisant le CLI :

>>> hf jobs logs 69405cf51a39f67af5a41f29 | tail -n 10     
 Downloaded nvidia-cudnn-cu12
 Downloaded torch
Installed 66 packages in 226ms
Generating train split: 100%|██████████| 15806/15806 [00:00<00:00, 73330.17 examples/s]
Generating test split: 100%|██████████| 200/200 [00:00<00:00, 45427.32 examples/s]
Traceback (most recent call last):
  File "/tmp/script.py", line 7, in <module>
    train_dataset=train_dataset,
                  ^^^^^^^^^^^^^
NameError: name 'train_dataset' is not defined. Did you mean: 'load_dataset'?

Déboguer un Job localement à l’aide de votre configuration locale UV ou Docker :

  • hf jobs uv run ... -> uv run ...
  • hf jobs run ... -> docker run ...

Le message d’état peut indiquer « Job timeout » : cela signifie que le Job n’a pas terminé à temps avant l’expiration du délai (30 min par défaut) et a donc été arrêté. Dans ce cas, vous devez spécifier un délai plus élevé en utilisant --timeout dans l’interface en ligne de commande, par exemple

hf jobs uv run --timeout 3h ...

Rexécuter un Job

Utilisez hf jobs rerun pour démarrer un nouveau Job avec la configuration enregistrée d’un Job existant, y compris ses secrets et son type de matériel :

>>> hf jobs rerun <job_id>

Le nouveau Job possède son propre ID. En Python, utilisez rerun_job.

Annuler les tâches

Utilisez le bouton « Annuler » sur la page Job pour annuler un Job :

ou dans le CLI :

hf jobs cancel 693b06b8c67c9f186cfe239e

Spécifiez l'namespace de votre organisation pour annuler un Job sous votre organisation :

hf jobs cancel --namespace <my-org-name> <job_id>

Barre de menu MacOS

Retrouvez votre liste de Jobs dans le client MacOS hfjobs-menubar :

Obtenir les informations sur les Jobs et surveiller les journaux et les statistiques d’utilisation des ressources :

Update on GitHub