Skip to content

voplica.types.ai.common

The protobuf package voplica.types.ai.common: 0 services, 3 messages and 17 enums, defined in voplica/types/ai/common/caption_conflict_strategy.proto, voplica/types/ai/common/controlnet_type.proto, voplica/types/ai/common/d_type.proto, voplica/types/ai/common/generation_mode.proto, voplica/types/ai/common/inference_mode.proto, voplica/types/ai/common/model_affinity.proto, voplica/types/ai/common/model_family_type.proto, voplica/types/ai/common/model_file_role.proto, voplica/types/ai/common/model_file_structure.proto, voplica/types/ai/common/model_reference.proto, voplica/types/ai/common/model_type.proto, voplica/types/ai/common/quantization_type.proto, voplica/types/ai/common/subject_category.proto, voplica/types/ai/common/training_loss_type.proto, voplica/types/ai/common/training_lr_scheduler.proto, voplica/types/ai/common/training_noise_scheduler.proto, voplica/types/ai/common/training_optimizer.proto, voplica/types/ai/common/training_timestep_sampling.proto.

Field Number Type Label Description
label 1 string
possible_outputs 2 voplica.types.base.FileType repeated
lora_compatibility 3 ModelFamily repeated
generation_modes 4 GenerationMode repeated
controlnet 5 bool
differential_diffusion 6 bool
reference_images 7 bool True when the family consumes reference images (identity/context conditioning).
reference_images_on_inpaint 8 bool
hosted 9 bool optional
third_party 10 bool
component_slots 11 string repeated The diffusers slots a SERVED pipeline of this family needs. Empty for provider-backed families (nothing of ours ever loads their weights). A variant whose imported file set does not cover every slot is still valid: the missing components come from the donor (based_on_model_variant_id) and the verification report names them in donor_components.
gguf_single_file 12 bool
video_part_refine 13 bool
inference_modes 14 InferenceMode repeated
Field Number Type Label Description
allowed_mime_types 1 voplica.types.base.MimeType repeated If not provided - it means all mime types are allowed
Field Number Type Label Description
model_variant_id 1 string LoRa / DoRa / fine-tune model id.
recommended_base_model_variant_id 2 string optional Recommended base model to use when applying provided image LoRa model.
recommended_weight 3 float optional Recommended strength/weight when using this model
recommended_cfg 4 float optional Recommended CFG scale
concept_subject_text 5 string optional If specified this subject text may be used when used with the selected LoRA model
Name Number Description
CAPTIONING_CONFLICT_STRATEGY_UNSPECIFIED 0
IGNORE 1 Skips files with existing captions
OVERWRITE 2 Overwrite existing captions
APPEND_NEW_TO_END 3 Append newly generated captions after existing captions
APPEND_NEW_TO_BEGINNING 4 Append newly generated captions before existing captions
Name Number Description
CONTROLNET_TYPE_UNSPECIFIED 0
DEPTH 1
OPENPOSE 2
CANNY 3
Name Number Description
D_TYPE_UNSPECIFIED 0
FLOAT32 1 aka FP32
FLOAT16 2 aka FP16
BFLOAT16 3 BF16
FLOAT64 4 FP64 / double
UINT8 5 e.g. image pixels, uint8 activations
INT8 6 common quantized storage
INT16 7
INT32 8
BOOL 9
FLOAT8 10
Name Number Description
GENERATION_MODE_UNSPECIFIED 0
T2I 1
I2I_INPAINT 2
I2I_EDIT 3
T2V 20
I2V 21
V2V 22
S2V 23 Speech/audio-driven video generation: supplied audio drives synchronized motion/lip-sync
T2A 40 –– Audio output (40-49) –– Text-to-audio: a prompt (plus optional lyrics) renders a music / audio track. The first audio-producing mode on the platform (MiniMax Music 3).
Name Number Description
INFERENCE_MODE_UNSPECIFIED 0
AUTO 1
FAST 2
BALANCED 3
ORIGINAL 4
Name Number Description
MODEL_VARIANT_RUNTIME_STATE_UNSPECIFIED 0
MODEL_VARIANT_RUNTIME_STATE_COLD 1 No live worker holds the model at any tier - expect a download AND a load.
MODEL_VARIANT_RUNTIME_STATE_IDLE 2 On disk on at least one live worker - expect a load, no download.
MODEL_VARIANT_RUNTIME_STATE_ACTIVE 3 In RAM or VRAM on at least one live worker - the fastest start.
Name Number Description
MODEL_FAMILY_UNSPECIFIED 0
SDXL 1
FLUX_1_DEV 2
Z_IMAGE_TURBO 3
Z_IMAGE_BASE 4
FLUX_2_KLEIN_9B 5
WAN_2_2_T2V_A14B 6
WAN_2_2_I2V_A14B 7
LTX_2_2 8
LTX_2_3 9
WAN_2_2_S2V_14B 10
QWEN_IMAGE_EDIT_2511 11
KREA_2 12 Krea 2: image family with reference-image conditioning (identity/context) alongside text-to-image and image editing. differential_diffusion: the platform refine encodes per-region strength as a soft differential change-map; KREA_2 serves it on Krea2InpaintPipeline’s threshold engine (the soft mask drives per-pixel exit steps), with the service normalizing the differential map convention (white = preserve) onto the pipeline’s inpaint convention (white = regenerate) at the boundary.
LTX_2_5 13 LTX 2.5: the next LTX video generation (LTX_2_3’s successor — same two-stage latent-upsampling shape, same distilled/SFT split). Video-only family.
MINIMAX_H3 14 MiniMax H3: video family with reference conditioning. The FIRST family to declare V2V — its references channel takes whole videos (frames + fps + their own soundtrack) as semantic conditioning rather than as a restyle source with bound geometry.
MINIMAX_MUSIC_3 15 MiniMax Music 3: the platform’s FIRST possible_outputs: [AUDIO_FILE] family, and the only consumer of the new T2A mode — a prompt (plus optional lyrics) renders a music track. No LoRA compatibility is declared: nothing trains adapters for this family today, and an absent list is what the resolver reads as “no combinable adapter exists” (WAN_2_2_S2V_14B’s explicit [] says the same thing in one more character).
SEEDANCE_2_5 16
NANO_BANANA_PRO 17
NANO_BANANA_2 18
QWEN_IMAGE_2512 19
FLUX_2_KLEIN_BASE_9B 20
QWEN_IMAGE_2_1 21
WAN_3_0 22
WAN_3_0_PRIME 23
FLUX_3_KLEIN 24
FLUX_3_KLEIN_BASE 25

What ONE file inside a model variant’s asset IS. A variant holds exactly one primary (ROLE_MODEL_WEIGHTS / ROLE_DIFFUSION_WEIGHTS / ROLE_FULL_CHECKPOINT / ROLE_LORA / ROLE_CONTROLNET) plus any companions (ROLE_VAE, ROLE_TEXT_ENCODER).

The role is DECLARED at registration by the importer (ConvertParamType.MODEL_GEN_ROLE_ID -> voplica.types.file.ModelGenInfo.role) and LEARNED again, per file, by the model-files verification from the tensors themselves. The learned value wins at read time.

Every value carries the ROLE_ prefix on purpose: protobuf scopes enum VALUE names to the enclosing PACKAGE, and voplica.types.ai.common.ModelType already declares LORA, CONTROLNET, VAE and UPSCALER (model_type.proto). Bare names would not compile.

Name Number Description
MODEL_FILE_ROLE_UNSPECIFIED 0
ROLE_MODEL_WEIGHTS 1 The variant’s main weights, kind not yet learned - what the IMPORTER declares before any tensor has been read. Also what a LoRA/ControlNet file declares at import: “the main weights of whatever this model is”.
ROLE_DIFFUSION_WEIGHTS 2 Learned: diffusion transformer / unet only. Everything else comes from the donor (based_on_model_variant_id) or from companions in the same asset.
ROLE_FULL_CHECKPOINT 3 Learned: several components (transformer + VAE and/or text encoders) in one file.
ROLE_VAE 4
ROLE_TEXT_ENCODER 5 component_name says which diffusers slot this encoder fills (“text_encoder”, “text_encoder_2”, …).
ROLE_LORA 6
ROLE_CONTROLNET 7
ROLE_UPSCALER 8
ROLE_CONFIG 9 json/yaml. Never imported - kept so a refusal can be honest about what the file was.
ROLE_OTHER 10
Name Number Description
MODEL_FILE_STRUCTURE_UNSPECIFIED 0
ZIP 1 Full model inside ZIP archive
SAFETENSORS 2 Full model (common for models with small text encoder parts. Rare for models with big text encoder parts)
TRANSFORMER_SAFETENSORS 3 Pruned model (only transformer part)
TRANSFORMER_ZIP 4 Pruned model inside ZIP archive (only transformer part) (rare)
GGUF 5 Full model as GGUF (rare). Declared for correctness: NO loader exists for this structure today - every .gguf the platform resolves is TRANSFORMER_GGUF (see ModelFamilyExtension.gguf_single_file).
TRANSFORMER_GGUF 6 Pruned model in gguf format (only transformer part)
Name Number Description
MODEL_TYPE_UNSPECIFIED 0
CHECKPOINT 1
LORA 2
CONTROLNET 3
VAE 4
UPSCALER 5
Name Number Description
QUANTIZATION_TYPE_UNSPECIFIED 0
QUANT_NONE 1 no quantization
QUANT_INT8 2 standard 8-bit integer quantization
QUANT_INT4 3 generic 4-bit quantization
QUANT_UINT8 4 unsigned 8-bit
QUANT_Q4_0 5 q4_0 style
QUANT_Q4_1 6 q4_1 style
QUANT_Q5_0 7
QUANT_Q5_1 8
QUANT_NF4 9 nf4 / normal float 4
QUANT_Q4F16 10 q4f16 style (4-bit with f16 scale)
QUANT_GPTQ 11 GPTQ family
QUANT_AWQ 12 AWQ family
QUANT_BNB 13 bitsandbytes formats (bnb)
QUANT_FP8 14 fp8-like quant (emerging)
QUANT_FP16 15 Half-precision formats standard 16-bit floating point
QUANT_BF16 16 bfloat16 (brain floating point)
QUANT_Q2_K 17 GGUF k-quants and modern formats (learned by model files verification)
QUANT_Q3_K_S 18
QUANT_Q3_K_M 19
QUANT_Q3_K_L 20
QUANT_Q4_K_S 21
QUANT_Q4_K_M 22
QUANT_Q5_K_S 23
QUANT_Q5_K_M 24
QUANT_Q6_K 25
QUANT_Q8_0 26
QUANT_FP4 27 4-bit float (e.g. fp4_e2m1)
QUANT_SVDQ_INT4 28 Nunchaku / SVDQuant int4
QUANT_SVDQ_FP4 29 Nunchaku / SVDQuant fp4
QUANT_FP8_SCALED 30 ComfyUI comfy_quant / legacy scaled-fp8: fp8 weights + per-layer scales
QUANT_NVFP4 31 ComfyUI comfy_quant nvfp4: e2m1 nibble pairs packed into UINT8, fp8 per-block scales (group_size 16) and one f32 global scale. Dequantised to bf16 at load.

What KIND OF SUBJECT a thing depicts or targets. One taxonomy reused everywhere:

  • a DatasetSubject’s kind (LOCALIZABLE categories only: CHARACTER_GENERIC, OBJECT, VEHICLE, CLOTHES, … - things that can be detected/cropped in an image);
  • a preparation target’s category (adds framings like CHARACTER_FACE - a face-framed target of a CHARACTER subject; never a subject kind itself);
  • whole-image categories (STYLE, BACKGROUND, PLACE, POSE, CONCEPT, GENERIC) - valid for targets, trainings, models, and datasets, but never for subjects (nothing to localize);
  • a training’s / model’s / checkpoint’s category and a dataset’s best-for hint.
Name Number Description
SUBJECT_CATEGORY_UNSPECIFIED 0
GENERIC 1 Any model. Same as unspecified.
STYLE 2 Specific style
CONCEPT 3 Concept. for example, photo angle, details amount, type of eyes, zoom, tattoo, etc.
POSE 4
CLOTHES 5
VEHICLE 6
OBJECT 7
BACKGROUND 8
PLACE 9
CHARACTER_GENERIC 100 Generic character (for example full body character LoRa)
CHARACTER_FACE 101 Character face only (for example LoRa trained to reproduce a specific face only)
Name Number Description
TRAINING_LOSS_TYPE_UNSPECIFIED 0
L1 1
L2 2 L2 is the default recommended setting for image model training (FLUX, SDXL, etc.)
HUBER 3
SMOOTH_L1 4

How the LEARNING RATE evolves over training (kohya --lr_scheduler, diffusers get_scheduler). This is distinct from the NOISE scheduler that governs the diffusion noising process (TrainingNoiseScheduler).

COSINE_WITH_RESTARTS is the scheduler that consumes StandardTrainingParams.lr_scheduler_cycles.

Name Number Description
TRAINING_LR_SCHEDULER_UNSPECIFIED 0
TRAINING_LR_SCHEDULER_CONSTANT 1
TRAINING_LR_SCHEDULER_CONSTANT_WITH_WARMUP 2
TRAINING_LR_SCHEDULER_COSINE 3
TRAINING_LR_SCHEDULER_COSINE_WITH_RESTARTS 4
TRAINING_LR_SCHEDULER_LINEAR 5
TRAINING_LR_SCHEDULER_POLYNOMIAL 6

The diffusion NOISE scheduler used during training - i.e. how noise is added to / removed from latents while computing the training loss (ai-toolkit train.noise_scheduler). This is distinct from the LEARNING RATE scheduler (TrainingLrScheduler).

TRAINING_NOISE_SCHEDULER_UNSPECIFIED means “let the trainer pick the canonical scheduler for the target ModelFamily” (for example FLOWMATCH for FLUX / SD3 / Z-Image flow-matching families, DDPM for SDXL). Set an explicit value only to override that default.

Name Number Description
TRAINING_NOISE_SCHEDULER_UNSPECIFIED 0
TRAINING_NOISE_SCHEDULER_FLOWMATCH 1 Rectified-flow / flow-matching objective (FLUX, SD3, Z-Image, WAN, LTX, …).
TRAINING_NOISE_SCHEDULER_DDPM 2 Denoising Diffusion Probabilistic Models objective (SDXL / SD1.5 epsilon or v-prediction).
TRAINING_NOISE_SCHEDULER_EDM 3 Continuous-time EDM-style noising (Karras et al.).
Name Number Description
TRAINING_OPTIMIZER_UNSPECIFIED 0
ADAMW8BIT 1
ADAMW 2
PRODIGY 3
ADA_FACTOR 4

How diffusion timesteps are sampled during training. Enum values are package-prefixed to avoid name collisions in the shared voplica.types.ai.common namespace (proto3 enum values are scoped to the enclosing package, not the enum).

Name Number Description
TRAINING_TIMESTEP_SAMPLING_UNSPECIFIED 0
TRAINING_TIMESTEP_SAMPLING_UNIFORM 1
TRAINING_TIMESTEP_SAMPLING_SHIFT 2
TRAINING_TIMESTEP_SAMPLING_FLUX_SHIFT 3
TRAINING_TIMESTEP_SAMPLING_SIGMA 4
TRAINING_TIMESTEP_SAMPLING_SIGMOID 5