Latest Post

🌟 Hướng Dẫn Tối Ưu Diffusers Với PyTorch: Giảm Tải GPU, Tăng Tốc Độ Sinh Ảnh AI Hướng Dẫn Chi Tiết A-Z: Tạo Video Từ Văn Bản (Text-to-Video) Với Diffusers Của Hugging Face

💡 Giới thiệu

Nếu bạn từng làm việc với Diffusers (thư viện của 🤗 Hugging Face) kết hợp với PyTorch để sinh ảnh AI như Stable Diffusion hoặc SDXL, chắc hẳn bạn đã thấy máy tính của mình ngốn GPU khủng khiếpchậm đến mức “cà phê xong chưa render xong”. Vậy làm sao để tối ưu?

Trong bài viết này, chúng ta sẽ khám phá các chiến lược hiệu quả, dễ áp dụng giúp:

  • ✅ Giảm sử dụng bộ nhớ GPU.
  • ✅ Tăng tốc độ sinh ảnh.
  • ✅ Duy trì chất lượng đầu ra.
  • ✅ Thích hợp với cả máy có GPU yếu (4-6GB VRAM).

⚙️ 1. Dùng torch.float16 hoặc bfloat16 để giảm VRAM

✨ Tại sao?

Mặc định, mô hình chạy với float32 (32-bit), chiếm rất nhiều RAM. Dùng float16 sẽ giảm tới 50% bộ nhớ mà vẫn cho chất lượng tốt.

✅ Cách dùng:

import torch
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained(
    "runwayml/stable-diffusion-v1-5",
    torch_dtype=torch.float16  # sử dụng float16 để tiết kiệm
)
pipe = pipe.to("cuda")

Nếu GPU bạn hỗ trợ bfloat16 (như A100, RTX 40xx), có thể dùng:

torch_dtype=torch.bfloat16

⚙️ 2. Bật enable_attention_slicing() để tiết kiệm RAM

💡 Chức năng

Chia nhỏ attention thành nhiều phần nhỏ hơn → giảm peak memory.

✅ Cách bật:

pipe.enable_attention_slicing()

⚙️ 3. Bật enable_vae_tiling() để sinh ảnh lớn mà không full RAM

Nếu bạn dùng SDXL hoặc sinh ảnh lớn (1024×1024+), hãy bật VAE tiling:

pipe.enable_vae_tiling()

⚙️ 4. Tắt bộ giải mã safety_checker (nếu không cần kiểm duyệt ảnh)

🛑 Warning: Tắt tính năng kiểm duyệt nội dung

Nếu bạn chắc chắn rằng ảnh sinh ra không vi phạm, tắt safety_checker giúp tiết kiệm tài nguyên đáng kể:

pipe.safety_checker = None

⚙️ 5. Dùng xformers để tăng tốc attention (cực hiệu quả)

🚀 Ưu điểm:

  • Giảm bộ nhớ & tăng tốc.
  • Rất phù hợp máy yếu.

✅ Cài đặt:

pip install xformers

✅ Kích hoạt:

pipe.enable_xformers_memory_efficient_attention()

🔧 Nếu lỗi khi cài xformers, hãy dùng Python 3.10 và CUDA tương thích.

⚙️ 6. Dùng model_cpu_offload() cho máy có ít VRAM

🧠 Ý tưởng:

  • Tự động chuyển các phần của mô hình giữa CPU ↔ GPU khi cần.
  • Giảm yêu cầu VRAM cực mạnh.

✅ Cách dùng:

from accelerate import infer_auto_device_map, init_empty_weights
pipe.enable_model_cpu_offload()

Phù hợp cho GPU 4GB–6GB.

⚙️ 7. Dùng batch nhỏ (guidance scale thấp)

Một số mẹo nhỏ khác giúp sinh ảnh nhanh hơn:

  • Dùng num_inference_steps=20–30 (mặc định là 50).
  • Dùng guidance_scale=7 hoặc thấp hơn.
  • Dùng height=512, width=512 nếu không cần ảnh lớn.
image = pipe("a beautiful forest", num_inference_steps=25, guidance_scale=6.5).images[0]

🎯 Tổng kết cấu hình tối ưu

pipe = StableDiffusionPipeline.from_pretrained(
    "runwayml/stable-diffusion-v1-5",
    torch_dtype=torch.float16,
    revision="fp16"
)
pipe = pipe.to("cuda")
pipe.enable_attention_slicing()
pipe.enable_vae_tiling()
pipe.enable_xformers_memory_efficient_attention()
pipe.safety_checker = None
pipe.enable_model_cpu_offload()

💬 Lời khuyên cuối

  • Dùng phiên bản diffusers mới nhất.
  • Hạn chế sinh ảnh quá lớn trừ khi cần thiết.
  • Theo dõi nvidia-smi để biết mức sử dụng GPU.

🔗 Tài nguyên liên quan

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *