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,60 @@
|
||||
---
|
||||
name: diffusers_load_pipeline
|
||||
kind: function
|
||||
lang: py
|
||||
domain: ml
|
||||
version: "1.0.0"
|
||||
purity: impure
|
||||
signature: "def diffusers_load_pipeline(model: ModelRef, device: str = 'auto', dtype: str = 'fp16') -> Any"
|
||||
description: "Carga un pipeline diffusers (AutoPipelineForText2Image) con cache global por (model_key, dtype, device). Segunda llamada con mismos parametros retorna el objeto cacheado sin recargar disco."
|
||||
tags: [diffusers, ml, image-generation, pipeline, cache, torch]
|
||||
uses_functions: [torch_device_select_py_ml]
|
||||
uses_types: [model_ref_py_ml]
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [torch, diffusers]
|
||||
params:
|
||||
- name: model
|
||||
desc: "Referencia al modelo. model.path si disponible (ruta local), model.name si no (HuggingFace Hub o nombre corto)."
|
||||
- name: device
|
||||
desc: "Preferencia de device: 'auto' (CUDA>MPS>CPU), 'cuda', 'cuda:N', 'mps', 'cpu'. Default 'auto'."
|
||||
- name: dtype
|
||||
desc: "Precision del modelo: 'fp16' (torch.float16 + variant=fp16), 'bf16' (bfloat16), 'fp32' (float32). Default 'fp16'."
|
||||
output: "Pipeline diffusers cargado y movido al device. Callable via pipe(prompt=..., ...). Cacheado en _PIPELINE_CACHE."
|
||||
tested: true
|
||||
tests:
|
||||
- "carga pipeline y retorna callable"
|
||||
- "segunda carga usa cache (< 100ms)"
|
||||
test_file_path: "python/functions/ml/tests/test_diffusers_backend.py"
|
||||
file_path: "python/functions/ml/diffusers_load_pipeline.py"
|
||||
---
|
||||
|
||||
## Ejemplo
|
||||
|
||||
```python
|
||||
import sys
|
||||
sys.path.insert(0, "python/functions/ml")
|
||||
from diffusers_load_pipeline import diffusers_load_pipeline
|
||||
from model_ref import ModelRef
|
||||
|
||||
model = ModelRef(
|
||||
name="sd-turbo",
|
||||
model_type="sd15",
|
||||
quantization="fp16",
|
||||
path="/home/lucas/vaults/imagegen_models/diffusers/sd-turbo",
|
||||
)
|
||||
pipe = diffusers_load_pipeline(model, device="cuda", dtype="fp16")
|
||||
# Segunda llamada: cache hit, < 100ms
|
||||
pipe2 = diffusers_load_pipeline(model, device="cuda", dtype="fp16")
|
||||
assert pipe is pipe2
|
||||
```
|
||||
|
||||
## Notas
|
||||
|
||||
Cache global `_PIPELINE_CACHE` indexado por `(model_key, dtype, resolved_device)`.
|
||||
`model_key` es `model.path` si no es None, sino `model.name`.
|
||||
|
||||
Para liberar memoria: usar `diffusers_unload(pipe=None)` que llama `_clear_pipeline_cache()`.
|
||||
|
||||
Imports lazy de torch y diffusers dentro de la funcion — ImportError descriptivo si no instalados.
|
||||
Reference in New Issue
Block a user