Buckets:
| <meta charset="utf-8" /><meta name="hf:doc:metadata" content="{"title":"Felsefe","local":"philosophy","sections":[{"title":"Performans yerine Kullanılabilirlik","local":"usability-over-performance","sections":[],"depth":2},{"title":"Basit ve kolay","local":"simple-over-easy","sections":[],"depth":2},{"title":"Ayarlanabilir, katkıda bulunmaya uygun soyutlama katmanı","local":"tweakable-contributor-friendly-over-abstraction","sections":[],"depth":2},{"title":"Detaylarda Tasarım Felsefesi","local":"design-philosophy-in-details","sections":[{"title":"Hattalar","local":"pipelines","sections":[],"depth":3},{"title":"Modüler Diffusers","local":"modular-diffusers","sections":[],"depth":3},{"title":"Modeller","local":"models","sections":[],"depth":3},{"title":"Zamanlayıcılar","local":"schedulers","sections":[],"depth":3}],"depth":2}],"depth":1}"/> | |
| <link href="/docs/diffusers/main/en/_app/immutable/entry/start.vZc-dOUR.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/Bafuik5c.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/Bupkjr9f.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/entry/app.B6c3Ml05.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/CyvZ3FS5.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/l0QnnOED.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/DnVIJfC5.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/DsnmJJEf.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/nodes/0.BQlx092V.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/CoSrdQax.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/nodes/308.tdt12v8Y.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/B4AMoTAu.js" rel="modulepreload"> | |
| <!--80qojn--><meta name="hf:doc:metadata" content="{"title":"Philosophy","local":"philosophy","sections":[{"title":"Usability over Performance","local":"usability-over-performance","sections":[],"depth":2},{"title":"Simple over easy","local":"simple-over-easy","sections":[],"depth":2},{"title":"Tweakable, contributor-friendly over abstraction","local":"tweakable-contributor-friendly-over-abstraction","sections":[],"depth":2},{"title":"Design Philosophy in Details","local":"design-philosophy-in-details","sections":[{"title":"Pipelines","local":"pipelines","sections":[],"depth":3},{"title":"Modular Diffusers","local":"modular-diffusers","sections":[],"depth":3},{"title":"Models","local":"models","sections":[],"depth":3},{"title":"Schedulers","local":"schedulers","sections":[],"depth":3}],"depth":2}],"depth":1}"/><!----> | |
| <link href="/docs/diffusers/main/en/_app/immutable/assets/0.tn0RQdqM.css" rel="modulepreload"> <!--[--><!--[0--><!--[--><!--[0--><!--[--><p></p> <div class="items-center shrink-0 min-w-[100px] max-sm:min-w-[50px] justify-end ml-auto flex" style="float: inline-end; margin-inline-start: 10px; display: inline-flex; position: relative; z-index: 10;"><div dir="ltr" class="inline-flex rounded-md max-sm:rounded-sm"><button class="inline-flex items-center gap-1 h-7 max-sm:h-7 px-2 max-sm:px-1.5 text-sm font-medium text-gray-800 border border-r-0 rounded-l-md max-sm:rounded-l-sm border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-live="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0 hover:text-gray-800 dark:hover:text-gray-200"><svg class="sm:size-3.5 size-3" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----></span> <span dir="auto">Copy page</span></button> <button class="inline-flex items-center justify-center w-6 max-sm:w-5 h-7 max-sm:h-7 disabled:pointer-events-none text-sm text-gray-500 hover:text-gray-700 dark:hover:text-white rounded-r-md max-sm:rounded-r-sm border border-l transition border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-haspopup="menu" aria-expanded="false" aria-label="Open copy menu"><svg class="transition-transform text-gray-400 overflow-visible sm:size-3.5 size-3 rotate-0" width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg><!----></button></div> <!--[-1--><!--]--></div><!----> <!--[0--><h1 class="relative group"><a id="philosophy" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#philosophy"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Felsefe<!----></span></h1><!--]--><!----> <p>🧨 Diffusers, birden fazla modalitede <strong>en son teknolojiye sahip</strong> önceden eğitilmiş difüzyon modelleri sunar. | |
| Amaç hem çıkarım hem de eğitim için <strong>modüler bir araç kutusu</strong> olarak hizmet etmektir.</p> <p>Zamanın testine dayanacak bir kütüphane inşa etmeyi hedeflediğimiz için API tasarımına büyük önem veriyoruz.</p> <p>Kısaca, Diffusers, PyTorch’un doğal bir uzantısı olarak tasarlanmıştır. Bu nedenle, tasarım tercihlerimizin çoğu <a href="https://pytorch.org/docs/stable/community/design.html#pytorch-design-philosophy" rel="nofollow">PyTorch Tasarım İlkeleri</a>ne dayanmaktadır. En önemlilerine göz atalım:</p> <!--[1--><h2 class="relative group"><a id="usability-over-performance" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#usability-over-performance"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Performans yerine Kullanılabilirlik<!----></span></h2><!--]--><!----> <ul><li>Diffusers, birçok yerleşik performans artırıcı özelliğe sahip olsa da (bkz. <a href="https://huggingface.co/docs/diffusers/optimization/fp16" rel="nofollow">Hafıza ve Hız</a>), modeller her zaman en yüksek hassasiyetle ve en düşük optimizasyonla yüklenir. Bu nedenle, kullanıcı tarafından aksi belirtilmedikçe difüzyon hatları varsayılan olarak CPU üzerinde ve float32 hassasiyetiyle örneklenir. Bu durum, farklı platformlar ve hızlandırıcılar arasında kullanılabilirliği garanti eder ve kütüphanenin çalıştırılması için karmaşık kurulumların gerekli olmamasını sağlar.</li> <li>Diffusers, <strong>hafif</strong> bir paket olmayı hedefler ve bu nedenle çok az zorunlu bağımlılığı vardır; ancak performansı iyileştirebilen (ör. <code>accelerate</code>, <code>safetensors</code>, <code>onnx</code> vb.) birçok isteğe bağlı bağımlılığı bulunur. Kütüphanenin mümkün olduğunca hafif kalmasını sağlayarak, diğer paketlere bağımlılık olarak eklendiğinde endişe vermemesini amaçlıyoruz.</li> <li>Diffusers, yoğunlaştırılmış ve sihirli kod yerine basit ve kendi kendini açıklayan kodu tercih eder. Bu, lambda fonksiyonları gibi kısa yoldan kod sözdizimleri ve gelişmiş PyTorch operatörlerinin genellikle istenmediği anlamına gelir.</li></ul> <!--[1--><h2 class="relative group"><a id="simple-over-easy" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#simple-over-easy"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Basit ve kolay<!----></span></h2><!--]--><!----> <p>PyTorch’ün belirttiği gibi, <strong>açık olan, örtük olandan iyidir</strong> ve <strong>basit olan, karmaşıktan iyidir</strong>. Bu tasarım felsefesi, kütüphanenin birden fazla bölümünde kendini gösterir:</p> <ul><li>Kullanıcının cihaz yönetimini ele alabilmesi için <a href="https://huggingface.co/docs/diffusers/main/en/api/diffusion_pipeline#diffusers.DiffusionPipeline.to" rel="nofollow"><code>DiffusionPipeline.to</code></a> gibi yöntemlerle PyTorch API’sini takip ediyoruz.</li> <li>Sessizce hatalı girdiyi düzeltmek yerine, öz hata mesajları fırlatmak tercih edilir. Diffusers, kütüphaneyi mümkün olduğunca kullanımı kolay hale getirmek yerine, kullanıcıyı eğitmeyi hedefler.</li> <li>Karmaşık model ve zamanlayıcı mantığı, içinde sihirli bir şekilde ele alınmak yerine dışa açılır. Zamanlayıcılar/Örnekleyiciler, birbirlerine minimum bağımlılıkla difüzyon modellerinden ayrıştırılır. Bu, kullanıcının açılmış gürültü azaltma döngüsünü yazmasını zorunlu kılar. Ancak bu ayrıştırma, hata ayıklamayı kolaylaştırır ve kullanıcının gürültü azaltma sürecini uyarlaması veya difüzyon modellerini ya da zamanlayıcıları değiştirmesi üzerinde daha fazla kontrol sağlar.</li> <li>Difüzyon hattının ayrı ayrı eğitilen bileşenleri, <em>örneğin</em> metin kodlayıcı, unet ve varyasyonel otoenkoder, her birinin kendi model sınıfına sahiptir. Bu durum, kullanıcının farklı model bileşenleri arasındaki etkileşimi yönetmesini zorunlu kılar ve seri hale getirme biçimi model bileşenlerini farklı dosyalara ayırır. Bununla birlikte, bu yapı hata ayıklama ve özelleştirmeyi kolaylaştırır. DreamBooth veya Textual Inversion eğitimi, Diffusers'ın difüzyon hattının tekil bileşenlerini ayırabilme yeteneği sayesinde çok basittir.</li></ul> <!--[1--><h2 class="relative group"><a id="tweakable-contributor-friendly-over-abstraction" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#tweakable-contributor-friendly-over-abstraction"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Ayarlanabilir, katkıda bulunmaya uygun soyutlama katmanı<!----></span></h2><!--]--><!----> <p>Kütüphanenin büyük bir bölümünde Diffusers, <a href="https://github.com/huggingface/transformers" rel="nofollow">Transformers kütüphanesinin</a> önemli bir tasarım ilkesini benimser: aceleci soyutlamalardan ziyade kopyala-yapıştır kodu tercih etmek. Bu tasarım ilkesi oldukça görüşlüdür ve <a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself" rel="nofollow">Kendini tekrarlama (DRY)</a> gibi popüler tasarım ilkeleriyle keskin bir tezat oluşturur. | |
| Kısacası, tıpkı Transformers'ın modelleme dosyaları için yaptığı gibi, Diffusers da pipeline'lar ve zamanlayıcılar için son derece düşük bir soyutlama düzeyini ve çok kendi kendine yeten kodu tercih eder. | |
| Fonksiyonlar, uzun kod blokları ve hatta sınıflar, ilk bakışta kütüphaneyi bakımsız kılacak kötü ve özensiz bir tasarım tercihi gibi görünen birden fazla dosya arasında kopyalanabilir. <strong>Bununla birlikte</strong>, bu tasarım Transformers için son derece başarılı kanıtlanmış ve topluluk odaklı, açık kaynak makine öğrenimi kütüphaneleri için çok mantıklıdır çünkü:</p> <ul><li>Makine Öğrenimi, paradigmaların, model mimarilerinin ve algoritmaların hızla değiştiği son derece hızlı ilerleyen bir alandır; bu durum, uzun ömürlü kod soyutlamaları tanımlamayı çok zor kılar.</li> <li>Makine Öğrenimi uygulayıcıları, fikir üretimi ve araştırma için mevcut kodu hızla ayarlayabilmeyi tercih eder; bu nedenle birçok soyutlama içeren kod yerine kendi içinde tamamlanmış (self-contained) kodu tercih ederler.</li> <li>Açık kaynak kütüphaneler topluluk katkılarına dayanır ve bu nedenle katkı sunmanın kolay olduğu bir kütüphane oluşturmak zorundadır. Kod ne kadar soyut olursa, bağımlılıklar o kadar artar, okunması ve katkı sunması o kadar zorlaşır. Katkıda bulunanlar, hayati işlevselliği bozma korkusuyla çok soyut kütüphanelere katkı sunmayı basitçe bırakır. Bir kütüphaneye katkı sunmak diğer temel kodu bozamıyorsa, bu durum yalnızca potansiyel yeni katkıda bulunanlar için daha davetkar olmakla kalmaz, aynı zamanda birden fazla parçaya paralel olarak incelemek ve katkı sunmak da daha kolay hale gelir.</li></ul> <p>Hugging Face'te bu tasarıma <strong>tek dosya politikası</strong> diyoruz; bu, belirli bir sınıfın neredeyse tüm kodunun tek, kendi içinde tamamlanmış bir dosyada yazılması gerektiği anlamına gelir. Felsefe hakkında daha fazla bilgi edinmek için <a href="https://huggingface.co/blog/transformers-design-philosophy" rel="nofollow">bu blog yazısına</a> göz atabilirsiniz.</p> <p>Diffusers'da bu felsefeyi pipeline'lar, zamanlayıcılar ve modeller için eşit şekilde benimsiyoruz. Bu kuraldan önceki bazı eski modeller olduğu gibi korunur; tüm yeni model mimarileri kendi kendine yeten dosyalarında yer alır. Ayrıntılar için aşağıdaki <a href="#models">Modeller</a> bölümüne bakın.</p> <p>Harika, şimdi 🧨 Diffusers'ın neden bu şekilde tasarlandığını genel olarak anlamış olmalısınız 🤗. | |
| Bu tasarım ilkelerini kütüphane genelinde tutarlı bir şekilde uygulamaya çalışıyoruz. Yine de, felsefeye ilişkin bazı küçük istisnalar veya bazı talihsiz tasarım seçimleri var. Tasarım hakkında geri bildiriminiz varsa, bunu <a href="https://github.com/huggingface/diffusers/issues/new?assignees=&labels=&template=feedback.md&title=" rel="nofollow">doğrudan GitHub'da</a> duymaktan memnuniyet duyarız ❤️.</p> <!--[1--><h2 class="relative group"><a id="design-philosophy-in-details" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#design-philosophy-in-details"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Detaylarda Tasarım Felsefesi<!----></span></h2><!--]--><!----> <p>Şimdi tasarım felsefesinin inceliklerine geçelim. Diffusers, <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/models" rel="nofollow">modelleri</a> ve <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/schedulers" rel="nofollow">zamanlayıcıları</a> çalıştırılabilir bir iş akışında birleştirmek için iki yol sunar: her pipeline sınıfının tek bir görevi olan, monolitik standart <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/pipelines" rel="nofollow">pipeline'lar</a> ve birleştirilebilir, blok tabanlı Modular Diffusers. Aşağıdaki bölümler sırasıyla pipeline'ları, modüler pipeline'ları, modelleri ve zamanlayıcıları ele alır.</p> <!--[2--><h3 class="relative group"><a id="pipelines" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#pipelines"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Hattalar<!----></span></h3><!--]--><!----> <p>Pipelines, standart veya modüler olsun, yalnızca çıkarım (inference) için tasarlanmıştır. Kullanımı kolay olacak şekilde tasarlanırlar (bu nedenle <a href="#simple-over-easy">Simple over easy</a> ilkesini %100 uygulamazlar): okunabilir, kendi kendini açıklayan, kolayca ayarlanabilir ve <a href="#models">modellerin</a> ile <a href="#schedulers">zamanlayıcıların</a> nasıl kullanılacağına dair örnekler olarak en iyi şekilde değerlendirilmelidirler. Özellik bakımından eksiksiz değildirler. Diffusers üzerine eksiksiz özelliklere sahip kullanıcı arayüzleri oluşturmak için <a href="../modular_diffusers/overview">Modular Diffusers</a> kullanın.</p> <p>Aşağıdaki tasarım ilkeleri takip edilir:</p> <ul><li>Pipelines follow the single-file policy. All pipelines can be found in individual directories under src/diffusers/pipelines. One pipeline folder corresponds to one diffusion paper/project/release. Multiple pipeline files can be gathered in one pipeline folder, as it’s done for <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/pipelines/stable_diffusion" rel="nofollow"><code>src/diffusers/pipelines/stable-diffusion</code></a>. If pipelines share similar functionality, one can make use of the <a href="https://github.com/huggingface/diffusers/blob/125d783076e5bd9785beb05367a2d2566843a271/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py#L251" rel="nofollow"># Copied from mechanism</a>.</li> <li>Tüm Pipelines, <a href="/docs/diffusers/main/tr/api/pipelines/overview#diffusers.DiffusionPipeline">DiffusionPipeline</a>'den devralır.</li> <li>Her pipeline, <a href="https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/blob/main/model_index.json" rel="nofollow"><code>model_index.json</code> dosyasında</a> belgelenen, pipeline öznitelikleri olarak aynı adla erişilebilen ve <a href="https://huggingface.co/docs/diffusers/main/en/api/diffusion_pipeline#diffusers.DiffusionPipeline.components" rel="nofollow"><code>DiffusionPipeline.components</code></a> işleviyle pipelinelar arasında paylaşılabilen farklı model ve zamanlayıcı bileşenlerinden oluşur.</li> <li>Her pipeline, <a href="https://huggingface.co/docs/diffusers/main/en/api/diffusion_pipeline#diffusers.DiffusionPipeline.from_pretrained" rel="nofollow"><code>DiffusionPipeline.from_pretrained</code></a> işlevi üzerinden yüklenebilir olmalıdır.</li> <li>Her pipeline, <code>__call__</code> yöntemi üzerinden çalıştırılacak tek ve yalnız bir yola sahip olmalıdır. <code>__call__</code> argümanlarının adlandırılması tüm pipeline'lar arasında tutarlı olmalıdır.</li> <li>Pipelines, çözmek üzere tasarlandıkları görevin adını taşımalıdır.</li></ul> <!--[2--><h3 class="relative group"><a id="modular-diffusers" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#modular-diffusers"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Modüler Diffusers<!----></span></h3><!--]--><!----> <p>Modular Diffusers, standart pipeline'lerin birleştirilebilir alternatifi olarak öne çıkar. Yeniden kullanılabilir <em>pipeline bloklarından</em> oluşan, karıştırıp eşleştirebileceğiniz, değiştirebileceğiniz ve paylaşabileceğiniz bir iş akışı oluşturursunuz. Standart pipeline'lar, modellerin ve zamanlayıcıların nasıl kullanılacağına dair gevşek referans örnekleridir. Modular Diffusers, Diffusers üzerine tam özellikli kullanıcı arayüzleri oluşturmak ve topluluğun yeni pipeline'ları merkeziyetsiz bir şekilde oluşturup paylaşması için önerilen yoldur.</p> <p>Aşağıdaki tasarım ilkeleri takip edilir:</p> <ul><li>Modüler hatlar, tek dosya politikasını izler. Her biri <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/modular_pipelines" rel="nofollow">src/diffusers/modular_pipelines/</a> altında kendi klasöründe bulunur ve klasör, iş akışını aşama başına bir dosya olacak şekilde böler: <code>encoders.py</code>, <code>before_denoise.py</code>, <code>denoise.py</code> ve <code>decoders.py</code>. İki dosya daha hattı tamamlar. <code>modular_blocks_<model>.py</code> aşamaları bir araya getirir ve <code>modular_pipeline.py</code>, model başına <a href="/docs/diffusers/main/tr/api/modular_diffusers/pipeline#diffusers.ModularPipeline">ModularPipeline</a> alt sınıfını tanımlar. Modüler hatlar birbirine çapraz içe aktarma yapmaz.</li> <li>Each modular pipeline is defined as a set of <a href="/docs/diffusers/main/tr/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks">ModularPipelineBlocks</a>. Leaf blocks live in the stage files (<code>encoders.py</code>, <code>before_denoise.py</code>, <code>denoise.py</code>, <code>decoders.py</code>), and <code>modular_blocks_<model>.py</code> assembles them into the full workflow with container classes like <a href="/docs/diffusers/main/tr/api/modular_diffusers/pipeline_blocks#diffusers.SequentialPipelineBlocks">SequentialPipelineBlocks</a> and <a href="/docs/diffusers/main/tr/api/modular_diffusers/pipeline_blocks#diffusers.AutoPipelineBlocks">AutoPipelineBlocks</a>. This splits apart two concepts that <code>DiffusionPipeline combines</code>. A block is a pure definition. It declares inputs, outputs, and component dependencies, but holds no weights and can’t run. A <a href="/docs/diffusers/main/tr/api/modular_diffusers/pipeline#diffusers.ModularPipeline">ModularPipeline</a>, created with <code>.init_pipeline(repo_id)</code>, is the runnable counterpart. Keeping blocks stateless and weight-free is what makes them freely composable, swappable, and shareable across workflows.</li> <li>Yeni bir görevi desteklemek için, görev özel blokları yazın, bunları mevcut bloklarla birleştirin ve üst düzey blok montajında iş akışını <code>_workflow_map</code> içinde kaydedin. Tek bir <code>ModularPipeline</code>, metinden görüntüye, görüntüden görüntüye ve inpainting gibi birçok iş akışını destekleyebilirken, bir <code>DiffusionPipeline</code> yalnızca birini çalıştırır.</li></ul> <p>Tasarım ve kullanım kılavuzunun tamamı için <a href="../modular_diffusers/overview">Modular Diffusers belgelerini</a> inceleyin.</p> <!--[2--><h3 class="relative group"><a id="models" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#models"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Modeller<!----></span></h3><!--]--><!----> <p>Modeller, <a href="https://pytorch.org/docs/stable/generated/torch.nn.Module.html" rel="nofollow">PyTorch’un Module sınıfının</a> doğal uzantıları olan yapılandırılabilir araç kutuları olarak tasarlanmıştır. <em>tek dosya politikasına</em> uymalıdırlar. Bu konvansiyondan önceki bazı eski modeller olduğu gibi korunmuştur. Bunları yeni modeller için takip edilecek kalıplar olarak değil, eski istisnalar olarak değerlendirin. Örneğin, orijinal <a href="/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.UNet2DConditionModel">UNet2DConditionModel</a> sınıfı çeşitli UNet varyasyonları için kullanılmıştır.</p> <p>Aşağıdaki tasarım ilkeleri takip edilir:</p> <ul><li>Her model mimari türü, <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/models" rel="nofollow">src/diffusers/models</a> altında kendi klasöründe bulunur; örneğin <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/models/transformers" rel="nofollow">transformers/</a>, <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/models/autoencoders" rel="nofollow">autoencoders/</a> veya <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/models/unets" rel="nofollow">unets/</a>. Her model ailesi, o klasör içinde kendi dosyasına sahiptir; örneğin <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_flux.py" rel="nofollow">transformer_flux.py</a> ve <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_wan.py" rel="nofollow">transformer_wan.py</a>.</li> <li>Modeller tek dosya politikasını izler. Her model dosyası, timestep gömme ve normalizasyon katmanları gibi her modelin aynı şekilde kullandığı küçük sayıda standart modül dışında kendi içinde tamamlanmış olmalıdır. Bunları <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/embeddings.py" rel="nofollow">embeddings.py</a> ve <a href="https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/normalization.py" rel="nofollow">normalization.py</a> dosyalarından içe aktarın.</li> <li>Modeller, tıpkı PyTorch’un <code>Module</code> sınıfı gibi karmaşıklığı ortaya koymayı amaçlar ve açık hata mesajları verir.</li> <li>Tüm modeller <code>ModelMixin</code> ve <code>ConfigMixin</code> sınıflarından devralır.</li> <li>Kodda büyük değişiklikler gerektirmemesi, geriye dönük uyumluluğu koruması ve önemli ölçüde bellek veya hesaplama kazancı sağlaması koşullarını sağladığında modeller performans için optimize edilebilir.</li> <li>Modeller varsayılan olarak en yüksek hassasiyete ve en düşük performans ayarına sahip olmalıdır.</li> <li>Mevcut bir mimariye benzer yeni bir model mimarisi entegre etmek için, başlangıç noktası olarak mevcut dosyayı kopyalayın ve uyarlayın. Aynı kalan katmanlarda <a href="./contribution#copied-from-mechanism"><code># Copied from</code></a> etiketlerini kullanın ki <code>make fix-copies</code> bunları senkronize tutabilsin.</li></ul> <!--[2--><h3 class="relative group"><a id="schedulers" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#schedulers"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Zamanlayıcılar<!----></span></h3><!--]--><!----> <p>Schedulers, hem çıkarım sırasında gürültü azaltma sürecini yönlendirmekten hem de eğitim için bir gürültü zamanlaması tanımlamaktan sorumludur. Bunlar, yüklenebilir yapılandırma dosyalarına sahip bireysel sınıflar olarak tasarlanmıştır ve <strong>tek dosya politikasını</strong> sıkı bir şekilde uygular.</p> <p>Aşağıdaki tasarım ilkeleri takip edilir:</p> <ul><li>Tüm zamanlayıcılar <a href="https://github.com/huggingface/diffusers/tree/main/src/diffusers/schedulers" rel="nofollow"><code>src/diffusers/schedulers</code></a> içinde bulunur.</li> <li>Schedulers, büyük yardımcı dosyalardan içe aktarıma <strong>izinli</strong> değildir ve çok kendi kendine yeten bir yapıda tutulmalıdır.</li> <li>Bir zamanlayıcı Python dosyası, bir zamanlayıcı algoritmasına (bir makalede tanımlanmış olabileceği gibi) karşılık gelir.</li> <li>Eğer zamanlayıcılar benzer işlevlere sahipse, <code># Copied from</code> mekanizmasından yararlanabiliriz.</li> <li>Tüm zamanlayıcılar <code>SchedulerMixin</code> ve <code>ConfigMixin</code> sınıflarından devralır.</li> <li>Zamanlayıcılar, <a href="../using-diffusers/schedulers">burada</a> ayrıntılı olarak açıklandığı gibi <a href="https://huggingface.co/docs/diffusers/main/en/api/configuration#diffusers.ConfigMixin.from_config" rel="nofollow"><code>ConfigMixin.from_config</code></a> yöntemiyle kolayca değiştirilebilir.</li> <li>Her zamanlayıcının bir <code>set_num_inference_steps</code> ve bir <code>step</code> fonksiyonu olmalıdır. <code>set_num_inference_steps(...)</code>, her gürültü azaltma sürecinden önce, yani <code>step(...)</code> çağrılmadan önce <em>yani</em> çağrılmalıdır.</li> <li>Her zamanlayıcı, modelin çağrılacağı zaman adımlarından oluşan bir dizi olan <code>timesteps</code> özniteliği aracılığıyla üzerinde “döngü yapılacak” zaman adımlarını açığa çıkarır.</li> <li><code>step(...)</code> fonksiyonu, tahmini model çıktısını ve “mevcut” örneği (x_t) alır ve “önceki”, biraz daha gürültüsü azaltılmış örneği (x_t-1) döndürür.</li> <li>Difüzyon zamanlayıcılarının karmaşıklığı göz önüne alındığında, <code>step</code> fonksiyonu tüm bu karmaşıklığı ortaya koymaz ve biraz “siyah kutu” gibi davranabilir.</li> <li>Neredeyse tüm durumlarda, yeni zamanlayıcılar yeni bir zamanlama dosyasında uygulanmalıdır.</li></ul> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/diffusers/blob/main/docs/source/en/conceptual/philosophy.md" target="_blank"><svg class="mr-1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M31,16l-7,7l-1.41-1.41L28.17,16l-5.58-5.59L24,9l7,7z"></path><path d="M1,16l7-7l1.41,1.41L3.83,16l5.58,5.59L8,23l-7-7z"></path><path d="M12.419,25.484L17.639,6.552l1.932,0.518L14.351,26.002z"></path></svg><!----> <span><span class="underline">Update</span> on GitHub</span></a><!----> <p></p><!--]--><!----><!--]--><!--]--><!--]--> <!--[-1--><!--]--><!--]--> | |
| <script> | |
| { | |
| __sveltekit_1rjuniz = { | |
| base: "/docs/diffusers/main/en", | |
| assets: "/docs/diffusers/main/en" | |
| }; | |
| const element = document.currentScript.parentElement; | |
| Promise.all([ | |
| import("/docs/diffusers/main/en/_app/immutable/entry/start.vZc-dOUR.js"), | |
| import("/docs/diffusers/main/en/_app/immutable/entry/app.B6c3Ml05.js") | |
| ]).then(([kit, app]) => { | |
| kit.start(app, element, { | |
| node_ids: [0, 308], | |
| data: [null,null], | |
| form: null, | |
| error: null | |
| }); | |
| }); | |
| } | |
| </script> | |
Xet Storage Details
- Size:
- 37.1 kB
- Xet hash:
- 8a3bb91e80cec119cc6ab9eeea006d639a425b7532771e7241a627b5313655d4
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.