List Active Jobs

View as Markdown

List active 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 and status. Platform job records use source="customization" for Automodel, Unsloth, and RL (the Jobs service does not store the training backend as source). status="active" excludes completed, failed, and cancelled jobs. Tell backends apart from the job name prefix (automodel-…, unsloth-…, rl-…) or from the backend you submitted to. 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="customization" and by status to return only active customization jobs:

import os
from nemo_platform import NeMoPlatform
# Initialize the client
client = NeMoPlatform(
base_url=os.environ.get("NMP_BASE_URL", "http://localhost:8080"),
workspace="default",
)
# List active customization jobs
jobs = client.jobs.list(
workspace="default",
filter={
"source": "customization",
"status": "active",
},
page=1,
page_size=10,
sort="created_at",
)
print(f"Found {len(jobs.data)} jobs")
for job in jobs.data:
print(f"Job {job.name}: {job.status}")
# Add more filters (optional)
# Valid filter fields: workspace, project, name, status, source, created_at, updated_at
filtered_jobs = client.jobs.list(
workspace="default",
filter={
"source": "customization",
"status": "active",
"project": "my-finetuning-project",
},
sort="-created_at", # Sort by created_at descending
)
print(f"Found {len(filtered_jobs.data)} jobs")
for job in filtered_jobs.data:
print(f"Job {job.name}: {job.status}")

:open:

{
"data": [
{
"id": "platform-job-QtyhRY5ub4t4tTLPY4sTkz",
"name": "automodel-99da3f7c1b2e",
"workspace": "default",
"source": "customization",
"created_at": "2026-02-09T22:12:45",
"updated_at": "2026-02-09T22:12:45",
"status": "active",
"status_details": {
"message": "Job is running"
},
"spec": {
"model": "default/qwen3-1.7b",
"dataset": { "training": "default/sft-dataset" },
"training": {
"training_type": "sft",
"finetuning_type": "all_weights",
"max_seq_length": 2048
},
"schedule": { "epochs": 2 },
"batch": { "global_batch_size": 64, "micro_batch_size": 1 },
"optimizer": { "learning_rate": 5e-05, "weight_decay": 0.01 },
"parallelism": {
"num_gpus_per_node": 1,
"num_nodes": 1,
"tensor_parallel_size": 1,
"pipeline_parallel_size": 1,
"context_parallel_size": 1
},
"output": {
"name": "customization-407790d32cfb",
"type": "model",
"fileset": "customization-407790d32cfb"
}
}
}
],
"pagination": {
"page": 1,
"page_size": 10,
"current_page_size": 1,
"total_pages": 1,
"total_results": 1
},
"sort": "created_at",
"filter": {
"source": "customization",
"status": "active"
},
"search": {}
}