Trong hướng dẫn này, chúng ta sẽ học cách chạy mô hình tạo ảnh FLUX.2 trên máy cục bộ. Chúng ta sẽ thiết lập môi trường GPU, tải về phiên bản FLUX.2 đã lượng tử hóa, nạp mô hình hiệu quả vào bộ nhớ GPU và RAM, chạy suy luận (inference), rồi thử nghiệm với các tùy chọn cấu hình khác nhau.
Chạy một mô hình có kích thước như vậy trên RTX 3090 có thể là thách thức, và hướng dẫn này tập trung vào cách đơn giản, thực tế nhất để vận hành FLUX.2 cục bộ mà không thêm phức tạp không cần thiết.
Nếu bạn quan tâm đến các kỹ thuật nâng cao về quản lý và tối ưu mô hình, bao gồm cắt tỉa (pruning), lượng tử hóa (quantization) và logging, tôi khuyên bạn nên học khóa Scalable AI Models with PyTorch Lightning.
FLUX.2 là gì?
FLUX.2 là mô hình tạo ảnh được xây dựng cho công việc sáng tạo thực thụ, không chỉ là thử nghiệm. Nó tạo ra hình ảnh chất lượng cao, chân thực, đồng thời giữ được tính nhất quán về nhân vật, phong cách và sản phẩm xuyên suốt nhiều ảnh tham chiếu. Kế thừa từ mô hình FLUX gốc, nó bám sát prompt, render chữ rõ ràng và xử lý tốt ánh sáng, bố cục, cũng như nhận diện thương hiệu.
FLUX.2 cũng hỗ trợ chỉnh sửa ảnh ở độ phân giải cao và có sẵn dưới dạng API dùng ngay cũng như mô hình mở bạn có thể chạy cục bộ, giúp nó trở nên thực dụng, linh hoạt và dễ tích hợp vào quy trình sản xuất thật.
FLUX.2 có bốn biến thể chính:
FLUX.2 [max]
FLUX.2 [pro]
FLUX.2 [flex]
FLUX.2 [dev]
Mỗi biến thể được thiết kế cho các mức độ kiểm soát, hiệu năng và nhu cầu triển khai khác nhau.
Trong các bảng xếp hạng tổng quát, cả ba biến thể FLUX.2 đều nằm trong top 10 mô hình chỉnh sửa ảnh trên Artificial Analysis, với FLUX.2 [max] và FLUX.2 [pro] vượt trội hơn các mô hình như GPT-5 và các biến thể FLUX.1 Kontext thế hệ trước.
Trong các bước dưới đây, tôi sẽ giải thích mọi thứ bạn cần biết để chạy FLUX.2 cục bộ bằng GPU RTX 3090.
1. Yêu cầu hệ thống và điều kiện tiên quyết
Trước khi chạy FLUX.2 cục bộ, hãy đảm bảo hệ thống của bạn đã được thiết lập đúng cho suy luận trên GPU.
Phần cứng
GPU NVIDIA (khuyến nghị RTX 3090)
24 GB VRAM
64 GB RAM hệ thống được khuyến nghị
Trình điều khiển NVIDIA và CUDA Toolkit
Cài đặt trình điều khiển NVIDIA: Đảm bảo bạn có phiên bản trình điều khiển GPU NVIDIA mới nhất với hỗ trợ các phiên bản CUDA gần đây (khuyến nghị CUDA 12.1+).
Cài đặt CUDA Toolkit: Tải và cài đặt CUDA Toolkit từ trang NVIDIA CUDA Downloads chính thức để cải thiện khả năng tương thích với các phần mở rộng GPU và kernel tùy chỉnh.
Lưu ý: Chúng tôi dùng Jupyter Notebook làm môi trường lập trình, giúp dễ dàng thử nghiệm, chạy suy luận theo từng bước và lặp lại việc tạo/chỉnh sửa ảnh ngay trong notebook.
2. Cài đặt PyTorch với hỗ trợ CUDA
Ở bước này, chúng ta cài PyTorch với hỗ trợ CUDA để suy luận chạy trên GPU thay vì CPU. Lệnh dưới đây cài PyTorch, TorchVision và TorchAudio với các gói nhị phân CUDA dựng sẵn, không cần biên dịch CUDA từ mã nguồn.
!pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130Được hỗ trợ bởi
Sau khi cài xong, PyTorch sẽ tự động dùng GPU nếu GPU khả dụng và được cấu hình đúng.
3. Cài đặt FLUX.2 và các phụ thuộc cần thiết
Tiếp theo, chúng ta cài các thư viện lõi để chạy FLUX.2 cục bộ. Các gói này xử lý việc nạp mô hình, suy luận, tăng tốc GPU, lượng tử hóa và truyền dữ liệu hiệu quả.
Khi đã cài đặt xong, môi trường của bạn sẵn sàng để nạp FLUX.2 và bắt đầu chạy suy luận tạo/chỉnh sửa ảnh.
4. Xác nhận hỗ trợ GPU và lượng tử hóa
Trước khi nạp FLUX.2, chúng ta xác minh rằng PyTorch nhìn thấy GPU và hỗ trợ lượng tử hóa 4-bit. Bước này quan trọng để đảm bảo mô hình chạy hiệu quả trong giới hạn bộ nhớ của RTX 3090.
import torch
import bitsandbytes as bnb
print(f"PyTorch Version: {torch.__version__}")print(f"CUDA Version: {torch.version.cuda}")print(f"Is CUDA available? {torch.cuda.is_available()}")print(f"GPU Name: {torch.cuda.get_device_name(0)}")# Check if 4-bit quantization is supported (Ampere 3090 supports this natively)try:print(f"BitsAndBytes Version: {bnb.__version__}")print("4-bit quantization check: PASSED")except ImportError:print("BitsAndBytes not installed correctly.")Được hỗ trợ bởi
Kết quả xác nhận PyTorch được cài đúng với hỗ trợ CUDA, GPU RTX 3090 của bạn được nhận diện, và bitsandbytes hoạt động tốt với lượng tử hóa 4-bit được bật, nên hệ thống sẵn sàng cho suy luận GPU hiệu quả.
PyTorch Version: 2.8.0+cu128
CUDA Version: 12.8
Is CUDA available? True
GPU Name: NVIDIA GeForce RTX 3090
BitsAndBytes Version: 0.49.0
4-bit quantization check: PASSEDĐược hỗ trợ bởi
5. Nạp FLUX.2 với lượng tử hóa 4-bit
Ở bước này, chúng ta nạp FLUX.2 [dev] bằng checkpoint lượng tử hóa 4-bit để giảm sử dụng bộ nhớ GPU mà vẫn giữ chất lượng ảnh cao. Đây là yếu tố thiết yếu để chạy mô hình lớn như FLUX.2 trên RTX 3090.
Chúng ta bắt đầu bằng cách import các thư viện cần thiết và định nghĩa một vài thiết lập chính.
repo_id trỏ tới checkpoint FLUX.2 dev 4-bit.
device chọn GPU của bạn (thiết bị CUDA đầu tiên).
torch_dtype đặt độ chính xác tính toán dùng trong suy luận. bfloat16 thường được dùng vì giảm bộ nhớ và có thể tăng tốc trong khi vẫn giữ đầu ra ổn định.
import torch
from transformers import Mistral3ForConditionalGeneration
from diffusers import Flux2Pipeline, Flux2Transformer2DModel
repo_id ="diffusers/FLUX.2-dev-bnb-4bit"
device ="cuda:0"
torch_dtype = torch.bfloat16Được hỗ trợ bởi
Tiếp theo, chúng ta nạp backbone transformer ảnh của FLUX.2 (thành phần chính chịu trách nhiệm tạo các latent ảnh) lên CPU trước. Điều này tránh làm đầy VRAM khi khởi tạo và giúp pipeline linh hoạt hơn trong việc chuyển module sang GPU chỉ khi cần.
transformer = Flux2Transformer2DModel.from_pretrained(
repo_id, subfolder="transformer", torch_dtype=torch_dtype, device_map="cpu")Được hỗ trợ bởi
Sau đó, chúng ta nạp bộ mã hóa văn bản lên CPU. Text encoder chuyển prompt của bạn thành embedding để dẫn dắt quá trình tạo ảnh. Giữ nó trên CPU trong giai đoạn thiết lập giúp dành bộ nhớ GPU cho các phần nặng hơn của quá trình tạo.
text_encoder = Mistral3ForConditionalGeneration.from_pretrained(
repo_id, subfolder="text_encoder", dtype=torch_dtype, device_map="cpu")Được hỗ trợ bởi
Cuối cùng, chúng ta lắp ráp đầy đủ pipeline Diffusers bằng cách truyền transformer và text encoder đã nạp.
Dòng quan trọng là enable_model_cpu_offload(): nó bật cơ chế offload CPU ↔ GPU tự động, nghĩa là pipeline chỉ chuyển các phần của mô hình lên GPU khi chúng đang được dùng, rồi chuyển lại về CPU sau đó. Đây là một trong những cách dễ nhất để chạy mô hình lớn trên GPU phổ thông mà không phải tự quản lý vị trí thiết bị.
Giờ chúng ta đã sẵn sàng tạo ảnh đầu tiên với FLUX.2. Để đơn giản, bắt đầu với một prompt văn bản mô tả ảnh macro siêu thực của một con bọ rùa.
prompt =("Realistic macro photo of a ladybug perched on the edge of a dew-covered rose petal, ""early morning mist, soft natural light, shallow depth of field, crisp detail, creamy bokeh.")Được hỗ trợ bởi
Tiếp theo, truyền prompt vào pipeline và chạy suy luận.
Chúng ta dùng 28 bước suy luận để cân bằng tốc độ và chất lượng ảnh.
Guidance scale bằng 4 giúp kết quả tự nhiên, không ép prompt quá mức.
Seed cố định giúp tái lập kết quả.
image = pipe(
prompt=prompt,
generator=torch.Generator(device=device).manual_seed(42),
num_inference_steps=28,
guidance_scale=4,).images[0]Được hỗ trợ bởi
Để theo dõi lượng bộ nhớ GPU sử dụng trong lúc suy luận, mở terminal và chạy:
Bạn sẽ thấy khoảng gần 21 GB VRAM đang dùng với mức sử dụng GPU cao, cho thấy mô hình đang tận dụng hiệu quả tài nguyên sẵn có và chạy ở hiệu năng tối đa trên RTX 3090.
Khi suy luận hoàn tất, bạn có thể xem ảnh tạo ra trực tiếp trong Jupyter Notebook bằng cách hiển thị đối tượng ảnh:
Kết quả có độ chi tiết và tính chân thực cao. Mô hình bám sát prompt đồng thời bổ sung những chi tiết tinh tế, như ánh sáng và kết cấu, vốn không được nêu rõ.
Cuối cùng, chúng ta lưu ảnh đã tạo về máy:
output_path ="flux2_local_full.png"
image.save(output_path)print(f"Image saved to {output_path}")Được hỗ trợ bởi
FLUX.2 hỗ trợ các kỹ thuật prompting nâng cao vượt ra ngoài văn bản thuần, cho phép kiểm soát tinh vi hơn đối với ảnh cuối cùng. Với prompt JSON có cấu trúc, bạn có thể định nghĩa rõ bố cục cảnh, chủ thể, ánh sáng, thiết lập máy ảnh, tâm trạng và thậm chí bảng màu bằng mã hex chính xác.
Trong phần này, chúng ta dùng prompt JSON có cấu trúc để mô tả chi tiết cảnh. Thay vì một câu đơn, chúng ta định nghĩa môi trường, chủ thể, phong cách, màu sắc, ánh sáng, thuộc tính máy ảnh và các ràng buộc phủ định theo dạng rõ ràng, có tổ chức.
Điều này giúp FLUX.2 hiểu tốt hơn các chỉ dẫn phức tạp và cho ra kết quả có chất lượng cao, ổn định và dễ dự đoán hơn.
advanced_prompt ="""
{"scene":"New Year's Eve night on a rooftop overlooking a glowing city skyline",
"subjects":[{"description":"Group of close friends including men and women in winter clothing, natural facial proportions, diverse appearances",
"position":"center and slightly spread across the frame",
"action":"standing together in a loose circle, some smiling softly, others quietly reflective, sharing the moment before midnight"}],
"style":"Cinematic semi-realistic illustration with grounded realism, subtle painterly softness",
"color_palette":["#0B132B", "#1C2541", "#EAEAEA", "#F4D35E"],
"lighting":"Soft moonlight as ambient key light, warm glow from sparklers and nearby string lights illuminating faces, gentle contrast",
"mood":"Warm, intimate, reflective, hopeful",
"background":"Out-of-focus city skyline with distant fireworks softly lighting the sky, minimal visual noise",
"composition":"Wide medium shot, balanced framing, friends forming a natural arc, negative space above for sky and fireworks",
"camera":{"angle":"eye-level",
"lens":"50mm cinematic look",
"depth_of_field":"sharp focus on group, gentle background blur"},
"details":["subtle breath vapor in cold air",
"soft fabric textures on coats and scarves",
"sparklers emitting warm golden particles",
"natural body language and expressions",
"no exaggerated poses or faces"],
"negative_prompt":["cartoon style",
"emote proportions",
"chibi",
"oversized heads",
"text",
"watermark",
"logo",
"overcrowded scene",
"harsh neon lighting",
"over-saturation",
"extra limbs",
"distorted faces"]}"""Được hỗ trợ bởi
Sau đó, chúng ta chạy suy luận với số bước nhiều hơn để bắt được nhiều chi tiết, đồng thời giữ guidance scale ở mức vừa phải để có vẻ ngoài tự nhiên.
image_2 = pipe(
prompt=advanced_prompt,
generator=torch.Generator(device=device).manual_seed(42),
num_inference_steps=50,
guidance_scale=4,).images[0]Được hỗ trợ bởi
Ảnh thu được bám sát prompt có cấu trúc, nắm bắt chính xác cảnh, tâm trạng, ánh sáng và bố cục như đã chỉ định.
8. Chỉnh sửa ảnh với FLUX.2 (image to image)
FLUX.2 cũng hỗ trợ chỉnh sửa ảnh, trong đó một ảnh tham chiếu được dùng làm nền tảng và mô hình áp dụng các thay đổi dựa trên prompt văn bản. Điều này đặc biệt hữu ích khi bạn muốn giữ nguyên danh tính, đường nét khuôn mặt và tông da, đồng thời thay đổi bối cảnh, tâm trạng hoặc môi trường xung quanh chủ thể.
Trong ví dụ này, chúng ta dùng ảnh một phụ nữ Ấn Độ từ Pexels.com làm ảnh tham chiếu:
Chúng ta thiết kế prompt cẩn thận để hướng dẫn mô hình giữ nguyên khuôn mặt và tông da tự nhiên của người phụ nữ, đồng thời thay đổi bối cảnh, ánh sáng và biểu cảm cảm xúc. Mục tiêu là chỉnh sửa ảnh mà không làm thay đổi danh tính của cô ấy.
from diffusers.utils import load_image
prompt =("Using the provided reference image, generate a realistic photograph of a woman with a similar face, ""standing at night and looking up at the sky with stars with a subtle, sad expression. ""Natural skin tones, soft moonlight, gentle shadows, shallow depth of field, ""with blurred city lights in the background.")Được hỗ trợ bởi
Tiếp theo, chúng ta nạp ảnh tham chiếu và truyền vào pipeline. FLUX.2 hỗ trợ nhiều ảnh tham chiếu, nhưng ở đây chúng ta dùng một ảnh duy nhất để dẫn dắt chỉnh sửa.
Kết quả rất chân thực. Mô hình giữ được cấu trúc khuôn mặt và tông da của người phụ nữ trong khi đặt cô ấy vào một bối cảnh mới với ánh sáng, tâm trạng và nền khác một cách tự nhiên.
Kết quả trông giống một bức ảnh do nhiếp ảnh gia chuyên nghiệp chụp ở thời điểm và địa điểm khác hơn là một bản chỉnh sửa bằng AI.
Mẹo tối ưu bộ nhớ cho FLUX.2
Theo kinh nghiệm của tôi, chạy FLUX.2 cục bộ chỉ trở nên ổn định sau khi chuyển sang mô hình lượng tử hóa 4-bit và dùng thiết lập ưu tiên mã (code-first) với Transformers và Diffusers.
Trước đó, tôi thường gặp lỗi hết bộ nhớ trên RTX 3090 24 GB khi cố nạp quá nhiều trực tiếp lên CUDA.
Các công cụ giao diện như Stable Diffusion WebUI và ComfyUI cũng dễ chạm trần bộ nhớ hơn vì chúng thường giữ thêm bộ đệm trung gian, bản xem trước và trạng thái workflow trong bộ nhớ, trừ khi bạn tinh chỉnh cẩn thận các tùy chọn low-VRAM của chúng.
Mẹo tối ưu VRAM (điều thực sự hữu ích với tôi):
Dùng checkpoint 4-bit (bitsandbytes) thay vì trọng số độ chính xác đầy đủ.
Nạp các thành phần trên CPU trước (device_map="cpu") và tránh đẩy mọi thứ lên CUDA ngay từ đầu.
Bật offload CPU–GPU (pipe.enable_model_cpu_offload()) để chỉ phần đang chạy nằm trên GPU.
Giữ số bước suy luận ở mức hợp lý (ví dụ, 28–35 bước cho các lần chạy nhanh; chỉ tăng khi cần).
Giữ guidance scale ở mức vừa phải (khoảng 3–5) để tránh tính toán dư thừa và bất ổn.
Giám sát VRAM trực tiếp với nvidia-smi và đóng các ứng dụng nặng GPU khác.
Nếu vẫn gặp OOM, khởi động lại kernel notebook để xóa sạch bộ nhớ GPU rồi thử lại.
Nếu bạn vẫn gặp lỗi hết bộ nhớ sau khi làm theo các bước này, vui lòng tham khảo notebook DataLab này để biết thêm ví dụ khắc phục sự cố và tối ưu bộ nhớ.
Lời kết
Tôi thực sự ấn tượng với mức tiến bộ của các mô hình tạo ảnh mã nguồn mở.
Các mô hình như FLUX.2 hiện rõ ràng đủ sức cạnh tranh với hệ thống độc quyền, cả về chất lượng hình ảnh và khả năng hiểu prompt. Với thiết lập phù hợp, một chút thử nghiệm và tối ưu bộ nhớ, bạn có thể tạo ảnh chân thực, chất lượng cao cục bộ và miễn phí, ngay cả trên GPU phổ thông.
Điều nổi bật nhất là mức độ kiểm soát. Prompt nâng cao, JSON có cấu trúc, chỉnh sửa đa tham chiếu và quy trình image-to-image giúp bạn dễ dàng đi xa hơn các tác vụ tạo ảnh đơn giản.
Bạn có thể tạo các cảnh điện ảnh, phát triển ảnh phục vụ kể chuyện, thực hiện chỉnh sửa ảnh ở cấp độ chuyên nghiệp và lặp nhanh mà không phụ thuộc vào nền tảng đóng.
Đối với nhà sáng tạo, nhà nghiên cứu và nhà phát triển, điều này mở ra rất nhiều tự do sáng tạo và giúp việc tạo ảnh cao cấp trở nên dễ tiếp cận hơn bao giờ hết.
FLUX.2 FAQs
Tôi có thể dùng các LoRA FLUX.1 hiện có với FLUX.2 không?⌄
Không. Vì FLUX.2 dùngbộ mã hóa văn bản dựa trên Mistral và một transformer rectified flow được thiết kế lại, kiến trúc khác biệt về căn bản. Bạn không thể nạp các LoRA được huấn luyện trên FLUX.1 (hoặc SDXL) vào FLUX.2; bạn sẽ cần tìm hoặc huấn luyện các LoRA mới dành riêng cho kiến trúc FLUX.2.
Tôi có thể chạy FLUX.2 trên GPU dưới 24 GB VRAM không?⌄
Khó nhưng có thể với đánh đổi nhất định. Phiên bản lượng tử hóa 4-bit ([dev]) thường cần ~18–20 GB VRAM để vận hành mượt. Với các card 12 GB hoặc 16 GB, bạn phải dùng offload cực đoan (thời gian tạo chậm đáng kể) hoặc chuyển sang FLUX.2 [flex] nhỏ hơn, vốn được tối ưu cho phần cứng phổ thông.
Sự khác nhau chính giữa FLUX.2 [dev] và [pro] là gì?⌄
Khác biệt chính là giấy phép và khả năng truy cập trọng số. FLUX.2 [dev] là open-weight nhưng bị giới hạn phi thương mại. FLUX.2 [pro] khả dụng qua API cho môi trường sản xuất thương mại. Về kỹ thuật, chúng chia sẻ năng lực lõi tương tự, nhưng [pro] thường được phục vụ ở độ chính xác cao hơn (FP16) để đạt độ trung thực tối đa, trong khi người dùng cục bộ thường chạy [dev] ở 4-bit hoặc 8-bit để vừa bộ nhớ.
Vì sao việc nạp prompt lâu hơn so với FLUX.1?⌄
FLUX.2 thay bộ mã hóa văn bản T5XXL bằng backbone Mistral 3. Dù điều này giúp hiểu prompt tốt hơn đáng kể (bao gồm các prompt JSON có cấu trúc được dùng trong hướng dẫn này), mô hình lớn hơn và tốn tài nguyên tính toán hơn để nạp và xử lý so với các bộ mã hóa văn bản trước đây.
"Lượng tử hóa 4-bit" có đồng nghĩa giảm chất lượng ảnh không?⌄
Thật bất ngờ, tác động là tối thiểu. Dù lượng tử hóa 4-bit giảm độ chính xác của phép tính nội bộ để tiết kiệm bộ nhớ, các phương pháp hiện đại như NF4 (Normal Float 4) vẫn giữ được phần lớn “kiến thức”. Với đa số người dùng, khác biệt về đầu ra thị giác giữa mô hình FP16 đầy đủ 32GB+ và phiên bản 4-bit là khó nhận thấy, nhưng mức tiết kiệm bộ nhớ lại rất lớn (thường ~50%).
Là một nhà khoa học dữ liệu được chứng nhận, tôi đam mê tận dụng công nghệ tiên tiến để tạo ra các ứng dụng học máy đổi mới. Với nền tảng vững chắc về nhận dạng giọng nói, phân tích và báo cáo dữ liệu, MLOps, AI hội thoại và NLP, tôi đã rèn giũa kỹ năng phát triển các hệ thống thông minh có thể tạo ra tác động thực sự. Bên cạnh chuyên môn kỹ thuật, tôi cũng là một người truyền đạt tốt, có khả năng chắt lọc các khái niệm phức tạp thành ngôn ngữ rõ ràng, súc tích. Nhờ đó, tôi trở thành một blogger được nhiều người quan tâm trong lĩnh vực khoa học dữ liệu, chia sẻ góc nhìn và kinh nghiệm với cộng đồng các chuyên gia dữ liệu ngày càng lớn. Hiện tại, tôi tập trung vào sáng tạo và biên tập nội dung, làm việc với các mô hình ngôn ngữ lớn để phát triển nội dung mạnh mẽ và hấp dẫn, giúp doanh nghiệp và cá nhân tận dụng tối đa dữ liệu của mình.
Trong hướng dẫn này, chúng ta sẽ học cách chạy mô hình tạo ảnh FLUX.2 trên máy cục bộ. Chúng ta sẽ thiết lập môi trường GPU, tải về phiên bản FLUX.2 đã lượng tử hóa, nạp mô hình hiệu quả vào bộ nhớ GPU và RAM, chạy suy luận (inference), rồi thử nghiệm với các tùy chọn cấu hình khác nhau.
Chạy một mô hình có kích thước như vậy trên RTX 3090 có thể là thách thức, và hướng dẫn này tập trung vào cách đơn giản, thực tế nhất để vận hành FLUX.2 cục bộ mà không thêm phức tạp không cần thiết.
Nếu bạn quan tâm đến các kỹ thuật nâng cao về quản lý và tối ưu mô hình, bao gồm cắt tỉa (pruning), lượng tử hóa (quantization) và logging, tôi khuyên bạn nên học khóa Scalable AI Models with PyTorch Lightning.
FLUX.2 là gì?
FLUX.2 là mô hình tạo ảnh được xây dựng cho công việc sáng tạo thực thụ, không chỉ là thử nghiệm. Nó tạo ra hình ảnh chất lượng cao, chân thực, đồng thời giữ được tính nhất quán về nhân vật, phong cách và sản phẩm xuyên suốt nhiều ảnh tham chiếu. Kế thừa từ mô hình FLUX gốc, nó bám sát prompt, render chữ rõ ràng và xử lý tốt ánh sáng, bố cục, cũng như nhận diện thương hiệu.
FLUX.2 cũng hỗ trợ chỉnh sửa ảnh ở độ phân giải cao và có sẵn dưới dạng API dùng ngay cũng như mô hình mở bạn có thể chạy cục bộ, giúp nó trở nên thực dụng, linh hoạt và dễ tích hợp vào quy trình sản xuất thật.
FLUX.2 có bốn biến thể chính:
Mỗi biến thể được thiết kế cho các mức độ kiểm soát, hiệu năng và nhu cầu triển khai khác nhau.
Trong các bảng xếp hạng tổng quát, cả ba biến thể FLUX.2 đều nằm trong top 10 mô hình chỉnh sửa ảnh trên Artificial Analysis, với FLUX.2 [max] và FLUX.2 [pro] vượt trội hơn các mô hình như GPT-5 và các biến thể FLUX.1 Kontext thế hệ trước.
Nguồn: Text to Image Leaderboard | Artificial Analysis
Chạy FLUX.2 cục bộ: Hướng dẫn từng bước
Trong các bước dưới đây, tôi sẽ giải thích mọi thứ bạn cần biết để chạy FLUX.2 cục bộ bằng GPU RTX 3090.
1. Yêu cầu hệ thống và điều kiện tiên quyết
Trước khi chạy FLUX.2 cục bộ, hãy đảm bảo hệ thống của bạn đã được thiết lập đúng cho suy luận trên GPU.
Phần cứng
Trình điều khiển NVIDIA và CUDA Toolkit
Chạy lệnh sau trong terminal để xác minh cài đặt:
Như có thể thấy, chúng ta có GPU RTX 3090 với phiên bản CUDA 13.
Python và Jupyter
Lưu ý: Chúng tôi dùng Jupyter Notebook làm môi trường lập trình, giúp dễ dàng thử nghiệm, chạy suy luận theo từng bước và lặp lại việc tạo/chỉnh sửa ảnh ngay trong notebook.
2. Cài đặt PyTorch với hỗ trợ CUDA
Ở bước này, chúng ta cài PyTorch với hỗ trợ CUDA để suy luận chạy trên GPU thay vì CPU. Lệnh dưới đây cài PyTorch, TorchVision và TorchAudio với các gói nhị phân CUDA dựng sẵn, không cần biên dịch CUDA từ mã nguồn.
Sau khi cài xong, PyTorch sẽ tự động dùng GPU nếu GPU khả dụng và được cấu hình đúng.
3. Cài đặt FLUX.2 và các phụ thuộc cần thiết
Tiếp theo, chúng ta cài các thư viện lõi để chạy FLUX.2 cục bộ. Các gói này xử lý việc nạp mô hình, suy luận, tăng tốc GPU, lượng tử hóa và truyền dữ liệu hiệu quả.
Khi đã cài đặt xong, môi trường của bạn sẵn sàng để nạp FLUX.2 và bắt đầu chạy suy luận tạo/chỉnh sửa ảnh.
4. Xác nhận hỗ trợ GPU và lượng tử hóa
Trước khi nạp FLUX.2, chúng ta xác minh rằng PyTorch nhìn thấy GPU và hỗ trợ lượng tử hóa 4-bit. Bước này quan trọng để đảm bảo mô hình chạy hiệu quả trong giới hạn bộ nhớ của RTX 3090.
Kết quả xác nhận PyTorch được cài đúng với hỗ trợ CUDA, GPU RTX 3090 của bạn được nhận diện, và
bitsandbyteshoạt động tốt với lượng tử hóa 4-bit được bật, nên hệ thống sẵn sàng cho suy luận GPU hiệu quả.5. Nạp FLUX.2 với lượng tử hóa 4-bit
Ở bước này, chúng ta nạp FLUX.2 [dev] bằng checkpoint lượng tử hóa 4-bit để giảm sử dụng bộ nhớ GPU mà vẫn giữ chất lượng ảnh cao. Đây là yếu tố thiết yếu để chạy mô hình lớn như FLUX.2 trên RTX 3090.
Chúng ta bắt đầu bằng cách import các thư viện cần thiết và định nghĩa một vài thiết lập chính.
repo_idtrỏ tới checkpoint FLUX.2 dev 4-bit.devicechọn GPU của bạn (thiết bị CUDA đầu tiên).torch_dtypeđặt độ chính xác tính toán dùng trong suy luận.bfloat16thường được dùng vì giảm bộ nhớ và có thể tăng tốc trong khi vẫn giữ đầu ra ổn định.Tiếp theo, chúng ta nạp backbone transformer ảnh của FLUX.2 (thành phần chính chịu trách nhiệm tạo các latent ảnh) lên CPU trước. Điều này tránh làm đầy VRAM khi khởi tạo và giúp pipeline linh hoạt hơn trong việc chuyển module sang GPU chỉ khi cần.
Sau đó, chúng ta nạp bộ mã hóa văn bản lên CPU. Text encoder chuyển prompt của bạn thành embedding để dẫn dắt quá trình tạo ảnh. Giữ nó trên CPU trong giai đoạn thiết lập giúp dành bộ nhớ GPU cho các phần nặng hơn của quá trình tạo.
Cuối cùng, chúng ta lắp ráp đầy đủ pipeline Diffusers bằng cách truyền transformer và text encoder đã nạp.
Dòng quan trọng là
enable_model_cpu_offload(): nó bật cơ chế offload CPU ↔ GPU tự động, nghĩa là pipeline chỉ chuyển các phần của mô hình lên GPU khi chúng đang được dùng, rồi chuyển lại về CPU sau đó. Đây là một trong những cách dễ nhất để chạy mô hình lớn trên GPU phổ thông mà không phải tự quản lý vị trí thiết bị.6. Chạy lần tạo ảnh đầu tiên từ văn bản
Giờ chúng ta đã sẵn sàng tạo ảnh đầu tiên với FLUX.2. Để đơn giản, bắt đầu với một prompt văn bản mô tả ảnh macro siêu thực của một con bọ rùa.
Tiếp theo, truyền prompt vào pipeline và chạy suy luận.
Để theo dõi lượng bộ nhớ GPU sử dụng trong lúc suy luận, mở terminal và chạy:
Bạn sẽ thấy khoảng gần 21 GB VRAM đang dùng với mức sử dụng GPU cao, cho thấy mô hình đang tận dụng hiệu quả tài nguyên sẵn có và chạy ở hiệu năng tối đa trên RTX 3090.
Khi suy luận hoàn tất, bạn có thể xem ảnh tạo ra trực tiếp trong Jupyter Notebook bằng cách hiển thị đối tượng ảnh:
Kết quả có độ chi tiết và tính chân thực cao. Mô hình bám sát prompt đồng thời bổ sung những chi tiết tinh tế, như ánh sáng và kết cấu, vốn không được nêu rõ.
Cuối cùng, chúng ta lưu ảnh đã tạo về máy:
Kết quả:
7. Prompt nâng cao với JSON có cấu trúc
FLUX.2 hỗ trợ các kỹ thuật prompting nâng cao vượt ra ngoài văn bản thuần, cho phép kiểm soát tinh vi hơn đối với ảnh cuối cùng. Với prompt JSON có cấu trúc, bạn có thể định nghĩa rõ bố cục cảnh, chủ thể, ánh sáng, thiết lập máy ảnh, tâm trạng và thậm chí bảng màu bằng mã hex chính xác.
Trong phần này, chúng ta dùng prompt JSON có cấu trúc để mô tả chi tiết cảnh. Thay vì một câu đơn, chúng ta định nghĩa môi trường, chủ thể, phong cách, màu sắc, ánh sáng, thuộc tính máy ảnh và các ràng buộc phủ định theo dạng rõ ràng, có tổ chức.
Điều này giúp FLUX.2 hiểu tốt hơn các chỉ dẫn phức tạp và cho ra kết quả có chất lượng cao, ổn định và dễ dự đoán hơn.
Sau đó, chúng ta chạy suy luận với số bước nhiều hơn để bắt được nhiều chi tiết, đồng thời giữ guidance scale ở mức vừa phải để có vẻ ngoài tự nhiên.
Để hiển thị ảnh tạo ra trong Jupyter Notebook:
Ảnh thu được bám sát prompt có cấu trúc, nắm bắt chính xác cảnh, tâm trạng, ánh sáng và bố cục như đã chỉ định.
8. Chỉnh sửa ảnh với FLUX.2 (image to image)
FLUX.2 cũng hỗ trợ chỉnh sửa ảnh, trong đó một ảnh tham chiếu được dùng làm nền tảng và mô hình áp dụng các thay đổi dựa trên prompt văn bản. Điều này đặc biệt hữu ích khi bạn muốn giữ nguyên danh tính, đường nét khuôn mặt và tông da, đồng thời thay đổi bối cảnh, tâm trạng hoặc môi trường xung quanh chủ thể.
Trong ví dụ này, chúng ta dùng ảnh một phụ nữ Ấn Độ từ Pexels.com làm ảnh tham chiếu:
Ảnh bởi cottonbro studio: https://www.pexels.com/photo/a-woman-with-a-nose-piercing-9317190/
Chúng ta thiết kế prompt cẩn thận để hướng dẫn mô hình giữ nguyên khuôn mặt và tông da tự nhiên của người phụ nữ, đồng thời thay đổi bối cảnh, ánh sáng và biểu cảm cảm xúc. Mục tiêu là chỉnh sửa ảnh mà không làm thay đổi danh tính của cô ấy.
Tiếp theo, chúng ta nạp ảnh tham chiếu và truyền vào pipeline. FLUX.2 hỗ trợ nhiều ảnh tham chiếu, nhưng ở đây chúng ta dùng một ảnh duy nhất để dẫn dắt chỉnh sửa.
Để xem kết quả chỉnh sửa trong Jupyter Notebook:
Kết quả rất chân thực. Mô hình giữ được cấu trúc khuôn mặt và tông da của người phụ nữ trong khi đặt cô ấy vào một bối cảnh mới với ánh sáng, tâm trạng và nền khác một cách tự nhiên.
Kết quả trông giống một bức ảnh do nhiếp ảnh gia chuyên nghiệp chụp ở thời điểm và địa điểm khác hơn là một bản chỉnh sửa bằng AI.
Mẹo tối ưu bộ nhớ cho FLUX.2
Theo kinh nghiệm của tôi, chạy FLUX.2 cục bộ chỉ trở nên ổn định sau khi chuyển sang mô hình lượng tử hóa 4-bit và dùng thiết lập ưu tiên mã (code-first) với Transformers và Diffusers.
Trước đó, tôi thường gặp lỗi hết bộ nhớ trên RTX 3090 24 GB khi cố nạp quá nhiều trực tiếp lên CUDA.
Các công cụ giao diện như Stable Diffusion WebUI và ComfyUI cũng dễ chạm trần bộ nhớ hơn vì chúng thường giữ thêm bộ đệm trung gian, bản xem trước và trạng thái workflow trong bộ nhớ, trừ khi bạn tinh chỉnh cẩn thận các tùy chọn low-VRAM của chúng.
Mẹo tối ưu VRAM (điều thực sự hữu ích với tôi):
device_map="cpu") và tránh đẩy mọi thứ lên CUDA ngay từ đầu.pipe.enable_model_cpu_offload()) để chỉ phần đang chạy nằm trên GPU.nvidia-smivà đóng các ứng dụng nặng GPU khác.Nếu bạn vẫn gặp lỗi hết bộ nhớ sau khi làm theo các bước này, vui lòng tham khảo notebook DataLab này để biết thêm ví dụ khắc phục sự cố và tối ưu bộ nhớ.
Lời kết
Tôi thực sự ấn tượng với mức tiến bộ của các mô hình tạo ảnh mã nguồn mở.
Các mô hình như FLUX.2 hiện rõ ràng đủ sức cạnh tranh với hệ thống độc quyền, cả về chất lượng hình ảnh và khả năng hiểu prompt. Với thiết lập phù hợp, một chút thử nghiệm và tối ưu bộ nhớ, bạn có thể tạo ảnh chân thực, chất lượng cao cục bộ và miễn phí, ngay cả trên GPU phổ thông.
Điều nổi bật nhất là mức độ kiểm soát. Prompt nâng cao, JSON có cấu trúc, chỉnh sửa đa tham chiếu và quy trình image-to-image giúp bạn dễ dàng đi xa hơn các tác vụ tạo ảnh đơn giản.
Bạn có thể tạo các cảnh điện ảnh, phát triển ảnh phục vụ kể chuyện, thực hiện chỉnh sửa ảnh ở cấp độ chuyên nghiệp và lặp nhanh mà không phụ thuộc vào nền tảng đóng.
Đối với nhà sáng tạo, nhà nghiên cứu và nhà phát triển, điều này mở ra rất nhiều tự do sáng tạo và giúp việc tạo ảnh cao cấp trở nên dễ tiếp cận hơn bao giờ hết.