The protobuf package voplica.types.ai.training: 0 services, 26 messages and 0 enums, defined in voplica/types/ai/training/ema.proto, voplica/types/ai/training/training.proto, voplica/types/ai/training/training_workflow.proto.
| Field |
Number |
Type |
Label |
Description |
| use_ema |
1 |
bool |
|
|
| ema_decay |
2 |
float |
|
|
| Field |
Number |
Type |
Label |
Description |
| last_sample_requested_timestamp |
1 |
uint64 |
|
last_sample_requested_timestamp indicates the user requested a sample manually. Samples are normally generated automatically on the trainer’s own cadence (typically a step-count threshold - per-EPOCH cadence is NOT guaranteed; e.g. ai-toolkit samples by steps); users may request samples in between. If last_sample_requested_timestamp > last_sample_generated_timestamp the training worker knows to generate a sample as soon as possible. Services should rate-limit manual requests (recommended: at most once per 15 minutes). |
| last_sample_generated_timestamp |
2 |
uint64 |
|
|
| samples |
3 |
ModelTrainingSampleConfig |
repeated |
Samples to execute when sampling is triggered. |
| sample_after_save |
4 |
bool |
|
When true, also run samples after each checkpoint save. |
| steps_sample_threshold |
5 |
uint64 |
|
0 means no additional samples. >0 means sample every N training steps. |
| Field |
Number |
Type |
Label |
Description |
| save_on_stop |
1 |
bool |
|
Save the model when training stops regardless of steps_save_threshold. |
| dtype |
2 |
voplica.types.ai.common.DType |
|
Checkpoint weight dtype. Quantization options may be added later. |
| steps_save_threshold |
3 |
uint64 |
|
Save the model every N training steps. 0 means do not save on a threshold. |
| model_name |
4 |
string |
optional |
Optional model name to embed in the trained model metadata. |
| last_save_requested_timestamp |
5 |
uint64 |
|
|
| last_save_completed_timestamp |
6 |
uint64 |
|
|
| max_step_saves_to_keep |
7 |
uint32 |
|
|
| Field |
Number |
Type |
Label |
Description |
| length_ms |
1 |
uint64 |
|
Sample length in milliseconds. |
| sample_rate |
2 |
uint32 |
|
Sample rate (Hz). |
One saved training checkpoint. It always carries inference-ready weights (grouped under
model_asset_id) plus optional full state (weights + optimizer + scheduler + …) needed
for ModelTrainingContinueFrom.trained_model_checkpoint_id continuation. The checkpoint
is attached to a ModelVariant (model_variant_id) only when the owning job had an
output_model_id; otherwise it stays unattached until the user calls
CreateModelVariantFromTrainingCheckpoint.
| Field |
Number |
Type |
Label |
Description |
| id |
1 |
string |
|
|
| model_training_job_id |
2 |
string |
|
|
| model_training_run_id |
3 |
string |
|
|
| step |
4 |
uint64 |
|
Training step at which the checkpoint was saved. |
| created_at |
5 |
uint64 |
|
Seconds since epoch. |
| model_asset_id |
6 |
string |
|
Asset grouping the inference-ready weight files of this checkpoint. Always populated, so a ModelVariant can be created from this checkpoint at any time. |
| model_variant_id |
7 |
string |
optional |
Model variant carrying the inference-ready weights. Populated only when the job had an output_model_id (or after CreateModelVariantFromTrainingCheckpoint). Suitable for ModelTrainingContinueFrom.model_variant_id continuation when present. |
| model_family |
8 |
voplica.types.ai.common.ModelFamily |
|
Family/category of the produced weights, denormalized from the training config so a variant can be created later without re-reading the run. |
| subject_category |
9 |
voplica.types.ai.common.SubjectCategory |
|
|
| checkpoint_files |
10 |
voplica.types.file.FileInfo |
repeated |
Full set of files comprising this checkpoint (weights, optimizer state, scheduler state, EMA buffers, RNG state, etc.). Required for ModelTrainingContinueFrom.trained_model_checkpoint_id continuation. May be empty when only inference weights were saved. |
| metrics_snapshot |
11 |
ModelTrainingMetricsSnapshot |
optional |
Snapshot of training metrics at the time of saving. |
| samples_group_id |
12 |
string |
optional |
Optional samples group id when samples were produced together with this checkpoint (typically when sample_after_save = true). |
| checkpoint_name |
13 |
string |
optional |
Optional human-friendly name (for example “step_5000.safetensors”). |
| trained_from_model_variant_id |
14 |
string |
optional |
Continuation lineage: the model variant this run continued from, if any (copied from ModelTrainingContinueFrom.model_variant_id). |
| trained_from_model_checkpoint_id |
15 |
string |
optional |
Continuation lineage: the training checkpoint this run continued from, if any (copied from ModelTrainingContinueFrom.trained_model_checkpoint_id). |
| Field |
Number |
Type |
Label |
Description |
| model_family |
1 |
voplica.types.ai.common.ModelFamily |
|
Base model family which the trained model targets. Combined with model_type defines the architecture of the produced variants. |
| base_model_variant_id |
2 |
string |
optional |
Model VARIANT whose weights are used as the base for training/fine-tuning. Omitted when training a model from scratch (only model_family/model_type define architecture in that case). This selects the weights to train ON; it is distinct from ModelTrainingJob.output_model_id (where produced variants are saved). Reproducibility relies on model-variant weight FILES being immutable once verified - replacing a variant’s files in place would silently change what “the same base” means for past runs. |
| model_type |
3 |
voplica.types.ai.common.ModelType |
|
Destination model type (i.e. what kind of model are we training: full checkpoint, LoRA, ControlNet, etc.). |
| continue_training |
4 |
ModelTrainingContinueFrom |
optional |
Optionally continue training instead of starting from scratch. Continuation does NOT affect dataset preparation - the same recipe and prepared snapshot can be reused. |
| training_params |
5 |
ModelTrainingParams |
|
|
| stop_trigger |
6 |
ModelTrainingStopTrigger |
|
When to stop training. If unset, the trainer stops based on training_params. |
| sampling_params |
7 |
ModelSamplingParams |
|
|
| saving_params |
8 |
ModelSavingParams |
|
|
| training_category |
9 |
voplica.types.ai.common.SubjectCategory |
|
Informational hint for the trainer (character, style, object, etc.). |
| training_datasets |
10 |
ModelTrainingDataset |
repeated |
Dataset selections consumed by the trainer. Authoritative for the training run. Each entry references either an existing preparation snapshot or a recipe that the workflow will resolve into a snapshot at start time. |
| data_policy |
11 |
ModelTrainingDataPolicy |
|
Optional dataset policy that controls auto-preparation and partial-dataset behavior. |
| Field |
Number |
Type |
Label |
Description |
| model_variant_id |
1 |
string |
oneof continue_from |
Loads only the weights of the model variant to continue training. Optimizer, scheduler, tokenizer state are NOT restored. Use lower initial learning rate. |
| trained_model_checkpoint_id |
2 |
string |
oneof continue_from |
Loads weights plus optimizer, scheduler, and any other metadata needed to continue training, when the trainer can verify the metadata is compatible. Falls back to weights-only restoration otherwise. |
| Field |
Number |
Type |
Label |
Description |
| auto_prepare_missing_items |
1 |
bool |
|
Read when StartModelTrainingJob plans the run. If true and some selected assets still miss items, files or caption formats (including assets that need subject discovery first), the service starts a combined run that discovers, prepares and captions the missing pieces, then trains. If false and anything required is missing, StartModelTrainingJob fails with FAILED_PRECONDITION. |
| fail_on_partial_dataset |
2 |
bool |
|
If true, resolution fails when any selected source asset could not be prepared. |
| min_training_items |
3 |
uint32 |
|
Minimum total training items (after filters) required before training can start. 0 means no minimum. Enforced at snapshot-resolution time. |
One dataset selection for a training run: WHICH frozen training examples the run consumes.
A selection references prepared data (pinned snapshot | live preparation | recipe) and
FILTERS the snapshot’s items by categories / target_keys / subject_ids /
source_asset_ids. Because items own their captions, there is no separate caption source:
caption_format picks WHICH of each item’s captions the trainer loads (UNSPECIFIED =
train caption-less), and per-selection trigger_words are prepended at load time.
The character pattern: two jobs on the same dataset - one selecting
categories=[CHARACTER_GENERIC] (full-body LoRA), one categories=[CHARACTER_FACE] (face
LoRA) - both resolving to the SAME preparation snapshot, filtered differently.
| Field |
Number |
Type |
Label |
Description |
| source_dataset_id |
1 |
string |
|
|
| preparation_snapshot_id |
2 |
string |
oneof selection |
PINNED: use the given DatasetPreparationSnapshot as-is. Resolution fails if the snapshot lacks any required_file_kinds or (when require_captions) caption_format. |
| recipe_selection |
3 |
ModelTrainingDatasetRecipeSelection |
oneof selection |
|
| preparation_id |
12 |
string |
oneof selection |
|
| source_asset_ids |
4 |
string |
repeated |
Optional subset of source assets to include. Empty means “all current source assets”. |
| sampling_weight |
6 |
double |
|
0 means default weight 1.0. |
| repeats |
7 |
uint32 |
|
0 means default repeats 1. |
| required_file_kinds |
8 |
voplica.types.ai.dataset.PreparedFileKind |
repeated |
Required file kinds per item. Typically [TRAINING_SAMPLE], plus MASK for masked training. Resolution fails when the snapshot lacks any of them for the selected items. |
| target_keys |
13 |
string |
repeated |
Recipe target variants this selection trains on (for example [“face_1024_square”]). Empty means “no target constraint”. Composes with categories as independent AND filters - categories are the semantic pick (face vs full-body), target_keys the precise structural one (face_1024 vs face_512). |
| categories |
16 |
voplica.types.ai.common.SubjectCategory |
repeated |
Semantic filter: only items whose target category is listed (e.g. [CHARACTER_FACE] for a face LoRA). Empty means “no category constraint”. |
| subject_ids |
17 |
string |
repeated |
Identity filter: only items of these DatasetSubjects (e.g. [anna_subject_id] so a group photo contributes only Anna’s crops). Empty means “no subject constraint”; when set, subjectless (whole-image) items are excluded. |
| caption_format |
14 |
voplica.types.ai.dataset.DatasetCaptionFormat |
|
WHICH caption each item contributes: the trainer loads this format’s text from the frozen item (+ trigger_words). UNSPECIFIED = train caption-less (trigger words only, if any) - the STYLE fast lane. |
| require_captions |
15 |
bool |
|
When true, resolution fails (FAILED_PRECONDITION) if any selected item lacks a caption_format caption; when false, such items train caption-less. |
| subset_name |
9 |
string |
optional |
Optional human-friendly subset name (for trainers that group items into subsets). |
| trigger_words |
10 |
string |
repeated |
Trigger words prepended to every loaded caption for THIS selection at training time (for example [“ohwx”]). They are deliberately NOT part of the dataset or its captions, so the same data can train models with and without triggers, and different selections in one job can carry different triggers. Excluded from data_selection_fingerprint. |
| video_params |
18 |
ModelTrainingDatasetVideoParams |
optional |
VIDEO selections only: temporal loader knobs for this selection (ignored for image selections). Per-selection - NOT job-level - because one multi-dataset job routinely mixes an IMAGE identity dataset with a VIDEO motion dataset for the same character LoRA, and a job-level knob cannot express that. Unset = trainer defaults for the model family. |
| data_selection_fingerprint |
20 |
string |
|
INTENT identity of this selection: a stable hash over the selection AS SPECIFIED - source_dataset_id, the literal selection arm (pinned snapshot id | preparation id | recipe fingerprint + reuse policy), source_asset_ids, target_keys, categories, subject_ids, caption_format, require_captions, required_file_kinds, sampling_weight, repeats, subset_name, and video_params (contributing ONLY WHEN SET - the canonical payload omits unset fields, so pre-video fingerprints do not rotate). Computable at attach time (before any resolution) and stable across preparation/caption edits, so it serves as the dedup/detach key for job selections. The RESOLVED identity of what a run actually trained on lives on ResolvedModelTrainingDataset.resolved_selection_fingerprint. Training hyperparameters AND trigger_words are intentionally excluded (trigger words are a training-time caption transform, not part of the selected data). |
Temporal loader knobs for ONE video dataset selection. Maps 1:1 onto the trainer’s
(ai-toolkit) video dataset options; the trainer derives family defaults when unset
(e.g. WAN ~33 frames @ 16 fps; LTX ~121 frames @ 25 fps honoring (frames - 1) % 8 == 0).
| Field |
Number |
Type |
Label |
Description |
| num_frames |
1 |
uint32 |
|
Frames sampled per training clip. 0 = trainer default for the model family. |
| fps |
2 |
uint32 |
|
Sampling fps used when a clip is longer than num_frames requires and shrink_video_to_frames is false. 0 = trainer default. |
| shrink_video_to_frames |
3 |
bool |
optional |
When true (the default when unset), each clip is shrunk/stretched temporally to exactly num_frames instead of being sampled at fps. |
| do_i2v |
4 |
bool |
optional |
Train image-to-video conditioning (first-frame conditioning). Unset = family-derived default (true for I2V architectures). |
| do_audio |
5 |
bool |
optional |
Train the audio head from the clips’ muxed audio (audio-capable families only, e.g. LTX-2). Unset = false. |
| Field |
Number |
Type |
Label |
Description |
| resolution |
1 |
voplica.types.image.ImageSize |
|
|
| negative_prompt |
2 |
string |
optional |
Negative prompt. Usually empty for CFG-distilled families such as FLUX. |
| guidance_scale |
3 |
float |
|
Classifier-free guidance scale. 0 means “trainer default for the family” (for example ~4.0 for FLUX, ~7.0 for SDXL). |
| sample_steps |
4 |
uint32 |
|
Number of inference steps for the sample. 0 means “trainer default”. |
| sampler |
5 |
string |
optional |
Inference sampler/scheduler name (for example “flowmatch”, “euler”, “dpmpp_2m”). Empty means “trainer default for the family”. |
| walk_seed |
6 |
bool |
|
When true, advance the seed per prompt so each sample prompt uses a distinct seed (ai-toolkit walk_seed). |
A ModelTrainingJob is the user-facing handle for a single training initiative.
Its dataset selections, hyperparameters, sampling settings, and saving settings live
inside training_config, which is the only authoritative source of those values.
The job may be (re)started multiple times producing one ModelTrainingRun (and one
workflow execution) per start.
To inspect produced artifacts, callers list the job’s checkpoints
(ListModelTrainingCheckpoints, limit 1, descending) and read the most recent one - the
job intentionally does NOT denormalize “latest variant” / “latest checkpoint” pointers,
which avoids write-time invariants and staleness bugs. A checkpoint may or may not be
attached to a ModelVariant (see output_model_id).
| Field |
Number |
Type |
Label |
Description |
| id |
1 |
string |
|
|
| created_at |
2 |
uint64 |
|
Seconds since epoch. |
| owner_id |
3 |
string |
|
|
| search_and_use_visibility_type |
4 |
voplica.types.base.VisibilityType |
|
|
| training_config |
5 |
ModelTrainingConfig |
|
Authoritative training configuration. Dataset selections live in training_config.training_datasets. |
| status |
6 |
voplica.types.base.JobStatus |
|
|
| current_workflow_execution_id |
7 |
string |
optional |
Workflow execution id of the current run (when status is RUNNING/CANCELLING) or of the most recent run. May be empty if the job has never been started. |
| job_message |
8 |
string |
optional |
Error/diagnostic message for the most recent run. |
| stats |
9 |
ModelTrainingJobStats |
|
|
| output_model_id |
10 |
string |
optional |
Optional destination GenModel for produced checkpoints. - When set: every checkpoint saved by the worker also creates a new ModelVariant under this model, and ModelTrainingCheckpoint.model_variant_id is populated. - When empty: checkpoints are stored against the training job only (no model variants are created). The user can later publish any checkpoint as a variant via CreateModelVariantFromTrainingCheckpoint. Independent of training_config.base_model_variant_id (the weights to train on) and training_config.continue_training (the checkpoint to continue from). |
| current_run_id |
11 |
string |
optional |
Persisted training run row id of the current/most recent run. Use GetModelTrainingRun (or ListModelTrainingRuns filtered by model_training_job_id) to fetch the full run record. |
| Field |
Number |
Type |
Label |
Description |
| current_step |
1 |
uint64 |
|
0-based step counter within the current/most recent run. |
| current_epoch |
2 |
uint64 |
optional |
0-based epoch counter, when the trainer reports epochs. |
| total_steps |
3 |
uint64 |
optional |
Target total steps for the current/most recent run (mirrors StandardTrainingParams.total_steps). |
| last_step_duration_ms |
4 |
uint64 |
optional |
Duration of the most recent training step in milliseconds. |
| average_step_duration_ms |
5 |
uint64 |
optional |
Rolling average step duration in milliseconds (window defined by the worker). |
| estimated_time_to_finish_seconds |
6 |
uint64 |
optional |
Estimated time-to-finish for the current run, in seconds. |
| latest_metrics |
7 |
ModelTrainingMetricsSnapshot |
optional |
Latest snapshot of key training metrics (loss, learning rate, eval loss, etc.). |
| stats_updated_at |
8 |
uint64 |
optional |
Timestamp of the last stats update (milliseconds since epoch). |
| Field |
Number |
Type |
Label |
Description |
| model_training_job_id |
1 |
string |
|
|
| model_training_run_id |
2 |
string |
|
|
| step |
3 |
uint64 |
|
|
| metric_key |
4 |
string |
|
|
| value |
5 |
double |
|
|
| captured_at |
6 |
uint64 |
|
|
Snapshot of training metrics at a specific step. Used as the “current” view embedded in
ModelTrainingJobStats.latest_metrics and inside ModelTrainingCheckpoint.metrics_snapshot.
Historical metric values are stored as ModelTrainingMetricPoint time series.
| Field |
Number |
Type |
Label |
Description |
| step |
1 |
uint64 |
|
|
| values |
2 |
map<string, double> |
|
Generic key->value map. Recommended keys (workers should use these when applicable): “loss”, “eval_loss”, “unet_lr”, “te_lr”, “te_2_lr”, “t5_lr”, “clip_score_mean”, “clip_score_min”, “clip_score_max”, “grad_norm”, “grad_scale” Workers may add custom keys; the UI is metric-agnostic. |
| captured_at |
3 |
uint64 |
|
|
| Field |
Number |
Type |
Label |
Description |
| target_polygon_count |
1 |
uint32 |
|
Target polygon count for the rendered preview mesh. |
| preview_render_resolution |
2 |
voplica.types.image.ImageSize |
optional |
Optional render resolution for a preview image of the produced model. |
| Field |
Number |
Type |
Label |
Description |
| standard_training_params |
1 |
StandardTrainingParams |
oneof params |
Standard hyperparameter set used by image / video / audio diffusion trainers (FLUX, SDXL, Z_IMAGE, WAN, LTX, etc.). |
One workflow execution of a training job. Stores the per-run snapshot of inputs
(training config, base model, continuation source) plus the worker-reported terminal
status, final stats, and total trained steps.
| Field |
Number |
Type |
Label |
Description |
| id |
1 |
string |
|
|
| model_training_job_id |
2 |
string |
|
|
| workflow_execution_id |
3 |
string |
optional |
|
| started_at |
4 |
uint64 |
|
Seconds since epoch. |
| completed_at |
5 |
uint64 |
optional |
|
| status |
6 |
voplica.types.base.JobStatus |
|
|
| message |
7 |
string |
optional |
Worker-provided detail for terminal states (typically an error or cancellation reason). |
| output_model_id |
8 |
string |
optional |
Resolved output GenModel id for this run. Empty when the job has no output_model_id (checkpoints are then stored against the job without creating model variants). |
| training_config_snapshot |
9 |
ModelTrainingConfig |
|
Snapshot of ModelTrainingConfig at run start. Subsequent edits to the job config do not affect this run. |
| base_model_variant_id |
10 |
string |
optional |
Base model variant id from the snapshot (denormalized convenience copy of training_config_snapshot.base_model_variant_id). |
| continue_from |
11 |
ModelTrainingContinueFrom |
optional |
Continuation source from the snapshot (denormalized convenience copy of training_config_snapshot.continue_training). |
| latest_stats |
12 |
ModelTrainingJobStats |
|
Latest stats snapshot for this run. |
| trained_steps |
13 |
uint64 |
|
Total training steps executed during this run (may be < total_steps for cancelled or failed runs). To find produced checkpoints/variants, list this run’s checkpoints (ListModelTrainingCheckpoints filtered by model_training_run_id). |
| root_workflow_execution_id |
14 |
string |
|
Root workflow execution that triggered this run. Equals workflow_execution_id for training-only runs. Different from workflow_execution_id when this run is the training-child inside a combined ai.prepare_and_train_model_workflow execution; in that case root_workflow_execution_id is the combined parent and is what StartModelTrainingJobResponse.workflow_execution_id returned to the caller, while workflow_execution_id is the inner training-only child execution. Always populated immediately when the run is created (before any workflow starts). |
| Field |
Number |
Type |
Label |
Description |
| samples_group_id |
1 |
string |
|
|
| samples_time |
2 |
uint64 |
|
|
| step |
3 |
uint64 |
|
Training step at which the samples group was produced. |
| samples |
4 |
ModelTrainingSample |
repeated |
|
| model_variant_id |
5 |
string |
optional |
Variant id of the model saved at the time these samples were generated, if any (typically populated when sample_after_save triggered the sampling). |
| model_training_job_id |
6 |
string |
|
|
| model_training_run_id |
7 |
string |
|
The run that produced these samples. |
| checkpoint_id |
8 |
string |
optional |
Optional checkpoint reference when samples were produced alongside a saved checkpoint. |
| Field |
Number |
Type |
Label |
Description |
| after_trained_steps |
1 |
uint64 |
|
0 means no step limit. >0 means stop after the given number of trained steps. |
| Field |
Number |
Type |
Label |
Description |
| resolution |
1 |
voplica.types.image.ImageSize |
|
|
| length_ms |
2 |
uint64 |
|
Duration of the produced video sample in milliseconds. |
| fps |
3 |
uint32 |
|
Frames per second. |
| negative_prompt |
4 |
string |
optional |
|
| guidance_scale |
5 |
float |
|
0 means “trainer default for the family”. |
| sample_steps |
6 |
uint32 |
|
0 means “trainer default”. |
| sampler |
7 |
string |
optional |
|
| walk_seed |
8 |
bool |
|
|
| Field |
Number |
Type |
Label |
Description |
| total_steps |
1 |
uint64 |
|
Max trained steps. Usually calculated as epochs * images_count * repeats / batch_size. Training may stop earlier according to ModelTrainingStopTrigger. |
| batch_size |
2 |
uint32 |
|
Items trained in parallel (the number of items in VRAM simultaneously). |
| resolutions |
3 |
voplica.types.image.ImageSize |
repeated |
Training resolutions. ai-toolkit currently supports only square resolutions, while OneTrainer can support different aspect ratios. Resolutions belong to dataset preparation targets too - the trainer expects prepared artifacts at the resolutions defined by the recipe targets. |
| enable_bucketing |
4 |
bool |
|
|
| gradient_accumulation_steps |
5 |
int64 |
|
|
| train_unet |
6 |
bool |
|
|
| train_text_encoder |
7 |
bool |
|
|
| gradient_checkpointing |
8 |
bool |
|
|
| lr_scheduler |
9 |
voplica.types.ai.common.TrainingLrScheduler |
|
LEARNING RATE schedule (constant, cosine, cosine_with_restarts, …). The diffusion NOISE scheduler is a separate field below (noise_scheduler). |
| optimizer |
10 |
voplica.types.ai.common.TrainingOptimizer |
|
|
| unet_lr |
11 |
double |
|
Typically default: 0.0005 |
| dtype |
12 |
voplica.types.ai.common.DType |
|
|
| linear_timesteps |
13 |
bool |
optional |
|
| ema_config |
14 |
EMAConfig |
|
|
| apply_t5_attn_mask |
15 |
bool |
optional |
TRAINER-SUPPORT NOTE (fields 15-18): the current ai-toolkit SDTrainer exposes a single learning rate and no per-text-encoder controls; trainers that cannot honor these fields MUST record the fact in the run’s registered stats/message rather than fail. |
| text_encoder_1_lr |
16 |
double |
optional |
Typically default: 0.00005 |
| text_encoder_2_lr |
17 |
double |
optional |
Typically not trained. |
| train_t5 |
18 |
bool |
optional |
|
| network_dim |
19 |
uint32 |
optional |
1 - 256. Default: 32. |
| network_alpha |
20 |
uint32 |
optional |
1 - 256. Default: 16. |
| timestep_sampling |
21 |
voplica.types.ai.common.TrainingTimestepSampling |
optional |
|
| discrete_flow_shift |
22 |
float |
optional |
|
| guidance_scale |
23 |
int32 |
optional |
|
| loss_type |
24 |
voplica.types.ai.common.TrainingLossType |
optional |
Trainers without a matching implementation (e.g. ai-toolkit has no HUBER/SMOOTH_L1) fall back to their default loss and record the substitution in the run stats/message. |
| lr_scheduler_cycles |
25 |
uint32 |
|
1 - 4. Default: 3. Consumed only by TRAINING_LR_SCHEDULER_COSINE_WITH_RESTARTS. |
| min_snr_gamma |
26 |
int32 |
optional |
Max: 20. Min: any (including negative values). UNSET = trainer default (typically 5); an explicit 0 means literally zero (optional exists to disambiguate 0 from unset). |
| noise_offset |
27 |
double |
optional |
Max: 1. Min: any (including negative values). UNSET = trainer default (typically 0.1); an explicit 0 disables noise offset (optional exists to disambiguate 0 from unset). |
| optimizer_args |
28 |
string |
|
Optimizer-specific arguments. Examples: AdamW8Bit: weight_decay=0.1 Adafactor: scale_parameter=False, relative_step=False, warmup_init=False Prodigy: weight_decay=0.5, decouple=True, betas=0.9,0.99, use_bias_correction=False |
| noise_scheduler |
29 |
voplica.types.ai.common.TrainingNoiseScheduler |
|
Diffusion NOISE scheduler for the training objective (ai-toolkit train.noise_scheduler). TRAINING_NOISE_SCHEDULER_UNSPECIFIED lets the trainer pick the canonical scheduler for ModelTrainingConfig.model_family (FLOWMATCH for FLUX/SD3/Z-Image/WAN/LTX, DDPM for SDXL). |
| caption_dropout_rate |
30 |
float |
optional |
Dataset-loader knobs (uniform across all selected datasets). These affect training results, so they are part of the hyperparameter set rather than per-dataset defaults. Caption token dropout rate (0..1). 0 disables dropout. |
| shuffle_caption |
31 |
bool |
optional |
When true, shuffle caption tokens/tags per step (ai-toolkit shuffle_tokens). |
| cache_latents_to_disk |
32 |
bool |
optional |
When true, cache VAE latents to disk to speed up multi-epoch training (default true in most trainers). Exposed so memory-constrained runs can disable it. |
| Field |
Number |
Type |
Label |
Description |
| selection_index |
1 |
uint32 |
|
Stable order matching the order of ModelTrainingConfig.training_datasets. |
| source_dataset_id |
2 |
string |
|
|
| preparation_id |
3 |
string |
|
The preparation this selection resolved through, and the version that was (or will be) frozen. |
| preparation_snapshot_version |
4 |
uint64 |
|
|
| preparation_snapshot_id |
5 |
string |
|
|
| source_asset_ids |
6 |
string |
repeated |
Resolved item filters (verbatim from the selection; the trainer passes them to ListDatasetPreparationSnapshotItems so filtering happens server-side). |
| target_keys |
7 |
string |
repeated |
|
| categories |
8 |
voplica.types.ai.common.SubjectCategory |
repeated |
|
| subject_ids |
9 |
string |
repeated |
|
| required_file_kinds |
10 |
voplica.types.ai.dataset.PreparedFileKind |
repeated |
File kinds the trainer requires per item. |
| caption_format |
11 |
voplica.types.ai.dataset.DatasetCaptionFormat |
|
Which caption each frozen item contributes (UNSPECIFIED = train caption-less) and whether items lacking it fail resolution. |
| require_captions |
12 |
bool |
|
|
| sampling_weight |
13 |
double |
|
|
| repeats |
14 |
uint32 |
|
|
| subset_name |
15 |
string |
optional |
|
| trigger_words |
16 |
string |
repeated |
Trigger words prepended to each loaded caption for this selection at training time. |
| resolved_items_count |
17 |
uint64 |
|
Number of frozen items matching the filters (computed at resolution; the trainer can sanity-check its paged stream against it). |
| resolved_selection_fingerprint |
18 |
string |
|
RESOLVED identity of what this run actually trained on: stable hash over preparation_snapshot_id + the filter set (source_asset_ids, target_keys, categories, subject_ids) + caption_format + require_captions + required_file_kinds + sampling_weight + repeats + subset_name. Complements the intent-level ModelTrainingDataset.data_selection_fingerprint. |
| dataset_owner_id |
19 |
string |
|
|
| revenue_share_eligible |
20 |
bool |
|
|
| root_dataset_id |
21 |
string |
|
|