วิธีใช้ Flux Schnell บน MacBook Pro M3 Max แบบโลคัล

ต้องการลองใช้งาน FLUX ออนไลน์โดยไม่ต้องยุ่งยากเพิ่มเติมใช่ไหม? คุณสามารถใช้งาน FLUX.1 Pro, Schnell และ Dev ที่ Anakin AI ตอนนี้ได้เลย! Flux Schnell เป็นโมเดลการสร้างภาพจากข้อความที่มีความแข็งแกร่ง สามารถสร้างภาพคุณภาพสูงจากข้อความที่ให้มา ในบทแนะนำนี้ เราจะแนะนำคุณผ่านขั้นตอนการตั้งค่

Build APIs Faster & Together in Apidog

วิธีใช้ Flux Schnell บน MacBook Pro M3 Max แบบโลคัล

Start for free
Inhalte
ต้องการลองใช้งาน FLUX ออนไลน์โดยไม่ต้องยุ่งยากเพิ่มเติมใช่ไหม?

คุณสามารถใช้งาน FLUX.1 Pro, Schnell และ Dev ที่ Anakin AI ตอนนี้ได้เลย!

Flux Schnell เป็นโมเดลการสร้างภาพจากข้อความที่มีความแข็งแกร่ง สามารถสร้างภาพคุณภาพสูงจากข้อความที่ให้มา ในบทแนะนำนี้ เราจะแนะนำคุณผ่านขั้นตอนการตั้งค่าและเรียกใช้ Flux Schnell ในเครื่อง MacBook Pro M3 Max ของคุณ การตั้งค่านี้ช่วยให้สามารถสร้างภาพได้อย่างมีประสิทธิภาพโดยใช้หน่วยความจำถึง 40GB โดยแต่ละภาพใช้เวลาประมาณ 30 วินาทีในการผลิต

สิ่งจำเป็นในการเรียกใช้ Flux.1 Pro บน Mac โดยตรง

ก่อนที่จะเริ่มต้น ให้แน่ใจว่าระบบของคุณตรงตามข้อกำหนดดังต่อไปนี้:

  • MacBook Pro ที่มีชิป M3 Max
  • macOS (เวอร์ชันล่าสุดแนะนำ)
  • หน่วยความจำ RAM อย่างน้อย 40GB
  • ติดตั้ง Anaconda หรือ Miniconda
  • การเชื่อมต่ออินเทอร์เน็ตสำหรับดาวน์โหลด dependencies

บทแนะนำทีละขั้นเพื่อเรียกใช้ Flux.1 Pro บน Mac โดยตรง

บทแนะนำทีละขั้นเพื่อเรียกใช้ Flux.1 Pro บน Mac โดยตรง

ขั้นตอนที่ 1: ตั้งค่าสิ่งแวดล้อม

เริ่มจากการสร้างสภาพแวดล้อม Conda ใหม่และเปิดใช้งาน:

conda create -n flux python=3.11
conda activate flux

ขั้นตอนที่ 2: ติดตั้ง Dependencies

ตอนนี้ ให้ติดตั้งแพ็กเกจที่ต้องการ:

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

ขั้นตอนที่ 3: เตรียมสคริปต์ Python

สร้างไฟล์ Python ใหม่ชื่อ flux_schnell.py และเพิ่มโค้ดต่อไปนี้:

import torch
from diffusers import FluxPipeline
import diffusers# ปรับเปลี่ยนฟังก์ชัน rope เพื่อจัดการกับอุปกรณ์ 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, "มิติจะต้องเป็นเลขคู่"
   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
# โหลดโมเดล Flux Schnell
pipe = FluxPipeline.from_pretrained(
   "black-forest-labs/FLUX.1-schnell",
   revision='refs/pr/1',
   torch_dtype=torch.bfloat16
).to("mps")
# กำหนดข้อความ
prompt = "แมวที่ถือป้ายที่เขียนว่า สวัสดีโลก"
# สร้างภาพ
out = pipe(
   prompt=prompt,
   guidance_scale=0.,
   height=1024,
   width=1024,
   num_inference_steps=4,
   max_sequence_length=256,
).images[0]
# บันทึกภาพที่สร้างขึ้น
out.save("flux_image.png")

ขั้นตอนที่ 4: เรียกใช้สคริปต์

EXECUTE สคริปต์ Python:

python flux_schnell.py

นี้จะสร้างภาพตามข้อความ “แมวที่ถือป้ายที่เขียนว่า สวัสดีโลก” และบันทึกไว้เป็น “flux_image.png” ในไดเรกทอรีเดียวกัน

ทำความเข้าใจโค้ด

เรามาแบ่งแยกส่วนประกอบสำคัญของสคริปต์:

การนำเข้า Dependencies

import torch
from diffusers import FluxPipeline
import diffusers

บรรทัดเหล่านี้นำเข้าโมดูลที่จำเป็น: PyTorch สำหรับการดำเนินการท่อ, FluxPipeline จากไลบรารี diffusers เพื่อใช้โมเดล Flux Schnell, และโมดูล diffusers สำหรับยูทิลิตี้เพิ่มเติม

การปรับเปลี่ยนฟังก์ชัน 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, "มิติจะต้องเป็นเลขคู่"
   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

ส่วนนี้ปรับเปลี่ยนฟังก์ชัน rope (Rotary Position Embedding) เพื่อจัดการกับอุปกรณ์ MPS (Metal Performance Shaders) ที่ใช้ในชิป Apple Silicon เพื่อให้แน่ใจว่ามีความเข้ากันได้กับชิป M3 Max โดยการย้าย tensor ไปยัง CPU เมื่อจำเป็น

การโหลดโมเดล

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

โค้ดนี้โหลดโมเดล Flux Schnell จาก Hugging Face model hub โดยระบุรุ่นของโมเดล ตั้งค่าประเภทข้อมูลเป็น bfloat16 เพื่อประสิทธิภาพ และย้ายโมเดลไปยังอุปกรณ์ MPS

การสร้างภาพ

prompt = "แมวที่ถือป้ายที่เขียนว่า สวัสดีโลก"out = pipe(
   prompt=prompt,
   guidance_scale=0.,
   height=1024,
   width=1024,
   num_inference_steps=4,
   max_sequence_length=256,
).images[0]

ที่นี่ เรากำหนดข้อความและใช้โมเดลที่โหลดมาเพื่อสร้างภาพ พารามิเตอร์ควบคุมแง่มุมต่างๆ ของกระบวนการสร้าง:

  • guidance_scale: ตั้งค่าเป็น 0 สำหรับการสร้างภาพที่ไม่มีเงื่อนไข
  • height และ width: ตั้งค่ามิติของภาพผลลัพธ์เป็น 1024x1024 พิกเซล
  • num_inference_steps: ควบคุมจำนวนขั้นตอนในการลดสัญญาณรบกวน (4 ในกรณีนี้เพื่อความเร็วในการสร้าง)
  • max_sequence_length: จำกัดความยาวสูงสุดของลำดับข้อมูลนำเข้า

การบันทึกภาพ

out.save("flux_image.png")

ท้ายที่สุด บรรทัดนี้บันทึกภาพที่สร้างขึ้นในรูปแบบไฟล์ PNG ชื่อ “flux_image.png” ในไดเรกทอรีปัจจุบัน

การเพิ่มประสิทธิภาพ

ในการใช้ประโยชน์สูงสุดจาก MacBook Pro M3 Max ของคุณและให้ได้เวลาการสร้างประมาณ 30 วินาที โดยใช้ RAM ถึง 40GB ควรพิจารณาคำแนะนำดังต่อไปนี้:

  1. ปิดแอพพลิเคชันที่ไม่จำเป็น: ตรวจสอบให้แน่ใจว่าแอพพลิเคชันอื่นที่ใช้ทรัพยากรเข้มข้นถูกปิดเพื่อปล่อย RAM และ CPU
  2. ปรับขนาดภาพ: หากคุณต้องการเวลาในการสร้างที่เร็วยิ่งขึ้น คุณสามารถลดพารามิเตอร์ height และ width ได้ ในทางกลับกัน คุณสามารถเพิ่มได้เพื่อให้คุณภาพสูงขึ้นแม้จะใช้เวลานานมากขึ้นในการสร้าง
  3. ทดลองกับ num_inference_steps: การเพิ่มค่านี้อาจนำไปสู่ภาพที่มีคุณภาพสูงขึ้นแต่จะเพิ่มเวลาในการสร้าง ในขณะที่การลดค่านี้จะเร่งกระบวนการแต่คุณภาพของภาพอาจลดลง
  4. ใช้ความแม่นยำ bfloat16: ตามที่ได้ดำเนินการในสคริปต์แล้ว การใช้ประเภทข้อมูล torch.bfloat16 ช่วยลดการใช้หน่วยความจำและอาจเพิ่มความเร็วโดยไม่ทำให้คุณภาพลดลงอย่างมีนัยสำคัญ
  5. การประมวลผลแบบจัดกลุ่ม: หากคุณต้องการสร้างภาพหลาย ๆ ภาพ ให้พิจารณาการดำเนินการประมวลผลแบบจัดกลุ่มเพื่อใช้ GPU อย่างมีประสิทธิภาพมากขึ้น

การแก้ปัญหา

หากคุณพบปัญหาในขณะเรียกใช้ Flux Schnell บน MacBook Pro M3 Max ของคุณ ให้ลองทำตามนี้:

  1. อัปเดต dependencies: ตรวจสอบให้แน่ใจว่าแพ็กเกจทั้งหมดเป็นเวอร์ชันล่าสุด โดยเฉพาะอย่างยิ่ง PyTorch และ diffusers
  2. ตรวจสอบความเข้ากันได้ของ CUDA: แม้ว่า M3 Max จะใช้ MPS แต่ก็อาจเกิดข้อผิดพลาดที่เกี่ยวข้องกับ CUDA ได้ ให้แน่ใจว่าคุณกำลังใช้เวอร์ชันที่ถูกต้องของ PyTorch และไลบรารีที่เกี่ยวข้องสำหรับระบบของคุณ
  3. ตรวจสอบการใช้ทรัพยากร: ใช้ Activity Monitor เพื่อติดตามการใช้ RAM และ CPU หากคุณอยู่ในขีดจำกัดอย่างต่อเนื่อง อาจจำเป็นต้องปรับพารามิเตอร์ของโมเดลหรือล้างทรัพยากรระบบเพิ่มเติม
  4. ล้างแคช: หากคุณพบข้อผิดพลาดที่เกี่ยวข้องกับหน่วยความจำ ให้ลองล้างแคชของ PyTorch:

torch.cuda.empty_cache()

5. เรียกใช้เซิร์ฟเวอร์ใหม่: หากคุณใช้โน้ตบุ๊ก Jupyter หรือสภาพแวดล้อมที่คล้ายกัน ให้ลองเรียกใช้เซิร์ฟเวอร์ใหม่หากคุณพบข้อผิดพลาดอย่างต่อเนื่อง

บทสรุป

การเรียกใช้ Flux Schnell ในเครื่องบน MacBook Pro M3 Max ของคุณมอบความสามารถในการสร้างภาพจากข้อความที่มีพลัง ด้วยการตั้งค่าที่อธิบายในบทแนะนำนี้ คุณสามารถสร้างภาพคุณภาพสูงจากคำบรรยายประมาณ 30 วินาที โดยใช้ RAM ถึง 40GB โปรดทราบว่าประสิทธิภาพอาจแตกต่างกันไปขึ้นอยู่กับฮาร์ดแวร์ของคุณและความซับซ้อนของข้อความ

ลองพยายามทดลองเปลี่ยนพารามิเตอร์ต่าง ๆ เพื่อให้ได้สมดุลที่ดีที่สุดระหว่างความเร็วและคุณภาพของภาพตามความต้องการของคุณ ขณะที่โมเดล AI และฮาร์ดแวร์ยังคงพัฒนา ผลลัพธ์ที่น่าประทับใจมากขึ้นกำลังรออยู่ข้างหน้า ขอให้สนุกกับการสร้าง!