| | --- |
| | license: apache-2.0 |
| | --- |
| | # Custom Block Template |
| |
|
| | A template for creating custom ModularPipelineBlocks. Use this as a starting point for building your own blocks. |
| |
|
| | ## Getting Started |
| |
|
| | ### 1. Download the template |
| | ```python |
| | from diffusers import ModularPipelineBlocks |
| | |
| | model_id = "diffusers/custom-block-template" |
| | local_dir = model_id.split("/")[-1] |
| | |
| | blocks = ModularPipelineBlocks.from_pretrained( |
| | model_id, |
| | trust_remote_code=True, |
| | local_dir=local_dir |
| | ) |
| | ``` |
| |
|
| | This saves the template files to `custom-block-template/` locally. Feel free to use a custom `local_dir` |
| |
|
| | ### 2. Edit locally |
| |
|
| | Open `block.py` and implement your custom block: |
| | - Update the class name and `description` |
| | - Define `expected_components` if your block needs models |
| | - Define `inputs` with your input parameters |
| | - Define `intermediate_outputs` with your output parameters |
| | - Implement your logic in `__call__` |
| |
|
| |
|
| | ### 3. Test your block |
| | ```python |
| | from diffusers import ModularPipelineBlocks |
| | |
| | blocks = ModularPipelineBlocks.from_pretrained(local_dir, trust_remote_code=True) |
| | pipeline = blocks.init_pipeline() |
| | output = pipeline(...) # your inputs here |
| | ``` |
| |
|
| | ### 4. Upload to the Hub |
| | ```python |
| | pipeline.save_pretrained(local_dir, repo_id="your-username/your-block-name", push_to_hub=True) |
| | ``` |
| |
|
| | ## Adding Mellon Support |
| |
|
| | To use your block in [Mellon](https://github.com/cubiq/Mellon), add `metadata={"mellon": "<type>"}` to your InputParam/OutputParam definitions, then generate the config: |
| | ```python |
| | from diffusers.modular_pipelines.mellon_node_utils import MellonPipelineConfig |
| | |
| | mellon_config = MellonPipelineConfig.from_custom_block(blocks) |
| | mellon_config.save(local_dir, repo_id="your-username/your-block-name", push_to_hub=True) |
| | ``` |
| |
|
| | See the [Mellon integration guide](https://huggingface.co/docs/diffusers/main/en/modular_pipelines/mellon_custom_blocks) for more details. |