Hub documentation

Управление заданиями

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Управление заданиями

Список заданий

Найдите список своих задач на странице Jobs или на странице Jobs вашей организации (страница пользователя/организации > settings > Jobs):

Он также доступен в Hugging Face CLI. Отобразите список запущенных Jobs с помощью hf jobs ps и используйте -a, чтобы показать все 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

Укажите namespace вашей организации, чтобы получить список Jobs в рамках вашей организации:

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

Фильтр вакансий

Над списком Jobs отображаются наиболее часто используемые метки с количеством Jobs, использующих каждую из них; нажмите на одну из них, чтобы отфильтровать по ней, или введите любую метку в формате key=value:

В CLI фильтруйте по статусу с помощью --status и по метке с помощью --label key=value. Повторяйте --label, чтобы требовать несколько меток одновременно:

# 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=

Фильтрация по имени с помощью --name, сокращение для --label name=<name>, например, для вывода списка всех запусков именованного Job:

>>> 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  --     

По умолчанию hf jobs ps отображает задачи в статусе running и scheduling. Используйте -a, чтобы показать все статусы; -a нельзя использовать вместе с --status.

Мониторинг использования ресурсов

Используйте hf jobs stats, чтобы получить снимок использования CPU, памяти, сети и GPU (если есть) запущенными Jobs:

>>> 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

Укажите один или несколько идентификаторов Job, чтобы отображать статистику только для определённых Job:

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

Используйте -f, чтобы отслеживать статистику в реальном времени до завершения Jobs:

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

Осмотр задачи

Вы можете просмотреть журналы статуса задачи на странице задачи:

В качестве альтернативы, с помощью CLI

>>> 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"
    }
]

а для журналов

>>> 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)
... 

Укажите namespace вашей организации, чтобы просмотреть Job в рамках вашей организации:

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

Ожидание завершения работы Jobs

Используйте hf jobs wait, чтобы заблокировать выполнение до тех пор, пока одна или несколько задач не перейдут в конечное состояние (COMPLETED, CANCELED, ERROR или DELETED). Команда завершается с кодом 0 только в том случае, если все задачи успешно завершены, в противном случае возвращается ненулевой код — это удобно для последовательного выполнения шагов в shell-скриптах или 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

Установите максимальное время ожидания с помощью --timeout (принимает s, m, h или d):

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

Поскольку hf jobs wait возвращает ненулевой код завершения при сбое Job, его можно объединять с &&. Недетачированный hf jobs run (или hf jobs uv run) уже блокирует выполнение и завершается с ненулевым кодом при ошибке, поэтому явный wait требуется только для детачированных Job (-d) или при ожидании партии:

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

Сохраните результаты

Файловая система Job удаляется при завершении Job. Запишите всё, что вы хотите сохранить, в надёжное хранилище до завершения Job:

  • Промежуточные артефакты, контрольные точки и журналы → том Storage Bucket. Подключите бакет и записывайте результаты по пути подключения — примеры см. в разделе Тома. Подключение тома авторизуется с вашей учётной записью Hugging Face при создании задания, поэтому вашему скрипту не нужен токен для записи в него.

  • Финальные модели и наборы данных → загрузка в репозиторий Hub. У задач нет токена Hugging Face, если вы не передадите его, например, с помощью --secrets HF_TOKEN (в простом виде он автоматически подставит токен вашего текущего сеанса). Если ваш скрипт вызывает push_to_hub() или create_repo(), убедитесь, что токен имеет права на запись (для токенов с тонким гранулированием необходимы разрешения на запись и создание репозиториев). Частая причина сбоев: задача выполняет вычисления в течение нескольких часов, а затем завершается с ошибкой при финальной загрузке, потому что токен не имеет прав на запись — вычисления завершены, но результаты не сохранены.

  • Выводите ключевые результаты в логи. Логи задачи сохраняются после её завершения и в любой момент доступны через hf jobs logs <job-id>. Вывод финальных метрик в stdout позволяет восстановить их даже в случае сбоя шага загрузки.

После завершения Job убедитесь, что выходные данные действительно записаны (например, с помощью hf buckets list) — статус COMPLETED означает, что команда завершилась успешно, а не что файлы были сохранены в ожидаемом месте.

Отладка задания

Если у Job есть ошибка, вы можете увидеть её на странице Job

Ознакомьтесь с сообщением о статусе и журналами на странице Job, чтобы понять, что пошло не так.

Вы также можете просмотреть последние строки журнала, чтобы узнать, что произошло перед сбоем Job. Это можно сделать на странице Job или с помощью 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'?

Отладка задания локально с использованием вашей локальной конфигурации UV или Docker:

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

Сообщение о статусе может содержать «Job timeout»: это означает, что Job не успела завершиться до истечения тайм-аута (по умолчанию 30 минут) и была остановлена. В этом случае необходимо указать более высокий тайм-аут, используя --timeout в CLI, например:

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

Повторный запуск задания

Используйте hf jobs rerun, чтобы запустить новую Job с сохранённой конфигурацией существующей Job, включая её секреты и тип оборудования:

>>> hf jobs rerun <job_id>

Новая Job имеет собственный ID. В Python используйте rerun_job.

Отмена задач

Используйте кнопку «Отмена» на странице задания, чтобы отменить задание:

или в CLI:

hf jobs cancel 693b06b8c67c9f186cfe239e

Укажите namespace вашей организации, чтобы отменить Job в рамках вашей организации:

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

Панель меню MacOS

Найдите список своих задач в клиенте MacOS hfjobs-menubar:

Получите информацию о Jobs и отслеживайте журналы и статистику использования ресурсов:

Update on GitHub