Skip to main content

Fine-tuning the Spirit-v1.5 Model

Spirit-v1.5 is a Vision-Language-Action (VLA) policy from Spirit AI. The platform registers it under the model identifier spirit-v1.5, uses the spirit training framework, and supports robochallenge, LeRobot v2, and v3 datasets.

Roles and Prerequisites​

Roles​

RoleCan create a training taskDescription
AdministratorYesNot restricted by Module Permissions
Project ManagerRequires authorizationAn administrator grants Create Training Job in Module Permissions
AnnotatorRequires authorizationSame as above
AuditorRequires authorizationSame as above
CollectorRequires authorizationSame as above

Viewing training tasks and metrics requires only View Training.

Prerequisites​

ItemRequirement
Dataset versionrobochallenge, LeRobot v2, or v3. The RoboChallenge layout can be trained directly, and LeRobot data is converted to the RoboChallenge layout before training
Frameworkspirit
GPU memoryNo fixed lower bound; multi-GPU training is recommended. batch_size defaults to 1 per GPU
DependencyThe platform's model training service is enabled with at least one training location configured; the training image ships with the Spirit-v1.5 base weights
State fieldsobservation.state has at least 8 dimensions: the first 7 are the end-effector pose and the 8th is the gripper width
Video fieldsThree RGB video streams are required, mapped to main_realsense_rgb, handeye_realsense_rgb, and side_realsense_rgb
PermissionCreating requires Create Training Job; viewing requires View Training

Data with joint-angle states cannot train Spirit-v1.5 directly; the state space must be adapted first.

Training Task Creation and Parameters​

Procedure​

  1. Go to Model → Training and select Create Training Job.
  2. Choose a training location: a local GPU or a cloud training location enabled by an administrator.
  3. Under Selected Model, select spirit-v1.5.
  4. Under Training Dataset, choose the data source: Export Records, an uploaded LeRobot dataset, Download Link, or Hugging Face.
  5. Set parameters in Training Parameters; the table below lists their meaning and default values. When using LeRobot data and the camera fields cannot be matched automatically, fill in camera_map.
  6. Enter Notes (optional).
  7. Select Create Training Job.

Training Parameters​

ParameterDescriptionDefaultValid range
batch_sizeBatch size per GPU1Integer, ≥ 1
stepsMaximum training steps10000Integer, ≥ 1
save_intervalCheckpoint save interval2500Integer, applied when greater than 0
log_freqLogging interval25Integer, ≥ 1
num_workersDataLoader processes2Integer, ≥ 0
prefetch_factorDataLoader prefetch factor2Integer, ≥ 1
num_gpusNumber of torchrun processesVisible GPU count, otherwise 1Positive integer
wandb_modeMetric reporting modedisableddisabled, offline, online
pretrained_pathBase weights directoryBase weights bundled in the imageA directory containing model.safetensors and config.json
task_nameTask name for LeRobot conversionmove_objects_into_boxString
task_promptLanguage prompt for LeRobot conversionDataset task textString
camera_mapMapping from LeRobot camera fields to the three Spirit camerasAuto-inferredJSON

Verification​

Training Monitoring​

The training details page parses metrics in the Spirit log format and plots the curves:

MetricMeaningCriteria
stepNumber of completed training stepsIncreases step by step up to the configured steps
total_stepsConfigured total training stepsMatches steps
lossTraining lossDecreases overall
learning_rateCurrent learning rateChanges according to the schedule

Verification Checklist​

The training service determines the final task state from the container exit code: exit code 0 is recorded as Success, and a nonzero code as Failed.

CheckPass criteria
Task statusThe training details page shows Success and the container exit code is 0
Output directoryspirit_train/ under the output directory
CheckpointsCheckpoints lists the checkpoints; the entry that last points to has type Final, and the rest have type Step
Metric curvesTraining Metrics plots step, loss, and learning_rate
LogsReal-time Logs can be read without repeated errors

Training and inference are separate for Spirit, and deployment uses the platform's inference service. Checkpoints listed in Checkpoints can be downloaded and synced to object storage; see Model Inference for the inference side.

Error Handling​

SymptomPossible causeActionOwner
Conversion reports missing three camerasThe LeRobot data lacks identifiable camera fieldsExplicitly map the three camera fields in camera_mapAlgorithm Engineer
Conversion reports insufficient observation.state dimensionsThe state has fewer than 8 dimensions, or is joint angles rather than an end-effector poseProvide a state vector of a 7-dimensional end-effector pose plus 1-dimensional gripper widthAlgorithm Engineer
Weights directory unavailableThe specified directory lacks model.safetensors or config.jsonUse the base weights bundled in the image, or specify a complete directoryAdministrator
Out of GPU memorybatch_size or num_workers is too largeLower batch_size and num_workers; switch to multi-GPU trainingAlgorithm Engineer
Training fails immediately with a dataset-not-found errorThe input directory is neither in the RoboChallenge layout nor convertibleCheck meta/info.json and the directory structure, then select the dataset againProject Manager
Training location unavailableThe platform has not enabled that training location, or its GPU is unavailableSwitch to another training location; ask an administrator to check the Training ServiceAdministrator
PagePurpose
Model TrainingCreating, monitoring, and quotas for training tasks
LeRobot datasets and trainingDataset export and training overview
LeRobot v2 and v3 format differencesDifferences between the two data formats and migration
Data exportGenerate a LeRobot training package