Buckets:
| # Pipelines y componentes de la comunidad | |
| Los pipelines de la comunidad son clases [DiffusionPipeline](/docs/diffusers/main/es/api/pipelines/overview#diffusers.DiffusionPipeline) que difieren de la implementación del artículo original. Proporcionan funcionalidad adicional o extienden la implementación del pipeline original. | |
| > [!TIP] | |
| > Echa un vistazo a los pipelines de la comunidad en [diffusers/examples/community](https://github.com/huggingface/diffusers/tree/main/examples/community), que incluyen ejemplos de inferencia y entrenamiento sobre cómo utilizarlos. | |
| Los pipelines de la comunidad se almacenan en el Hub o en el repositorio de GitHub de Diffusers. Los pipelines del Hub son completamente personalizables (scheduler, modelos, código del pipeline, etc.), mientras que los pipelines de GitHub están limitados únicamente al código del pipeline personalizado. Compare los dos tipos de pipeline en la tabla siguiente. | |
| | | GitHub | Hub | | |
| |---|---|---| | |
| | Uso | `custom_pipeline="<filename_without_.py>"` | ID del repositorio de Hub o `trust_remote_code=True` cuando `_class_name` apunta a código personalizado | | |
| | Proceso de revisión | Abre una Pull Request en GitHub y sométela a un proceso de revisión por parte del equipo de Diffusers antes de fusionarla. Esta opción es más lenta. | Sube directamente a un repositorio de Hub sin revisión. Esta es la opción más rápida. | | |
| | Visibilidad | Incluido en el repositorio y la documentación oficiales de Diffusers. | Incluido en tu perfil de Hub y depende de tu propio uso y promoción para ganar visibilidad. | | |
| ## Carga de un pipeline de la comunidad | |
| Cargue cualquier tipo de pipeline de la comunidad pasando `custom_pipeline` a [from_pretrained()](/docs/diffusers/main/es/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained). | |
| ```py | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "stabilityai/stable-diffusion-3-medium-diffusers", | |
| custom_pipeline="pipeline_stable_diffusion_3_instruct_pix2pix", | |
| dtype=torch.float16, | |
| device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| Agrega el argumento `custom_revision` a [from_pretrained()](/docs/diffusers/main/es/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) para cargar un pipeline de la comunidad desde una versión específica (por ejemplo, `v0.30.0` o `main`). De forma predeterminada, los pipelines de la comunidad se cargan desde la última versión estable de Diffusers. | |
| ```py | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "stabilityai/stable-diffusion-3-medium-diffusers", | |
| custom_pipeline="pipeline_stable_diffusion_3_instruct_pix2pix", | |
| custom_revision="main", | |
| dtype=torch.float16, | |
| device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| > [!WARNING] | |
| > Mientras el Hugging Face Hub [analiza](https://huggingface.co/docs/hub/security-malware) los archivos, debes inspeccionar el código de la pipeline del Hub y asegurarte de que sea seguro. | |
| Hay varias formas de cargar un pipeline de la comunidad. | |
| - Pase una ruta a `custom_pipeline` para cargar un pipeline de la comunidad local. El directorio debe contener un archivo `pipeline.py` que contenga la clase del pipeline. | |
| ```py | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "stabilityai/stable-diffusion-3-medium-diffusers", | |
| custom_pipeline="path/to/pipeline_directory", | |
| trust_remote_code=True, | |
| dtype=torch.float16, | |
| device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| - El argumento `custom_pipeline` también es compatible con [from_pipe()](/docs/diffusers/main/es/api/pipelines/overview#diffusers.DiffusionPipeline.from_pipe), lo cual resulta útil para [reutilizar pipelines](./loading#reusing-models-in-multiple-pipelines) sin utilizar memoria adicional. Limita el uso de memoria a solo el pipeline más grande cargado. | |
| ```py | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| pipeline_sd = DiffusionPipeline.from_pretrained( | |
| "emilianJR/CyberRealistic_V3", dtype=torch.float16, device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| pipeline_lpw = DiffusionPipeline.from_pipe( | |
| pipeline_sd, custom_pipeline="lpw_stable_diffusion" | |
| ) | |
| ``` | |
| El método [from_pipe()](/docs/diffusers/main/es/api/pipelines/overview#diffusers.DiffusionPipeline.from_pipe) resulta especialmente útil para cargar pipelines de la comunidad, ya que muchos de ellos no tienen pesos preentrenados. Los pipelines de la comunidad generalmente añaden una funcionalidad sobre un pipeline existente. | |
| ## Componentes de la comunidad | |
| Los componentes de la comunidad permiten crear pipelines con transformadores, UNets, VAEs y programadores personalizados no admitidos por Diffusers. Estos componentes requieren sus propios módulos de Python. | |
| Esta sección muestra cómo los usuarios pueden utilizar componentes de la comunidad para construir un pipeline de la comunidad, utilizando [showlab/show-1-base](https://huggingface.co/showlab/show-1-base) como ejemplo. | |
| 1. Cargue los componentes necesarios, el programador y el procesador de imágenes. El codificador de texto generalmente se importa desde [Transformers](https://huggingface.co/docs/transformers/index). | |
| ```python | |
| from transformers import T5Tokenizer, T5EncoderModel, CLIPImageProcessor | |
| from diffusers import DPMSolverMultistepScheduler | |
| pipeline_id = "showlab/show-1-base" | |
| tokenizer = T5Tokenizer.from_pretrained(pipeline_id, subfolder="tokenizer") | |
| text_encoder = T5EncoderModel.from_pretrained(pipeline_id, subfolder="text_encoder") | |
| scheduler = DPMSolverMultistepScheduler.from_pretrained(pipeline_id, subfolder="scheduler") | |
| feature_extractor = CLIPImageProcessor.from_pretrained(pipeline_id, subfolder="feature_extractor") | |
| ``` | |
| > [!WARNING] | |
| > En los pasos 2 y 3, la implementación personalizada de [UNet](https://github.com/showlab/Show-1/blob/main/showone/models/unet_3d_condition.py) y [pipeline](https://huggingface.co/sayakpaul/show-1-base-with-code/blob/main/unet/showone_unet_3d_condition.py) debe coincidir con el formato mostrado en sus archivos para que este ejemplo funcione. | |
| 2. Carga un [UNet personalizado](https://github.com/showlab/Show-1/blob/main/showone/models/unet_3d_condition.py) que ya está implementado en [showone_unet_3d_condition.py](https://huggingface.co/sayakpaul/show-1-base-with-code/blob/main/unet/showone_unet_3d_condition.py). El nombre de la clase [UNet3DConditionModel](/docs/diffusers/main/es/api/models/unet3d-cond#diffusers.UNet3DConditionModel) se cambia a la implementación personalizada, `ShowOneUNet3DConditionModel`, porque [UNet3DConditionModel](/docs/diffusers/main/es/api/models/unet3d-cond#diffusers.UNet3DConditionModel) ya existe en Diffusers. Todos los componentes necesarios para la clase `ShowOneUNet3DConditionModel` deben colocarse en `showone_unet_3d_condition.py`. | |
| ```python | |
| from showone_unet_3d_condition import ShowOneUNet3DConditionModel | |
| unet = ShowOneUNet3DConditionModel.from_pretrained(pipeline_id, subfolder="unet") | |
| ``` | |
| 3. Cargue el código de la pipeline personalizada (ya implementado en [pipeline_t2v_base_pixel.py](https://huggingface.co/sayakpaul/show-1-base-with-code/blob/main/pipeline_t2v_base_pixel.py)). Este script contiene una clase personalizada `TextToVideoIFPipeline` para generar videos a partir de texto. Al igual que con la UNet personalizada, cualquier código necesario para `TextToVideoIFPipeline` debe colocarse en `pipeline_t2v_base_pixel.py`. | |
| Inicializa `TextToVideoIFPipeline` con `ShowOneUNet3DConditionModel`. | |
| ```python | |
| import torch | |
| from pipeline_t2v_base_pixel import TextToVideoIFPipeline | |
| pipeline = TextToVideoIFPipeline( | |
| unet=unet, | |
| text_encoder=text_encoder, | |
| tokenizer=tokenizer, | |
| scheduler=scheduler, | |
| feature_extractor=feature_extractor, | |
| ) | |
| pipeline = pipeline.to("cuda") # or "mps", "xpu", "cpu" | |
| ``` | |
| 4. Sube el pipeline al Hub para compartirlo con la comunidad. | |
| ```python | |
| pipeline.push_to_hub("custom-t2v-pipeline") | |
| ``` | |
| Después de que el pipeline se haya subido correctamente, realiza los siguientes cambios. | |
| - Cambia el atributo `_class_name` en [model_index.json](https://huggingface.co/sayakpaul/show-1-base-with-code/blob/main/model_index.json#L2) a `["pipeline_t2v_base_pixel", "TextToVideoIFPipeline"]`. | |
| - Sube `showone_unet_3d_condition.py` a la subcarpeta [unet](https://huggingface.co/sayakpaul/show-1-base-with-code/blob/main/unet/showone_unet_3d_condition.py). | |
| - Sube `pipeline_t2v_base_pixel.py` al [repositorio](https://huggingface.co/sayakpaul/show-1-base-with-code/tree/main) de la pipeline. | |
| Para ejecutar la inferencia, añade el argumento `trust_remote_code` al inicializar el pipeline para manejar toda la "magia" detrás de escena. | |
| ```python | |
| import torch | |
| from diffusers import DiffusionPipeline | |
| pipeline = DiffusionPipeline.from_pretrained( | |
| "<change-username>/<change-id>", trust_remote_code=True, dtype=torch.float16 | |
| ) | |
| ``` | |
| > [!WARNING] | |
| > Como precaución adicional al usar `trust_remote_code=True`, pase un hash de commit al argumento `revision` en [from_pretrained()](/docs/diffusers/main/es/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) para asegurarse de que el código no se haya actualizado con nuevo código malicioso (a menos que confíe por completo en los propietarios del modelo). | |
| ## Próximos pasos | |
| - Echa un vistazo a la Issue [#841](https://github.com/huggingface/diffusers/issues/841) para obtener más contexto sobre por qué estamos añadiendo pipelines de la comunidad para ayudar a todos a compartir su trabajo fácilmente sin que se vean frenados. | |
| - Echa un vistazo al repositorio [stabilityai/japanese-stable-diffusion-xl](https://huggingface.co/stabilityai/japanese-stable-diffusion-xl/) para un ejemplo adicional de un pipeline de la comunidad que también utiliza la función `trust_remote_code`. | |
Xet Storage Details
- Size:
- 9.91 kB
- Xet hash:
- 39899114c287770f2a9ca35b4bb1e6c73fcff85051839d9ccc991b6be3e1b77a
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.