List Active Jobs

View as Markdown

List customization jobs and their high-level status. Customization jobs run on the platform’s Jobs service, so you list them through that service and filter by source to scope the results to a backend (automodel or unsloth). Each entry includes the job definition (model, dataset, training configuration) and overall status.

To get detailed execution progress (step-by-step status, training metrics like loss/epoch/step), use Get Job Status instead.

Prerequisites

Before you can list active customization jobs, make sure that you have:

  • Obtained the base URL of your NeMo Platform.
  • Set the NMP_BASE_URL environment variable to your NeMo Platform endpoint
$export NMP_BASE_URL="https://your-nmp-base-url"

To List Active Customization Jobs

Use the SDK to list jobs, filtering by source to scope the results to a customization backend:

1import os
2from nemo_platform import NeMoPlatform
3
4# Initialize the client
5client = NeMoPlatform(
6 base_url=os.environ.get("NMP_BASE_URL", "http://localhost:8080"),
7 workspace="default",
8)
9
10# List automodel customization jobs
11jobs = client.jobs.list(
12 workspace="default",
13 filter={"source": "automodel"}, # Use "unsloth" for the Unsloth backend
14 page=1,
15 page_size=10,
16 sort="created_at",
17)
18
19print(f"Found {len(jobs.data)} jobs")
20for job in jobs.data:
21 print(f"Job {job.name}: {job.status}")
22
23# Add more filters (optional)
24# Valid filter fields: workspace, project, name, status, source, created_at, updated_at
25filtered_jobs = client.jobs.list(
26 workspace="default",
27 filter={
28 "source": "automodel",
29 "status": "active", # Filter by job status
30 },
31 sort="-created_at", # Sort by created_at descending
32)
33
34print(f"Found {len(filtered_jobs.data)} jobs")
35for job in filtered_jobs.data:
36 print(f"Job {job.name}: {job.status}")

:open:

1{
2 "data": [
3 {
4 "id": "platform-job-QtyhRY5ub4t4tTLPY4sTkz",
5 "name": "automodel-99da3f7c1b2e",
6 "workspace": "default",
7 "source": "automodel",
8 "created_at": "2026-02-09T22:12:45",
9 "updated_at": "2026-02-09T22:12:45",
10 "status": "active",
11 "status_details": {
12 "message": "Job is running"
13 },
14 "spec": {
15 "model": "default/qwen3-1.7b",
16 "dataset": { "training": "default/sft-dataset" },
17 "training": {
18 "training_type": "sft",
19 "finetuning_type": "all_weights",
20 "max_seq_length": 2048
21 },
22 "schedule": { "epochs": 2 },
23 "batch": { "global_batch_size": 64, "micro_batch_size": 1 },
24 "optimizer": { "learning_rate": 5e-05, "weight_decay": 0.01 },
25 "parallelism": {
26 "num_gpus_per_node": 1,
27 "num_nodes": 1,
28 "tensor_parallel_size": 1,
29 "pipeline_parallel_size": 1,
30 "context_parallel_size": 1
31 },
32 "output": {
33 "name": "customization-407790d32cfb",
34 "type": "model",
35 "fileset": "customization-407790d32cfb"
36 }
37 }
38 }
39 ],
40 "pagination": {
41 "page": 1,
42 "page_size": 10,
43 "current_page_size": 1,
44 "total_pages": 1,
45 "total_results": 1
46 },
47 "sort": "created_at",
48 "filter": {},
49 "search": {}
50}