Buckets:
| # Metal Performance Shaders (MPS) | |
| > [!TIP] | |
| > Pipelines dengan lencana MPS menunjukkan bahwa model dapat memanfaatkan backend MPS pada perangkat Apple silicon untuk inferensi yang lebih cepat. Silakan buka [Pull Request](https://github.com/huggingface/diffusers/compare) untuk menambahkan lencana ini pada pipelines yang belum memilikinya. | |
| 🤗 Diffusers kompatibel dengan Apple silicon (chip M1/M2) menggunakan perangkat PyTorch [`mps`](https://pytorch.org/docs/stable/notes/mps.html), yang memanfaatkan framework Metal untuk menggunakan GPU pada perangkat MacOS. Anda perlu memiliki: | |
| - komputer macOS dengan perangkat keras Apple silicon (M1/M2) | |
| - macOS 12.6 atau lebih baru (13.0 atau lebih baru disarankan) | |
| - versi Python arm64 | |
| - [PyTorch 2.0](https://pytorch.org/get-started/locally/) (disarankan) atau 1.13 (versi minimum yang didukung untuk `mps`) | |
| Backend `mps` menggunakan antarmuka `.to()` dari PyTorch untuk memindahkan pipeline Stable Diffusion ke perangkat M1 atau M2 Anda: | |
| ```python | |
| from diffusers import DiffusionPipeline | |
| pipe = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5") | |
| pipe = pipe.to("mps") | |
| # Recommended if your computer has < 64 GB of RAM | |
| pipe.enable_attention_slicing() | |
| prompt = "a photo of an astronaut riding a horse on mars" | |
| image = pipe(prompt).images[0] | |
| image | |
| ``` | |
| > [!WARNING] | |
| > Backend [mps](https://pytorch.org/docs/stable/notes/mps.html) PyTorch tidak mendukung ukuran NDArray yang lebih besar dari `2**32`. Silakan buka [Issue](https://github.com/huggingface/diffusers/issues/new/choose) jika Anda mengalami masalah ini agar kami dapat menyelidiki. | |
| Jika Anda menggunakan **PyTorch 1.13**, Anda perlu "menyiapkan" pipeline dengan satu kali tambahan jalur sekali jalan melalui pipeline tersebut. Ini adalah solusi sementara untuk masalah di mana jalur inferensi pertama menghasilkan hasil yang sedikit berbeda dibandingkan jalur berikutnya. Anda hanya perlu melakukan jalur ini sekali, dan setelah satu langkah inferensi, Anda dapat membuang hasilnya. | |
| ```diff | |
| from diffusers import DiffusionPipeline | |
| pipe = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5").to("mps") | |
| pipe.enable_attention_slicing() | |
| prompt = "a photo of an astronaut riding a horse on mars" | |
| # First-time "warmup" pass if PyTorch version is 1.13 | |
| + _ = pipe(prompt, num_inference_steps=1) | |
| # Results match those from the CPU device after the warmup pass. | |
| image = pipe(prompt).images[0] | |
| ``` | |
| ## Pemecahan masalah | |
| Bagian ini merangkum beberapa masalah umum saat menggunakan backend `mps` beserta cara penyelesaiannya. | |
| ### Pemotongan perhatian | |
| Kinerja M1/M2 sangat sensitif terhadap tekanan memori. Ketika hal ini terjadi, sistem secara otomatis melakukan swap jika diperlukan, yang secara signifikan menurunkan kinerja. | |
| Untuk mencegah hal ini terjadi, kami merekomendasikan *attention slicing* untuk mengurangi tekanan memori selama inferensi dan mencegah swapping. Hal ini terutama relevan jika komputer Anda memiliki RAM sistem kurang dari 64GB, atau jika Anda menghasilkan gambar pada resolusi non-standar yang lebih besar dari 512×512 piksel. Panggil fungsi [enable_attention_slicing()](/docs/diffusers/main/id/api/pipelines/overview#diffusers.DiffusionPipeline.enable_attention_slicing) pada pipeline Anda: | |
| ```py | |
| from diffusers import DiffusionPipeline | |
| import torch | |
| pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", dtype=torch.float16, variant="fp16", use_safetensors=True).to("mps") | |
| pipeline.enable_attention_slicing() | |
| ``` | |
| Attention slicing menjalankan operasi attention yang mahal dalam beberapa langkah, bukan sekaligus. Biasanya, ini meningkatkan kinerja sekitar 20% pada komputer tanpa memori universal, tetapi kami mengamati *kinerja yang lebih baik* di sebagian besar komputer Apple silicon kecuali Anda memiliki RAM 64GB atau lebih. | |
| ### Inferensi batch | |
| Membuat beberapa prompt dalam satu batch dapat menyebabkan crash atau gagal bekerja secara andal. Jika ini terjadi, coba lakukan iterasi alih-alih batching. | |
Xet Storage Details
- Size:
- 4.06 kB
- Xet hash:
- b002f6eef52605bff020f53813868632b802bf0677d0229d88822e20f3453911
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.