Cara Menggunakan Flux Schnell Secara Lokal di MacBook Pro M3 Max

Ingin mencoba FLUX secara online tanpa repot tambahan? Anda dapat menjalankan FLUX.1 Pro, Schnell, dan Dev di Anakin AI Now! Flux Schnell adalah model pembuatan gambar dari teks yang kuat yang mampu menghasilkan gambar berkualitas tinggi dari prompt teks. Dalam tutorial ini, kami akan memandu Anda melalui langkah-langkah untuk

Build APIs Faster & Together in Apidog

Cara Menggunakan Flux Schnell Secara Lokal di MacBook Pro M3 Max

Start for free
Inhalte
Ingin mencoba FLUX secara online tanpa repot tambahan?

Anda dapat menjalankan FLUX.1 Pro, Schnell, dan Dev di Anakin AI Now!

Flux Schnell adalah model pembuatan gambar dari teks yang kuat yang mampu menghasilkan gambar berkualitas tinggi dari prompt teks. Dalam tutorial ini, kami akan memandu Anda melalui langkah-langkah untuk menyiapkan dan menjalankan Flux Schnell secara lokal di MacBook Pro M3 Max. Konfigurasi ini memungkinkan pembuatan gambar yang efisien dengan memanfaatkan hingga 40GB RAM, dengan setiap gambar memakan waktu sekitar 30 detik untuk dihasilkan.

Persyaratan untuk Menjalankan Flux.1 Pro di Mac Secara Lokal

Sebelum kita mulai, pastikan sistem Anda memenuhi persyaratan berikut:

  • MacBook Pro dengan chip M3 Max
  • macOS (versi terbaru dianjurkan)
  • Setidaknya 40GB RAM yang tersedia
  • Anaconda atau Miniconda terinstal
  • Koneksi internet untuk mengunduh dependensi

Tutorial Langkah-demi-Langkah untuk Menjalankan Flux.1 Pro di Mac Secara Lokal

Tutorial Langkah-demi-Langkah untuk Menjalankan Flux.1 Pro di Mac Secara Lokal

Langkah 1: Menyiapkan Lingkungan

Pertama, kita akan membuat lingkungan Conda baru dan mengaktifkannya:

conda create -n flux python=3.11
conda activate flux

Langkah 2: Instal Dependensi

Sekarang, mari kita instal paket yang diperlukan:

pip install torch==2.3.1
pip install git+https://github.com/huggingface/diffusers.git
pip install transformers==4.43.3 sentencepiece==0.2.0 accelerate==0.33.0 protobuf==5.27.3

Langkah 3: Menyiapkan Skrip Python

Buat file Python baru bernama flux_schnell.py dan tambahkan kode berikut:

import torch
from diffusers import FluxPipeline
import diffusers# Modifikasi fungsi rope untuk menangani perangkat MPS
_flux_rope = diffusers.models.transformers.transformer_flux.rope
def new_flux_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
   assert dim % 2 == 0, "Dimensi harus genap."
   if pos.device.type == "mps":
       return _flux_rope(pos.to("cpu"), dim, theta).to(device=pos.device)
   else:
       return _flux_rope(pos, dim, theta)
diffusers.models.transformers.transformer_flux.rope = new_flux_rope
# Muat model Flux Schnell
pipe = FluxPipeline.from_pretrained(
   "black-forest-labs/FLUX.1-schnell",
   revision='refs/pr/1',
   torch_dtype=torch.bfloat16
).to("mps")
# Definisikan prompt
prompt = "Seekor kucing yang memegang tanda yang bertuliskan hello world"
# Hasilkan gambar
out = pipe(
   prompt=prompt,
   guidance_scale=0.,
   height=1024,
   width=1024,
   num_inference_steps=4,
   max_sequence_length=256,
).images[0]
# Simpan gambar yang dihasilkan
out.save("flux_image.png")

Langkah 4: Jalankan Skrip

Eksekusi skrip Python:

python flux_schnell.py

Ini akan menghasilkan gambar berdasarkan prompt “Seekor kucing yang memegang tanda yang bertuliskan hello world” dan menyimpannya sebagai “flux_image.png” di direktori yang sama.

Memahami Kode

Mari kita uraikan komponen kunci dari skrip ini:

Mengimpor Dependensi

import torch
from diffusers import FluxPipeline
import diffusers

Baris-baris ini mengimpor modul yang diperlukan: PyTorch untuk operasi tensor, FluxPipeline dari pustaka diffusers untuk menggunakan model Flux Schnell, dan modul diffusers untuk utilitas tambahan.

Memodifikasi Fungsi Rope

_flux_rope = diffusers.models.transformers.transformer_flux.rope
def new_flux_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
   assert dim % 2 == 0, "Dimensi harus genap."
   if pos.device.type == "mps":
       return _flux_rope(pos.to("cpu"), dim, theta).to(device=pos.device)
   else:
       return _flux_rope(pos, dim, theta)diffusers.models.transformers.transformer_flux.rope = new_flux_rope

Bagian ini memodifikasi fungsi rope (Rotary Position Embedding) untuk menangani perangkat MPS (Metal Performance Shaders) yang digunakan di chip Apple Silicon. Ini memastikan kompatibilitas dengan chip M3 Max dengan memindahkan tensor ke CPU jika perlu.

Memuat Model

pipe = FluxPipeline.from_pretrained(
   "black-forest-labs/FLUX.1-schnell",
   revision='refs/pr/1',
   torch_dtype=torch.bfloat16
).to("mps")

Kode ini memuat model Flux Schnell dari model hub Hugging Face. Ini menentukan versi model, mengatur tipe data menjadi bfloat16 untuk efisiensi, dan memindahkan model ke perangkat MPS.

Menghasilkan Gambar

prompt = "Seekor kucing yang memegang tanda yang bertuliskan hello world"out = pipe(
   prompt=prompt,
   guidance_scale=0.,
   height=1024,
   width=1024,
   num_inference_steps=4,
   max_sequence_length=256,
).images[0]

Di sini, kita mendefinisikan prompt dan menggunakan model yang dimuat untuk menghasilkan gambar. Parameter mengontrol berbagai aspek dari proses generasi:

  • guidance_scale: Diatur ke 0 untuk generasi tanpa syarat.
  • height dan width: Mengatur dimensi gambar keluaran menjadi 1024x1024 piksel.
  • num_inference_steps: Mengontrol jumlah langkah denoising (4 dalam hal ini untuk generasi yang lebih cepat).
  • max_sequence_length: Membatasi panjang maksimum dari urutan input.

Menyimpan Gambar

out.save("flux_image.png")

Terakhir, baris ini menyimpan gambar yang dihasilkan sebagai file PNG bernama “flux_image.png” di direktori saat ini.

Mengoptimalkan Kinerja

Untuk memaksimalkan penggunaan MacBook Pro M3 Max Anda dan mencapai waktu generasi ~30 detik dengan penggunaan RAM hingga 40GB, pertimbangkan tips berikut:

  1. Tutup aplikasi yang tidak perlu: Pastikan aplikasi lain yang memakan sumber daya ditutup untuk membebaskan RAM dan sumber daya CPU.
  2. Sesuaikan dimensi gambar: Jika Anda membutuhkan waktu generasi yang lebih cepat, Anda dapat mengurangi parameter height dan width. Sebaliknya, Anda dapat meningkatkannya untuk kualitas yang lebih tinggi dengan biaya waktu generasi yang lebih lama.
  3. Eksperimen dengan num_inference_steps: Meningkatkan nilai ini dapat menghasilkan gambar berkualitas lebih tinggi tetapi akan meningkatkan waktu generasi. Menguranginya akan mempercepat proses tetapi mungkin mengurangi kualitas gambar.
  4. Gunakan presisi bfloat16: Seperti yang telah diterapkan dalam skrip, menggunakan tipe data torch.bfloat16 membantu mengurangi penggunaan memori dan mungkin meningkatkan kecepatan tanpa kehilangan kualitas yang signifikan.
  5. Proses batch: Jika Anda perlu menghasilkan beberapa gambar, pertimbangkan untuk menerapkan pemrosesan batch untuk memanfaatkan GPU dengan lebih efisien.

Pemecahan Masalah

Jika Anda mengalami masalah saat menjalankan Flux Schnell di MacBook Pro M3 Max Anda, coba langkah berikut:

  1. Perbarui dependensi: Pastikan semua paket terkini, terutama PyTorch dan diffusers.
  2. Periksa kompatibilitas CUDA: Meskipun M3 Max menggunakan MPS, beberapa kesalahan terkait CUDA mungkin terjadi. Pastikan Anda menggunakan versi yang benar dari PyTorch dan pustaka terkait untuk sistem Anda.
  3. Pantau penggunaan sumber daya: Gunakan Activity Monitor untuk memantau penggunaan RAM dan CPU. Jika Anda terus-menerus mencapai batas, Anda mungkin perlu menyesuaikan parameter model atau membebaskan lebih banyak sumber daya sistem.
  4. Hapus cache: Jika Anda mengalami kesalahan terkait memori, coba hapus cache PyTorch:

torch.cuda.empty_cache()

5. Mulai ulang kernel: Jika Anda menggunakan notebook Jupyter atau lingkungan serupa, coba mulai ulang kernel jika Anda mengalami kesalahan yang terus-menerus.

Kesimpulan

Menjalankan Flux Schnell secara lokal di MacBook Pro M3 Max Anda menawarkan kemampuan pembuatan gambar dari teks yang kuat. Dengan pengaturan yang dijelaskan dalam tutorial ini, Anda dapat menciptakan gambar berkualitas tinggi dari deskripsi tekstual dalam waktu sekitar 30 detik, menggunakan hingga 40GB RAM. Ingat bahwa kinerja dapat bervariasi tergantung pada perangkat keras Anda dan kompleksitas prompt.

Silakan bereksperimen dengan parameter yang berbeda untuk mencapai keseimbangan terbaik antara kecepatan dan kualitas gambar sesuai kebutuhan Anda. Seiring perkembangan model AI dan perangkat keras, hasil yang lebih mengesankan akan segera hadir. Selamat menciptakan!