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
danwidth
: 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:
- Tutup aplikasi yang tidak perlu: Pastikan aplikasi lain yang memakan sumber daya ditutup untuk membebaskan RAM dan sumber daya CPU.
- Sesuaikan dimensi gambar: Jika Anda membutuhkan waktu generasi yang lebih cepat, Anda dapat mengurangi parameter
height
danwidth
. Sebaliknya, Anda dapat meningkatkannya untuk kualitas yang lebih tinggi dengan biaya waktu generasi yang lebih lama. - 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. - 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. - 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:
- Perbarui dependensi: Pastikan semua paket terkini, terutama PyTorch dan diffusers.
- 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.
- 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.
- 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!