Hướng dẫn Qwen Image 2512: Xây dựng Poster Studio với Gradio
Tìm hiểu cách xây dựng ứng dụng Gradio Poster Studio với Qwen-Image-2512 để tạo ấn phẩm thương mại điện tử có kiểu chữ mạnh mẽ, bố cục sạch và cảnh sản phẩm chân thực.
Qwen-Image-2512 là một mô hình văn bản-thành-ảnh mã nguồn mở mạnh mẽ đặc biệt giỏi ở các hình ảnh chân thực và bố cục nhiều chữ. Trong hướng dẫn này, chúng ta sẽ dùng nó để xây dựng Poster Studio, một ứng dụng Gradio nơi bạn nhập thông tin sản phẩm như tên, ưu đãi, giá, CTA và lợi ích, chọn tỷ lệ khung hình theo nền tảng, và tạo ảnh quảng bá chỉ với một cú nhấp.
Vì Qwen-Image-2512 là mô hình lớn, chúng ta cũng sẽ tập trung vào khía cạnh thực tiễn để vận hành trơn tru. Bạn sẽ học cách tải nó ổn định trên A100 với cài đặt độ chính xác phù hợp, tránh các lỗi thường gặp, và thích ứng với mọi quy trình bằng cách lặp ở độ phân giải nhỏ hơn, giảm số bước, hoặc dùng mô hình lượng tử hóa cho phần cứng hạn chế hơn.
Qwen-Image-2512 là gì?
Qwen-Image-2512 là bản cập nhật của mô hình nền tảng văn bản-thành-ảnh Qwen, đồng thời có bước nhảy chất lượng so với bản Qwen-Image trước đó. Về mặt kỹ thuật, Qwen-Image là một mô hình khuếch tán MMDiT 20B, được thiết kế để bám sát prompt và dựng văn bản trong ảnh tốt.
Mô hình cũng được hậu thuẫn bởi đánh giá quy mô lớn theo kiểu ưu tiên với hơn 10.000 vòng mù trên AI Arena, nơi nó nổi bật như mô hình mã nguồn mở mạnh nhất đồng thời vẫn cạnh tranh với hệ thống đóng.
Ba nâng cấp thường quan trọng nhất trong quy trình thực tế là:
Chân dung người thật hơn: Khuôn mặt ít “giả AI” hơn, đường nét rõ hơn, chi tiết da tự nhiên hơn và tổng thể là độ chân thực tốt hơn.
Kết cấu tự nhiên phong phú hơn: Các cảnh nhiều kết cấu như phong cảnh, nước, lông, vật liệu hiển thị chi tiết mịn và vi kết cấu thuyết phục hơn.
Kiểu chữ và bố cục mạnh mẽ hơn: Dựng chữ chính xác hơn và bố cục giống trang hơn, đặc biệt hữu ích cho poster, slide, banner và infographic.
Ví dụ dự án Qwen Image 2512: Xây dựng Poster Studio
Trong phần này, chúng ta sẽ xây dựng một ứng dụng Gradio đơn giản:
Thu thập tên sản phẩm, mô tả, ưu đãi, giá, CTA và lợi ích
Cho phép người dùng chọn preset nền tảng như bài đăng/câu chuyện Instagram, banner, poster hoặc slide
Cung cấp bảng điều khiển cho steps, true_cfg_scale, seed và negative prompt tùy chọn.
Cuối cùng, tạo ảnh poster bằng QwenImagePipeline.
Hãy xây dựng từng bước.
Bước 1: Điều kiện tiên quyết
Đầu tiên, cài đặt bản Diffusers mới nhất từ GitHub (thẻ mô hình của Qwen khuyến nghị để hỗ trợ pipeline) cùng các phụ thuộc lõi:
Nếu CUDA available: True và bạn thấy GPU trong nvidia-smi, bạn đã sẵn sàng tải mô hình.
Lưu ý: QwenImagePipeline không phải một khối kiểu UNet duy nhất. Trong Diffusers, đây là một ngăn xếp hoàn chỉnh gồm bộ mã hóa văn bản Qwen2.5-VL-7B-Instruct, bộ biến đổi khuếch tán MMDiT, và Variational Auto-Encoder(VAE) để giải mã. Bộ mã hóa văn bản 7B là lý do lớn khiến RAM/VRAM có thể tăng vọt khi tải mô hình và sinh ảnh, đặc biệt trên GPU nhỏ hơn.
Tôi đã chạy hướng dẫn này trên Google Colab với A100, có thể xử lý độ phân giải ảnh 1328×1328 ở ~50 bước một cách thoải mái. Với GPU loại T4/16GB, bạn thường cần giảm tỷ lệ (xuống khoảng 768×768 và ít bước hơn) hoặc dùng biến thể lượng tử hóa qua runtime thay thế (như GGUF/ComfyUI).
Bước 2: Import và tiện ích cơ bản
Trước khi tải mô hình, đáng để thiết lập một lớp vận hành nhỏ giúp Colab ổn định. Qwen-Image-2512 khá nặng, và tác vụ sinh ảnh có thể âm thầm ngốn cả RAM hệ thống lẫn bộ nhớ GPU.
Sau khi cài đặt phụ thuộc, ta thiết lập import, bộ nhớ đệm, giám sát bộ nhớ và một vài cờ hiệu năng GPU. Mã trên làm những việc sau:
QwenImagePipeline: Lớp pipeline chính chúng ta sẽ dùng để tải và chạy Qwen-Image-2512 cho sinh ảnh.
gradio: Thư viện cung cấp giao diện web đơn giản để tạo poster trong Colab.
HF_HOME=/content/hf: Cố định cache của Hugging Face vào một thư mục đã biết, để tải và lưu trọng số nhất quán qua các lần chạy.
Hàm mem(): Theo dõi RAM hệ thống và VRAM GPU đã cấp phát so với đã dự trữ.
Hàm cleanup(): Tiện ích reset nhỏ để giải phóng tham chiếu Python và bộ nhớ GPU đã cache, hữu ích khi lặp với độ phân giải/số bước.
Kiểm tra GPU: Thoát sớm nếu CUDA không khả dụng, sau đó bật TF32 và đặt độ chính xác matmul thành "high" để tăng tốc nhân ma trận trên GPU Ampere như A100.
Thiết lập này chưa sinh ảnh, nhưng giúp các bước tiếp theo (tải và suy luận) ổn định và dễ gỡ lỗi hơn nhiều.
Bước 3: Tải Qwen-Image-2512
Khi runtime đã sẵn sàng, đến lúc tải mô hình vào pipeline Diffusers. Trên A100, điểm ngọt là chạy hầu hết trọng số ở BF16 để hiệu năng tốt, nhưng giữ giải mã VAE ở FP32 để tránh NaN có thể biến ảnh thành đen hoàn toàn.
Trên GPU Ampere/Hopper (A100/H100), BF16 thường là mặc định tốt nhất vì nhanh và tiết kiệm bộ nhớ hơn FP32, đồng thời ổn định số hơn FP16 với mô hình lớn.
Tiếp theo, tải đầy đủ pipeline Qwen-Image-2512 từ Hugging Face và nối các thành phần mô hình thành một giao diện có thể gọi. Ta dùng vài tham số chính:
torch_dtype=DTYPE: Tải đa số trọng số ở BF16 để giảm VRAM và tăng tốc suy luận.
low_cpu_mem_usage=True: Giảm nhân bản phía CPU khi tải (quan trọng với checkpoint lớn).
use_safetensors=True: Đảm bảo dùng định dạng safetensors an toàn/nhanh hơn khi có.
Cuối cùng, pipe.vae.to(torch.float32) dùng để chuyển đầu ra latent thành pixel. Nếu bước giải mã gặp NaN/Inf ở độ chính xác thấp, ảnh cuối có thể đen toàn bộ. Vì vậy ta buộc VAE dùng FP32 rồi gọi cleanup() để xác nhận mức dùng RAM/VRAM sau khi tải.
Tiếp theo, ta sẽ định nghĩa preset tỷ lệ khung hình theo nền tảng và nối pipeline vào UI Gradio tối giản để sinh poster tương tác.
Bước 4: Preset và hàm sinh ảnh
Giờ chúng ta xây dựng động cơ của bản demo, tức một lớp nhỏ chuyển đầu vào UI thành prompt có cấu trúc tốt, chọn độ phân giải đầu ra dựa trên preset nền tảng, và gọi pipeline Qwen Image để tạo ảnh.
ASPECT_PRESETS ={"Instagram Post (1:1) — 1328×1328":(1328,1328),"Instagram Story (9:16) — 928×1664":(928,1664),"YouTube / Banner (16:9) — 1664×928":(1664,928),"Poster (3:4) — 1104×1472":(1104,1472),"Slides (4:3) — 1472×1104":(1472,1104),"Fast Draft (1:1) — 768×768":(768,768),}
DEFAULT_NEG =" "defbuild_prompt(product_name, product_desc, offer, price, cta, benefits, tone, style_keywords, language):returnf"""
Create a high-converting e-commerce promotional poster in {language}. Clean grid layout, strong hierarchy.
- Product name: "{product_name}"
- Product description: "{product_desc}"
- Offer headline (exact): "{offer}"
- Price (exact): "{price}"
- CTA button text (exact): "{cta}"
- Benefits (use these exact phrases, no typos):
{benefits}
- Tone: {tone}
- Style keywords: {style_keywords}
- Text must be legible and correctly spelled.
- Do not add extra words, fake prices, or random letters.
- Align typography to a neat grid with consistent margins.
""".strip()@torch.inference_mode()defgenerate_image(product_name, product_desc, offer, price, cta, benefits, tone, style_keywords,
language, preset, negative_prompt, steps, true_cfg_scale, seed, show_seed):
w, h = ASPECT_PRESETS[preset]
prompt = build_prompt(product_name, product_desc, offer, price, cta, benefits, tone, style_keywords, language)if seed isNoneorint(seed)<0:
seed = random.randint(0,2**31-1)
seed =int(seed)
gen = torch.Generator(device="cuda").manual_seed(seed)
img = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
width=int(w),
height=int(h),
num_inference_steps=int(steps),
true_cfg_scale=float(true_cfg_scale),
generator=gen,).images[0].convert("RGB")return(seed if show_seed elseNone), imgĐược hỗ trợ bởi
Bảng preset và hai hàm trên tạo thành động cơ cốt lõi của Poster Studio.
Từ điển ASPECT_PRESETS định nghĩa các kích thước canvas theo nền tảng (ví dụ 1:1 cho bài đăng Instagram, 9:16 cho Stories, 16:9 cho banner). Người dùng chỉ cần chọn preset, chúng ta sẽ chuyển thành width × height chính xác để sinh ảnh.
Hàm build_prompt() biến đầu vào sản phẩm thuần như tên, ưu đãi, giá, CTA và lợi ích thành bản mô tả ảnh. Nó xét đến quy tắc bố cục và văn bản, giúp mô hình luôn có ràng buộc nhất quán và không trôi sang nội dung ngẫu nhiên.
Hàm generate_image() là lớp thực thi. Nó đọc preset đã chọn để lấy width/height, và gọi pipeline Qwen-Image với steps, true_cfg_scale và negative_prompt đã chọn. Cuối cùng, trả về poster sinh ra (và tùy chọn là seed). steps điều khiển thời gian khuếch tán chạy (nhiều bước chậm hơn nhưng thường sạch hơn), còn true_cfg_scale điều khiển mức độ mô hình bám prompt (cao hơn bám tốt hơn, nhưng quá cao có thể gây nhiễu ảnh).
Tiếp theo, ta sẽ nhúng hàm generate_image() vào giao diện Gradio để người dùng tạo poster mà không phải bận tâm đến prompt kỹ thuật thô.
Bước 5: Giao diện Gradio
Cuối cùng, chúng ta bọc động cơ tạo poster trong một giao diện Gradio. Ứng dụng cho phép người dùng nhập thông tin sản phẩm, chọn tỷ lệ khung hình nền tảng và nhấn Generate.
Cột bên trái định nghĩa tất cả điều khiển tương tác cho bản thuyết minh poster. Người dùng điền trường sản phẩm, rồi chọn tone, thêm từ khóa phong cách, chọn ngôn ngữ và chọn preset nền tảng. Preset quan trọng vì nó ánh xạ trực tiếp đến width × height cuối cùng thông qua ASPECT_PRESETS.
Các nút “Advanced” gồm tham số chính như steps và true_cfg_scale, lần lượt điều khiển số vòng khử nhiễu mô hình chạy và mức độ mô hình bám prompt. Seed điều khiển khả năng tái lập, còn show_seed tùy chọn hiển thị seed cuối.
Cột bên phải chứa ảnh poster sinh ra, và tùy chọn là seed đã dùng cho lần sinh đó.
Cuối cùng, lệnh btn.click() kết nối tất cả. Gradio lấy mọi widget đầu vào theo thứ tự, truyền cho generate_image(), và định tuyến giá trị trả về tới widget đầu ra. Cuối cùng, demo.launch(share=True, debug=True) khởi chạy máy chủ Gradio, cung cấp liên kết công khai để demo, và in log gỡ lỗi trong notebook để hỗ trợ chẩn đoán sự cố.
Đây là video cho thấy ứng dụng Qwen Image 2512 cuối cùng của chúng ta hoạt động ra sao:
Kết luận
Qwen-Image-2512 phù hợp cả cho việc tạo hình ảnh chân thực lẫn bố cục nhiều chữ đáng tin cậy. Trong hướng dẫn này, chúng ta đã xây dựng Poster Studio đầu-cuối trên nền Diffusers. Chúng ta tải mô hình trên A100, thêm preset tỷ lệ khung hình theo nền tảng, và bọc tất cả trong UI Gradio để biến đầu vào sản phẩm đơn giản thành ấn phẩm thương mại điện tử chỉn chu.
Nếu bạn chạy trên GPU nhỏ hơn, quy trình tương tự vẫn áp dụng: hãy lặp ở độ phân giải 768×768, giảm số bước và cân nhắc runtime lượng tử hóa khi cần mở rộng.
Câu hỏi thường gặp về Qwen-Image-2512
Tôi có thể chạy Qwen-Image-2512 trên GPU phổ thông (như RTX 4090) không?⌄
Có thể, nhưng bạn khó có thể chạy đầy đủ mô hình ở độ chính xác gốc. Bản BF16 đầy đủ cần khoảng 48GB+ VRAM, vượt ngoài tầm của card người dùng phổ thông (ngay cả RTX 4090 24GB). Tuy nhiên, bạn có thể chạy trên card 24GB bằng cách dùng lượng tử hóa FP8 hoặc định dạng GGUF (tương tự cách mọi người chạy Llama 3 cục bộ). Với card 16GB, gần như chắc chắn bạn sẽ cần dùng biến thể GGUF 4-bit (Q4_K_M) để mô hình vừa bộ nhớ mà không bị sập.
Qwen-Image-2512 có miễn phí cho mục đích thương mại không?⌄
Có. Không giống một số đối thủ dùng giấy phép cộng đồng hạn chế "chỉ nghiên cứu" hoặc "phi thương mại", Qwen-Image-2512 phát hành theo giấy phép Apache 2.0. Nhìn chung, điều này cho phép bạn dùng mô hình cho ứng dụng thương mại, tích hợp vào sản phẩm và xây dựng dịch vụ (như Poster Studio này) mà không phải trả phí bản quyền, miễn là tuân thủ điều khoản giấy phép.
So với FLUX.2 thì thế nào?⌄
Chúng là đối thủ với thế mạnh khác nhau.
FLUX.2 (và FLUX.1 Pro) thường được coi là vua về tính chân thực và thẩm mỹ. Nếu bạn cần “vibe”, phong cách nghệ thuật, hoặc độ phân giải 4MP gốc cho nhiếp ảnh, FLUX.2 thường vượt trội.
Qwen-Image-2512 vượt trội về dựng văn bản và tuân theo hướng dẫn. Vì dùng bộ mã hóa văn bản khổng lồ 7B tham số, nó bám theo bố cục prompt phức tạp ("đặt chữ X ở đây, làm nút Y ở kia") chính xác hơn FLUX. Nó cũng tốt hơn ở văn bản song ngữ (Trung/Anh) và tạo ảnh dạng tài liệu (poster, biểu đồ, hóa đơn).
Tôi có cần cài Diffusers từ mã nguồn không?⌄
Có, với Qwen-Image-2512, chính thẻ mô hình khuyến nghị bạn cài Diffusers từ GitHub để có hỗ trợ pipeline mới nhất.
`guidance_scale` có phải là nút điều chỉnh đúng không?⌄
Không với Qwen-Image hiện tại. Trong tích hợp Diffusers hiện nay, guidance_scale về cơ bản chỉ là chỗ giữ, nên sẽ không cho ta classifier-free guidance. Vì vậy, chúng tôi dùng true_cfg_scale cùng negative_prompt (dù chỉ là một khoảng trắng “ ”) để điều khiển guidance. true_cfg_scale cao hơn tăng độ bám prompt, nhưng đẩy quá cao có thể gây nhiễu ảnh.
Kích thước mô hình Qwen-Image-2512 là bao nhiêu?⌄
Theo kho HF, kích thước Qwen-Image-2512 vào khoảng ~57,7 GB, khá lớn cho suy luận cục bộ.
Vì sao mức dùng bộ nhớ lại cao?⌄
Mức dùng bộ nhớ cao vì pipeline bao gồm bộ mã hóa văn bản lớn (Qwen2.5-VL-7B Instruct) cùng bộ biến đổi khuếch tán và Variational Auto-Encoder(VAE).
Tôi là Chuyên gia Google Developers trong lĩnh vực ML (Gen AI), Chuyên gia Kaggle 3x và Đại sứ Women Techmakers với hơn 3 năm kinh nghiệm trong ngành công nghệ. Tôi đồng sáng lập một startup công nghệ y tế vào năm 2020 và hiện đang theo học thạc sĩ khoa học máy tính tại Georgia Tech, chuyên sâu về học máy.
Qwen-Image-2512 là một mô hình văn bản-thành-ảnh mã nguồn mở mạnh mẽ đặc biệt giỏi ở các hình ảnh chân thực và bố cục nhiều chữ. Trong hướng dẫn này, chúng ta sẽ dùng nó để xây dựng Poster Studio, một ứng dụng Gradio nơi bạn nhập thông tin sản phẩm như tên, ưu đãi, giá, CTA và lợi ích, chọn tỷ lệ khung hình theo nền tảng, và tạo ảnh quảng bá chỉ với một cú nhấp.
Vì Qwen-Image-2512 là mô hình lớn, chúng ta cũng sẽ tập trung vào khía cạnh thực tiễn để vận hành trơn tru. Bạn sẽ học cách tải nó ổn định trên A100 với cài đặt độ chính xác phù hợp, tránh các lỗi thường gặp, và thích ứng với mọi quy trình bằng cách lặp ở độ phân giải nhỏ hơn, giảm số bước, hoặc dùng mô hình lượng tử hóa cho phần cứng hạn chế hơn.
Qwen-Image-2512 là gì?
Qwen-Image-2512 là bản cập nhật của mô hình nền tảng văn bản-thành-ảnh Qwen, đồng thời có bước nhảy chất lượng so với bản Qwen-Image trước đó. Về mặt kỹ thuật, Qwen-Image là một mô hình khuếch tán MMDiT 20B, được thiết kế để bám sát prompt và dựng văn bản trong ảnh tốt.
Mô hình cũng được hậu thuẫn bởi đánh giá quy mô lớn theo kiểu ưu tiên với hơn 10.000 vòng mù trên AI Arena, nơi nó nổi bật như mô hình mã nguồn mở mạnh nhất đồng thời vẫn cạnh tranh với hệ thống đóng.
Ba nâng cấp thường quan trọng nhất trong quy trình thực tế là:
Ví dụ dự án Qwen Image 2512: Xây dựng Poster Studio
Trong phần này, chúng ta sẽ xây dựng một ứng dụng Gradio đơn giản:
steps,true_cfg_scale,seedvànegative prompttùy chọn.QwenImagePipeline.Hãy xây dựng từng bước.
Bước 1: Điều kiện tiên quyết
Đầu tiên, cài đặt bản Diffusers mới nhất từ GitHub (thẻ mô hình của Qwen khuyến nghị để hỗ trợ pipeline) cùng các phụ thuộc lõi:
Tiếp theo, kiểm tra nhanh để xác nhận CUDA khả dụng và nhận diện GPU:
Nếu
CUDA available: Truevà bạn thấy GPU trongnvidia-smi, bạn đã sẵn sàng tải mô hình.Lưu ý:
QwenImagePipelinekhông phải một khối kiểu UNet duy nhất. Trong Diffusers, đây là một ngăn xếp hoàn chỉnh gồm bộ mã hóa văn bản Qwen2.5-VL-7B-Instruct, bộ biến đổi khuếch tán MMDiT, và Variational Auto-Encoder(VAE) để giải mã. Bộ mã hóa văn bản 7B là lý do lớn khiến RAM/VRAM có thể tăng vọt khi tải mô hình và sinh ảnh, đặc biệt trên GPU nhỏ hơn.Tôi đã chạy hướng dẫn này trên Google Colab với A100, có thể xử lý độ phân giải ảnh 1328×1328 ở ~50 bước một cách thoải mái. Với GPU loại T4/16GB, bạn thường cần giảm tỷ lệ (xuống khoảng 768×768 và ít bước hơn) hoặc dùng biến thể lượng tử hóa qua runtime thay thế (như GGUF/ComfyUI).
Bước 2: Import và tiện ích cơ bản
Trước khi tải mô hình, đáng để thiết lập một lớp vận hành nhỏ giúp Colab ổn định. Qwen-Image-2512 khá nặng, và tác vụ sinh ảnh có thể âm thầm ngốn cả RAM hệ thống lẫn bộ nhớ GPU.
Sau khi cài đặt phụ thuộc, ta thiết lập import, bộ nhớ đệm, giám sát bộ nhớ và một vài cờ hiệu năng GPU. Mã trên làm những việc sau:
QwenImagePipeline: Lớp pipeline chính chúng ta sẽ dùng để tải và chạy Qwen-Image-2512 cho sinh ảnh.gradio: Thư viện cung cấp giao diện web đơn giản để tạo poster trong Colab.HF_HOME=/content/hf: Cố định cache của Hugging Face vào một thư mục đã biết, để tải và lưu trọng số nhất quán qua các lần chạy.mem(): Theo dõi RAM hệ thống và VRAM GPU đã cấp phát so với đã dự trữ.cleanup(): Tiện ích reset nhỏ để giải phóng tham chiếu Python và bộ nhớ GPU đã cache, hữu ích khi lặp với độ phân giải/số bước.Thiết lập này chưa sinh ảnh, nhưng giúp các bước tiếp theo (tải và suy luận) ổn định và dễ gỡ lỗi hơn nhiều.
Bước 3: Tải Qwen-Image-2512
Khi runtime đã sẵn sàng, đến lúc tải mô hình vào pipeline Diffusers. Trên A100, điểm ngọt là chạy hầu hết trọng số ở BF16 để hiệu năng tốt, nhưng giữ giải mã VAE ở FP32 để tránh NaN có thể biến ảnh thành đen hoàn toàn.
Mục tiêu của đoạn mã trên là:
torch_dtype=DTYPE: Tải đa số trọng số ở BF16 để giảm VRAM và tăng tốc suy luận.low_cpu_mem_usage=True: Giảm nhân bản phía CPU khi tải (quan trọng với checkpoint lớn).use_safetensors=True: Đảm bảo dùng định dạng safetensors an toàn/nhanh hơn khi có.pipe.vae.to(torch.float32)dùng để chuyển đầu ra latent thành pixel. Nếu bước giải mã gặp NaN/Inf ở độ chính xác thấp, ảnh cuối có thể đen toàn bộ. Vì vậy ta buộc VAE dùng FP32 rồi gọicleanup()để xác nhận mức dùng RAM/VRAM sau khi tải.Tiếp theo, ta sẽ định nghĩa preset tỷ lệ khung hình theo nền tảng và nối pipeline vào UI Gradio tối giản để sinh poster tương tác.
Bước 4: Preset và hàm sinh ảnh
Giờ chúng ta xây dựng động cơ của bản demo, tức một lớp nhỏ chuyển đầu vào UI thành prompt có cấu trúc tốt, chọn độ phân giải đầu ra dựa trên preset nền tảng, và gọi pipeline Qwen Image để tạo ảnh.
Bảng preset và hai hàm trên tạo thành động cơ cốt lõi của Poster Studio.
ASPECT_PRESETSđịnh nghĩa các kích thước canvas theo nền tảng (ví dụ 1:1 cho bài đăng Instagram, 9:16 cho Stories, 16:9 cho banner). Người dùng chỉ cần chọn preset, chúng ta sẽ chuyển thànhwidth × heightchính xác để sinh ảnh.build_prompt()biến đầu vào sản phẩm thuần như tên, ưu đãi, giá, CTA và lợi ích thành bản mô tả ảnh. Nó xét đến quy tắc bố cục và văn bản, giúp mô hình luôn có ràng buộc nhất quán và không trôi sang nội dung ngẫu nhiên.generate_image()là lớp thực thi. Nó đọc preset đã chọn để lấywidth/height, và gọi pipeline Qwen-Image vớisteps,true_cfg_scalevànegative_promptđã chọn. Cuối cùng, trả về poster sinh ra (và tùy chọn là seed).stepsđiều khiển thời gian khuếch tán chạy (nhiều bước chậm hơn nhưng thường sạch hơn), còntrue_cfg_scaleđiều khiển mức độ mô hình bám prompt (cao hơn bám tốt hơn, nhưng quá cao có thể gây nhiễu ảnh).Tiếp theo, ta sẽ nhúng hàm
generate_image()vào giao diện Gradio để người dùng tạo poster mà không phải bận tâm đến prompt kỹ thuật thô.Bước 5: Giao diện Gradio
Cuối cùng, chúng ta bọc động cơ tạo poster trong một giao diện Gradio. Ứng dụng cho phép người dùng nhập thông tin sản phẩm, chọn tỷ lệ khung hình nền tảng và nhấn Generate.
Cách chúng ta xây dựng ứng dụng Gradio như sau:
width × heightcuối cùng thông quaASPECT_PRESETS.stepsvàtrue_cfg_scale, lần lượt điều khiển số vòng khử nhiễu mô hình chạy và mức độ mô hình bám prompt. Seed điều khiển khả năng tái lập, cònshow_seedtùy chọn hiển thị seed cuối.btn.click()kết nối tất cả. Gradio lấy mọi widget đầu vào theo thứ tự, truyền chogenerate_image(), và định tuyến giá trị trả về tới widget đầu ra. Cuối cùng,demo.launch(share=True, debug=True)khởi chạy máy chủ Gradio, cung cấp liên kết công khai để demo, và in log gỡ lỗi trong notebook để hỗ trợ chẩn đoán sự cố.Đây là video cho thấy ứng dụng Qwen Image 2512 cuối cùng của chúng ta hoạt động ra sao: