Customization Job Reference

View as Markdown

Use this page when you need field-level details for customization job specifications, the complete API schema, or integration options.

For concepts, see Customization Job overview.

Key Fields

A customization job is submitted with a backend-specific spec (AutomodelJobInput for the automodel backend, UnslothJobInput for the unsloth backend). Both specs share the same top-level envelope, but several field names differ between backends. The table below lists the common envelope; for the full per-backend field list, see Training Configuration.

FieldRequiredDescription
nameNoName for this customization job. Auto-generated if not provided
workspaceYesWorkspace where the job runs. Determines which datasets and models are authorized for the job. Passed to jobs.create(), not part of the spec
spec.modelYesBase Model Entity to fine-tune. Automodel takes a string (workspace/name); Unsloth takes an object ({"name": "workspace/name", ...})
spec.datasetYesTraining data filesets. Automodel uses {"training": "...", "validation": "..."}; Unsloth uses {"path": "..."}
spec.trainingYesTraining method and hyperparameters (see Training Configuration)
spec.training.training_typeNoTraining method. Automodel: sft or distillation. Unsloth: sft. Defaults to sft
spec.training.finetuning_typeNoAdapter regime. Automodel: lora, lora_merged, or all_weights. Unsloth: lora or all_weights. Defaults to lora
spec.training.loraNoLoRA configuration ({"rank": 16, "alpha": 32, ...}). Auto-filled with defaults for LoRA regimes
spec.outputNoOutput artifact configuration ({"name": "..."}). Auto-generated if not provided
spec.integrationsNoOptional W&B / MLflow tracking configuration (see below)
spec.deployment_configNoUnsloth only. Auto-deploy the trained model. Pass a string to reference an existing config by name, or an object with inline NIM deployment parameters (e.g., {"lora_enabled": true}). Omit to skip deployment

Complete API Reference

For generated REST API details, see the Customizer API Reference and search for AutomodelJobInput or UnslothJobInput.


Weights & Biases Integration

Both backends accept the same integrations object on the job spec. Add a wandb block to request W&B tracking; the training runtime activates it when the required credentials are available.

1import os
2from nemo_platform import NeMoPlatform
3from nemo_automodel_plugin.schema import AutomodelJobInput
4
5client = NeMoPlatform(base_url=os.environ.get("NMP_BASE_URL", "http://localhost:8080"), workspace="default")
6
7spec = AutomodelJobInput(
8 model="default/qwen3-1.7b",
9 dataset={"training": "default/my-dataset"},
10 training={"training_type": "sft", "finetuning_type": "lora"},
11 schedule={"epochs": 3},
12 integrations={
13 "wandb": {
14 "project": "my-finetuning-project",
15 "entity": "my-team",
16 "tags": ["fine-tuning", "qwen"],
17 "api_key_secret": "my-wandb-key",
18 }
19 },
20)
21
22job = client.customization.automodel.jobs.create(spec=spec, workspace="default", name="my-job")

The api_key_secret field references a stored secret containing your WANDB_API_KEY. Use the secret name (e.g., "my-wandb-key") to resolve it from the request workspace. To create the secret, see Weights & Biases Keys.

FieldDescription
projectW&B project name. Defaults to output.name if not set
entityW&B entity (team or username)
tagsList of tags for filtering runs
api_key_secretReference to a secret containing WANDB_API_KEY
nameW&B run name. Defaults to the job ID if not provided
notesNotes or description for the run
base_urlBase URL for self-hosted W&B servers (e.g., https://wandb.mycompany.com). Omit to use W&B cloud

To view your training metrics in W&B after the job starts, see ft-tut-metrics-wandb.


MLflow Integration

Add an mlflow block to the same integrations object to request MLflow tracking:

1spec = AutomodelJobInput(
2 model="default/qwen3-1.7b",
3 dataset={"training": "default/my-dataset"},
4 training={"training_type": "sft", "finetuning_type": "lora"},
5 schedule={"epochs": 3},
6 integrations={
7 "mlflow": {
8 "experiment_name": "qwen-finetuning",
9 "tracking_uri": "http://mlflow.example.com:5000",
10 }
11 },
12)
13
14job = client.customization.automodel.jobs.create(spec=spec, workspace="default", name="my-job")
FieldDescription
experiment_nameMLflow experiment name. Defaults to output.name if not set
tracking_uriThe MLflow tracking server URI. Can also be set via MLFLOW_TRACKING_URI
nameMLflow run name. Defaults to the job ID if not provided
tagsKey-value pairs for filtering runs (e.g., {"team": "nlp", "task": "sft"})
descriptionDescription for the MLflow run

Next Steps