--- 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": ""}` 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.