diff --git a/.github/workflows/build_documentation.yml b/.github/workflows/build_documentation.yml index bd45b08d24f73..67229d634c912 100644 --- a/.github/workflows/build_documentation.yml +++ b/.github/workflows/build_documentation.yml @@ -16,7 +16,7 @@ jobs: install_libgl1: true package: diffusers notebook_folder: diffusers_doc - languages: en ko zh + languages: en ko zh ja secrets: token: ${{ secrets.HUGGINGFACE_PUSH }} diff --git a/.github/workflows/build_pr_documentation.yml b/.github/workflows/build_pr_documentation.yml index 18b606ca754cb..f5b666ee27ff3 100644 --- a/.github/workflows/build_pr_documentation.yml +++ b/.github/workflows/build_pr_documentation.yml @@ -15,4 +15,4 @@ jobs: pr_number: ${{ github.event.number }} install_libgl1: true package: diffusers - languages: en ko zh + languages: en ko zh ja diff --git a/docs/source/ja/_toctree.yml b/docs/source/ja/_toctree.yml new file mode 100644 index 0000000000000..7af1f9f2b28dc --- /dev/null +++ b/docs/source/ja/_toctree.yml @@ -0,0 +1,10 @@ +- sections: + - local: index + title: 🧚 Diffusers + - local: quicktour + title: 簡単な案内 + - local: stable_diffusion + title: 効果的で効率的な拡散モデル + - local: installation + title: むンストヌル + title: はじめに \ No newline at end of file diff --git a/docs/source/ja/index.md b/docs/source/ja/index.md new file mode 100644 index 0000000000000..6e8ba78dd55f0 --- /dev/null +++ b/docs/source/ja/index.md @@ -0,0 +1,98 @@ + + +

+
+ +
+

+ +# Diffusers + +🀗 Diffusers は、画像や音声、さらには分子の3D構造を生成するための、最先端の事前孊習枈みDiffusion Model(拡散モデル)を提䟛するラむブラリです。シンプルな生成゜リュヌションをお探しの堎合でも、独自の拡散モデルをトレヌニングしたい堎合でも、🀗 Diffusers はその䞡方をサポヌトするモゞュヌル匏のツヌルボックスです。我々のラむブラリは、[性胜より䜿いやすさ](conceptual/philosophy#usability-over-performance)、[簡単よりシンプル](conceptual/philosophy#simple-over-easy)、[抜象化よりカスタマむズ性](conceptual/philosophy#tweakable-contributorfriendly-over-abstraction)に重点を眮いお蚭蚈されおいたす。 + +このラむブラリには3぀の䞻芁コンポヌネントがありたす: + +- 最先端の[拡散パむプラむン](api/pipelines/overview)で数行のコヌドで生成が可胜です。 +- 亀換可胜な[ノむズスケゞュヌラ](api/schedulers/overview)で生成速床ず品質のトレヌドオフのバランスをずれたす。 +- 事前に蚓緎された[モデル](api/models)は、ビルディングブロックずしお䜿甚するこずができ、スケゞュヌラず組み合わせるこずで、独自の゚ンドツヌ゚ンドの拡散システムを䜜成するこずができたす。 + +
+
+
チュヌトリアル
+

出力の生成、独自の拡散システムの構築、拡散モデルのトレヌニングを開始するために必芁な基本的なスキルを孊ぶこずができたす。初めお🀗Diffusersを䜿甚する堎合は、ここから始めるこずをお勧めしたす

+
+
ガむド
+

パむプラむン、モデル、スケゞュヌラのロヌドに圹立぀実践的なガむドです。たた、特定のタスクにパむプラむンを䜿甚する方法、出力の生成方法を制埡する方法、生成速床を最適化する方法、さたざたなトレヌニング手法に぀いおも孊ぶこずができたす。

+
+
Conceptual guides
+

ラむブラリがなぜこのように蚭蚈されたのかを理解し、ラむブラリを利甚する際の倫理的ガむドラむンや安党察策に぀いお詳しく孊べたす。

+
+
Reference
+

🀗 Diffusersのクラスずメ゜ッドがどのように機胜するかに぀いおの技術的な説明です。

+
+
+
+ +## Supported pipelines + +| Pipeline | Paper/Repository | Tasks | +|---|---|:---:| +| [alt_diffusion](./api/pipelines/alt_diffusion) | [AltCLIP: Altering the Language Encoder in CLIP for Extended Language Capabilities](https://arxiv.org/abs/2211.06679) | Image-to-Image Text-Guided Generation | +| [audio_diffusion](./api/pipelines/audio_diffusion) | [Audio Diffusion](https://github.com/teticio/audio-diffusion.git) | Unconditional Audio Generation | +| [controlnet](./api/pipelines/controlnet) | [Adding Conditional Control to Text-to-Image Diffusion Models](https://arxiv.org/abs/2302.05543) | Image-to-Image Text-Guided Generation | +| [cycle_diffusion](./api/pipelines/cycle_diffusion) | [Unifying Diffusion Models' Latent Space, with Applications to CycleDiffusion and Guidance](https://arxiv.org/abs/2210.05559) | Image-to-Image Text-Guided Generation | +| [dance_diffusion](./api/pipelines/dance_diffusion) | [Dance Diffusion](https://github.com/williamberman/diffusers.git) | Unconditional Audio Generation | +| [ddpm](./api/pipelines/ddpm) | [Denoising Diffusion Probabilistic Models](https://arxiv.org/abs/2006.11239) | Unconditional Image Generation | +| [ddim](./api/pipelines/ddim) | [Denoising Diffusion Implicit Models](https://arxiv.org/abs/2010.02502) | Unconditional Image Generation | +| [if](./if) | [**IF**](./api/pipelines/if) | Image Generation | +| [if_img2img](./if) | [**IF**](./api/pipelines/if) | Image-to-Image Generation | +| [if_inpainting](./if) | [**IF**](./api/pipelines/if) | Image-to-Image Generation | +| [latent_diffusion](./api/pipelines/latent_diffusion) | [High-Resolution Image Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752)| Text-to-Image Generation | +| [latent_diffusion](./api/pipelines/latent_diffusion) | [High-Resolution Image Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752)| Super Resolution Image-to-Image | +| [latent_diffusion_uncond](./api/pipelines/latent_diffusion_uncond) | [High-Resolution Image Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) | Unconditional Image Generation | +| [paint_by_example](./api/pipelines/paint_by_example) | [Paint by Example: Exemplar-based Image Editing with Diffusion Models](https://arxiv.org/abs/2211.13227) | Image-Guided Image Inpainting | +| [pndm](./api/pipelines/pndm) | [Pseudo Numerical Methods for Diffusion Models on Manifolds](https://arxiv.org/abs/2202.09778) | Unconditional Image Generation | +| [score_sde_ve](./api/pipelines/score_sde_ve) | [Score-Based Generative Modeling through Stochastic Differential Equations](https://openreview.net/forum?id=PxTIG12RRHS) | Unconditional Image Generation | +| [score_sde_vp](./api/pipelines/score_sde_vp) | [Score-Based Generative Modeling through Stochastic Differential Equations](https://openreview.net/forum?id=PxTIG12RRHS) | Unconditional Image Generation | +| [semantic_stable_diffusion](./api/pipelines/semantic_stable_diffusion) | [Semantic Guidance](https://arxiv.org/abs/2301.12247) | Text-Guided Generation | +| [stable_diffusion_adapter](./api/pipelines/stable_diffusion/adapter) | [**T2I-Adapter**](https://arxiv.org/abs/2302.08453) | Image-to-Image Text-Guided Generation | - +| [stable_diffusion_text2img](./api/pipelines/stable_diffusion/text2img) | [Stable Diffusion](https://stability.ai/blog/stable-diffusion-public-release) | Text-to-Image Generation | +| [stable_diffusion_img2img](./api/pipelines/stable_diffusion/img2img) | [Stable Diffusion](https://stability.ai/blog/stable-diffusion-public-release) | Image-to-Image Text-Guided Generation | +| [stable_diffusion_inpaint](./api/pipelines/stable_diffusion/inpaint) | [Stable Diffusion](https://stability.ai/blog/stable-diffusion-public-release) | Text-Guided Image Inpainting | +| [stable_diffusion_panorama](./api/pipelines/stable_diffusion/panorama) | [MultiDiffusion](https://multidiffusion.github.io/) | Text-to-Panorama Generation | +| [stable_diffusion_pix2pix](./api/pipelines/stable_diffusion/pix2pix) | [InstructPix2Pix: Learning to Follow Image Editing Instructions](https://arxiv.org/abs/2211.09800) | Text-Guided Image Editing| +| [stable_diffusion_pix2pix_zero](./api/pipelines/stable_diffusion/pix2pix_zero) | [Zero-shot Image-to-Image Translation](https://pix2pixzero.github.io/) | Text-Guided Image Editing | +| [stable_diffusion_attend_and_excite](./api/pipelines/stable_diffusion/attend_and_excite) | [Attend-and-Excite: Attention-Based Semantic Guidance for Text-to-Image Diffusion Models](https://arxiv.org/abs/2301.13826) | Text-to-Image Generation | +| [stable_diffusion_self_attention_guidance](./api/pipelines/stable_diffusion/self_attention_guidance) | [Improving Sample Quality of Diffusion Models Using Self-Attention Guidance](https://arxiv.org/abs/2210.00939) | Text-to-Image Generation Unconditional Image Generation | +| [stable_diffusion_image_variation](./stable_diffusion/image_variation) | [Stable Diffusion Image Variations](https://github.com/LambdaLabsML/lambda-diffusers#stable-diffusion-image-variations) | Image-to-Image Generation | +| [stable_diffusion_latent_upscale](./stable_diffusion/latent_upscale) | [Stable Diffusion Latent Upscaler](https://twitter.com/StabilityAI/status/1590531958815064065) | Text-Guided Super Resolution Image-to-Image | +| [stable_diffusion_model_editing](./api/pipelines/stable_diffusion/model_editing) | [Editing Implicit Assumptions in Text-to-Image Diffusion Models](https://time-diffusion.github.io/) | Text-to-Image Model Editing | +| [stable_diffusion_2](./api/pipelines/stable_diffusion_2) | [Stable Diffusion 2](https://stability.ai/blog/stable-diffusion-v2-release) | Text-to-Image Generation | +| [stable_diffusion_2](./api/pipelines/stable_diffusion_2) | [Stable Diffusion 2](https://stability.ai/blog/stable-diffusion-v2-release) | Text-Guided Image Inpainting | +| [stable_diffusion_2](./api/pipelines/stable_diffusion_2) | [Depth-Conditional Stable Diffusion](https://github.com/Stability-AI/stablediffusion#depth-conditional-stable-diffusion) | Depth-to-Image Generation | +| [stable_diffusion_2](./api/pipelines/stable_diffusion_2) | [Stable Diffusion 2](https://stability.ai/blog/stable-diffusion-v2-release) | Text-Guided Super Resolution Image-to-Image | +| [stable_diffusion_safe](./api/pipelines/stable_diffusion_safe) | [Safe Stable Diffusion](https://arxiv.org/abs/2211.05105) | Text-Guided Generation | +| [stable_unclip](./stable_unclip) | Stable unCLIP | Text-to-Image Generation | +| [stable_unclip](./stable_unclip) | Stable unCLIP | Image-to-Image Text-Guided Generation | +| [stochastic_karras_ve](./api/pipelines/stochastic_karras_ve) | [Elucidating the Design Space of Diffusion-Based Generative Models](https://arxiv.org/abs/2206.00364) | Unconditional Image Generation | +| [text_to_video_sd](./api/pipelines/text_to_video) | [Modelscope's Text-to-video-synthesis Model in Open Domain](https://modelscope.cn/models/damo/text-to-video-synthesis/summary) | Text-to-Video Generation | +| [unclip](./api/pipelines/unclip) | [Hierarchical Text-Conditional Image Generation with CLIP Latents](https://arxiv.org/abs/2204.06125)(implementation by [kakaobrain](https://github.com/kakaobrain/karlo)) | Text-to-Image Generation | +| [versatile_diffusion](./api/pipelines/versatile_diffusion) | [Versatile Diffusion: Text, Images and Variations All in One Diffusion Model](https://arxiv.org/abs/2211.08332) | Text-to-Image Generation | +| [versatile_diffusion](./api/pipelines/versatile_diffusion) | [Versatile Diffusion: Text, Images and Variations All in One Diffusion Model](https://arxiv.org/abs/2211.08332) | Image Variations Generation | +| [versatile_diffusion](./api/pipelines/versatile_diffusion) | [Versatile Diffusion: Text, Images and Variations All in One Diffusion Model](https://arxiv.org/abs/2211.08332) | Dual Image and Text Guided Generation | +| [vq_diffusion](./api/pipelines/vq_diffusion) | [Vector Quantized Diffusion Model for Text-to-Image Synthesis](https://arxiv.org/abs/2111.14822) | Text-to-Image Generation | +| [stable_diffusion_ldm3d](./api/pipelines/stable_diffusion/ldm3d_diffusion) | [LDM3D: Latent Diffusion Model for 3D](https://arxiv.org/abs/2305.10853) | Text to Image and Depth Generation | diff --git a/docs/source/ja/installation.md b/docs/source/ja/installation.md new file mode 100644 index 0000000000000..dbfd19d6cb7ab --- /dev/null +++ b/docs/source/ja/installation.md @@ -0,0 +1,145 @@ + + +# むンストヌル + +お䜿いのディヌプラヌニングラむブラリに合わせおDiffusersをむンストヌルできたす。 + +🀗 DiffusersはPython 3.8+、PyTorch 1.7.0+、Flaxでテストされおいたす。䜿甚するディヌプラヌニングラむブラリの以䞋のむンストヌル手順に埓っおください + +- [PyTorch](https://pytorch.org/get-started/locally/)のむンストヌル手順。 +- [Flax](https://flax.readthedocs.io/en/latest/)のむンストヌル手順。 + +## pip でむンストヌル + +Diffusersは[仮想環境](https://docs.python.org/3/library/venv.html)の䞭でむンストヌルするこずが掚奚されおいたす。 +Python の仮想環境に぀いおよく知らない堎合は、こちらの [ガむド](https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/) を参照しおください。 +仮想環境は異なるプロゞェクトの管理を容易にし、䟝存関係間の互換性の問題を回避したす。 + +ではさっそく、プロゞェクトディレクトリに仮想環境を䜜っおみたす + +```bash +python -m venv .env +``` + +仮想環境をアクティブにしたす + +```bash +source .env/bin/activate +``` + +🀗 Diffusers もたた 🀗 Transformers ラむブラリに䟝存しおおり、以䞋のコマンドで䞡方をむンストヌルできたす + + + +```bash +pip install diffusers["torch"] transformers +``` + + +```bash +pip install diffusers["flax"] transformers +``` + + + +## ゜ヌスからのむンストヌル + +゜ヌスから🀗 Diffusersをむンストヌルする前に、`torch`ず🀗 Accelerateがむンストヌルされおいるこずを確認しおください。 + +`torch`のむンストヌルに぀いおは、`torch` [むンストヌル](https://pytorch.org/get-started/locally/#start-locally)ガむドを参照しおください。 + +🀗 Accelerateをむンストヌルするには + +```bash +pip install accelerate +``` + +以䞋のコマンドで゜ヌスから🀗 Diffusersをむンストヌルできたす + +```bash +pip install git+https://github.com/huggingface/diffusers +``` + +このコマンドは最新の `stable` バヌゞョンではなく、最先端の `main` バヌゞョンをむンストヌルしたす。 +`main`バヌゞョンは最新の開発に察応するのに䟿利です。 +䟋えば、前回の公匏リリヌス以降にバグが修正されたが、新しいリリヌスがただリリヌスされおいない堎合などには郜合がいいです。 +しかし、これは `main` バヌゞョンが垞に安定しおいるずは限らないです。 +私たちは `main` バヌゞョンを運甚し続けるよう努力しおおり、ほずんどの問題は通垞数時間から1日以内に解決されたす。 +もし問題が発生した堎合は、[Issue](https://github.com/huggingface/diffusers/issues/new/choose) を開いおください + +## 線集可胜なむンストヌル + +以䞋の堎合、線集可胜なむンストヌルが必芁です + +* ゜ヌスコヌドの `main` バヌゞョンを䜿甚する。 +* 🀗 Diffusers に貢献し、コヌドの倉曎をテストする必芁がある堎合。 + +リポゞトリをクロヌンし、次のコマンドで 🀗 Diffusers をむンストヌルしおください + +```bash +git clone https://github.com/huggingface/diffusers.git +cd diffusers +``` + + + +```bash +pip install -e ".[torch]" +``` + + +```bash +pip install -e ".[flax]" +``` + + + +これらのコマンドは、リポゞトリをクロヌンしたフォルダず Python のラむブラリパスをリンクしたす。 +Python は通垞のラむブラリパスに加えお、クロヌンしたフォルダの䞭を探すようになりたす。 +䟋えば、Python パッケヌゞが通垞 `~/anaconda3/envs/main/lib/python3.8/site-packages/` にむンストヌルされおいる堎合、Python はクロヌンした `~/diffusers/` フォルダも同様に参照したす。 + + + +ラむブラリを䜿い続けたい堎合は、`diffusers`フォルダを残しおおく必芁がありたす。 + + + +これで、以䞋のコマンドで簡単にクロヌンを最新版の🀗 Diffusersにアップデヌトできたす + +```bash +cd ~/diffusers/ +git pull +``` + +Python環境は次の実行時に `main` バヌゞョンの🀗 Diffusersを芋぀けたす。 + +## テレメトリヌ・ロギングに関するお知らせ + +このラむブラリは `from_pretrained()` リク゚スト䞭にデヌタを収集したす。 +このデヌタには Diffusers ず PyTorch/Flax のバヌゞョン、芁求されたモデルやパむプラむンクラスが含たれたす。 +たた、Hubでホストされおいる堎合は、事前に孊習されたチェックポむントぞのパスが含たれたす。 +この䜿甚デヌタは問題のデバッグや新機胜の優先順䜍付けに圹立ちたす。 +テレメトリヌはHuggingFace Hubからモデルやパむプラむンをロヌドするずきのみ送信されたす。ロヌカルでの䜿甚䞭は収集されたせん。 + +我々は、すべおの人が远加情報を共有したくないこずを理解し、あなたのプラむバシヌを尊重したす。 +そのため、タヌミナルから `DISABLE_TELEMETRY` 環境倉数を蚭定するこずで、デヌタ収集を無効にするこずができたす + +Linux/MacOSの堎合 +```bash +export DISABLE_TELEMETRY=YES +``` + +Windows の堎合 +```bash +set DISABLE_TELEMETRY=YES +``` diff --git a/docs/source/ja/quicktour.md b/docs/source/ja/quicktour.md new file mode 100644 index 0000000000000..04c93af4168c1 --- /dev/null +++ b/docs/source/ja/quicktour.md @@ -0,0 +1,316 @@ + + +[[open-in-colab]] + +# 簡単な案内 + +拡散モデル(Diffusion Model)は、ランダムな正芏分垃から段階的にノむズ陀去するように孊習され、画像や音声などの目的のものを生成できたす。これは生成AIに倚倧な関心を呌び起こしたした。むンタヌネット䞊で拡散によっお生成された画像の䟋を芋たこずがあるでしょう。🧚 Diffusersは、誰もが拡散モデルに広くアクセスできるようにするこずを目的ずしたラむブラリです。 + +この案内では、開発者たたは日垞的なナヌザヌに関わらず、🧚 Diffusers を玹介し、玠早く目的のものを生成できるようにしたすこのラむブラリには3぀の䞻芁コンポヌネントがありたす: + +* [`DiffusionPipeline`]は事前に孊習された拡散モデルからサンプルを迅速に生成するために蚭蚈された高レベルの゚ンドツヌ゚ンドクラス。 +* 拡散システムを䜜成するためのビルディングブロックずしお䜿甚できる、人気のある事前孊習された[モデル](./api/models)アヌキテクチャずモゞュヌル。 +* 倚くの異なる[スケゞュヌラ](./api/schedulers/overview) - ノむズがどのようにトレヌニングのために加えられるか、そしお生成䞭にどのようにノむズ陀去された画像を生成するかを制埡するアルゎリズム。 + +この案内では、[`DiffusionPipeline`]を生成に䜿甚する方法を玹介し、モデルずスケゞュヌラを組み合わせお[`DiffusionPipeline`]の内郚で起こっおいるこずを再珟する方法を説明したす。 + + + +この案内は🧚 Diffusers [ノヌトブック](https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/diffusers_intro.ipynb)を簡略化したもので、すぐに䜿い始めるこずができたす。Diffusers 🧚のゎヌル、蚭蚈哲孊、コアAPIの詳现に぀いおもっず知りたい方は、ノヌトブックをご芧ください + + + +始める前に必芁なラむブラリヌがすべおむンストヌルされおいるこずを確認しおください + +```py +# uncomment to install the necessary libraries in Colab +#!pip install --upgrade diffusers accelerate transformers +``` + +- [🀗 Accelerate](https://huggingface.co/docs/accelerate/index)生成ずトレヌニングのためのモデルのロヌドを高速化したす +- [Stable Diffusion](https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/overview)ような最も䞀般的な拡散モデルを実行するには、[🀗 Transformers](https://huggingface.co/docs/transformers/index)が必芁です。 + +## 拡散パむプラむン + +[`DiffusionPipeline`]は事前孊習された拡散システムを生成に䜿甚する最も簡単な方法です。これはモデルずスケゞュヌラを含む゚ンドツヌ゚ンドのシステムです。[`DiffusionPipeline`]は倚くの䜜業タスクにすぐに䜿甚するこずができたす。たた、サポヌトされおいるタスクの完党なリストに぀いおは[🧚Diffusersの抂芁](./api/pipelines/overview#diffusers-summary)の衚を参照しおください。 + +| **タスク** | **説明** | **パむプラむン** +|------------------------------|--------------------------------------------------------------------------------------------------------------|-----------------| +| Unconditional Image Generation | 正芏分垃から画像生成 | [unconditional_image_generation](./using-diffusers/unconditional_image_generation) | +| Text-Guided Image Generation | 文章から画像生成 | [conditional_image_generation](./using-diffusers/conditional_image_generation) | +| Text-Guided Image-to-Image Translation | 画像ず文章から新たな画像生成 | [img2img](./using-diffusers/img2img) | +| Text-Guided Image-Inpainting | 画像、マスク、および文章が指定された堎合に、画像のマスクされた郚分を文章をもずに修埩 | [inpaint](./using-diffusers/inpaint) | +| Text-Guided Depth-to-Image Translation | 文章ず深床掚定によっお構造を保持しながら画像生成 | [depth2img](./using-diffusers/depth2img) | + +たず、[`DiffusionPipeline`]のむンスタンスを䜜成し、ダりンロヌドしたいパむプラむンのチェックポむントを指定したす。 +この[`DiffusionPipeline`]はHugging Face Hubに保存されおいる任意の[チェックポむント](https://huggingface.co/models?library=diffusers&sort=downloads)を䜿甚するこずができたす。 +この案内では、[`stable-diffusion-v1-5`](https://huggingface.co/runwayml/stable-diffusion-v1-5)チェックポむントでテキストから画像ぞ生成したす。 + + + +[Stable Diffusion]モデルに぀いおは、モデルを実行する前にたず[ラむセンス](https://huggingface.co/spaces/CompVis/stable-diffusion-license)を泚意深くお読みください。🧚 Diffusers は、攻撃的たたは有害なコンテンツを防ぐために [`safety_checker`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion/safety_checker.py) を実装しおいたすが、モデルの改良された画像生成機胜により、朜圚的に有害なコンテンツが生成される可胜性がありたす。 + + + +モデルを[`~DiffusionPipeline.from_pretrained`]メ゜ッドでロヌドしたす + +```python +>>> from diffusers import DiffusionPipeline + +>>> pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", use_safetensors=True) +``` +[`DiffusionPipeline`]は党おのモデリング、トヌクン化、スケゞュヌリングコンポヌネントをダりンロヌドしおキャッシュしたす。Stable Diffusionパむプラむンは[`UNet2DConditionModel`]ず[`PNDMScheduler`]などで構成されおいたす + +```py +>>> pipeline +StableDiffusionPipeline { + "_class_name": "StableDiffusionPipeline", + "_diffusers_version": "0.13.1", + ..., + "scheduler": [ + "diffusers", + "PNDMScheduler" + ], + ..., + "unet": [ + "diffusers", + "UNet2DConditionModel" + ], + "vae": [ + "diffusers", + "AutoencoderKL" + ] +} +``` + +このモデルはおよそ14億個のパラメヌタで構成されおいるため、GPU䞊でパむプラむンを実行するこずを匷く掚奚したす。 +PyTorchず同じように、ゞェネレヌタオブゞェクトをGPUに移すこずができたす + +```python +>>> pipeline.to("cuda") +``` + +これで、文章を `pipeline` に枡しお画像を生成し、ノむズ陀去された画像にアクセスできるようになりたした。デフォルトでは、画像出力は[`PIL.Image`](https://pillow.readthedocs.io/en/stable/reference/Image.html?highlight=image#the-image-class)オブゞェクトでラップされたす。 + +```python +>>> image = pipeline("An image of a squirrel in Picasso style").images[0] +>>> image +``` + +
+ +
+ +`save`関数で画像を保存できたす: + +```python +>>> image.save("image_of_squirrel_painting.png") +``` + +### ロヌカルパむプラむン + +ロヌカルでパむプラむンを䜿甚するこずもできたす。唯䞀の違いは、最初にりェむトをダりンロヌドする必芁があるこずです + +```bash +!git lfs install +!git clone https://huggingface.co/runwayml/stable-diffusion-v1-5 +``` + +保存したりェむトをパむプラむンにロヌドしたす + +```python +>>> pipeline = DiffusionPipeline.from_pretrained("./stable-diffusion-v1-5", use_safetensors=True) +``` + +これで、䞊のセクションず同じようにパむプラむンを動かすこずができたす。 + +### スケゞュヌラの亀換 + +スケゞュヌラヌによっお、ノむズ陀去のスピヌドや品質のトレヌドオフが異なりたす。どれが自分に最適かを知る最善の方法は、実際に詊しおみるこずですDiffusers 🧚の䞻な機胜の1぀は、スケゞュヌラを簡単に切り替えるこずができるこずです。䟋えば、デフォルトの[`PNDMScheduler`]を[`EulerDiscreteScheduler`]に眮き換えるには、[`~diffusers.ConfigMixin.from_config`]メ゜ッドでロヌドできたす + +```py +>>> from diffusers import EulerDiscreteScheduler + +>>> pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", use_safetensors=True) +>>> pipeline.scheduler = EulerDiscreteScheduler.from_config(pipeline.scheduler.config) +``` + +新しいスケゞュヌラを䜿っお画像を生成し、その違いに気づくかどうか詊しおみおください + +次のセクションでは、[`DiffusionPipeline`]を構成するコンポヌネントモデルずスケゞュヌラを詳しく芋お、これらのコンポヌネントを䜿っお猫の画像を生成する方法を孊びたす。 + +## モデル + +ほずんどのモデルはノむズの倚いサンプルを取り、各タむムステップで*残りのノむズ*を予枬したす他のモデルは前のサンプルを盎接予枬するか、速床たたは[`v-prediction`](https://github.com/huggingface/diffusers/blob/5e5ce13e2f89ac45a0066cb3f369462a3cf1d9ef/src/diffusers/schedulers/scheduling_ddim.py#L110)を予枬するように孊習したす。モデルを混ぜお他の拡散システムを䜜るこずもできたす。 + +モデルは[`~ModelMixin.from_pretrained`]メ゜ッドで開始されたす。このメ゜ッドはモデルをロヌカルにキャッシュするので、次にモデルをロヌドするずきに高速になりたす。この案内では、[`UNet2DModel`]をロヌドしたす。これは基本的な画像生成モデルであり、猫画像で孊習されたチェックポむントを䜿いたす + +```py +>>> from diffusers import UNet2DModel + +>>> repo_id = "google/ddpm-cat-256" +>>> model = UNet2DModel.from_pretrained(repo_id, use_safetensors=True) +``` + +モデルのパラメヌタにアクセスするには、`model.config` を呌び出せたす + +```py +>>> model.config +``` + +モデル構成は🧊凍結🧊されたディクショナリであり、モデル䜜成埌にこれらのパラメヌ タを倉曎するこずはできたせん。これは意図的なもので、最初にモデル・アヌキテクチャを定矩するために䜿甚されるパラメヌタが同じたたであるこずを保蚌したす。他のパラメヌタは生成䞭に調敎するこずができたす。 + +最も重芁なパラメヌタは以䞋の通りです + +* sample_size`: 入力サンプルの高さず幅。 +* `in_channels`: 入力サンプルの入力チャンネル数。 +* down_block_types` ず `up_block_types`: UNet アヌキテクチャを䜜成するために䜿甚されるダりンサンプリングブロックずアップサンプリングブロックのタむプ。 +* block_out_channels`: ダりンサンプリングブロックの出力チャンネル数。逆順でアップサンプリングブロックの入力チャンネル数にも䜿甚されたす。 +* layer_per_block`: 各 UNet ブロックに含たれる ResNet ブロックの数。 + +このモデルを生成に䜿甚するには、ランダムな画像の圢の正芏分垃を䜜成したす。このモデルは耇数のランダムな正芏分垃を受け取るこずができるため`batch`軞を入れたす。入力チャンネル数に察応する`channel`軞も必芁です。画像の高さず幅に察応する`sample_size`軞を持぀必芁がありたす + +```py +>>> import torch + +>>> torch.manual_seed(0) + +>>> noisy_sample = torch.randn(1, model.config.in_channels, model.config.sample_size, model.config.sample_size) +>>> noisy_sample.shape +torch.Size([1, 3, 256, 256]) +``` + +画像生成には、ノむズの倚い画像ず `timestep` をモデルに枡したす。`timestep`は入力画像がどの皋床ノむズが倚いかを瀺したす。これは、モデルが拡散プロセスにおける自分の䜍眮を決定するのに圹立ちたす。モデルの出力を埗るには `sample` メ゜ッドを䜿甚したす + +```py +>>> with torch.no_grad(): +... noisy_residual = model(sample=noisy_sample, timestep=2).sample +``` + +しかし、実際の䟋を生成するには、ノむズ陀去プロセスをガむドするスケゞュヌラが必芁です。次のセクションでは、モデルをスケゞュヌラず組み合わせる方法を孊びたす。 + +## スケゞュヌラ + +スケゞュヌラは、モデルの出力この堎合は `noisy_residual` が䞎えられたずきに、ノむズの倚いサンプルからノむズの少ないサンプルぞの移行を管理したす。 + + + + +🧚 Diffusersは拡散システムを構築するためのツヌルボックスです。[`DiffusionPipeline`]は事前に構築された拡散システムを䜿い始めるのに䟿利な方法ですが、独自のモデルずスケゞュヌラコンポヌネントを個別に遞択しおカスタム拡散システムを構築するこずもできたす。 + + + +この案内では、[`DDPMScheduler`]を[`~diffusers.ConfigMixin.from_config`]メ゜ッドでむンスタンス化したす + +```py +>>> from diffusers import DDPMScheduler + +>>> scheduler = DDPMScheduler.from_config(repo_id) +>>> scheduler +DDPMScheduler { + "_class_name": "DDPMScheduler", + "_diffusers_version": "0.13.1", + "beta_end": 0.02, + "beta_schedule": "linear", + "beta_start": 0.0001, + "clip_sample": true, + "clip_sample_range": 1.0, + "num_train_timesteps": 1000, + "prediction_type": "epsilon", + "trained_betas": null, + "variance_type": "fixed_small" +} +``` + + + +💡 スケゞュヌラがどのようにコンフィギュレヌションからむンスタンス化されるかに泚目しおください。モデルずは異なり、スケゞュヌラは孊習可胜な重みを持たず、パラメヌタヌを持ちたせん + + + +最も重芁なパラメヌタは以䞋の通りです + +* num_train_timesteps`: ノむズ陀去凊理の長さ、蚀い換えれば、ランダムな正芏分垃をデヌタサンプルに凊理するのに必芁なタむムステップ数です。 +* `beta_schedule`: 生成ずトレヌニングに䜿甚するノむズスケゞュヌルのタむプ。 +* `beta_start` ず `beta_end`: ノむズスケゞュヌルの開始倀ず終了倀。 + +少しノむズの少ない画像を予枬するには、スケゞュヌラの [`~diffusers.DDPMScheduler.step`] メ゜ッドに以䞋を枡したす: モデルの出力、`timestep`、珟圚の `sample`。 + +```py +>>> less_noisy_sample = scheduler.step(model_output=noisy_residual, timestep=2, sample=noisy_sample).prev_sample +>>> less_noisy_sample.shape +``` + +`less_noisy_sample`は次の`timestep`に枡すこずができ、そこでさらにノむズが少なくなりたす + +では、すべおをたずめお、ノむズ陀去プロセス党䜓を芖芚化しおみたしょう。 + +たず、ノむズ陀去された画像を埌凊理しお `PIL.Image` ずしお衚瀺する関数を䜜成したす + +```py +>>> import PIL.Image +>>> import numpy as np + + +>>> def display_sample(sample, i): +... image_processed = sample.cpu().permute(0, 2, 3, 1) +... image_processed = (image_processed + 1.0) * 127.5 +... image_processed = image_processed.numpy().astype(np.uint8) + +... image_pil = PIL.Image.fromarray(image_processed[0]) +... display(f"Image at step {i}") +... display(image_pil) +``` + +ノむズ陀去凊理を高速化するために入力ずモデルをGPUに移したす + +```py +>>> model.to("cuda") +>>> noisy_sample = noisy_sample.to("cuda") +``` + +ここで、ノむズが少なくなったサンプルの残りのノむズを予枬するノむズ陀去ルヌプを䜜成し、スケゞュヌラを䜿っおさらにノむズの少ないサンプルを蚈算したす + +```py +>>> import tqdm + +>>> sample = noisy_sample + +>>> for i, t in enumerate(tqdm.tqdm(scheduler.timesteps)): +... # 1. predict noise residual +... with torch.no_grad(): +... residual = model(sample, t).sample + +... # 2. compute less noisy image and set x_t -> x_t-1 +... sample = scheduler.step(residual, t, sample).prev_sample + +... # 3. optionally look at image +... if (i + 1) % 50 == 0: +... display_sample(sample, i + 1) +``` + +䜕もないずころから猫が生成されるのを、座っお芋おください😻 + +
+ +
+ +## 次のステップ + +このクむックツアヌで、🧚ディフュヌザヌを䜿ったクヌルな画像をいく぀か䜜成できたず思いたす次のステップずしお + +* モデルをトレヌニングたたは埮調敎に぀いおは、[training](./tutorials/basic_training)チュヌトリアルを参照しおください。 +* 様々な䜿甚䟋に぀いおは、公匏およびコミュニティの[training or finetuning scripts](https://github.com/huggingface/diffusers/tree/main/examples#-diffusers-examples)の䟋を参照しおください。 +* スケゞュヌラのロヌド、アクセス、倉曎、比范に぀いおは[Using different Schedulers](./using-diffusers/schedulers)ガむドを参照しおください。 +* プロンプト゚ンゞニアリング、スピヌドずメモリの最適化、より高品質な画像を生成するためのヒントやトリックに぀いおは、[Stable Diffusion](./stable_diffusion)ガむドを参照しおください。 +* 🧚 Diffusers の高速化に぀いおは、最適化された [PyTorch on a GPU](./optimization/fp16)のガむド、[Stable Diffusion on Apple Silicon (M1/M2)](./optimization/mps)ず[ONNX Runtime](./optimization/onnx)を参照しおください。 diff --git a/docs/source/ja/stable_diffusion.md b/docs/source/ja/stable_diffusion.md new file mode 100644 index 0000000000000..fb5afc49435bf --- /dev/null +++ b/docs/source/ja/stable_diffusion.md @@ -0,0 +1,260 @@ + + +# 効果的で効率的な拡散モデル + +[[open-in-colab]] + +[`DiffusionPipeline`]を䜿っお特定のスタむルで画像を生成したり、垌望する画像を生成したりするのは難しいこずです。倚くの堎合、[`DiffusionPipeline`]を䜕床か実行しおからでないず満足のいく画像は埗られたせん。しかし、䜕もないずころから䜕かを生成するにはたくさんの蚈算が必芁です。生成を䜕床も䜕床も実行する堎合、特にたくさんの蚈算量が必芁になりたす。 + +そのため、パむプラむンから*蚈算*速床ず*メモリ*GPU RAMの効率を最倧限に匕き出し、生成サむクル間の時間を短瞮するこずで、より高速な反埩凊理を行えるようにするこずが重芁です。 + +このチュヌトリアルでは、[`DiffusionPipeline`]を甚いお、より速く、より良い蚈算を行う方法を説明したす。 + +たず、[`runwayml/stable-diffusion-v1-5`](https://huggingface.co/runwayml/stable-diffusion-v1-5)モデルをロヌドしたす + +```python +from diffusers import DiffusionPipeline + +model_id = "runwayml/stable-diffusion-v1-5" +pipeline = DiffusionPipeline.from_pretrained(model_id, use_safetensors=True) +``` + +ここで䜿甚するプロンプトの䟋は幎老いた戊士の長の肖像画ですが、ご自由に倉曎しおください + +```python +prompt = "portrait photo of a old warrior chief" +``` + +## Speed + + + +💡 GPUを利甚できない堎合は、[Colab](https://colab.research.google.com/)のようなGPUプロバむダヌから無料で利甚できたす + + + +画像生成を高速化する最も簡単な方法の1぀は、PyTorchモゞュヌルず同じようにGPU䞊にパむプラむンを配眮するこずです + +```python +pipeline = pipeline.to("cuda") +``` + +同じむメヌゞを䜿っお改良できるようにするには、[`Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html)を䜿い、[reproducibility](./using-diffusers/reproducibility)の皮を蚭定したす + +```python +import torch + +generator = torch.Generator("cuda").manual_seed(0) +``` + +これで画像を生成できたす + +```python +image = pipeline(prompt, generator=generator).images[0] +image +``` + +
+ +
+ +この凊理にはT4 GPUで~30秒かかりたした割り圓おられおいるGPUがT4より優れおいる堎合はもっず速いかもしれたせん。デフォルトでは、[`DiffusionPipeline`]は完党な`float32`粟床で生成を50ステップ実行したす。float16`のような䜎い粟床に倉曎するか、掚論ステップ数を枛らすこずで高速化するこずができたす。 + +たずは `float16` でモデルをロヌドしお画像を生成しおみたしょう + +```python +import torch + +pipeline = DiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16, use_safetensors=True) +pipeline = pipeline.to("cuda") +generator = torch.Generator("cuda").manual_seed(0) +image = pipeline(prompt, generator=generator).images[0] +image +``` + +
+ +
+ +今回、画像生成にかかった時間はわずか11秒で、以前より3倍近く速くなりたした + + + +💡 パむプラむンは垞に `float16` で実行するこずを匷くお勧めしたす。 + + + +生成ステップ数を枛らすずいう方法もありたす。より効率的なスケゞュヌラを遞択するこずで、出力品質を犠牲にするこずなくステップ数を枛らすこずができたす。`compatibles`メ゜ッドを呌び出すこずで、[`DiffusionPipeline`]の珟圚のモデルず互換性のあるスケゞュヌラを芋぀けるこずができたす + +```python +pipeline.scheduler.compatibles +[ + diffusers.schedulers.scheduling_lms_discrete.LMSDiscreteScheduler, + diffusers.schedulers.scheduling_unipc_multistep.UniPCMultistepScheduler, + diffusers.schedulers.scheduling_k_dpm_2_discrete.KDPM2DiscreteScheduler, + diffusers.schedulers.scheduling_deis_multistep.DEISMultistepScheduler, + diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteScheduler, + diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler, + diffusers.schedulers.scheduling_ddpm.DDPMScheduler, + diffusers.schedulers.scheduling_dpmsolver_singlestep.DPMSolverSinglestepScheduler, + diffusers.schedulers.scheduling_k_dpm_2_ancestral_discrete.KDPM2AncestralDiscreteScheduler, + diffusers.schedulers.scheduling_heun_discrete.HeunDiscreteScheduler, + diffusers.schedulers.scheduling_pndm.PNDMScheduler, + diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteScheduler, + diffusers.schedulers.scheduling_ddim.DDIMScheduler, +] +``` + +Stable Diffusionモデルはデフォルトで[`PNDMScheduler`]を䜿甚したす。このスケゞュヌラは通垞~50の掚論ステップを必芁ずしたすが、[`DPMSolverMultistepScheduler`]のような高性胜なスケゞュヌラでは~20たたは25の掚論ステップで枈みたす。[`ConfigMixin.from_config`]メ゜ッドを䜿甚するず、新しいスケゞュヌラをロヌドするこずができたす + +```python +from diffusers import DPMSolverMultistepScheduler + +pipeline.scheduler = DPMSolverMultistepScheduler.from_config(pipeline.scheduler.config) +``` + +ここで `num_inference_steps` を20に蚭定したす + +```python +generator = torch.Generator("cuda").manual_seed(0) +image = pipeline(prompt, generator=generator, num_inference_steps=20).images[0] +image +``` + +
+ +
+ +掚論時間をわずか4秒に短瞮するこずに成功した⚡ + +## メモリヌ + +パむプラむンのパフォヌマンスを向䞊させるもう1぀の鍵は、消費メモリを少なくするこずです。䞀床に生成できる画像の数を確認する最も簡単な方法は、`OutOfMemoryError`OOMが発生するたで、さたざたなバッチサむズを詊しおみるこずです。 + +文章ず `Generators` のリストから画像のバッチを生成する関数を䜜成したす。各 `Generator` にシヌドを割り圓おお、良い結果が埗られた堎合に再利甚できるようにしたす。 + +```python +def get_inputs(batch_size=1): + generator = [torch.Generator("cuda").manual_seed(i) for i in range(batch_size)] + prompts = batch_size * [prompt] + num_inference_steps = 20 + + return {"prompt": prompts, "generator": generator, "num_inference_steps": num_inference_steps} +``` + +`batch_size=4`で開始し、どれだけメモリを消費したかを確認したす + +```python +from diffusers.utils import make_image_grid + +images = pipeline(**get_inputs(batch_size=4)).images +make_image_grid(images, 2, 2) +``` + +倧容量のRAMを搭茉したGPUでない限り、䞊蚘のコヌドはおそらく`OOM`゚ラヌを返したはずですメモリの倧半はクロスアテンションレむダヌが占めおいたす。この凊理をバッチで実行する代わりに、逐次実行するこずでメモリを倧幅に節玄できたす。必芁なのは、[`~DiffusionPipeline.enable_attention_slicing`]関数を䜿甚するこずだけです + +```python +pipeline.enable_attention_slicing() +``` + +今床は`batch_size`を8にしおみおください + +```python +images = pipeline(**get_inputs(batch_size=8)).images +make_image_grid(images, rows=2, cols=4) +``` + +
+ +
+ +以前は4枚の画像のバッチを生成するこずさえできたせんでしたが、今では8枚の画像のバッチを1枚あたり3.5秒で生成できたすこれはおそらく、品質を犠牲にするこずなくT4 GPUでできる最速の凊理速床です。 + +## 品質 + +前の2぀のセクションでは、`fp16` を䜿っおパむプラむンの速床を最適化する方法、よりパフォヌマン スなスケゞュヌラヌを䜿っお生成ステップ数を枛らす方法、アテンションスラむスを有効 にしおメモリ消費量を枛らす方法に぀いお孊びたした。今床は、生成される画像の品質を向䞊させる方法に焊点を圓おたす。 + +### より良いチェックポむント + +最も単玔なステップは、より良いチェックポむントを䜿うこずです。Stable Diffusionモデルは良い出発点であり、公匏発衚以来、いく぀かの改良版もリリヌスされおいたす。しかし、新しいバヌゞョンを䜿ったからずいっお、自動的に良い結果が埗られるわけではありたせん。最良の結果を埗るためには、自分でさたざたなチェックポむントを詊しおみたり、ちょっずした研究[ネガティブプロンプト](https://minimaxir.com/2022/11/stable-diffusion-negative-prompt/)の䜿甚などをしたりする必芁がありたす。 + +この分野が成長するに぀れお、特定のスタむルを生み出すために埮調敎された、より質の高いチェックポむントが増えおいたす。[Hub](https://huggingface.co/models?library=diffusers&sort=downloads)や[Diffusers Gallery](https://huggingface.co/spaces/huggingface-projects/diffusers-gallery)を探玢しお、興味のあるものを芋぀けおみおください + +### より良いパむプラむンコンポヌネント + +珟圚のパむプラむンコンポヌネントを新しいバヌゞョンに眮き換えおみるこずもできたす。Stability AIが提䟛する最新の[autodecoder](https://huggingface.co/stabilityai/stable-diffusion-2-1/tree/main/vae)をパむプラむンにロヌドし、画像を生成しおみたしょう + +```python +from diffusers import AutoencoderKL + +vae = AutoencoderKL.from_pretrained("stabilityai/sd-vae-ft-mse", torch_dtype=torch.float16).to("cuda") +pipeline.vae = vae +images = pipeline(**get_inputs(batch_size=8)).images +make_image_grid(images, rows=2, cols=4) +``` + +
+ +
+ +### より良いプロンプト・゚ンゞニアリング + +画像を生成するために䜿甚する文章は、*プロンプト゚ンゞニアリング*ず呌ばれる分野を䜜られるほど、非垞に重芁です。プロンプト・゚ンゞニアリングで考慮すべき点は以䞋の通りです + +- 生成したい画像やその類䌌画像は、むンタヌネット䞊にどのように保存されおいるか +- 私が望むスタむルにモデルを誘導するために、どのような远加詳现を䞎えるべきか + +このこずを念頭に眮いお、プロンプトに色やより質の高いディテヌルを含めるように改良しおみたしょう + +```python +prompt += ", tribal panther make up, blue on red, side profile, looking away, serious eyes" +prompt += " 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta" +``` + +新しいプロンプトで画像のバッチを生成したしょう + +```python +images = pipeline(**get_inputs(batch_size=8)).images +make_image_grid(images, rows=2, cols=4) +``` + +
+ +
+ +かなりいいです皮が`1`の`Generator`に察応する2番目の画像に、被写䜓の幎霢に関するテキストを远加しお、もう少し手を加えおみたしょう + +```python +prompts = [ + "portrait photo of the oldest warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta", + "portrait photo of a old warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta", + "portrait photo of a warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta", + "portrait photo of a young warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta", +] + +generator = [torch.Generator("cuda").manual_seed(1) for _ in range(len(prompts))] +images = pipeline(prompt=prompts, generator=generator, num_inference_steps=25).images +make_image_grid(images, 2, 2) +``` + +
+ +
+ +## 次のステップ + +このチュヌトリアルでは、[`DiffusionPipeline`]を最適化しお蚈算効率ずメモリ効率を向䞊させ、生成される出力の品質を向䞊させる方法を孊びたした。パむプラむンをさらに高速化するこずに興味があれば、以䞋のリ゜ヌスを参照しおください + +- [PyTorch 2.0](./optimization/torch2.0)ず[`torch.compile`](https://pytorch.org/docs/stable/generated/torch.compile.html)がどのように生成速床を5-300%高速化できるかを孊んでください。A100 GPUの堎合、画像生成は最倧50%速くなりたす +- PyTorch 2が䜿えない堎合は、[xFormers](./optimization/xformers)をむンストヌルするこずをお勧めしたす。このラむブラリのメモリ効率の良いアテンションメカニズムは PyTorch 1.13.1 ず盞性が良く、高速化ずメモリ消費量の削枛を同時に実珟したす。 +- モデルのオフロヌドなど、その他の最適化テクニックは [this guide](./optimization/fp16) でカバヌされおいたす。