chore: auto-commit (95 archivos)
- cmd/fn/doctor.go - cmd/fn/main.go - cpp/apps/primitives_gallery/playground/tables/CMakeLists.txt - cpp/apps/primitives_gallery/playground/tables/data_table.cpp - cpp/apps/primitives_gallery/playground/tables/data_table_logic.cpp - cpp/apps/primitives_gallery/playground/tables/data_table_logic.h - cpp/apps/primitives_gallery/playground/tables/self_test.cpp - cpp/apps/primitives_gallery/playground/tables/tql.cpp - cpp/apps/primitives_gallery/playground/tables/viz.cpp - cpp/apps/primitives_gallery/playground/tables/viz.h - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
"""GenerationConfig — contrato de parametros para generacion de imagenes con difusion."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, Literal
|
||||
|
||||
if TYPE_CHECKING:
|
||||
pass
|
||||
|
||||
_SAMPLER_VALUES = (
|
||||
"euler",
|
||||
"euler_a",
|
||||
"dpm++2m",
|
||||
"dpm++2m_v2",
|
||||
"heun",
|
||||
"dpm2",
|
||||
"lcm",
|
||||
)
|
||||
|
||||
SamplerName = Literal[
|
||||
"euler",
|
||||
"euler_a",
|
||||
"dpm++2m",
|
||||
"dpm++2m_v2",
|
||||
"heun",
|
||||
"dpm2",
|
||||
"lcm",
|
||||
]
|
||||
|
||||
try:
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from lora_ref import LoraRef
|
||||
from model_ref import ModelRef
|
||||
|
||||
class GenerationConfig(BaseModel):
|
||||
"""Contrato de parametros para generacion de imagenes con modelos de difusion.
|
||||
|
||||
Tipo producto central del dominio ml. Usado como contrato compartido entre
|
||||
Python (diffusers, sd.cpp wrapper) y Go (orquestador). Serializa a JSON
|
||||
canonico via model_dump_json() para intercambio entre servicios.
|
||||
|
||||
Attributes:
|
||||
prompt: Descripcion textual positiva de la imagen a generar.
|
||||
negative_prompt: Descripcion de lo que se quiere evitar. None omite
|
||||
el condicionamiento negativo (requiere soporte del modelo).
|
||||
seed: Semilla para reproducibilidad. -1 usa semilla aleatoria.
|
||||
steps: Numero de pasos de denoising. Rango tipico: 20-50.
|
||||
LCM: 4-8 pasos. Valores altos aumentan calidad y tiempo.
|
||||
cfg_scale: Classifier-Free Guidance scale. Controla cuanto el modelo
|
||||
sigue el prompt. Rango tipico: 5.0-12.0.
|
||||
7.5 es el valor clasico. LCM: 1.0-2.0.
|
||||
sampler: Algoritmo de denoising. Ver SamplerName para valores validos.
|
||||
width: Ancho de la imagen en pixeles. Debe ser multiplo de 8.
|
||||
SD1.5: 512. SDXL: 1024. Flux: 1024+.
|
||||
height: Alto de la imagen en pixeles. Mismas restricciones que width.
|
||||
model: Referencia al modelo base. Ver ModelRef.
|
||||
loras: Lista de adaptadores LoRA a aplicar. Lista vacia = sin LoRA.
|
||||
clip_skip: Numero de capas CLIP a saltar desde el final del encoder.
|
||||
None usa el valor por defecto del modelo. Tipico: 1-2 para anime.
|
||||
"""
|
||||
|
||||
model_config = ConfigDict(frozen=True)
|
||||
|
||||
prompt: str
|
||||
negative_prompt: str | None = None
|
||||
seed: int
|
||||
steps: int
|
||||
cfg_scale: float
|
||||
sampler: SamplerName
|
||||
width: int
|
||||
height: int
|
||||
model: ModelRef
|
||||
loras: list[LoraRef] = []
|
||||
clip_skip: int | None = None
|
||||
|
||||
except ImportError:
|
||||
from dataclasses import dataclass, field
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class GenerationConfig: # type: ignore[no-redef]
|
||||
"""Contrato de parametros para generacion de imagenes (fallback dataclass).
|
||||
|
||||
Usar la version pydantic cuando este disponible para validacion y
|
||||
serializacion JSON canonica compartida con Go.
|
||||
|
||||
Attributes:
|
||||
prompt: Descripcion textual positiva de la imagen.
|
||||
negative_prompt: Descripcion de lo que evitar. None = sin condicionamiento negativo.
|
||||
seed: Semilla. -1 = aleatoria.
|
||||
steps: Pasos de denoising (20-50 tipico, 4-8 para LCM).
|
||||
cfg_scale: CFG scale (5.0-12.0 tipico, 1.0-2.0 para LCM).
|
||||
sampler: Algoritmo de denoising (ver SamplerName).
|
||||
width: Ancho en pixeles, multiplo de 8.
|
||||
height: Alto en pixeles, multiplo de 8.
|
||||
model: Referencia al modelo base (ModelRef).
|
||||
loras: Lista de LoRAs a aplicar (LoraRef[]).
|
||||
clip_skip: Capas CLIP a saltar desde el final. None = default del modelo.
|
||||
"""
|
||||
|
||||
prompt: str
|
||||
seed: int
|
||||
steps: int
|
||||
cfg_scale: float
|
||||
sampler: str
|
||||
width: int
|
||||
height: int
|
||||
model: object # ModelRef
|
||||
negative_prompt: str | None = None
|
||||
loras: tuple = field(default_factory=tuple)
|
||||
clip_skip: int | None = None
|
||||
Reference in New Issue
Block a user