Hub documentation
Cấu hình
Cấu hình
Xác thực
Bạn cần xác thực bằng hf auth login để chạy Jobs, và sử dụng token có quyền khởi động và quản lý Jobs.
Ngoài ra, bạn có thể truyền token Hugging Face thủ công bằng cách sử dụng --token trong CLI, hoặc tham số token trong Python.
Truyền các đối số
Sử dụng -- để tách các tùy chọn của Jobs khỏi lệnh hoặc script của bạn cùng với các đối số của chúng. Các tùy chọn sau --, chẳng hạn như --help hoặc --timeout, sẽ được truyền qua thay vì được Jobs diễn giải.
Điều này áp dụng cho cả Jobs UV và Docker.
hf jobs uv run --flavor t4-small -- script.py --early-stopping-patience 3
└─ Jobs option ┘ └─ script + arguments ─────────────┘UV Jobs
Chỉ định kịch bản UV hoặc lệnh python để chạy như bạn vẫn làm với UV:
>>> hf jobs uv run train.py>>> hf jobs uv run python -c 'print("Hello from the cloud!")'Lệnh hf jobs uv run chấp nhận một đối số UV như --with và --python. Đối số --with cho phép bạn chỉ định các phụ thuộc python, và --python cho phép bạn chọn phiên bản python cần sử dụng:
>>> hf jobs uv run --with trl train.py
>>> hf jobs uv run --python 3.12 train.pyVí dụ, truyền các đối số cho một lệnh bằng cách sử dụng --:
>>> hf jobs uv run --with trl-jobs -- trl-jobs sft --model_name Qwen/Qwen3-0.6B --dataset_name trl-lib/CapybaraTìm danh sách tất cả các đối số trong tài liệu CLI và tài liệu Lệnh UV.
Mặc định, UV Jobs chạy với ảnh Docker ghcr.io/astral-sh/uv:python3.12-bookworm, nhưng bạn có thể sử dụng một ảnh khác miễn là nó đã cài đặt UV, bằng cách dùng --image <docker-image>.
Xem Sử dụng hình ảnh Docker để chọn hình ảnh và hiểu cách môi trường của nó tương tác với các phụ thuộc UV.
Định nghĩa cấu hình khởi chạy trong script
Một script chỉ chạy đúng trên một runtime cụ thể (một image, loại GPU hoặc trình thông dịch hệ thống nhất định) có thể mang theo cấu hình đó trong bảng tùy chọn [tool.hf-jobs] của phần header PEP 723:
# /// script
# requires-python = ">=3.11"
# dependencies = ["vllm", "datasets"]
#
# [tool.hf-jobs]
# image = "vllm/vllm-openai:unlimited-ocr"
# flavor = "l4x1"
# python = "/usr/bin/python3"
# secrets = ["HF_TOKEN"]
# ///hf jobs uv run ocr.py sau đó khởi chạy trên image và phần cứng đó. Lệnh uv run thông thường sẽ bỏ qua bảng, vì các bảng [tool.*] là một phần của PEP 723 và các công cụ sẽ bỏ qua những bảng không thuộc về chúng.
Các khóa được hỗ trợ, tất cả đều tùy chọn: image, flavor, python, timeout, name, namespace, env, secrets, labels, volumes, network_group và network_aliases. Chúng ánh xạ đến các cờ có cùng tên. Giá trị từ script là mặc định: cờ được chỉ định rõ luôn có ưu tiên, và env, secrets, labels cùng volumes được gộp từng mục một, do đó -e và -v bổ sung vào những gì script khai báo. Một khóa không xác định sẽ gây lỗi, và secrets chỉ liệt kê tên: giá trị được lấy từ môi trường của người chạy script, và một secret chưa được đặt cục bộ cũng sẽ gây lỗi.
Sử dụng --dry-run để in cấu hình đã được phân giải mà không gửi; các giá trị đến từ script được đánh dấu (from script). Xem hướng dẫn CLI hf để biết các quy tắc hợp nhất đầy đủ.
Bảng chỉ được đọc bởi CLI
hf.run_uv_job()vàcreate_scheduled_uv_job()bỏ qua bảng này, vì vậy hãy truyềnimage=,flavor=, … một cách tường minh từ Python.
Docker Jobs
Chỉ định hình ảnh Docker và lệnh cần chạy giống như khi bạn dùng docker:
>>> hf jobs run ubuntu echo "Hello from the cloud!"Ở đây, --help được chuyển đến Python thay vì hiển thị trợ giúp cho Jobs:
>>> hf jobs run --flavor cpu-basic python:3.12 -- python --helpTìm danh sách tất cả các đối số trong tài liệu CLI.
Xem Sử dụng hình ảnh Docker để biết các ví dụ sử dụng các hình ảnh có sẵn và các hình ảnh được xây dựng bởi Docker Spaces.
Biến môi trường và Secrets
Biến môi trường tích hợp sẵn
Tương tự như các biến môi trường tích hợp trong Spaces, Jobs tự động cung cấp các biến môi trường sau bên trong container:
| Biến | Mô tả |
|---|---|
JOB_ID | Định danh duy nhất của tác vụ hiện tại (ví dụ: 699d874f1aad19adb8aaeadc). Đây là cùng một ID được hiển thị trong giao diện người dùng và URL của tác vụ. |
ACCELERATOR | Loại bộ tăng tốc khả dụng (ví dụ: t4-medium, a10g-small, a100x4), hoặc none cho các tác vụ chỉ dùng CPU. |
CPU_CORES | Số lượng lõi CPU được phân bổ cho công việc. |
MEMORY | Lượng bộ nhớ được cấp phát cho công việc (ví dụ: 8Gi). |
HF_NETWORK_GROUP_HOSTNAME | Hostname được phân giải cho mọi job trong nhóm mạng của job. Chỉ được đặt khi job khai báo một nhóm mạng. |
HF_NETWORK_GROUP_PREFIX | Tiền tố để thêm vào đầu một alias nhằm lấy tên máy chủ (hostname) của các thành viên nhóm đang khai báo alias đó (ví dụ: ${HF_NETWORK_GROUP_PREFIX}master). Chỉ được đặt khi job khai báo một nhóm mạng. |
Bạn có thể sử dụng các biến này để theo dõi đầu ra, điều chỉnh mã của bạn theo các tài nguyên khả dụng, hoặc tham chiếu công việc hiện tại một cách lập trình:
# 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\")}')"Biến môi trường do người dùng định nghĩa
Bạn có thể truyền các biến môi trường cho tác vụ của mình bằng
# Pass environment variables
>>> hf jobs uv run -e FOO=foo -e BAR=bar python -c 'import os; print(os.environ["FOO"], os.environ["BAR"])'# Pass an environment from a local .env file
>>> hf jobs uv run --env-file .env python -c 'import os; print(os.environ["FOO"], os.environ["BAR"])'# Pass secrets - they will be encrypted server side
>>> hf jobs uv run -s MY_SECRET=psswrd 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 uv run --secrets-file .env.secrets python -c 'import os; print(os.environ["MY_SECRET"])'Sử dụng
--secrets HF_TOKENđể truyền token Hugging Face cục bộ của bạn một cách ngầm. Với cú pháp này, bí mật sẽ được lấy từ biến môi trường. Đối vớiHF_TOKEN, nếu biến môi trường chưa được đặt, hệ thống có thể đọc tệp token nằm trong thư mục home của Hugging Face.
Dung lượng
Gắn các kho Hugging Face (mô hình, bộ dữ liệu), Storage Buckets hoặc các thư mục cục bộ dưới dạng volume trong container công việc của bạn bằng cách sử dụng -v hoặc --volume. Nguồn Hub sử dụng lược đồ URL hf://: hf://[TYPE/]SOURCE:/MOUNT_PATH[:ro]; một thư mục cục bộ được truyền trực tiếp dưới dạng nguồn.
Vì các tệp được gắn (mounted) sẽ được tải về một cách lười (lazily), việc gắn tệp cho phép một Job làm việc với các bộ dữ liệu lớn hơn nhiều so với ổ đĩa cục bộ của nó. Xem Xử lý bộ dữ liệu lớn để tìm hiểu về việc gắn tệp, phát trực tiếp (streaming) và xử lý dữ liệu lớn trên Jobs.
Các kiểu volume:
| Loại | Ví dụ |
|---|---|
| Kho mô hình | -v hf://openai/gpt-oss-120b:/model |
| Kho dữ liệu | -v hf://datasets/stanfordnlp/imdb:/data |
| Thùng chứa lưu trữ | -v hf://buckets/username/my-bucket:/mnt |
| Thư mục con | -v hf://datasets/org/my-dataset/train:/data |
| Thư mục cục bộ | -v ./training-data:/data |
Sau đó, sử dụng volume đã gắn như một thư mục cục bộ bên trong container:
# Mount a dataset and query it with DuckDB
>>> hf jobs run -v hf://datasets/stanfordnlp/imdb:/dataset \
... duckdb/duckdb duckdb -c "SELECT * FROM '/dataset/**/*.parquet' LIMIT 5"
# Mount a bucket to save training checkpoints
>>> hf jobs uv run -v hf://buckets/username/my-bucket:/training-outputs \
... sft.py --output-dir /training-outputs/training-v3-finalCó thể gắn nhiều ổ đĩa bằng cách lặp lại cờ -v:
>>> hf jobs run -v hf://datasets/username/my-dataset:/data -v hf://buckets/username/my-bucket:/output \
... python:3.12 python script.pyMô hình và bộ dữ liệu luôn được gắn chỉ đọc. Các bucket lưu trữ mặc định là đọc-ghi, hữu ích để lưu trữ kết quả đầu ra, checkpoint hoặc kết quả trung gian. Sử dụng :ro để gắn bucket ở chế độ chỉ đọc:
>>> hf jobs run -v hf://buckets/username/my-bucket:/mnt:ro python:3.12 ls /mntThư mục cục bộ
Việc truyền một thư mục cục bộ làm nguồn sẽ đồng bộ nó vào Storage Bucket jobs-artifacts riêng tư (được tạo tự động) trước khi Job bắt đầu, sau đó gắn nó vào container. Các thư mục cục bộ được gắn chỉ đọc theo mặc định; sử dụng :rw để ghi kết quả đầu ra:
>>> hf jobs uv run -v ./pdfs:/input -v ./md-out:/output:rw ocr.pyViệc đồng bộ lại cùng một thư mục chỉ tải lên các tệp mới hoặc đã bị sửa đổi. Để lấy các tệp mà một Job đã ghi vào một volume đọc-ghi, hãy đồng bộ thư mục bucket của nó trở lại sau khi Job kết thúc — CLI sẽ in ra lệnh hf buckets sync chính xác khi Job bắt đầu. Các job được lên lịch cũng hoạt động: thư mục được đồng bộ một lần khi lịch được tạo, và mỗi lần kích hoạt sẽ gắn cùng một thư mục đó. Trong Python, hãy sử dụng sync_job_volume.
Trong Python, hãy sử dụng lớp Volume:
from huggingface_hub import Volume, run_job
job = run_job(
image="python:3.12",
command=["python", "-c", "import os; print(os.listdir('/data'))"],
volumes=[
Volume(type="dataset", source="username/my-dataset", mount_path="/data"),
Volume(type="bucket", source="username/my-bucket", mount_path="/output"),
],
)Volume mounting yêu cầu
huggingface_hub>= 1.8.0. Xem tài liệu Python client và hướng dẫn cài đặt để biết thêm chi tiết.
Loại phần cứng
Chạy các tác vụ trên GPU hoặc TPU bằng đối số flavor. Ví dụ, để chạy một tác vụ PyTorch trên GPU A10G:
>>> hf jobs uv run --with torch --flavor a10g-small python -c "import torch; print(f'This code ran with the following GPU: {torch.cuda.get_device_name()}')"Chạy lệnh này sẽ hiển thị kết quả sau!
This code ran with the following GPU: NVIDIA A10GDưới đây là một ví dụ khác để chạy một script tinh chỉnh như trl/scripts/sft.py:
>>> hf jobs uv run --with trl --flavor a10g-small -s HF_TOKEN -- sft.py --model_name_or_path Qwen/Qwen2-0.5B ...Để có hướng dẫn chi tiết về việc chạy các tác vụ huấn luyện mô hình bằng TRL trên hạ tầng của Hugging Face, hãy xem tài liệu Huấn luyện TRL Jobs. Tài liệu này bao gồm các công thức tinh chỉnh, lựa chọn phần cứng và các thực hành tốt nhất để huấn luyện mô hình một cách hiệu quả.
Xem danh sách các tùy chọn --flavor khả dụng bằng lệnh hf jobs hardware (mặc định là cpu-basic):
>>> hf jobs hardware
name pretty name cpu ram storage accelerator cost/min cost/hour
cpu-basic CPU Basic 2 vCPU 16 GB 50 GB $0.0002 $0.01
cpu-upgrade CPU Upgrade 8 vCPU 32 GB 50 GB $0.0005 $0.03
cpu-performance CPU Performance 32 vCPU 256 GB 1024 GB $0.0317 $1.90
cpu-xl CPU XL 16 vCPU 124 GB 1000 GB $0.0167 $1.00
t4-small Nvidia T4 - small 4 vCPU 15 GB 50 GB 1x T4 (16 GB) $0.0067 $0.40
t4-medium Nvidia T4 - medium 8 vCPU 30 GB 100 GB 1x T4 (16 GB) $0.0100 $0.60
a10g-small Nvidia A10G - small 4 vCPU 15 GB 110 GB 1x A10G (24 GB) $0.0167 $1.00
a10g-large Nvidia A10G - large 12 vCPU 46 GB 200 GB 1x A10G (24 GB) $0.0250 $1.50
a10g-largex2 2x Nvidia A10G - large 24 vCPU 92 GB 1000 GB 2x A10G (48 GB) $0.0500 $3.00
a10g-largex4 4x Nvidia A10G - large 48 vCPU 184 GB 2000 GB 4x A10G (96 GB) $0.0833 $5.00
a100-large Nvidia A100 - large 12 vCPU 142 GB 1000 GB 1x A100 (80 GB) $0.0417 $2.50
a100x4 4x Nvidia A100 48 vCPU 568 GB 4000 GB 4x A100 (320 GB) $0.1667 $10.00
a100x8 8x Nvidia A100 96 vCPU 1136 GB 8000 GB 8x A100 (640 GB) $0.3333 $20.00
h200 Nvidia H200 23 vCPU 256 GB 3000 GB 1x H200 (141 GB) $0.0833 $5.00
h200x2 Nvidia H200 46 vCPU 512 GB 6000 GB 2x H200 (282 GB) $0.1667 $10.00
h200x4 Nvidia H200 92 vCPU 1024 GB 12000 GB 4x H200 (564 GB) $0.3333 $20.00
h200x8 Nvidia H200 184 vCPU 2048 GB 24000 GB 8x H200 (1128 GB) $0.6667 $40.00
rtx-pro-6000 Nvidia RTX PRO 6000 23 vCPU 256 GB 475 GB 1x RTX PRO 6000 (96 GB) $0.0458 $2.75
rtx-pro-6000x2 Nvidia RTX PRO 6000 46 vCPU 512 GB 950 GB 2x RTX PRO 6000 (192 GB) $0.0917 $5.50
rtx-pro-6000x4 Nvidia RTX PRO 6000 92 vCPU 1024 GB 1900 GB 4x RTX PRO 6000 (384 GB) $0.1833 $11.00
rtx-pro-6000x8 Nvidia RTX PRO 6000 184 vCPU 2048 GB 3800 GB 8x RTX PRO 6000 (768 GB) $0.3667 $22.00
l4x1 1x Nvidia L4 8 vCPU 30 GB 400 GB 1x L4 (24 GB) $0.0133 $0.80
l4x4 4x Nvidia L4 48 vCPU 186 GB 3200 GB 4x L4 (96 GB) $0.0633 $3.80
l40sx1 1x Nvidia L40S 8 vCPU 62 GB 380 GB 1x L40S (48 GB) $0.0300 $1.80
l40sx4 4x Nvidia L40S 48 vCPU 382 GB 3200 GB 4x L40S (192 GB) $0.1383 $8.30
l40sx8 8x Nvidia L40S 192 vCPU 1534 GB 6500 GB 8x L40S (384 GB) $0.3917 $23.50Tiết lộ các Cổng
Jobs có thể phơi bày các cổng container thông qua proxy jobs công khai bằng cách sử dụng --expose <port> (CLI) hoặc expose=[<port>] (Python API). Mỗi cổng được phơi bày có thể truy cập tại https://<job_id>--<port>.hf.jobs và yêu cầu một HF token có quyền read đối với namespace của job:
curl -H "Authorization: Bearer $HF_TOKEN" https://<job_id>--<port>.hf.jobs/Cách này hoạt động với hf jobs run, hf jobs uv run và các biến thể được lên lịch của chúng. Lặp lại cờ để phơi bày nhiều cổng (--expose 8000 --expose 8001), hoặc truyền nhiều cổng trong danh sách (expose=[8000, 8001]).
Để làm cho một cổng (port) có thể truy cập được mà không cần token HF, hãy dùng --expose-public <port> (CLI) hoặc expose_public=[<port>] (Python API) thay thế. Bất kỳ ai có URL đều có thể truy cập cổng đó, vì vậy chỉ nên dùng cho dịch vụ an toàn để chia sẻ. Bạn có thể kết hợp cả hai tùy chọn: một số cổng khi đó sẽ yêu cầu token HF và một số khác là công khai.
Các cổng được mở sẽ được tính phí theo mức cố định nhỏ theo giờ, cộng thêm vào giá phần cứng của tác vụ, chỉ trong khi tác vụ đang chạy. Xem trang định giá để biết chi tiết.
CLI
# Expose a web server running on port 8000
>>> hf jobs run --expose 8000 python:3.12 python -m http.server 8000
✓ Job started
id: 6a2aa7cec4f53f9fc5aa4cff
url: https://huggingface.co/jobs/Wauplin/6a2aa7cec4f53f9fc5aa4cff
Hint: Exposed ports are reachable at (requires an HF token with read access to the job):
https://6a2aa7cec4f53f9fc5aa4cff--8000.hf.jobs
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...Python
>>> from huggingface_hub import run_job
>>> job = run_job(image="python:3.12", command=["python", "-m", "http.server", "8000"], expose=[8000])
>>> job.status.expose_urls
['https://6a2ab384c4f53f9fc5aa4d4f--8000.hf.jobs']Thay đổi các cổng của một Job đang chạy
Sử dụng hf jobs expose để thay đổi các cổng được mở, mà không cần khởi động lại Job:
# Expose port 8000 (requires an HF token)
>>> hf jobs expose <job_id> 8000
# Expose port 8000 (requires an HF token) and port 9000 publicly
>>> hf jobs expose <job_id> 8000 --public 9000
# Close all exposed ports
>>> hf jobs expose <job_id> --clearLệnh này thay thế toàn bộ danh sách các cổng được phơi bày, do đó một cổng mà bạn bỏ qua sẽ bị đóng. Trong Python, hãy sử dụng update_job_expose.
SSH
Bạn có thể mở một phiên SSH tương tác vào một Job đang chạy để gỡ lỗi, kiểm tra hoặc làm việc trực tiếp bên trong container. Bật tính năng này khi tạo job bằng --ssh (CLI) hoặc ssh=True (Python API), sau đó kết nối bằng hf jobs ssh <job_id>.
Chỉ những người dùng có quyền Write đối với namespace của Job mới được phép (tức là người tạo Job, hoặc các thành viên của tổ chức sở hữu có quyền Write). Xác thực được thực hiện thông qua các khóa công khai SSH được đăng ký tại https://huggingface.co/settings/keys.
SSH có sẵn trên hf jobs run và hf jobs uv run. Nó không được hỗ trợ cho các tác vụ được lên lịch.
CLI
# Start a job with SSH enabled
>>> hf jobs run --ssh --detach --timeout 10m python:3.12 sleep infinity
✓ Job started
id: 6a2bd1f1871c005b5352ad31
url: https://huggingface.co/jobs/Wauplin/6a2bd1f1871c005b5352ad31
Hint: Use `hf jobs ssh 6a2bd1f1871c005b5352ad31` to open an SSH session into the job.
# Open an SSH session into the job
>>> hf jobs ssh 6a2bd1f1871c005b5352ad31Bạn cũng có thể in ra lệnh SSH mà không thực thi nó (--dry-run), hoặc truyền một tệp identity cụ thể (-i/--identity-file):
>>> hf jobs ssh 6a2bd1f1871c005b5352ad31 --dry-run
ssh 6a2bd1f1871c005b5352ad31@ssh.hf.jobs
>>> hf jobs ssh 6a2bd1f1871c005b5352ad31 -i ~/.ssh/id_ed25519Python
>>> from huggingface_hub import run_job
>>> job = run_job(image="python:3.12", command=["sleep", "infinity"], ssh=True)
>>> job.status.ssh_url
'ssh://6a2bd1f1871c005b5352ad31@ssh.hf.jobs'Sau đó, kết nối từ terminal bằng hf jobs ssh <job_id>, hoặc trực tiếp bằng ssh <job_id>@ssh.hf.jobs.
Chuyển tiếp cổng
Vì đây là kết nối SSH thông thường, bạn có thể sử dụng các cờ -L và -R của SSH để chuyển tiếp cổng giữa máy của bạn và Job. Kết nối trực tiếp bằng ssh (dùng hf jobs ssh <job_id> --dry-run để lấy đích chính xác) và thêm các cờ chuyển tiếp.
Sử dụng -L (chuyển tiếp cục bộ) để truy cập dịch vụ đang chạy bên trong Job từ máy của bạn. Ví dụ, để kết nối với TensorBoard được khởi động trong một Job huấn luyện:
# Forward local port 6006 to the Job's TensorBoard on port 6006
>>> ssh -L 6006:localhost:6006 6a2bd1f1871c005b5352ad31@ssh.hf.jobsSau đó, mở http://localhost:6006 trong trình duyệt của bạn.
Sử dụng -R (chuyển tiếp từ xa) để cho phép Job truy cập dịch vụ đang chạy trên máy của bạn. Ví dụ, để mở một cơ sở dữ liệu hoặc API cục bộ cho Job:
# Make your local port 8080 reachable from inside the Job on port 8080
>>> ssh -R 8080:localhost:8080 6a2bd1f1871c005b5352ad31@ssh.hf.jobsCác nhóm mạng
Jobs có thể tham gia một nhóm mạng bằng cách sử dụng --network-group <name> (CLI) hoặc network_group="<name>" (Python API). Các jobs trong cùng một namespace và resource group chia sẻ một nhóm có thể liên lạc với nhau trên mọi port: HF_NETWORK_GROUP_HOSTNAME được phân giải thành mọi thành viên, và ${HF_NETWORK_GROUP_PREFIX}<alias> được phân giải thành các thành viên đã yêu cầu một alias bằng --network-alias <alias> (CLI) hoặc network_aliases=[<alias>] (Python API).
Cách này hoạt động với hf jobs run và hf jobs uv run. Các thành viên có thể được phân giải trước khi chúng sẵn sàng, vì vậy hãy kết nối với cơ chế thử lại. Tên nhóm và alias là các ký tự chữ số thường và dấu gạch nối, tối đa 46 và 34 ký tự; alias của một job phải là duy nhất.
CLI
# 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/"'Python
>>> from huggingface_hub import run_job
>>> server = run_job(
... image="python:3.12",
... command=["python", "-m", "http.server", "8000"],
... network_group="train",
... network_aliases=["master"],
... )
>>> client = run_job(
... image="python:3.12",
... command=["sh", "-c", 'curl --retry 10 --retry-connrefused "http://${HF_NETWORK_GROUP_PREFIX}master:8000/"'],
... network_group="train",
... )Các framework huấn luyện đa nút có thể sử dụng một alias làm host rendezvous, ví dụ torchrun --master_addr "${HF_NETWORK_GROUP_PREFIX}master".
Timeout
Jobs có thời gian chờ mặc định (30 phút), sau đó chúng sẽ tự động dừng. Điều này rất quan trọng cần biết khi chạy các tác vụ kéo dài như huấn luyện mô hình.
Bạn có thể chỉ định giá trị timeout tùy chỉnh bằng cách sử dụng tham số --timeout khi chạy một job. Timeout có thể được chỉ định theo hai cách:
- Dưới dạng số (được hiểu là giây):
Sử dụng --timeout và truyền số giây (ở đây 2 giờ = 7200 giây):
>>> hf jobs uv run --timeout 7200 --with torch --flavor a10g-large train.py- Dưới dạng chuỗi có đơn vị thời gian:
Hoặc sử dụng --timeout và dùng các đơn vị thời gian khác nhau:
>>> hf jobs uv run --timeout 2h --with torch --flavor a10g-large train.pyMột số ví dụ khác:
--timeout 30m # 30 minutes
--timeout 1.5h # 1.5 hours
--timeout 1d # 1 day
--timeout 3600s # 3600 secondsCác đơn vị thời gian được hỗ trợ:
s- giâym- phúth- giờd- ngày
Nếu bạn không chỉ định thời gian chờ, một thời gian chờ mặc định sẽ được áp dụng cho tác vụ của bạn. Đối với các tác vụ chạy lâu như huấn luyện mô hình có thể mất nhiều giờ, hãy đảm bảo thiết lập thời gian chờ phù hợp để tránh việc tác vụ bị kết thúc bất ngờ.
Thử lại
Mặc định, một Job chỉ chạy một lần. Sử dụng --attempts <n> (CLI) hoặc attempts=<n> (Python API) để chạy lại một Job bị lỗi. Số lần này bao gồm cả lần chạy đầu tiên, do đó --attempts 3 cho phép tối đa hai lần chạy lại:
>>> hf jobs uv run --attempts 3 --flavor a10g-large train.pyĐiều này hoạt động với hf jobs run, hf jobs uv run và các biến thể được lên lịch của chúng.
Một lần thử lại sẽ chạy lại lệnh từ đầu, dưới cùng một Job ID. Để cho phép một lần thử lại tiếp tục từ nơi lần thử trước đã dừng lại, hãy ghi checkpoint vào một bucket được gắn (mounted) và để script của bạn tiếp tục từ các checkpoint đó. Xem Sau khi kết thúc trong Train Models on Jobs.
Namespace
Chạy Jobs dưới tài khoản tổ chức của bạn bằng cách sử dụng đối số --namespace. Hãy đảm bảo bạn đã đăng nhập bằng một token có quyền khởi động và quản lý Jobs dưới tài khoản tổ chức của bạn.
>>> hf jobs uv run --namespace my-org-name python -c "print('Running in an org account')"Lưu ý rằng bạn có thể truyền thủ công một token có quyền phù hợp:
>>> hf jobs uv run --namespace my-org-name --token hf_xxx python -c "print('Running in an org account')"Nhãn
Thêm một hoặc nhiều nhãn vào một Job bằng cách sử dụng -l hoặc --label để bổ sung một số metadata.
Bạn có thể sử dụng metadata này sau đó để lọc các Job trên trang web hoặc trong CLI.
Thêm nhãn bằng --label my-label hoặc nhãn dạng cặp khóa-giá trị bằng --label key=value. Khóa và giá trị có thể chứa chữ cái, chữ số, - và _.
Ví dụ:
hf jobs uv run --label fine-tuning --label model=Qwen3-06B --label dataset=Capybara ...Lưu ý rằng việc sử dụng cùng một key nhiều lần sẽ khiến key=value cuối cùng ghi đè và loại bỏ mọi nhãn trước đó có key.
Đặt tên cho một công việc
Đặt tên cho Job để dễ dàng tìm kiếm và nhận diện trong UI. Tên được lưu dưới dạng nhãn name và không nhất thiết phải duy nhất. Trong UI, các Job sẽ được nhóm theo tên.
hf jobs run --name daily-report python:3.12 python report.pyNếu bạn không truyền --name, Job sẽ được đặt tên theo Docker image hoặc script của nó kèm theo một hash ngắn của lệnh, do đó các lần chạy lại cùng một lệnh sẽ dùng chung tên trong khi các lệnh khác nhau sẽ có tên khác nhau (ví dụ python-3-12-6b9d662c cho một Job chạy trên python:3.12).
Cập nhật nhãn
Cập nhật nhãn cho một Job hiện có bằng hf jobs labels. Truyền --label sẽ thay thế tất cả các nhãn hiện có; chỉ truyền --name sẽ giữ nguyên chúng:
# Replace the labels on a Job
hf jobs labels <job_id> --label env=prod --label team=ml
# Name an existing Job (keeps its other labels)
hf jobs labels <job_id> --name daily-report
# Remove all labels from a Job
hf jobs labels <job_id> --clear