Vấn đềBạn đã đợi vài phút để quá trình upscale độ phân giải cao hoàn tất. Thanh tiến trình đạt 100%, bạn ghé sát vào để xem kết quả, và đột nhiên terminal bùng nổ với lỗi RuntimeError: shape is invalid for VAE. Lỗi này xuất hiện ngay tại vạch đích. Nó xảy ra khi VAE (Variational Autoencoder) cố gắng giải mã biểu diễn latent thành một hình ảnh có thể xem được nhưng phát hiện thấy sự không khớp trong kích thước dữ liệu.
Về cơ bản, các phép toán không khớp nhau. Nhiễu latent do mô hình tạo ra không vừa với 'chiếc hộp' mà VAE đã chuẩn bị cho nó. Mặc dù lỗi này thường xảy ra trong quá trình upscaling, nó cũng có thể kích hoạt trong quá trình tạo ảnh tiêu chuẩn nếu cài đặt của bạn hơi sai lệch.
Cách gỡ lỗi (Debug) sự cốĐừng hoảng loạn và cài đặt lại toàn bộ môi trường của bạn. Vấn đề này hầu như luôn liên quan đến các cài đặt cụ thể hoặc tệp tin bị hỏng. Khi lỗi xuất hiện, hãy nhìn vào cửa sổ terminal. Bạn có thể sẽ thấy một stack trace trỏ đến modules/sd_vae.py hoặc torch/nn/functional.py. Đây là danh sách kiểm tra của tôi để thu hẹp nguyên nhân:
- Kiểm tra phép toán: Độ phân giải hình ảnh của bạn có phải là bội số của 8 không? Stable Diffusion xử lý hình ảnh theo các khối 8x8. Một con số lẻ ở đây là nguyên nhân phổ biến nhất.- Theo dõi VRAM: Nếu bộ nhớ GPU của bạn đầy 100%, hệ thống có thể làm hỏng các tensor trong quá trình chuyển giao từ sampler sang VAE.- Kiểm tra tệp tin: VAE có được tải xuống chính xác không? Một tệp 335MB bị dừng ở 300MB sẽ luôn gây ra lỗi shape.- Vấn đề về độ chính xác: Bạn đang sử dụng GTX 1660 hay 1650? Những dòng card này thường thất bại khi tính toán VAE ở độ chính xác một nửa (FP16).## Các giải pháp hiệu quả### 1. Tuân thủ lưới 8-PixelStable Diffusion yêu cầu kích thước phải chia hết cho 8 do kiến trúc downsampling của nó. Trong khi WebUI thường tự động khớp với các giá trị này, một số tiện ích mở rộng hoặc ghi đè thủ công có thể bỏ qua quy tắc đó. Nếu bạn cố gắng render ở mức 513x513, VAE sẽ thất bại. Hãy đảm bảo chiều rộng và chiều cao của bạn là bội số của 8, chẳng hạn như 512, 768 hoặc 1024. Nếu bạn đang sử dụng Ultimate SD Upscale, hãy đảm bảo độ phân giải mục tiêu không bị làm tròn thành một con số không tương thích.
2. Xác minh tính toàn vẹn của tệp VAEMột tệp VAE bị hỏng là một thủ phạm ẩn giấu phổ biến. Nếu các tensor bên trong không hoàn chỉnh, chúng sẽ không khớp với các shape mong đợi trong giai đoạn giải mã. Tôi luôn xác minh mã hash SHA-256 của các tệp VAE so với nguồn trên HuggingFace hoặc Civitai.
Tôi sử dụng Hash Generator trên ToolCraft để kiểm tra nhanh tệp cục bộ của mình. Ví dụ, tệp phổ biến vae-ft-mse-840000-ema-pruned.safetensors nên có một mã hash cụ thể. Nếu mã của bạn khác, hãy xóa và tải lại. Việc tải xuống một phần thường đủ để khởi động UI nhưng không đủ để hoàn thành một bức ảnh.
3. Thêm tham số --no-half-vaeNếu bạn sử dụng card đồ họa NVIDIA đời cũ, cụ thể là dòng GTX 16-series, VAE thường tạo ra lỗi 'NaN' (Not a Number) ở chế độ FP16. Điều này dẫn đến lỗi invalid shape. Bạn có thể buộc VAE chạy ở độ chính xác đầy đủ (FP32) trong khi vẫn giữ phần còn lại của quá trình tạo ảnh ở FP16 để tiết kiệm bộ nhớ.
Đối với Automatic1111, hãy chỉnh sửa tệp webui-user.bat và cập nhật dòng COMMANDLINE_ARGS:
set COMMANDLINE_ARGS=--xformers --no-half-vae
Tham số duy nhất này khắc phục khoảng 90% các sự cố liên quan đến VAE trên phần cứng tầm trung.
4. Điều chỉnh cài đặt Tiled VAESử dụng tiện ích mở rộng Tiled VAE (một phần của MultiDiffusion) là giải pháp tuyệt vời để tạo ảnh 4K trên VRAM thấp. Tuy nhiên, nếu 'Tile Size' của bạn quá lớn (ví dụ: 1536 trên card 8GB), VAE có thể thất bại trong việc tái cấu trúc các tile. Hãy thử hạ Encoder Tile Size xuống 512 hoặc 768. Ngoài ra, hãy tắt 'Fast Encoder' nếu bạn liên tục gặp lỗi shape, vì nó kém ổn định hơn với một số checkpoint tùy chỉnh.
5. Đặt lại bộ nhớ đệm VAEĐôi khi UI giữ lại một tensor bị hỏng trong bộ nhớ đệm VRAM. Hãy vào tab Settings, tìm mục VAE và chuyển VAE sang 'None'. Nhấn 'Apply Settings', đợi một lát, sau đó chuyển lại về VAE mong muốn của bạn (như blessed2.vae.pt). Việc này sẽ xóa các bộ đệm tạm thời và buộc tải lại mới hoàn toàn.
Kiểm tra bản sửa lỗiSau khi bạn đã áp dụng giải pháp, hãy làm theo các bước sau để xác minh:
- Khởi động lại: Đóng hoàn toàn terminal và khởi chạy lại WebUI để đảm bảo các tham số mới đã được kích hoạt.- Kiểm tra cơ bản: Tạo một hình ảnh 512x512 đơn giản không dùng upscaling. Nếu bước này hoạt động, tệp VAE của bạn có khả năng vẫn ổn.- Kiểm tra áp lực: Chạy lại đúng quy trình upscale độ phân giải cao đã gây ra lỗi. Nếu nó vượt qua mốc 100% và hiển thị hình ảnh, bạn đã giải quyết xong vấn đề.## Những lưu ý quan trọng- Quy tắc 8-Pixel: Luôn giữ độ phân giải của bạn chia hết cho 8 để các phép toán latent diễn ra suôn sẻ.- Độ chính xác rất quan trọng: Sử dụng
--no-half-vaenếu bạn đang dùng dòng card GTX 16xx hoặc gặp hiện tượng ảnh đen.- Xác minh tải xuống: Các tệp mô hình lớn thường bị lỗi. Luôn kiểm tra mã hash nếu bạn gặp lỗi 'Tensor Mismatch'.

