Files
fn_registry/python/functions/ml/sdcpp_python_generate.md
T
egutierrez 8284afcba5 feat(ml): auto-commit con 14 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 01:22:02 +02:00

2.8 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
sdcpp_python_generate function py ml 1.0.0 impure def sdcpp_python_generate(sd: Any, cfg: GenerationConfig) -> ImageGenResult Genera una imagen con un StableDiffusion (stable-diffusion-cpp-python) usando GenerationConfig como contrato. Mapea sampler, mide duracion y retorna ImageGenResult con meta del backend.
ml
stable-diffusion
sdcpp
inference
backend
generate
txt2img
sdcpp_python_load_py_ml
generation_config_py_ml
image_gen_result_py_ml
image_gen_result_py_ml
false error_go_core
stable_diffusion_cpp
PIL
name desc
sd Instancia StableDiffusion cargada via sdcpp_python_load. Debe tener metodo generate_image().
name desc
cfg Contrato de parametros de generacion. cfg.sampler debe ser uno de: euler | euler_a | dpm++2m | dpm++2m_v2 | heun | dpm2 | lcm.
ImageGenResult con image=PIL.Image (primera del batch), meta con backend/model/sampler/seed/wtype, duration_ms medido, vram_peak_mb=None. true
generate retorna ImageGenResult valido
duration_ms mayor que cero
meta backend es sdcpp_python
python/functions/ml/tests/test_sdcpp_python_backend.py python/functions/ml/sdcpp_python_generate.py

Ejemplo

import sys
sys.path.insert(0, "python/functions/ml")
from model_ref import ModelRef
from generation_config import GenerationConfig
from sdcpp_python_load import sdcpp_python_load
from sdcpp_python_generate import sdcpp_python_generate

model = ModelRef(
    name="sd-turbo",
    model_type="sd15",
    quantization="fp16",
    path="/home/lucas/vaults/imagegen_models/diffusers/sd-turbo/sd_turbo.safetensors",
)
sd = sdcpp_python_load(model)

cfg = GenerationConfig(
    prompt="a red cat sitting on a wooden table",
    seed=42,
    steps=4,
    cfg_scale=1.0,
    sampler="euler_a",
    width=512,
    height=512,
    model=model,
)
result = sdcpp_python_generate(sd, cfg)
result.image.save("/tmp/output.png")
print(f"Generado en {result.duration_ms}ms, meta={result.meta}")

Notas

  • El sampler mapping canonico: euler->euler, euler_a->euler_a, dpm++2m->dpmpp2m, dpm++2m_v2->dpmpp2mv2, heun->heun, dpm2->dpm2, lcm->lcm.
  • API usada: StableDiffusion.generate_image() (binding 0.4.7+). Versiones anteriores exponían txt_to_img() — actualizar el package si se encuentra ese error.
  • vram_peak_mb siempre None: stable-diffusion-cpp-python no expone medicion de VRAM.
  • clip_skip: -1 le dice al backend que use el valor por defecto del modelo (equivale a no especificarlo). Si cfg.clip_skip es None, se pasa -1.
  • El campo wtype en meta se extrae via getattr(sd, 'wtype', 'unknown') ya que el binding no garantiza el atributo en todas las versiones.