simpletuner/qwen-image
Train a Qwen Image 2.1 LoRA on your own data
Run simpletuner/qwen-image with an API
Use one of our client libraries to get started quickly. Clicking on a library will take you to the Playground tab where you can tweak different inputs, see the results, and copy the corresponding code to use in your own project.
Input schema
The fields you can use to run this model with an API. If you don't give a value for a field its default value will be used.
| Field | Type | Default value | Description |
|---|---|---|---|
| train_data |
string
|
Zip or tar of training images with matching .txt captions.
|
|
| hf_dataset |
string
|
Hugging Face dataset repo ID to use when no archive is provided (e.g., user/dataset).
|
|
| model |
None
|
Qwen-Image-2.1
|
Base model to train. Qwen Image 2.1 uses the 80 GB assisted REPA recipe.
|
| resolution |
None
|
512+1024
|
Training and validation scales; multi-scale sampling preserves aspect ratios.
|
| use_synthetic_regularisation |
boolean
|
True
|
Qwen-Image-2.1: mix synthetic images into 50% of updates to reduce concept bleed into unrelated prompts. Disable to give all updates to your images; roughly half as many total steps provide the same number of concept updates, but bleed increases. Has no effect on original Qwen-Image.
|
| hf_caption_column |
string
|
caption
|
Caption column when using hf_dataset.
|
| validation_prompt |
string
|
a detailed photograph, natural lighting
|
Validation prompt; include the concept or trigger you are teaching.
|
| enable_crop |
boolean
|
False
|
Enable cropping when preparing samples.
|
| crop_style |
None
|
center
|
Crop location style when cropping is enabled.
|
| crop_aspect |
None
|
preserve
|
Aspect handling for crops: square (1:1) or preserve source aspect.
|
| train_batch_size |
integer
|
1
Min: 1 Max: 4 |
Training batch size (1-4).
|
| checkpoints_total_limit |
integer
|
5
Min: 1 Max: 5 |
Maximum checkpoints to retain (max 5).
|
| checkpoint_step_interval |
integer
|
500
Min: 1 |
Save checkpoints and generate validation images every N optimizer updates.
|
| max_train_steps |
integer
|
4000
Min: 1 |
Total optimizer updates; the multi-scale 80 GB recipe starts at 4000.
|
| s3_bucket |
string
|
|
S3-compatible bucket for publishing checkpoints.
|
| s3_region |
string
|
S3 region (optional).
|
|
| s3_endpoint_url |
string
|
Custom S3 endpoint URL (for non-AWS providers).
|
|
| s3_base_path |
string
|
Prefix inside the bucket (defaults to cog/qwen-image/{job_id}).
|
|
| s3_public_base_url |
string
|
Public base URL to build shareable links (optional).
|
|
| s3_access_key |
string
|
S3 access key (leave blank to use IAM/instance roles).
|
|
| s3_secret_key |
string
|
S3 secret key (leave blank to use IAM/instance roles).
|
|
| hub_model_id |
string
|
Hugging Face model repo for the final LoRA and validation images (e.g., user/model).
|
|
| hf_token |
string
|
Hugging Face token for downloads and write access when publishing to hub_model_id.
|
|
| return_logs |
boolean
|
True
|
Print the tail of debug.log.
|
{
"type": "object",
"title": "Input",
"properties": {
"model": {
"enum": [
"Qwen-Image-2.1",
"Qwen-Image"
],
"type": "string",
"title": "model",
"description": "Base model to train. Qwen Image 2.1 uses the 80 GB assisted REPA recipe.",
"default": "Qwen-Image-2.1",
"x-order": 2
},
"hf_token": {
"type": "string",
"title": "Hf Token",
"format": "password",
"x-order": 22,
"nullable": true,
"writeOnly": true,
"description": "Hugging Face token for downloads and write access when publishing to hub_model_id.",
"x-cog-secret": true
},
"s3_bucket": {
"type": "string",
"title": "S3 Bucket",
"default": "",
"x-order": 14,
"description": "S3-compatible bucket for publishing checkpoints."
},
"s3_region": {
"type": "string",
"title": "S3 Region",
"x-order": 15,
"nullable": true,
"description": "S3 region (optional)."
},
"crop_style": {
"enum": [
"center",
"random"
],
"type": "string",
"title": "crop_style",
"description": "Crop location style when cropping is enabled.",
"default": "center",
"x-order": 8
},
"hf_dataset": {
"type": "string",
"title": "Hf Dataset",
"x-order": 1,
"nullable": true,
"description": "Hugging Face dataset repo ID to use when no archive is provided (e.g., user/dataset)."
},
"resolution": {
"enum": [
"512+1024",
"512",
"1024"
],
"type": "string",
"title": "resolution",
"description": "Training and validation scales; multi-scale sampling preserves aspect ratios.",
"default": "512+1024",
"x-order": 3
},
"train_data": {
"type": "string",
"title": "Train Data",
"format": "uri",
"x-order": 0,
"nullable": true,
"description": "Zip or tar of training images with matching .txt captions."
},
"crop_aspect": {
"enum": [
"square",
"preserve"
],
"type": "string",
"title": "crop_aspect",
"description": "Aspect handling for crops: square (1:1) or preserve source aspect.",
"default": "preserve",
"x-order": 9
},
"enable_crop": {
"type": "boolean",
"title": "Enable Crop",
"default": false,
"x-order": 7,
"description": "Enable cropping when preparing samples."
},
"return_logs": {
"type": "boolean",
"title": "Return Logs",
"default": true,
"x-order": 23,
"description": "Print the tail of debug.log."
},
"hub_model_id": {
"type": "string",
"title": "Hub Model Id",
"x-order": 21,
"nullable": true,
"description": "Hugging Face model repo for the final LoRA and validation images (e.g., user/model)."
},
"s3_base_path": {
"type": "string",
"title": "S3 Base Path",
"x-order": 17,
"nullable": true,
"description": "Prefix inside the bucket (defaults to cog/qwen-image/{job_id})."
},
"s3_access_key": {
"type": "string",
"title": "S3 Access Key",
"format": "password",
"x-order": 19,
"nullable": true,
"writeOnly": true,
"description": "S3 access key (leave blank to use IAM/instance roles).",
"x-cog-secret": true
},
"s3_secret_key": {
"type": "string",
"title": "S3 Secret Key",
"format": "password",
"x-order": 20,
"nullable": true,
"writeOnly": true,
"description": "S3 secret key (leave blank to use IAM/instance roles).",
"x-cog-secret": true
},
"max_train_steps": {
"type": "integer",
"title": "Max Train Steps",
"default": 4000,
"minimum": 1,
"x-order": 13,
"description": "Total optimizer updates; the multi-scale 80 GB recipe starts at 4000."
},
"s3_endpoint_url": {
"type": "string",
"title": "S3 Endpoint Url",
"x-order": 16,
"nullable": true,
"description": "Custom S3 endpoint URL (for non-AWS providers)."
},
"train_batch_size": {
"type": "integer",
"title": "Train Batch Size",
"default": 1,
"maximum": 4,
"minimum": 1,
"x-order": 10,
"description": "Training batch size (1-4)."
},
"hf_caption_column": {
"type": "string",
"title": "Hf Caption Column",
"default": "caption",
"x-order": 5,
"description": "Caption column when using hf_dataset."
},
"validation_prompt": {
"type": "string",
"title": "Validation Prompt",
"default": "a detailed photograph, natural lighting",
"x-order": 6,
"description": "Validation prompt; include the concept or trigger you are teaching."
},
"s3_public_base_url": {
"type": "string",
"title": "S3 Public Base Url",
"x-order": 18,
"nullable": true,
"description": "Public base URL to build shareable links (optional)."
},
"checkpoints_total_limit": {
"type": "integer",
"title": "Checkpoints Total Limit",
"default": 5,
"maximum": 5,
"minimum": 1,
"x-order": 11,
"description": "Maximum checkpoints to retain (max 5)."
},
"checkpoint_step_interval": {
"type": "integer",
"title": "Checkpoint Step Interval",
"default": 500,
"minimum": 1,
"x-order": 12,
"description": "Save checkpoints and generate validation images every N optimizer updates."
},
"use_synthetic_regularisation": {
"type": "boolean",
"title": "Use Synthetic Regularisation",
"default": true,
"x-order": 4,
"description": "Qwen-Image-2.1: mix synthetic images into 50% of updates to reduce concept bleed into unrelated prompts. Disable to give all updates to your images; roughly half as many total steps provide the same number of concept updates, but bleed increases. Has no effect on original Qwen-Image."
}
}
}
Output schema
The shape of the response you’ll get when you run this model with an API.
{
"type": "string",
"title": "Output",
"format": "uri"
}