Hub documentation
Quản lý công việc
Quản lý công việc
Danh sách công việc
Tìm danh sách Jobs của bạn trong trang Jobs hoặc trang Jobs của tổ chức (trang người dùng/tổ chức > settings > Jobs):

Công cụ này cũng có sẵn trong Hugging Face CLI. Hiển thị danh sách các Job đang chạy bằng hf jobs ps và sử dụng -a để hiển thị tất cả các Job:
>>> 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 COMPLETEDChỉ định namespace của tổ chức bạn để liệt kê các Job dưới tổ chức của bạn:
>>> hf jobs ps --namespace <my-org-name>Lọc công việc
Các nhãn được sử dụng nhiều nhất của bạn được hiển thị phía trên danh sách Jobs cùng với số lượng Jobs sử dụng từng nhãn; nhấp vào một nhãn để lọc theo nhãn đó, hoặc nhập bất kỳ nhãn key=value nào:

Trong CLI, lọc theo trạng thái bằng --status và theo nhãn bằng --label key=value. Lặp lại --label để yêu cầu nhiều nhãn cùng lúc:
# 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=Lọc theo tên bằng --name, một cách viết tắt của --label name=<name>, ví dụ để liệt kê mọi lần chạy của một Job có tên:
>>> 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 -- Mặc định,
hf jobs pshiển thị các Job đang chạy và đang được lên lịch. Sử dụng-ađể hiển thị tất cả các trạng thái;-akhông thể kết hợp với--status.
Giám sát mức sử dụng tài nguyên
Sử dụng hf jobs stats để lấy một bản chụp nhanh về mức sử dụng CPU, bộ nhớ, mạng và GPU (nếu có) của các Job đang chạy:
>>> 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.2GBChỉ định một hoặc nhiều id Job để chỉ hiển thị thống kê của các Job nhất định:
>>> hf jobs stats [job-ids]...Sử dụng -f để theo dõi thống kê trực tiếp cho đến khi các Job hoàn tất:
>>> hf jobs stats -f [job-ids]...Kiểm tra một Job
Bạn có thể xem nhật ký trạng thái của một Job trên trang Job:

Hoặc sử dụng 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"
}
]và đối với các nhật ký
>>> 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)
... Chỉ định namespace của tổ chức bạn để kiểm tra một Job thuộc tổ chức của bạn:
hf jobs inspect --namespace <my-org-name> <job_id>
hf jobs logs --namespace <my-org-name> <job_id>Chờ cho đến khi các Job hoàn tất
Sử dụng hf jobs wait để chặn cho đến khi một hoặc nhiều Job đạt trạng thái cuối (COMPLETED, CANCELED, ERROR hoặc DELETED). Lệnh này thoát với mã 0 chỉ khi mọi Job hoàn tất thành công, và mã khác không trong các trường hợp còn lại — rất tiện lợi để nối các bước trong shell scripts hoặc 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Đặt thời gian chờ tối đa bằng --timeout (chấp nhận s, m, h hoặc d):
>>> hf jobs wait --timeout 30m 693994e21a39f67af5a41ad0Vì hf jobs wait trả về mã thoát khác không khi một Job thất bại, bạn có thể nối nó với &&. Một lệnh hf jobs run (hoặc hf jobs uv run) không tách rời đã chặn và thoát với mã khác không khi thất bại, do đó chỉ cần chờ tường minh cho các Job tách rời (-d) hoặc khi chờ một lô:
>>> hf jobs wait 693994e21a39f67af5a41ad0 && echo "job completed successfully"Lưu kết quả của bạn
Hệ thống tệp của một Job sẽ bị xóa khi Job kết thúc. Hãy ghi bất kỳ thứ gì bạn muốn giữ lại vào một vị trí bền vững trước khi Job thoát:
Các sản phẩm trung gian, checkpoint và log → một volume Storage Bucket. Gắn bucket và ghi các kết quả đầu ra dưới đường dẫn gắn — xem Volumes để có ví dụ. Các volume gắn được xác thực bằng danh tính Hugging Face của bạn khi Job được tạo, nên script của bạn không cần token để ghi vào chúng.
Mô hình và bộ dữ liệu cuối cùng → đẩy lên kho Hub. Các Job không có token Hugging Face trừ khi bạn truyền vào, ví dụ
--secrets HF_TOKEN(dạng không tham số sẽ tự động phân giải thành token của tài khoản đang đăng nhập). Nếu script của bạn gọipush_to_hub()hoặccreate_repo(), hãy đảm bảo token có quyền ghi (token chi tiết cần quyền ghi và tạo kho). Một lỗi phổ biến là Job hoàn thành hàng giờ tính toán rồi báo lỗi ở bước tải lên cuối cùng vì token không có quyền ghi — phần tính toán đã xong nhưng kết quả không được lưu.In kết quả chính ra log. Log của Job được lưu lại sau khi Job kết thúc và có thể được lấy bất cứ lúc nào bằng
hf jobs logs <job-id>. Việc in các chỉ số cuối cùng ra stdout giúp chúng có thể được khôi phục ngay cả khi bước upload thất bại.
Sau khi một Job hoàn tất, hãy kiểm tra xem các đầu ra của bạn đã thực sự được ghi hay chưa (ví dụ bằng hf buckets list) — trạng thái COMPLETED chỉ có nghĩa là lệnh đã thoát thành công, chứ không có nghĩa là các tệp đã được lưu trữ tại vị trí bạn mong đợi.
Gỡ lỗi một Job
Nếu một Job có lỗi, bạn có thể xem nó trên trang Job

Xem thông báo trạng thái và nhật ký trên trang Job để biết điều gì đã xảy ra.
Bạn cũng có thể xem các dòng cuối cùng của log để biết điều gì đã xảy ra trước khi Job thất bại. Bạn có thể xem điều đó trong trang Job, hoặc sử dụng 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'?Gỡ lỗi một Job cục bộ bằng cách sử dụng cấu hình UV hoặc Docker cục bộ của bạn:
hf jobs uv run ...->uv run ...hf jobs run ...->docker run ...
Thông báo trạng thái có thể hiển thị “Job timeout”: điều này có nghĩa là Job không hoàn thành kịp trước thời gian hết hạn (mặc định là 30 phút) và do đó đã bị dừng.
Trong trường hợp này, bạn cần chỉ định thời gian hết hạn cao hơn, bằng cách sử dụng --timeout trong CLI, ví dụ
hf jobs uv run --timeout 3h ...Chạy lại một Job
Sử dụng hf jobs rerun để khởi động một Job mới với cấu hình đã lưu của một Job hiện có, bao gồm cả secrets và hardware flavor của nó:
>>> hf jobs rerun <job_id>Job mới có ID riêng. Trong Python, hãy sử dụng rerun_job.
Hủy các công việc
Sử dụng nút “Hủy” trên trang Job để hủy một Job:

hoặc trong CLI:
hf jobs cancel 693b06b8c67c9f186cfe239e

Chỉ định namespace của tổ chức bạn để hủy một Job thuộc tổ chức của bạn:
hf jobs cancel --namespace <my-org-name> <job_id>Thanh menu MacOS
Tìm danh sách Jobs của bạn trong client hfjobs-menubar trên MacOS:

Lấy thông tin về Jobs, và theo dõi nhật ký cũng như thống kê sử dụng tài nguyên:
