Buckets:
| ## Mellon ile Özel Blokların Kullanımı | |
| [Mellon](https://github.com/cubiq/Mellon), Modular Diffusers ile entegre olan ve düğüm tabanlı iş akışları için tasarlanmış görsel bir iş akışı arayüzüdür. | |
| > [!WARNING] | |
| > Mellon henüz erken geliştirme aşamasındadır ve üretim kullanımı için hazır değildir. Bunu, entegrasyonun nasıl çalıştığına dair bir ön izleme olarak düşünün! | |
| Özel bloklar Mellon'da hazır olarak çalışır - yalnızca repozitorunuza bir `mellon_pipeline_config.json` dosyası eklemeniz gerekir. Bu yapılandırma dosyası, Mellon'a bloğunuzun parametrelerini arayüz bileşenleri olarak nasıl görüntüleyeceğini belirtir. | |
| [Gemini Prompt Expander](https://huggingface.co/diffusers/gemini-prompt-expander-mellon) bloğuyla çalışırken nasıl göründüğü aşağıdaki gibidir: | |
|  | |
| Mellon'da modüler diffusers özel bloğu kullanmak için: | |
| 1. ModularDiffusers bölümünden bir **Dynamic Block Node** sürükleyin | |
| 2. `repo_id` (ör. `diffusers/gemini-prompt-expander-mellon`) girin | |
| 3. **Özel Blok Yükle**'ye tıklayın | |
| 4. Düğüm, bloğunuzun girdilerini ve çıktılarını göstermek üzere dönüşür | |
| Şimdi kendi özel bloğunuz için bu yapılandırmanın nasıl oluşturulacağını adım adım inceleyelim. | |
| ## Mellon yapılandırması oluşturma adımları | |
| 1. **Parametreleriniz için Mellon türlerini belirtin** - Her `InputParam`/`OutputParam` için, Mellon'un hangi UI bileşenini render edeceğini söyleyen bir tür gereklidir (ör. `"textbox"`, `"dropdown"`, `"image"`). | |
| 2. **`mellon_pipeline_config.json` oluştur** - Yapılandırma şablonu oluşturmak için yardımcı aracımızı kullanın ve onu Hub deponuza gönderin. | |
| 3. **(İsteğe bağlı) Yapılandırmayı manuel olarak ayarlayın** - Ürettiğiniz yapılandırmayı, özel ihtiyaçlarınıza göre ince ayarlayın. | |
| ## Parametreler için Mellon türlerini belirtin | |
| Mellon tipleri, her bir parametrenin arayüzde nasıl görüntülendiğini belirler. Bir parametre için tip belirtmezseniz, varsayılan olarak `"custom"` kullanılır ve bu da basit bir bağlantı noktası olarak görüntülenir. Bunu daha sonra oluşturulan yapılandırmada her zaman ayarlayabilirsiniz. | |
| | Tür | Giriş/Çıkış | Açıklama | | |
| |------|--------------|-------------| | |
| | `image` | Her ikisi | Görsel (PIL Image) | | |
| | `video` | Her ikisi | Video | | |
| | `text` | Her ikisi | Metin görüntüleme | | |
| | `textbox` | Girdi | Metin girişi | | |
| | `dropdown` | Girdi | Açılır seçim menüsü | | |
| | `slider` | Girdi | Sayısal değerler için kaydırıcı | | |
| | `number` | Girdi | Sayısal giriş | | |
| | `checkbox` | Girdi | Boolean anahtarı | | |
| Daha fazla yapılandırma gerektiren parametreler için (seçenekli açılır listeler veya min/max değerli kaydırıcılar gibi) bir `MellonParam` örneğini doğrudan bir dize yerine iletin. Aşağıdaki sınıf yöntemlerinden birini kullanabilir veya `MellonParam(name, label, type, ...)` ile tamamen özel bir tane oluşturabilirsiniz. | |
| | Yöntem | Açıklama | | |
| |--------|-------------| | |
| | `MellonParam.Input.image(name)` | Görsel girişi | | |
| | `MellonParam.Input.textbox(name, default)` | Textarea olarak metin girişi | | |
| | `MellonParam.Input.dropdown(name, options, default)` | Açılır menü seçimi | | |
| | `MellonParam.Input.slider(name, default, min, max, step)` | Sayısal değerler için kaydırıcı | | |
| | `MellonParam.Input.number(name, default, min, max, step)` | Sayısal giriş (kaydırıcı yok) | | |
| | `MellonParam.Input.seed(name, default)` | Rastgeleleştirme düğmesiyle girdi tohumu | | |
| | `MellonParam.Input.checkbox(name, default)` | Boolean onay kutusu | | |
| | `MellonParam.Input.model(name)` | Diffusers bileşenleri için model girişi | | |
| | `MellonParam.Output.image(name)` | Görüntü çıktısı | | |
| | `MellonParam.Output.video(name)` | Video çıktısı | | |
| | `MellonParam.Output.text(name)` | Metin çıktısı | | |
| | `MellonParam.Output.model(name)` | Diffusers bileşenleri için model çıktısı | | |
| Bir Mellon türü belirtmek için aşağıdaki yöntemlerden birini seçin. | |
| ### Blok tanımlarında `metadata` kullanımı | |
| Sıfırdan özel bir blok tanımlıyorsanız, `metadata={"mellon": "<type>"}` ifadesini doğrudan `InputParam` ve `OutputParam` tanımlarınıza ekleyin. Hub'dan mevcut bir özel bloğu düzenliyorsanız, onu yerel olarak nasıl indireceğinizi görmek için [Özel blokları düzenleme](./custom_blocks#editing-custom-blocks) bölümüne bakın. | |
| ```python | |
| class GeminiPromptExpander(ModularPipelineBlocks): | |
| @property | |
| def inputs(self) -> List[InputParam]: | |
| return [ | |
| InputParam( | |
| "prompt", | |
| type_hint=str, | |
| required=True, | |
| description="Prompt to use", | |
| metadata={"mellon": "textbox"}, # Text input | |
| ) | |
| ] | |
| @property | |
| def intermediate_outputs(self) -> List[OutputParam]: | |
| return [ | |
| OutputParam( | |
| "prompt", | |
| type_hint=str, | |
| description="Expanded prompt by the LLM", | |
| metadata={"mellon": "text"}, # Text output | |
| ), | |
| OutputParam( | |
| "old_prompt", | |
| type_hint=str, | |
| description="Old prompt provided by the user", | |
| <CopyLLMTxtMenu containerStyle="float: inline-end; margin-inline-start: 10px; display: inline-flex; position: relative; z-index: 10;"></CopyLLMTxtMenu> | |
| # No metadata - we don't want to render this in UI | |
| ) | |
| ] | |
| ``` | |
| Arayüz yapılandırması üzerinde tam kontrol için, doğrudan bir `MellonParam` örneği iletin: | |
| ```python | |
| from diffusers.modular_pipelines.mellon_node_utils import MellonParam | |
| InputParam( | |
| "mode", | |
| type_hint=str, | |
| default="balanced", | |
| metadata={"mellon": MellonParam.Input.dropdown("mode", options=["fast", "balanced", "quality"])}, | |
| ) | |
| ``` | |
| ### Yapılandırma Oluşturulurken `input_types` ve `output_types` Kullanımı | |
| Mevcut bir pipeline üzerinde çalışıyorsanız veya blok tanımlarınızı temiz tutmayı tercih ediyorsanız, yapılandırmayı oluştururken `input_types/output_types` argümanını kullanarak türleri belirtin: | |
| ```python | |
| from diffusers.modular_pipelines.mellon_node_utils import MellonPipelineConfig | |
| mellon_config = MellonPipelineConfig.from_custom_block( | |
| blocks, | |
| input_types={"prompt": "textbox"}, | |
| output_types={"prompt": "text"} | |
| ) | |
| ``` | |
| > [!NOTE] | |
| > `metadata` ve `input_types`/`output_types` birlikte belirtildiğinde, argümanlar `metadata` değerini geçersiz kılar. | |
| ## Mellon yapılandırmasını oluşturup it | |
| Bloğunuza metadata ekledikten sonra varsayılan Mellon yapılandırma şablonunu oluşturun ve Hub'a gönderin: | |
| ```python | |
| from diffusers import ModularPipelineBlocks | |
| from diffusers.modular_pipelines.mellon_node_utils import MellonPipelineConfig | |
| # load your custom blocks from your local dir | |
| blocks = ModularPipelineBlocks.from_pretrained("/path/local/folder", trust_remote_code=True) | |
| # Generate the default config template | |
| mellon_config = MellonPipelineConfig.from_custom_block(blocks) | |
| # push the default template to `repo_id`, you will need to pass the same local folder path so that it will save the config locally first | |
| mellon_config.save( | |
| local_dir="/path/local/folder", | |
| repo_id= repo_id, | |
| push_to_hub=True | |
| ) | |
| ``` | |
| Bu işlem, deposunuzda bir `mellon_pipeline_config.json` dosyası oluşturur. | |
| ## Yapılandırmayı gözden geçirin ve ayarlayın | |
| Oluşturulan şablon bir başlangıç noktasıdır - ihtiyaçlarınıza göre ayarlamanız gerekebilir. Gemini Prompt Expander için oluşturulan yapılandırmayı inceleyelim: | |
| ```json | |
| { | |
| "label": "Gemini Prompt Expander", | |
| "default_repo": "", | |
| "default_dtype": "", | |
| "node_params": { | |
| "custom": { | |
| "params": { | |
| "prompt": { | |
| "label": "Prompt", | |
| "type": "string", | |
| "display": "textarea", | |
| "default": "" | |
| }, | |
| "out_prompt": { | |
| "label": "Prompt", | |
| "type": "string", | |
| "display": "output" | |
| }, | |
| "old_prompt": { | |
| "label": "Old Prompt", | |
| "type": "custom", | |
| "display": "output" | |
| }, | |
| "doc": { | |
| "label": "Doc", | |
| "type": "string", | |
| "display": "output" | |
| } | |
| }, | |
| "input_names": ["prompt"], | |
| "model_input_names": [], | |
| "output_names": ["out_prompt", "old_prompt", "doc"], | |
| "block_name": "custom", | |
| "node_type": "custom" | |
| } | |
| } | |
| } | |
| ``` | |
| ### Yapıyı Anlama | |
| `params` sözlüğü, her bir UI öğesinin nasıl çizileceğini tanımlar. `input_names`, `model_input_names` ve `output_names` listeleri, bu UI öğelerini alttaki [ModularPipelineBlocks](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks) bileşenlerinin G/Ç arayüzüne eşler: | |
| | Mellon Yapılandırması | ModülerPipelineBlokları | | |
| |---------------|----------------------| | |
| | `input_names` | `inputs` özelliği | | |
| | `model_input_names` | `expected_components` özelliği | | |
| | `output_names` | `intermediate_outputs` özelliği | | |
| Bu örnekte: `prompt` tek girdidir. Model bileşenleri yoktur ve çıktılar `out_prompt`, `old_prompt` ve `doc` içerir. | |
| Şimdi `params` sözlüğüne bakalım: | |
| - **`prompt`**: `display: "textarea"` (bir metin giriş kutusu olarak görüntülenir), `label: "Prompt"` (arayüzde gösterilir) ve `default: ""` (boş başlar) içeren bir giriş parametresidir. `type: "string"` alanı Mellon'da önemlidir çünkü hangi düğümlerin birbirine bağlanabileceğini belirler - yalnızca eşleşen türler "noodles" ile bağlanabilir. | |
| - **`out_prompt`**: Genişletilmiş istem çıktısı. Girdi ve çıktı aynı adı paylaştığı için (`prompt`) yapılandırma içinde ad çakışmalarını önlemek amacıyla `out_` öneki otomatik olarak eklendi. `display: "output"` değerine sahip olup bir çıktı soketi olarak görüntülenir. | |
| - **`old_prompt`**: Metadata belirtmediğimiz için `type: "custom"` değerine sahip. Bu, arayüzde basit bir nokta olarak görüntülenir. Arayüzde bunu gerçekten göstermek istemediğimiz için kaldırabiliriz. | |
| - **`doc`**: Belgeleme çıktısı, tüm özel bloklara otomatik olarak eklenir. | |
| ### Ayarlamalar Yapma | |
| Kullanmayacağınız için `old_prompt`'ı hem `params` hem de `output_names` listesinden kaldırın. | |
| ```json | |
| { | |
| "label": "Gemini Prompt Expander", | |
| "default_repo": "", | |
| "default_dtype": "", | |
| "node_params": { | |
| "custom": { | |
| "params": { | |
| "prompt": { | |
| "label": "Prompt", | |
| "type": "string", | |
| "display": "textarea", | |
| "default": "" | |
| }, | |
| "out_prompt": { | |
| "label": "Prompt", | |
| "type": "string", | |
| "display": "output" | |
| }, | |
| "doc": { | |
| "label": "Doc", | |
| "type": "string", | |
| "display": "output" | |
| } | |
| }, | |
| "input_names": ["prompt"], | |
| "model_input_names": [], | |
| "output_names": ["out_prompt", "doc"], | |
| "block_name": "custom", | |
| "node_type": "custom" | |
| } | |
| } | |
| } | |
| ``` | |
| Son yapılandırmayı [diffusers/gemini-prompt-expander-mellon](https://huggingface.co/diffusers/gemini-prompt-expander-mellon) adresinde görüntüleyin. | |
Xet Storage Details
- Size:
- 11.4 kB
- Xet hash:
- 3e3fc974b22cac63ba6a596e009d4d5fbbbccedffa79cc432b39f87d90332b5c
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.