Skip to content

Checkpointing Segmentado

El checkpointing segmentado queda entre checkpointing en cada block y no usar checkpointing.

Usa activation checkpointing de PyTorch. SimpleTuner ejecuta un grupo contiguo de bloques Transformer en una llamada de checkpoint y pasa el estado oculto devuelto al siguiente grupo. Los grupos más grandes guardan menos estados en los límites, pero siguen recalculando los bloques durante backward; mide el efecto sobre velocidad y memoria máxima.

Para CPU offload y FFN-only checkpointing, usa Unsloth-style checkpointing. La regla corta sigue en Decision Rule.

Controles

{
  "gradient_checkpointing": true,
  "gradient_checkpointing_backend": "torch",
  "gradient_checkpointing_interval": 2
}

En rutas whole-block soportadas, gradient_checkpointing_interval es el ancho del segment. 2 significa checkpoint de blocks 0-1, 2-3, 4-5, etc.

Para controlar VRAM con mas detalle, agrega stride:

{
  "gradient_checkpointing": true,
  "gradient_checkpointing_backend": "torch",
  "gradient_checkpointing_interval": 2,
  "gradient_checkpointing_segment_stride": 4
}

Esto checkpointa blocks 0-1, ejecuta 2-3 normalmente, checkpointa 4-5, ejecuta 6-7 normalmente y repite. El stride debe ser al menos el interval; schedules solapados no son validos.

Rutas segmented whole-block soportadas: Flux.1, Flux.2, Flux.3 Image Klein, HunyuanVideo, Krea 2, LongCat Image, LongCat Video, LTXVideo 0.9, LTXVideo2, Lumina2, MageFlow, MiniMax H3, PixArt, Qwen Image 2.1, SD3, SanaVideo, Z-Image, ZLab I1 y Wan.

Stable Cascade stage C tambien soporta interval y stride, pero aplica el schedule a la secuencia de micro-bloques Res/Timestep/Attention del UNet en vez de a grupos transformer whole-block.

Algunas familias usan semantica de interval especifica del modelo:

Family gradient_checkpointing_interval gradient_checkpointing_segment_stride
Sana Checkpoint cada N-th block Ignorado
Stable Cascade stage C Checkpoint de micro-bloques UNet por interval Stride alterna ventanas UNet checkpointed y no checkpointed
SD1x, SDXL Sin soporte segmented whole-block Ignorado

No compares filas stride cuando stride se ignora. Si los numeros son identicos, normalmente el option no se aplico.

Cuando Usarlo

Usalo despues de que el checkpointing normal por block ya entra en VRAM pero cuesta demasiado tiempo por step. Empieza con 2. Si hay VRAM, prueba 2 con stride 4 en modelos muy profundos.

No esperes que ayude cuando el peak viene sobre todo de pesos entrenables, optimizer state, validation, cache VAE, block swapping o routing. SimpleTuner vuelve a la ruta per-block mas segura cuando una funcion del modelo necesita control por block.

dynamo_use_regional_compilation no es una victoria universal. Ayudo o fue neutral en varios image models, pero fue mala opcion para los perfiles Wan/RamTorch y LTXVideo2 de abajo.

Benchmarks

Medido con ejemplos reales de SimpleTuner en pods single-GPU H100, H200 y L40S. Validation y checkpoint saves estuvieron desactivados, cache preparation quedo fuera, y el compile/setup del primer step dentro del train loop se excluye cuando existe timing post-warmup.

Cada celda medida es post-warmup sec/step / peak VRAM GiB. Las celdas de estado significan: OOM agoto memoria de GPU, failed no llego a training steps medidos, unsupported significa que esa opcion no estaba conectada para esa familia, y not run significa que el sweep no incluyo esa combinacion.

Compara modos dentro de una familia primero. Las comparaciones entre familias son aproximadas porque cambian resolution, frame count, attention backend, model depth, trainable adapter type y dataset shape.

La matriz de abajo es la fuente de verdad para este sweep. Las notas especificas por modelo marcan caveats cuando una fila es coverage data y no una recomendacion.

Resultados Por Familia

ACE Step 1.5

Example: ace_step/v15-base/default/v1-5.peft-lora. Resolution: 512.

Note: This sweep did not produce a usable ACE Step throughput row. The status-only entries below should be treated as coverage gaps, not as a recommendation.

Precision Mode H100 L40S
bf16 none OOM OOM
bf16 activation-offload unsupported unsupported
bf16 layer OOM OOM
bf16 interval2 OOM OOM
bf16 seg2-stride4 OOM OOM
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none OOM OOM
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer OOM OOM
int8-sdnq-hadamard interval2 OOM OOM
int8-sdnq-hadamard seg2-stride4 OOM OOM
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none OOM OOM
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer OOM OOM
fp8-torchao interval2 OOM OOM
fp8-torchao seg2-stride4 OOM OOM
fp8-torchao seg2-stride4-offload unsupported unsupported

Destilacion AnyFlow en Anima

Ejemplo: anima/base-v1.0/default/anyflow-stage1.peft-lora. Resolucion: 1024x1024. Esta fila mide destilacion AnyFlow usando Anima, no el ejemplo LoRA de Anima puro. Usa anima/base-v1.0/default/peft-lora para entrenamiento de imagen Anima puro a 1024x1024.

Precision Mode H100 L40S
bf16 none 1.022 / 17.26 0.719 / 17.21
bf16 activation-offload unsupported unsupported
bf16 layer 1.232 / 5.60 0.903 / 5.56
bf16 interval2 1.252 / 5.60 0.897 / 5.56
bf16 seg2-stride4 1.244 / 5.60 0.898 / 5.56
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 5.417 / 18.61 4.974 / 18.57
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 4.562 / 4.36 4.019 / 4.31
int8-sdnq-hadamard interval2 3.723 / 4.36 3.196 / 4.31
int8-sdnq-hadamard seg2-stride4 3.658 / 4.36 3.140 / 4.31
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none 2.242 / 45.71 OOM
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 2.810 / 5.51 2.576 / 5.46
fp8-torchao interval2 2.846 / 5.51 2.581 / 5.46
fp8-torchao seg2-stride4 2.766 / 5.51 2.567 / 5.46
fp8-torchao seg2-stride4-offload unsupported unsupported

AuraFlow

Example: auraflow/v0.3/default/peft-lora. Resolution: 1024x1024.

Nota: AuraFlow soporta cuantizacion con SDNQ y TorchAO. Las filas cuantizadas sin checkpointing estan abajo; las filas cuantizadas con checkpointing necesitan una nueva medicion completa antes de publicar numeros aqui.

Precision Mode H100 L40S
bf16 none 0.180 / 19.19 0.233 / 19.12
bf16 activation-offload unsupported unsupported
bf16 layer 1.824 / 13.37 0.833 / 13.32
bf16 interval2 1.764 / 16.21 0.877 / 16.14
bf16 seg2-stride4 1.771 / 16.21 0.887 / 16.14
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 0.642 / 12.88 0.610 / 12.87
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer not run not run
int8-sdnq-hadamard interval2 not run not run
int8-sdnq-hadamard seg2-stride4 not run not run
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none 0.621 / 24.53 0.757 / 24.44
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer not run not run
fp8-torchao interval2 not run not run
fp8-torchao seg2-stride4 not run not run
fp8-torchao seg2-stride4-offload unsupported unsupported

Boogu Image

Example: boogu_image/v0.1-base/default/peft-lora. Resolution: 1024x1024.

Precision Mode H100 L40S
bf16 none 0.694 / 59.14 OOM
bf16 activation-offload unsupported unsupported
bf16 layer 0.907 / 23.44 2.641 / 23.39
bf16 interval2 0.912 / 23.44 2.649 / 23.39
bf16 seg2-stride4 0.911 / 23.44 2.648 / 23.39
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 1.488 / 53.24 OOM
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 1.878 / 15.20 3.309 / 15.15
int8-sdnq-hadamard interval2 1.630 / 34.12 2.577 / 34.07
int8-sdnq-hadamard seg2-stride4 1.656 / 34.11 2.574 / 34.06
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none OOM OOM
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 1.713 / 18.48 3.778 / 18.44
fp8-torchao interval2 1.731 / 18.48 3.777 / 18.44
fp8-torchao seg2-stride4 1.721 / 18.48 3.779 / 18.44
fp8-torchao seg2-stride4-offload unsupported unsupported

Chroma

Example: chroma/default/default/peft-lora. Resolution: 1024x1024.

Note: Checkpointed Chroma rows use attention_mechanism=native-efficient, which was the stable attention path for this sweep.

Precision Mode H100 L40S
bf16 none 0.454 / 26.18 0.559 / 26.13
bf16 activation-offload 4.873 / 18.74 4.793 / 18.69
bf16 layer 1.276 / 17.67 1.430 / 17.63
bf16 interval2 1.204 / 21.80 1.349 / 21.75
bf16 seg2-stride4 1.200 / 21.78 1.382 / 21.74
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 1.083 / 21.42 1.061 / 21.37
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 1.714 / 10.41 1.646 / 10.36
int8-sdnq-hadamard interval2 1.443 / 15.72 1.391 / 15.68
int8-sdnq-hadamard seg2-stride4 1.428 / 15.71 1.323 / 15.67
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none 1.122 / 45.44 OOM
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 1.821 / 10.64 2.104 / 10.60
fp8-torchao interval2 1.447 / 27.49 1.871 / 27.44
fp8-torchao seg2-stride4 1.431 / 27.49 1.877 / 27.44
fp8-torchao seg2-stride4-offload unsupported unsupported

Cosmos 2 Image

Example: cosmos/default/default/lycoris-lokr. Resolution: 512x512.

Precision Mode H100 L40S
bf16 none 0.336 / 8.05 0.316 / 8.00
bf16 activation-offload unsupported unsupported
bf16 layer 0.567 / 4.09 0.559 / 4.04
bf16 interval2 0.595 / 4.09 0.544 / 4.04
bf16 seg2-stride4 0.598 / 4.09 0.546 / 4.04
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 0.831 / 6.56 0.783 / 6.56
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 1.315 / 2.44 1.288 / 2.39
int8-sdnq-hadamard interval2 1.346 / 2.44 1.321 / 2.39
int8-sdnq-hadamard seg2-stride4 1.413 / 2.44 1.274 / 2.39
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none 0.850 / 13.30 0.840 / 13.25
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 1.692 / 2.70 1.560 / 2.65
fp8-torchao interval2 1.626 / 2.70 1.544 / 2.65
fp8-torchao seg2-stride4 1.607 / 2.70 1.555 / 2.65
fp8-torchao seg2-stride4-offload unsupported unsupported

Cosmos 3

Example: cosmos3/edge/24g/image.lycoris-lokr. Resolution: 1024 px.

Precision Mode H100 L40S
bf16 none 2.747 / 8.90 2.904 / 8.86
bf16 activation-offload unsupported unsupported
bf16 layer 2.602 / 8.90 2.606 / 8.86
bf16 interval2 2.658 / 8.90 2.567 / 8.86
bf16 seg2-stride4 2.628 / 8.90 2.899 / 8.86
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 17.112 / 6.21 17.965 / 6.16
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 3.238 / 6.21 2.891 / 6.16
int8-sdnq-hadamard interval2 3.253 / 6.21 2.916 / 6.16
int8-sdnq-hadamard seg2-stride4 3.254 / 6.21 2.923 / 6.16
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none 1.849 / 17.84 1.559 / 17.80
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 1.869 / 17.84 1.599 / 17.79
fp8-torchao interval2 1.855 / 17.84 1.600 / 17.80
fp8-torchao seg2-stride4 1.859 / 17.84 1.523 / 17.80
fp8-torchao seg2-stride4-offload unsupported unsupported

ERNIE 4.5 Image

Example: ernie/base/default/peft-lora. Resolution: 512x512.

Precision Mode H100 L40S
bf16 none 0.711 / 15.61 1.282 / 15.56
bf16 activation-offload unsupported unsupported
bf16 layer 1.110 / 4.94 1.840 / 4.90
bf16 interval2 0.876 / 10.16 1.536 / 10.12
bf16 seg2-stride4 0.874 / 10.16 1.532 / 10.12
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 2.782 / 13.75 2.722 / 13.70
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 4.262 / 2.98 4.393 / 2.94
int8-sdnq-hadamard interval2 3.547 / 8.26 3.380 / 8.21
int8-sdnq-hadamard seg2-stride4 3.366 / 8.26 3.457 / 8.21
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none 2.432 / 14.03 2.303 / 13.98
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 3.920 / 3.26 4.008 / 3.22
fp8-torchao interval2 3.316 / 8.54 2.973 / 8.49
fp8-torchao seg2-stride4 2.994 / 8.54 3.046 / 8.49
fp8-torchao seg2-stride4-offload unsupported unsupported

Flux.3 Image Klein

Ejemplo: flux3_image/klein-base/default/peft-lora, Klein Base. Entrenamiento: recortes centrales de 512x512, batch 1, LoRA de atención con rank/alpha 32, AdamW BF16, SDPA nativo y compilación regional Inductor (default, wrapper C++). CREPA y el adaptador asistente están desactivados. Cada fila medida ejecuta 30 actualizaciones; el tiempo por paso excluye las primeras cinco y la preparación de cachés. VRAM indica el pico de memoria asignada por PyTorch durante las actualizaciones de entrenamiento.

Dataset: RareConcepts/Domokun, 27 imágenes. Caption fijo: a photograph of a toy character (80 tokens de texto en caché).

PyTorch 2.14.1+cu130; Diffusers 0.41.0; Transformers 5.20.1; PEFT 0.21.2; Accelerate 1.15.0; SDNQ 0.2.8; TorchAO 0.17.0+cu130. dynamo_dynamic=true.

Las secuencias de bloques de imagen, texto, imagen de referencia y flujo conjunto se segmentan por separado. interval2 checkpointa pares consecutivos; seg2-stride4 checkpointa dos bloques y conserva las activaciones de los dos siguientes. La captura de estados ocultos usa la ruta por bloque. Attention activation offload no está soportado.

Precision Mode H100 L40S
bf16 none 0.159 / 13.69 0.231 / 13.65
bf16 activation-offload unsupported unsupported
bf16 layer 0.265 / 11.05 0.302 / 11.01
bf16 interval2 0.249 / 11.04 0.298 / 11.00
bf16 seg2-stride4 0.209 / 12.26 0.270 / 12.22
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 0.189 / 12.39 0.267 / 12.35
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 0.340 / 6.34 0.349 / 6.31
int8-sdnq-hadamard interval2 0.277 / 6.34 0.344 / 6.31
int8-sdnq-hadamard seg2-stride4 0.232 / 9.14 0.301 / 9.10
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none 0.195 / 10.39 0.250 / 10.33
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 0.325 / 6.20 0.330 / 6.15
fp8-torchao interval2 0.302 / 6.15 0.331 / 6.09
fp8-torchao seg2-stride4 0.252 / 8.10 0.288 / 8.05
fp8-torchao seg2-stride4-offload unsupported unsupported
fp8wo-torchao none 0.181 / 16.74 0.258 / 16.69
fp8wo-torchao activation-offload unsupported unsupported
fp8wo-torchao layer 0.285 / 6.09 0.364 / 6.04
fp8wo-torchao interval2 0.265 / 6.30 0.368 / 6.25
fp8wo-torchao seg2-stride4 0.221 / 11.17 0.297 / 11.12
fp8wo-torchao seg2-stride4-offload unsupported unsupported

HeartMula

Example: heartmula/3b/default/peft-lora. Entrenamiento con tokens de audio.

Precision Mode H100 L40S
bf16 none failed failed
bf16 activation-offload unsupported unsupported
bf16 layer failed failed
bf16 interval2 unsupported unsupported
bf16 seg2-stride4 unsupported unsupported
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none OOM OOM
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer failed failed
int8-sdnq-hadamard interval2 unsupported unsupported
int8-sdnq-hadamard seg2-stride4 unsupported unsupported
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none failed failed
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer failed failed
fp8-torchao interval2 unsupported unsupported
fp8-torchao seg2-stride4 unsupported unsupported
fp8-torchao seg2-stride4-offload unsupported unsupported

HiDream

Example: hidream/full/default/peft-lora. Resolution: 512x512.

Precision Mode H100 L40S
bf16 none 0.515 / 44.58 OOM
bf16 activation-offload unsupported unsupported
bf16 layer 0.928 / 33.57 1.043 / 33.52
bf16 interval2 0.971 / 33.57 1.002 / 33.52
bf16 seg2-stride4 0.952 / 33.57 1.010 / 33.52
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none not measured not measured
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 2.497 / 17.99 2.058 / 17.93
int8-sdnq-hadamard interval2 unsupported unsupported
int8-sdnq-hadamard seg2-stride4 unsupported unsupported
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none not measured not measured
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 4.920 / 18.10 4.338 / 18.05
fp8-torchao interval2 unsupported unsupported
fp8-torchao seg2-stride4 unsupported unsupported
fp8-torchao seg2-stride4-offload unsupported unsupported

SDNQ Hadamard numbers use sdnq_compile_mode=eager. The compiled SDNQ path quantizes HiDream, but this sweep spent the first training step in Inductor dequantizer compilation, so it is not listed as a throughput row.

HunyuanVideo

Ejemplo: hunyuanvideo/t2v-480p/default/1.5-t2v.peft-lora. Forma de training: video buckets de 480 pixel-area, 48 frames, batch 2.

Precision Mode H100 L40S
bf16 none OOM OOM
bf16 activation-offload not run not run
bf16 layer 7.682 / 26.35 22.816 / 26.30
bf16 interval2 7.398 / 26.11 22.772 / 26.06
bf16 seg2-stride4 OOM OOM
bf16 seg2-stride4-offload 10.679 / 58.37 not run
int8-sdnq-hadamard none not run not run
int8-sdnq-hadamard activation-offload not run not run
int8-sdnq-hadamard layer 11.765 / 25.96 34.464 / 25.92
int8-sdnq-hadamard interval2 not run not run
int8-sdnq-hadamard seg2-stride4 not run not run
int8-sdnq-hadamard seg2-stride4-offload not run not run
fp8-torchao none not run not run
fp8-torchao activation-offload not run not run
fp8-torchao layer 10.516 / 33.55 32.003 / 33.53
fp8-torchao interval2 not run not run
fp8-torchao seg2-stride4 not run not run
fp8-torchao seg2-stride4-offload not run not run

HunyuanVideo usa muchas activations con esta forma de training. Per-block e interval-2 encajan bien; sin checkpointing no entra en un H100 de 80 GB. seg2-stride4 solo entro en este sweep con attention activation offload, y esa fila es una salida de memoria, no una recomendacion de velocidad. SDNQ Hadamard funciona, pero las formas variables de conditioning todavia disparan compilacion de kernels dinamicos durante la medicion.

Ideogram 4.0

Ejemplo: ideogram/fp8/default/peft-lora. Resolucion: 1024x1024. El flavour fp8 usa el checkpoint fp8 nativo weight-only de Ideogram 4 (base_model_precision=no_change); bf16-upcast establece ideogram_fp8_base_upcast=true para dequantizar los pesos base a bf16 al cargar. Pedir cualquier otro base_model_precision (p. ej. int8-sdnq) tambien dequantiza primero para que el quantizer opere sobre pesos reales.

Las revisiones anteriores de esta tabla se midieron antes de que Ideogram respetara gradient_checkpointing_interval, gradient_checkpointing_segment_stride o gradient_checkpointing_backend (su loader custom se saltaba la conexion compartida), y antes de que int8-sdnq realmente quantizara el checkpoint fp8 — todas las filas de checkpointing eran en silencio checkpointing torch full-layer sobre pesos fp8-native. Los numeros de H100 de abajo son posteriores al fix; las filas de L40S estan pendientes de re-medicion.

Los backends torch-ffn/unsloth-ffn no estan soportados: Ideogram 4 no expone una frontera de checkpointing attention/FFN.

Precision Mode Backend H100 speed (s/step) H100 VRAM (GiB)
fp8-native layer torch 1.068 12.33
fp8-native layer unsloth 1.098 11.17
fp8-native seg2-stride4 torch 0.915 36.28
fp8-native seg2-stride4 unsloth 0.929 35.70
bf16-upcast layer torch 0.962 20.51
bf16-upcast layer unsloth 0.992 19.35
bf16-upcast seg2-stride4 torch 0.842 36.85
bf16-upcast seg2-stride4 unsloth 0.848 36.27
int8-sdnq-hadamard layer torch 1.735 11.88
int8-sdnq-hadamard layer unsloth 1.535 10.72
int8-sdnq-hadamard seg2-stride4 torch 0.981 28.19
int8-sdnq-hadamard seg2-stride4 unsloth 0.992 27.61

Conclusiones: seg2-stride4 es ~14% mas rapido que full-layer a cambio de ~24 GiB mas de activations retenidas; el offload de unsloth ahorra ~1.2 GiB con un costo de 1-3% en el tiempo de step (y es mas rapido que torch con int8 full-layer, donde el offload se solapa con el matmul quantizado); bf16-upcast es el ganador en throughput cuando la VRAM lo permite.

Kandinsky 5 Image

Example: kandinsky5_image/default/default/6b-t2i.lycoris-lokr. Resolution: 1024x1024.

Note: batch 3 at 1024x1024 needs full checkpointing on both cards. SDNQ with Hadamard is the best low-VRAM row; H100 can also use partial checkpointing with SDNQ, but only near the top of the card.

Precision Mode H100 L40S
bf16 none OOM OOM
bf16 activation-offload 6.956 / 25.52 10.189 / 25.42
bf16 layer 6.590 / 25.58 9.458 / 25.55
bf16 interval2 OOM OOM
bf16 seg2-stride4 OOM OOM
bf16 seg2-stride4-offload OOM OOM
int8-sdnq-hadamard none OOM OOM
int8-sdnq-hadamard activation-offload 7.186 / 20.00 10.141 / 19.95
int8-sdnq-hadamard layer 6.830 / 20.12 9.362 / 20.08
int8-sdnq-hadamard interval2 5.746 / 75.67 OOM
int8-sdnq-hadamard seg2-stride4 OOM OOM
int8-sdnq-hadamard seg2-stride4-offload 6.057 / 71.46 OOM
fp8-torchao none OOM OOM
fp8-torchao activation-offload 8.319 / 24.29 14.716 / 24.24
fp8-torchao layer 7.976 / 24.40 13.949 / 24.35
fp8-torchao interval2 OOM OOM
fp8-torchao seg2-stride4 OOM OOM
fp8-torchao seg2-stride4-offload OOM OOM

Kandinsky 5 Video

Example: kandinsky5_video/default/default/2b-t2v.peft-lora. Resolution: 768x512, 81f.

Kandinsky 5 video is activation-heavy at this frame count. Full block checkpointing is the practical baseline on both cards. On H100, interval2 and seg2-stride4 are faster when they fit; on L40S, SDNQ interval2 is the only partial-checkpoint row here that fits without attention activation offload.

Precision Mode H100 L40S
bf16 none OOM OOM
bf16 activation-offload 2.580 / 9.49 7.136 / 9.45
bf16 layer 2.267 / 9.83 6.379 / 9.79
bf16 interval2 1.967 / 44.57 OOM
bf16 seg2-stride4 1.971 / 46.62 OOM
bf16 seg2-stride4-offload 2.275 / 37.99 6.249 / 37.94
int8-sdnq-hadamard none OOM OOM
int8-sdnq-hadamard activation-offload 2.844 / 8.07 7.234 / 8.02
int8-sdnq-hadamard layer 2.460 / 8.40 6.509 / 8.35
int8-sdnq-hadamard interval2 2.126 / 43.12 5.641 / 43.08
int8-sdnq-hadamard seg2-stride4 2.125 / 45.19 OOM
int8-sdnq-hadamard seg2-stride4-offload 2.451 / 36.56 6.322 / 36.51
fp8-torchao none OOM OOM
fp8-torchao activation-offload 3.867 / 15.11 11.501 / 15.06
fp8-torchao layer 3.579 / 15.28 10.822 / 15.24
fp8-torchao interval2 OOM OOM
fp8-torchao seg2-stride4 OOM OOM
fp8-torchao seg2-stride4-offload OOM OOM

Kolors

Example: kolors/1.0/default/peft-lora. Resolution: 1024x1024.

Precision Mode H100 L40S
bf16 none 0.635 / 7.22 0.628 / 7.17
bf16 activation-offload unsupported unsupported
bf16 layer 1.118 / 5.36 1.065 / 5.31
bf16 interval2 1.105 / 5.36 1.068 / 5.31
bf16 seg2-stride4 1.110 / 5.36 1.072 / 5.31
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 1.860 / 5.68 1.726 / 5.63
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 2.967 / 3.38 2.803 / 3.33
int8-sdnq-hadamard interval2 2.770 / 3.32 2.655 / 3.27
int8-sdnq-hadamard seg2-stride4 2.805 / 3.32 2.742 / 3.27
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none 1.629 / 8.79 1.637 / 8.75
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 3.044 / 3.50 3.013 / 3.45
fp8-torchao interval2 3.040 / 3.50 3.019 / 3.45
fp8-torchao seg2-stride4 2.988 / 3.50 2.935 / 3.45
fp8-torchao seg2-stride4-offload unsupported unsupported

Krea 2

Ejemplo: krea2/raw/default/peft-lora. Resolucion de entrenamiento: recorte cuadrado de 512 px. Ajuste de validacion del ejemplo: 1024x1024; la validacion estuvo desactivada en el benchmark.

La tabla principal usa regional compilation. Eso ayuda al step speed de Krea2, pero no da una comparacion limpia de VRAM: el compiled graph/workspace mantiene el pico cerca del pico sin checkpointing en varios modos. Una corrida de control bf16 con regional compilation desactivado mostro que el checkpointing esta conectado y tiene la forma esperada de memoria/velocidad:

La fila activation-offload aqui significa full-block checkpointing mas attention activation offload. Frente a full-block layer checkpointing solo, attention offload no redujo el peak VRAM de Krea2 en este shape; principalmente agrego CPU transfer overhead.

Mode H100 no-compile L40S no-compile
none 0.272 / 40.09 0.661 / 40.01
layer 0.371 / 30.06 0.919 / 30.01
seg2-stride4 0.317 / 34.75 0.788 / 34.70
activation-offload 0.657 / 30.50 1.341 / 30.30
Precision Mode H100 L40S
bf16 none 0.275 / 40.06 0.662 / 40.01
bf16 activation-offload 0.416 / 34.62 0.822 / 34.57
bf16 layer 0.268 / 40.06 0.665 / 40.01
bf16 interval2 0.274 / 40.06 0.663 / 40.01
bf16 seg2-stride4 0.279 / 40.06 0.663 / 40.01
bf16 seg2-stride4-offload 0.404 / 34.62 0.819 / 34.57
int8-sdnq-hadamard none 0.462 / 27.01 0.807 / 26.96
int8-sdnq-hadamard activation-offload 0.773 / 21.57 1.012 / 21.53
int8-sdnq-hadamard layer 0.473 / 27.01 0.802 / 26.96
int8-sdnq-hadamard interval2 0.474 / 27.01 0.804 / 26.96
int8-sdnq-hadamard seg2-stride4 0.472 / 27.01 0.802 / 26.96
int8-sdnq-hadamard seg2-stride4-offload 0.744 / 21.57 1.007 / 21.53
fp8-torchao none 0.689 / 51.63 OOM
fp8-torchao activation-offload 0.975 / 37.77 2.058 / 37.73
fp8-torchao layer 0.689 / 51.63 OOM
fp8-torchao interval2 0.684 / 51.63 OOM
fp8-torchao seg2-stride4 0.674 / 51.63 OOM
fp8-torchao seg2-stride4-offload 0.965 / 37.77 2.053 / 37.73

LongCat Image

Ejemplo: longcat_image/default/default/peft-lora. Resolucion de entrenamiento: 512 px cuadrada; resolucion de validacion: 1024x1024. Las filas usan attention_mechanism=native-flash.

Precision Mode H100 L40S
bf16 none 0.193 / 16.47 0.262 / 16.42
bf16 activation-offload 0.544 / 12.73 0.543 / 12.69
bf16 layer 0.327 / 12.38 0.370 / 12.34
bf16 interval2 0.257 / 14.38 0.313 / 14.34
bf16 seg2-stride4 0.263 / 14.36 0.316 / 14.31
bf16 seg2-stride4-offload 0.446 / 13.42 0.492 / 13.38
int8-sdnq-hadamard none 0.578 / 12.54 0.537 / 12.45
int8-sdnq-hadamard activation-offload 1.184 / 7.43 1.185 / 7.39
int8-sdnq-hadamard layer 0.901 / 7.19 0.911 / 7.09
int8-sdnq-hadamard interval2 0.718 / 9.73 0.695 / 9.68
int8-sdnq-hadamard seg2-stride4 0.735 / 9.72 0.717 / 9.68
int8-sdnq-hadamard seg2-stride4-offload 1.056 / 8.49 1.011 / 8.45
fp8-torchao none 0.602 / 25.19 0.834 / 25.14
fp8-torchao activation-offload 1.662 / 7.75 1.844 / 7.70
fp8-torchao layer 0.984 / 7.57 1.080 / 7.53
fp8-torchao interval2 0.750 / 16.15 0.938 / 16.10
fp8-torchao seg2-stride4 0.760 / 16.13 0.961 / 16.09
fp8-torchao seg2-stride4-offload 1.287 / 13.02 1.653 / 12.98

LongCat Video

Ejemplo: longcat_video/final/default/peft-lora+ramtorch. Resolucion: 832x480, 81f. Las filas usan attention_mechanism=native-flash.

LongCat Video usa muchas activations con esta forma. Full per-block checkpointing es la fila practica. Las filas partial checkpoint (interval2, seg2-stride4) no caben aqui, incluso con attention activation offload en la fila strided. Attention activation offload simple cabe para bf16 y SDNQ, pero es mucho mas lento que full checkpointing.

Precision Mode H100 L40S
bf16 none OOM (77.86 GiB) OOM (43.30 GiB)
bf16 activation-offload 25.774 / 37.36 49.149 / 37.14
bf16 layer 7.448 / 23.73 24.866 / 23.68
bf16 interval2 OOM (76.41 GiB) OOM (42.80 GiB)
bf16 seg2-stride4 OOM (76.42 GiB) OOM (43.06 GiB)
bf16 seg2-stride4-offload OOM (76.72 GiB) OOM (42.29 GiB)
int8-sdnq-hadamard none OOM (77.40 GiB) OOM (43.59 GiB)
int8-sdnq-hadamard activation-offload 30.887 / 35.28 61.270 / 35.24
int8-sdnq-hadamard layer 8.444 / 21.60 25.164 / 21.55
int8-sdnq-hadamard interval2 OOM (76.01 GiB) OOM (42.47 GiB)
int8-sdnq-hadamard seg2-stride4 OOM (77.01 GiB) OOM (43.02 GiB)
int8-sdnq-hadamard seg2-stride4-offload OOM (76.42 GiB) OOM (42.57 GiB)
fp8-torchao none OOM (75.87 GiB) OOM (41.28 GiB)
fp8-torchao activation-offload 30.163 / 47.88 OOM (40.11 GiB)
fp8-torchao layer 8.343 / 34.16 24.659 / 34.07
fp8-torchao interval2 OOM (74.63 GiB) OOM (40.85 GiB)
fp8-torchao seg2-stride4 OOM (75.37 GiB) OOM (41.19 GiB)
fp8-torchao seg2-stride4-offload OOM (75.55 GiB) OOM (40.94 GiB)

LTXVideo 0.9.5

Example: ltxvideo/0.9.5/default/t2v.peft-lora. Resolution: 768x512, 49f.

Los numeros son segundos warm por step / GiB pico. El promedio de la ejecucion completa incluye setup y compile, y queda en los artifacts del sweep.

Precision Mode H100 L40S
bf16 none 0.274 / 8.77 0.275 / 8.72
bf16 layer 0.462 / 4.21 0.459 / 4.16
bf16 interval2 0.449 / 4.30 0.433 / 4.25
bf16 seg2-stride4 0.359 / 6.40 0.357 / 6.35
int8-sdnq-hadamard none 0.688 / 7.05 0.640 / 6.90
int8-sdnq-hadamard layer 1.094 / 2.59 1.081 / 2.44
int8-sdnq-hadamard interval2 1.112 / 2.57 1.073 / 2.53
int8-sdnq-hadamard seg2-stride4 0.887 / 4.61 0.817 / 4.56
fp8-torchao none 0.655 / 17.45 0.735 / 17.41
fp8-torchao layer 1.226 / 2.94 1.206 / 2.89
fp8-torchao interval2 1.259 / 3.40 1.233 / 3.35
fp8-torchao seg2-stride4 0.933 / 9.96 0.901 / 9.91
fp8wo-torchao none 0.328 / 10.06 0.325 / 10.01
fp8wo-torchao layer 0.567 / 2.64 0.540 / 2.59
fp8wo-torchao interval2 0.555 / 2.84 0.531 / 2.79
fp8wo-torchao seg2-stride4 0.443 / 6.20 0.432 / 6.15

Las filas de attention activation offload no estan soportadas para LTXVideo 0.9 en este sweep.

LTXVideo2 2.3

Example: ltxvideo2/2.3-dev/default/720p-single-gpu.peft-lora+sdnq-hadamard. Resolution: 1280x704, 49f.

Note: LTXVideo2 2.3 should be read from the no-regional-compile rows in this sweep; regional compile raised memory pressure for this model.

Precision Mode H100 L40S
bf16 none OOM OOM
bf16 activation-offload 6.350 / 58.36 OOM
bf16 layer 3.993 / 47.95 OOM
bf16 interval2 3.977 / 48.83 OOM
bf16 seg2-stride4 OOM OOM
bf16 seg2-stride4-offload 5.554 / 75.64 OOM
int8-sdnq-hadamard none OOM OOM
int8-sdnq-hadamard activation-offload 10.102 / 38.20 9.852 / 38.15
int8-sdnq-hadamard layer 7.753 / 27.78 7.579 / 27.73
int8-sdnq-hadamard interval2 7.733 / 28.66 7.288 / 28.61
int8-sdnq-hadamard seg2-stride4 6.522 / 61.50 OOM
int8-sdnq-hadamard seg2-stride4-offload 8.659 / 55.48 OOM
fp8-torchao none OOM OOM
fp8-torchao activation-offload failed 22.917 / 38.57
fp8-torchao layer 8.580 / 30.27 10.381 / 30.22
fp8-torchao interval2 8.660 / 33.71 10.661 / 33.66
fp8-torchao seg2-stride4 OOM OOM
fp8-torchao seg2-stride4-offload failed OOM

Lumina2

Example: lumina2/default/default/peft-lora. Resolution: 512x512.

Nota: Lumina2 ahora usa la ruta segmented whole-block. interval2 checkpointa cada segmento de dos blocks; seg2-stride4 checkpointa dos blocks, deja que los dos siguientes conserven activations y repite. Attention activation offload no fue parte de esta corrida de Lumina2.

Precision Mode H100 L40S
bf16 none 0.235 / 15.99 0.332 / 15.94
bf16 layer 0.384 / 6.60 0.457 / 6.56
bf16 interval2 0.356 / 6.87 0.424 / 6.82
bf16 seg2-stride4 0.295 / 11.43 0.377 / 11.38
int8-sdnq-hadamard none 0.584 / 13.59 0.541 / 13.55
int8-sdnq-hadamard layer 0.899 / 4.21 0.827 / 4.16
int8-sdnq-hadamard interval2 0.865 / 4.48 0.835 / 4.43
int8-sdnq-hadamard seg2-stride4 0.719 / 9.03 0.707 / 8.99
fp8-torchao none 0.598 / 28.03 0.763 / 27.98
fp8-torchao layer 0.950 / 5.93 0.967 / 5.88
fp8-torchao interval2 0.938 / 6.70 0.974 / 6.66
fp8-torchao seg2-stride4 0.765 / 17.36 0.901 / 17.32
fp8wo-torchao none 0.273 / 17.97 0.389 / 17.93
fp8wo-torchao layer 0.452 / 4.99 0.525 / 4.94
fp8wo-torchao interval2 0.427 / 5.40 0.522 / 5.35
fp8wo-torchao seg2-stride4 0.360 / 11.68 0.466 / 11.64

MageFlow

Example: mageflow/turbo/24g/image.peft-lora. Resolution: 1024x1024.

Nota: la ruta de imagen variable de MageFlow a 1024px se beneficia sobre todo de attention activation offload y FP8 weight-only. Los modos de block checkpointing son validos, pero no redujeron el pico de residencia medido en este sweep.

Precision Mode H100 L40S
bf16 none 7.735 / 36.74 7.658 / 36.69
bf16 activation-offload 8.902 / 23.05 9.477 / 23.00
bf16 layer 7.805 / 36.74 7.504 / 36.69
bf16 interval2 8.036 / 36.74 7.762 / 36.69
bf16 seg2-stride4 7.882 / 36.74 7.531 / 36.69
bf16 seg2-stride4-offload 8.833 / 23.05 9.288 / 23.01
int8-sdnq-hadamard none 81.016 / 37.38 94.991 / 37.34
fp8wo-torchao none 5.454 / 36.86 5.772 / 36.82
fp8wo-torchao activation-offload 6.295 / 23.18 6.738 / 23.14
fp8wo-torchao seg2-stride4 5.542 / 36.86 5.595 / 36.82

OmniGen

Example: omnigen/default/default/lycoris-lokr. Resolution: 1024x1024.

Nota: OmniGen usa prompts como token IDs en vez de embeddings de texto cacheados. Estas filas miden los caminos soportados sin checkpointing y con checkpointing torch de bloque completo; los controles interval, segmented-stride y attention-offload no estan implementados para esta familia en este barrido.

Precision Mode H100 L40S
bf16 none 0.425 / 14.20 0.293 / 14.24
bf16 layer 0.597 / 10.13 0.389 / 10.09
int8-sdnq-hadamard none 1.523 / 11.00 1.388 / 11.06
int8-sdnq-hadamard layer 1.312 / 6.75 1.064 / 6.70
fp8-torchao none 0.690 / 19.25 0.608 / 19.30
fp8-torchao layer 1.069 / 7.09 0.824 / 7.04
fp8wo-torchao none 0.454 / 17.71 0.377 / 17.73
fp8wo-torchao layer 0.646 / 6.98 0.534 / 6.94

PixArt

Example: pixart/default/default/lycoris-lokr. Resolution: 1024x1024.

Precision Mode H100 L40S
bf16 none 1.700 / 41.73 1.734 / 41.67
bf16 activation-offload unsupported unsupported
bf16 layer 2.433 / 5.63 2.346 / 5.58
bf16 interval2 2.440 / 6.01 2.348 / 5.96
bf16 seg2-stride4 2.092 / 23.90 2.072 / 23.86
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 1.905 / 47.58 OOM
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 2.738 / 6.07 2.937 / 6.03
int8-sdnq-hadamard interval2 2.734 / 6.03 2.943 / 5.99
int8-sdnq-hadamard seg2-stride4 2.336 / 26.85 2.596 / 26.81
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none OOM OOM
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 3.254 / 8.06 4.646 / 8.01
fp8-torchao interval2 3.260 / 9.66 4.649 / 9.61
fp8-torchao seg2-stride4 2.827 / 63.27 OOM
fp8-torchao seg2-stride4-offload unsupported unsupported

Qwen Image 2.1

Mediciones en H200 y L40S con el modelo de GPU verificado: qwen_image/v2.1/default/peft-lora, Qwen-Image 2.1, Domokun a 512x512, BF16, LoRA rank 32, Optimi Lion y compilación regional Inductor (modo default). Cada ejecución tiene 20 pasos y excluye los cinco primeros del tiempo. Las celdas muestran segundos/paso / VRAM máxima GiB; el pico incluye la preparación de componentes.

Entorno: torch==2.11.0+cu128, diffusers==0.40.0; 10 tokens de texto y 1024 de imagen. La preparación de componentes domina algunos picos de memoria con batch 1.

Programaciones de checkpoint BF16

none desactiva checkpointing; layer aplica checkpoint a cada bloque. interval2 agrupa bloques contiguos 0–1, 2–3, …; seg2-stride4 aplica checkpoint a 0–1, conserva las activaciones de 2–3 y repite. La ejecución agrupada requiere no usar block swapping, captura de estados ocultos ni KV cache; esas rutas mantienen interval/stride por bloque. Attention activation offload (activation-offload, seg2-stride4-offload) no está soportado. BF16 cabe, por lo que esta medición de 2.1 no incluye cuantización.

Modo H200, batch 1 H200, batch 20 L40S, batch 1
none 0.081 / 20.99 1.223 / 128.42 0.238 / 20.64
layer 0.206 / 17.69 1.773 / 24.19 0.368 / 17.60
interval2 0.190 / 17.69 1.761 / 25.14 0.371 / 17.60
seg2-stride4 0.116 / 17.77 1.490 / 73.26 0.290 / 17.60

Backends de atención

La comparación de atención desactiva checkpointing. SDPA nativo seleccionó cuDNN en H200 y PyTorch Flash SDPA en L40S. Qwen 2.1 usa atención causal para el texto y atención no causal de la imagen objetivo a todas las claves válidas. Los prompts de igual longitud, sin padding, no necesitan varlen. Las rutas FlashAttention actuales requieren prompts text-to-image sin padding; usa SDPA nativo o FlexAttention para padding o condicionamiento intercalado. Una máscara varlen que solo representa padding no preserva esa estructura causal.

attention_mechanism H200, batch 1 H200, batch 20 L40S, batch 1
native 0.081 / 20.99 1.223 / 128.42 0.238 / 20.64
native-flash 0.080 / 20.98 1.278 / 128.40 0.238 / 20.63
native-efficient sin medir sin medir 0.259 / 20.75
flash-attn-hub sin medir sin medir 0.238 / 20.75
flash-attn-3-hub 0.094 / 20.98 1.215 / 128.40 sin medir
flash-attn-3-varlen-hub 0.096 / 20.97 1.216 / 128.44 sin medir
flex 0.100 / 20.92 1.314 / 134.45 0.271 / 20.70
flash-attn-4-hub falló falló sin medir
cudnn falló sin medir sin medir

El helper de metadatos varlen de longitud uniforme procede de Diffusers upstream: obtiene las longitudes de las formas y usa arange para los offsets acumulados, eliminando las sincronizaciones GPU .item() y graph breaks del helper publicado. Las máscaras redundantes totalmente válidas se eliminan durante collate. La equivalencia de forward/gradientes y la captura del grafo se comprueban por separado del tiempo.

Forzar attention_mechanism: "cudnn" falló en Inductor de PyTorch 2.11 con CantSplit; SDPA nativo automático sí utilizó cuDNN correctamente. FA4 Hub no pudo cargarse con nvidia-cutlass-dsl==4.7.1: falta cutlass.cute.core.ThrMma, así que no hay tiempos disponibles. Los backends Hub usan trust_remote_code: true. FA3 es para Hopper, no para L40S (soporte upstream).

Escalado de batch en H200

En el mismo H200, SDPA nativo tardó 0.612 s con batch 10 y 1.223 s con batch 20, ambos alrededor de 16.35 imágenes/s. Una vez estabilizado el throughput, duplicar el batch duplicó el trabajo. El preset de 144 GB mantiene checkpointing desactivado; el batch mayor aprovecha la capacidad adicional sin prometer más imágenes/s.

Batch Segundos/paso Imágenes/s Pico GiB
1 0.081 12.38 20.99
10 0.612 16.35 71.85
20 1.223 16.35 128.42
Con la misma ruta actualizada de atención nativa, H100 tardó 0.639 s/step con batch 10, con un pico de 71.83 GiB y checkpointing desactivado.

Una comprobación del transformer completo con entradas Domokun en caché encontró salidas FP32 idénticas con y sin la máscara redundante; el error L2 relativo de gradientes fue 1.97e-6. Los backends BF16 no son numéricamente intercambiables: en este único batch, el coseno del gradiente LoRA agregado respecto a FP32 fue aproximadamente 0.92–0.93 con SDPA nativo y 0.80 con FA3. Son diagnósticos numéricos, no comparaciones de convergencia.

En el trace H200 con batch 20, hubo kernels activos durante el 93.1% del intervalo capturado. GEMM representó el 70.5% del tiempo de kernel y atención el 9.7%; Inductor ya fusionó normalización/RoPE y epílogos por elemento. Los mayores huecos aparecieron alrededor de la preparación del batch. El tiempo activo de kernel no es ocupación de SM, y los tiempos del profiler no se usan en las tablas de throughput.

Prefetch fue más lento en este conjunto de 27 imágenes con batch 20: con cola de 2, host prefetch promedió 2.030 s/paso y device prefetch (umbral de 1 MiB) 2.036 s, frente a 1.223 s sin prefetch. Ambos tuvieron pasos periódicos de unos 3 segundos pese a medianas cercanas a 1.17 s; los presets mantienen prefetch desactivado.

La receta Domokun de 250 steps sirve para medir throughput, no como receta de convergencia fiable. Un checkpoint anterior generó Domokun reconocible tras recargarlo, pero nuevas ejecuciones de 250 steps no reprodujeron el resultado. Los controles conservando máscaras de padding, desactivando compilación y restaurando la expresión RoPE anterior también fallaron. Los latentes en caché decodifican el personaje correcto. La causa del deterioro sigue sin resolverse; las tablas de tiempos no demuestran calidad equivalente entre backends de atención.

Qwen Image

Mediciones históricas de Qwen-Image 1.0 (model_flavour: "v1.0"), con el antiguo ejemplo qwen_image/v2.1/default/peft-lora a 1024x1024. El ejemplo ahora selecciona 2.1. Los resultados casi idénticos de interval/stride no demuestran que hubiera distintas programaciones activas y no deben orientar la configuración de 2.1.

Precision Mode H100 L40S
bf16 none OOM OOM
bf16 activation-offload unsupported unsupported
bf16 layer 1.202 / 41.04 3.377 / 40.99
bf16 interval2 1.201 / 41.04 3.382 / 40.99
bf16 seg2-stride4 1.205 / 41.03 3.385 / 40.99
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 1.675 / 63.48 OOM
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 2.640 / 24.09 3.928 / 24.05
int8-sdnq-hadamard interval2 2.722 / 24.09 3.918 / 24.05
int8-sdnq-hadamard seg2-stride4 2.663 / 24.09 3.919 / 24.05
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none OOM OOM
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 3.088 / 25.34 6.172 / 25.29
fp8-torchao interval2 3.095 / 25.34 6.173 / 25.29
fp8-torchao seg2-stride4 3.125 / 25.34 6.141 / 25.29
fp8-torchao seg2-stride4-offload unsupported unsupported

Sana

Example: sana/default/default/lycoris-lokr. Resolution: 1024x1024.

Note: Sana has interval checkpointing; stride is not a separate segmented schedule for this family in the measured rows.

Precision Mode H100 L40S
bf16 none 0.529 / 23.71 0.597 / 23.67
bf16 activation-offload unsupported unsupported
bf16 layer 0.529 / 23.72 0.596 / 23.66
bf16 interval2 0.530 / 23.72 0.598 / 23.66
bf16 seg2-stride4 unsupported unsupported
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 0.554 / 22.92 0.590 / 22.88
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 0.554 / 22.92 0.589 / 22.88
int8-sdnq-hadamard interval2 0.556 / 22.92 0.591 / 22.88
int8-sdnq-hadamard seg2-stride4 unsupported unsupported
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none 0.633 / 33.67 0.753 / 33.62
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 0.633 / 33.67 0.755 / 33.62
fp8-torchao interval2 0.631 / 33.67 0.759 / 33.62
fp8-torchao seg2-stride4 unsupported unsupported
fp8-torchao seg2-stride4-offload unsupported unsupported

SanaVideo

Example: sanavideo/2b-480p/default/peft-lora. Resolution: 832x480, 49f.

Note: SanaVideo usa linear attention, asi que attention activation offload sigue unsupported. Segmented whole-block checkpointing esta soportado en la ruta standard.

Precision Mode H100 L40S
bf16 none 0.599 / 59.15 OOM
bf16 activation-offload unsupported unsupported
bf16 layer 0.597 / 59.15 OOM
bf16 interval2 not run OOM
bf16 seg2-stride4 not run OOM
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 0.641 / 58.36 OOM
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 0.641 / 58.36 OOM
int8-sdnq-hadamard interval2 not run OOM
int8-sdnq-hadamard seg2-stride4 not run OOM
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none OOM OOM
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer OOM OOM
fp8-torchao interval2 OOM OOM
fp8-torchao seg2-stride4 OOM OOM
fp8-torchao seg2-stride4-offload unsupported unsupported

SD 1.x

Example: sd1x/dreamshaper/default/peft-lora. Resolution: 512x512.

Nota: SD1x usa la ruta UNet de diffusers. El checkpointing por capa funciona, pero los controles interval y segmented stride no estan conectados para esta familia.

Precision Mode H100 L40S
bf16 none 0.181 / 2.87 0.176 / 2.83
bf16 activation-offload unsupported unsupported
bf16 layer 0.305 / 1.98 0.292 / 1.93
bf16 interval2 unsupported unsupported
bf16 seg2-stride4 unsupported unsupported
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 0.446 / 3.07 0.431 / 3.04
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 0.701 / 1.79 0.666 / 1.74
int8-sdnq-hadamard interval2 unsupported unsupported
int8-sdnq-hadamard seg2-stride4 unsupported unsupported
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none 0.410 / 4.23 0.401 / 4.18
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 0.785 / 1.96 0.756 / 1.91
fp8-torchao interval2 unsupported unsupported
fp8-torchao seg2-stride4 unsupported unsupported
fp8-torchao seg2-stride4-offload unsupported unsupported

SD3

Example: sd3/default/default/peft-lora. Resolution: 1024x1024.

Nota: SD3 usa checkpointing segmentado contiguo real en la ruta transformer simple. Attention activation offload esta soportado; reduce mucho la VRAM, pero cuesta throughput.

Precision Mode H100 L40S
bf16 none 0.529 / 34.59 1.189 / 34.53
bf16 activation-offload 1.335 / 9.68 2.850 / 9.63
bf16 layer 0.721 / 7.67 1.607 / 7.62
bf16 interval2 0.723 / 8.93 1.606 / 8.88
bf16 seg2-stride4 0.620 / 20.14 1.398 / 20.09
bf16 seg2-stride4-offload 1.229 / 12.21 2.639 / 12.16
int8-sdnq-hadamard none 0.858 / 33.66 1.381 / 33.61
int8-sdnq-hadamard activation-offload 1.845 / 8.90 3.297 / 8.85
int8-sdnq-hadamard layer 1.265 / 6.58 1.857 / 6.53
int8-sdnq-hadamard interval2 1.264 / 7.30 1.858 / 7.26
int8-sdnq-hadamard seg2-stride4 1.049 / 19.02 1.625 / 18.98
int8-sdnq-hadamard seg2-stride4-offload 1.527 / 12.42 3.023 / 12.37
fp8-torchao none OOM OOM
fp8-torchao activation-offload 4.707 / 10.27 9.814 / 10.23
fp8-torchao layer 1.575 / 9.13 3.279 / 9.09
fp8-torchao interval2 1.576 / 12.62 3.282 / 12.58
fp8-torchao seg2-stride4 1.376 / 45.70 OOM
fp8-torchao seg2-stride4-offload 4.184 / 26.17 8.714 / 26.12
fp8wo-torchao none 0.567 / 35.21 1.252 / 35.17
fp8wo-torchao activation-offload 1.392 / 8.71 2.921 / 8.67
fp8wo-torchao layer 0.795 / 5.69 1.736 / 5.65
fp8wo-torchao interval2 0.797 / 7.08 1.734 / 7.03
fp8wo-torchao seg2-stride4 0.679 / 19.43 1.490 / 19.38
fp8wo-torchao seg2-stride4-offload 1.257 / 12.00 2.676 / 11.96

SDXL

Example: sdxl/default/default/lycoris-lokr. Resolution: 1024x1024.

Note: SDXL has real layer checkpointing. Interval and stride rows are included as coverage data, not as segmented-support recommendations.

Precision Mode H100 L40S
bf16 none 0.606 / 13.03 0.585 / 12.98
bf16 activation-offload unsupported unsupported
bf16 layer 1.080 / 6.53 1.029 / 6.48
bf16 interval2 unsupported unsupported
bf16 seg2-stride4 unsupported unsupported
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 1.741 / 13.72 1.643 / 13.68
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 2.820 / 4.64 2.647 / 4.59
int8-sdnq-hadamard interval2 unsupported unsupported
int8-sdnq-hadamard seg2-stride4 unsupported unsupported
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none 1.608 / 26.22 1.582 / 26.16
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer 2.939 / 5.10 2.890 / 5.04
fp8-torchao interval2 unsupported unsupported
fp8-torchao seg2-stride4 unsupported unsupported
fp8-torchao seg2-stride4-offload unsupported unsupported

Stable Cascade

Example: stable_cascade/default/default/stage-c.lycoris-lokr. Resolution: 1024x1024.

Nota: stage C usa la ruta prior en precision completa. Estas filas se ejecutaron con mixed_precision=no y base_model_precision=no_change; las filas de precision base cuantizada no son significativas para este modelo. Los modos interval y stride operan sobre la secuencia de micro-bloques Res/Timestep/Attention del UNet.

Precision Mode H100 L40S
bf16 none 0.884 / 51.52 OOM
bf16 activation-offload unsupported unsupported
bf16 layer 1.179 / 22.68 2.135 / 22.61
bf16 interval2 1.032 / 36.99 1.871 / 36.92
bf16 seg2-stride4 1.032 / 37.20 1.870 / 37.13
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none unsupported unsupported
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer unsupported unsupported
int8-sdnq-hadamard interval2 unsupported unsupported
int8-sdnq-hadamard seg2-stride4 unsupported unsupported
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none unsupported unsupported
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer unsupported unsupported
fp8-torchao interval2 unsupported unsupported
fp8-torchao seg2-stride4 unsupported unsupported
fp8-torchao seg2-stride4-offload unsupported unsupported

Wan 2.1 T2V 1.3B

Example: wan/t2v-480p-1.3b-2.1/default/t2v-1.3b-480p-single-gpu.peft-lora+ramtorch. Resolution: 832x480, 81f.

Note: Wan 1.3B should be read from the no-regional-compile/RamTorch rows; regional compile was not a useful throughput setting in this sweep.

Precision Mode H100 L40S
bf16 none 1.407 / 71.90 OOM
bf16 activation-offload 3.472 / 8.78 7.179 / 8.66
bf16 layer 2.099 / 4.73 4.459 / 4.68
bf16 interval2 2.139 / 6.32 4.514 / 6.27
bf16 seg2-stride4 1.806 / 39.25 3.921 / 39.21
bf16 seg2-stride4-offload 2.993 / 22.66 6.493 / 22.61
int8-sdnq-hadamard none 1.850 / 71.91 OOM
int8-sdnq-hadamard activation-offload 4.204 / 8.72 7.387 / 8.68
int8-sdnq-hadamard layer 2.790 / 4.70 4.989 / 4.65
int8-sdnq-hadamard interval2 2.874 / 6.29 5.093 / 6.24
int8-sdnq-hadamard seg2-stride4 2.558 / 39.27 4.393 / 39.22
int8-sdnq-hadamard seg2-stride4-offload 3.711 / 22.67 6.695 / 22.63
fp8-torchao none 1.727 / 73.57 OOM
fp8-torchao activation-offload 4.061 / 10.08 7.404 / 9.96
fp8-torchao layer 2.607 / 5.98 4.888 / 5.93
fp8-torchao interval2 2.744 / 7.57 4.916 / 7.52
fp8-torchao seg2-stride4 2.246 / 40.55 4.245 / 40.50
fp8-torchao seg2-stride4-offload 3.602 / 24.02 6.683 / 23.91

Wan 2.1 T2V 14B

Example: wan/t2v-480p-14b-2.1/default/t2v-14b-480p-single-gpu.peft-lora+ramtorch. Resolution: 832x480, 81f.

Note: Wan 14B is mainly a fit test for activation savings. Status-only cells are still useful because they show which combinations reached the memory limit.

Precision Mode H100 L40S
bf16 none OOM OOM
bf16 activation-offload 13.144 / 36.80 OOM
bf16 layer 7.162 / 16.28 21.770 / 16.23
bf16 interval2 7.172 / 19.62 21.777 / 19.58
bf16 seg2-stride4 OOM OOM
bf16 seg2-stride4-offload OOM OOM
int8-sdnq-hadamard none unsupported unsupported
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer unsupported unsupported
int8-sdnq-hadamard interval2 unsupported unsupported
int8-sdnq-hadamard seg2-stride4 unsupported unsupported
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none failed failed
fp8-torchao activation-offload failed failed
fp8-torchao layer failed failed
fp8-torchao interval2 failed failed
fp8-torchao seg2-stride4 failed failed
fp8-torchao seg2-stride4-offload failed failed

Wan S2V

Example: wan_s2v/s2v-14b-2.2/default/14b-480p.peft-lora+ramtorch. Resolution: 832x480, 81f.

Note: Wan S2V is included as coverage data for the video/audio path. Treat failed cells as implementation coverage gaps.

Precision Mode H100 L40S
bf16 none failed failed
bf16 activation-offload unsupported unsupported
bf16 layer failed failed
bf16 interval2 unsupported unsupported
bf16 seg2-stride4 unsupported unsupported
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none failed failed
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer failed failed
int8-sdnq-hadamard interval2 unsupported unsupported
int8-sdnq-hadamard seg2-stride4 unsupported unsupported
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8-torchao none failed failed
fp8-torchao activation-offload unsupported unsupported
fp8-torchao layer failed failed
fp8-torchao interval2 unsupported unsupported
fp8-torchao seg2-stride4 unsupported unsupported
fp8-torchao seg2-stride4-offload unsupported unsupported

Z-Image Turbo

Example: z_image/turbo/default/peft-lora. Resolution: 1024x1024.

Precision Mode H100 L40S
bf16 none 0.243 / 21.25 0.316 / 21.21
bf16 activation-offload 0.837 / 13.24 0.805 / 13.19
bf16 layer 0.479 / 12.87 0.493 / 12.83
bf16 interval2 0.452 / 13.04 0.477 / 12.99
bf16 seg2-stride4 0.349 / 16.88 0.400 / 16.83
bf16 seg2-stride4-offload 0.681 / 15.03 0.736 / 14.99
int8-sdnq-hadamard none 0.645 / 15.60 0.615 / 15.55
int8-sdnq-hadamard activation-offload 1.439 / 7.61 1.382 / 7.56
int8-sdnq-hadamard layer 1.046 / 7.25 1.021 / 7.20
int8-sdnq-hadamard interval2 1.074 / 7.41 0.996 / 7.36
int8-sdnq-hadamard seg2-stride4 0.867 / 11.25 0.841 / 11.20
int8-sdnq-hadamard seg2-stride4-offload 1.202 / 9.39 1.162 / 9.35
fp8-torchao none 1.232 / 37.50 1.476 / 37.46
fp8-torchao activation-offload 3.623 / 7.97 3.564 / 7.93
fp8-torchao layer 2.319 / 7.93 2.344 / 7.88
fp8-torchao interval2 2.336 / 8.80 2.309 / 8.75
fp8-torchao seg2-stride4 1.843 / 22.55 1.930 / 22.50
fp8-torchao seg2-stride4-offload 2.947 / 15.57 3.243 / 15.52

ZLab I1

Example: zlab_i1/3b/default/peft-lora. Resolution: 1024x1024.

Nota: ZLab I1 lleva sus skip tensors tipo U-Net dentro del estado segmented checkpoint. Attention activation offload no esta conectado para esta familia.

Precision Mode H100 L40S
bf16 none 0.462 / 22.21 0.865 / 22.16
bf16 activation-offload unsupported unsupported
bf16 layer 0.693 / 7.79 1.148 / 7.75
bf16 interval2 0.676 / 8.30 1.152 / 8.25
bf16 seg2-stride4 0.567 / 14.97 1.014 / 14.92
bf16 seg2-stride4-offload unsupported unsupported
int8-sdnq-hadamard none 0.861 / 19.21 0.926 / 19.16
int8-sdnq-hadamard activation-offload unsupported unsupported
int8-sdnq-hadamard layer 1.385 / 4.78 1.265 / 4.74
int8-sdnq-hadamard interval2 1.298 / 5.30 1.277 / 5.26
int8-sdnq-hadamard seg2-stride4 1.073 / 11.98 1.098 / 11.93
int8-sdnq-hadamard seg2-stride4-offload unsupported unsupported
fp8wo-torchao none 0.504 / 25.08 0.930 / 25.02
fp8wo-torchao activation-offload unsupported unsupported
fp8wo-torchao layer 0.772 / 5.12 1.280 / 5.07
fp8wo-torchao interval2 0.759 / 5.84 1.290 / 5.79
fp8wo-torchao seg2-stride4 0.633 / 15.12 1.115 / 15.08
fp8wo-torchao seg2-stride4-offload unsupported unsupported