Tất tần tật về ComfyUI cho STABLE DIFFUSION
Ngành trí tuệ nhân tạo (AI) đã trở thành không gian vô tận với tốc độ phát triển chóng mặt. Để không hụt hơi và bị bỏ lại phía sau, không nên quá lệ thuộc vào một công cụ cố định nào. Thay vào đó, ta nên học cách tiếp cận và tận dụng ngay công cụ mới khi cần thiết.
Dù bạn đã là chuyên gia với nhiều kinh nghiệm trong việc tạo ảnh AI với AUTOMATIC1111 WebUI hay là người mới bắt đầu với lĩnh vực này - ComfyUI vẫn sẽ là lựa chọn thông minh, là một bổ sung hoàn hảo cho bộ công cụ AI của bạn.
Trong khuôn khổ bài viết này, chúng ta sẽ đi từ khám phá ComfyUI, cách cài đặt công cụ này, đến cách sử dụng nó để tạo ảnh một cách nhanh chóng và tiện lợi nhất.
ComfyUI là gì, nó hoạt động như thế nào?
ComfyUI là giao diện người dùng dạng Nút (node) cho Stable Diffusion. Được phát triển bởi Comfyanonymous từ tháng 1/2023 để học cách hoạt động của Stable Diffusion, nó cho phép bạn sử dụng các luồng làm việc Stable Diffusion thông qua giao diện dựa trên nút. Nó giống như một biểu đồ luồng công việc, nơi bạn có thể di chuyển mọi nút và kết nối chúng theo các cách khác nhau.
Bạn có thể tưởng tượng công cụ này lợi hại như thế nào khi chính StabilityAI (công ty tạo ra Stable Diffusion) đang sử dụng ComfyUI để test nội bộ các tính năng của Stable Diffusion. Không chỉ dừng lại ở đó, công ty này đã chiêu mộ Comfyanonymous về đầu quân vào đội ngũ của họ với nhiệm vụ là viết các công cụ để sử dụng nội bộ.
Giao diện chính của ComfyUI
Giao diện dạng Nút (node) thường được thấy ở các công cụ chuyên về thiết kế 3D & hiệu ứng như Maya và Blender.
Trong kiểu giao diện này, mỗi Nút đều sẽ chạy một số dòng code nào đó. Các node có giá trị được truyền từ đầu vào (input), và trả về giá trị đã xử lý đến đầu ra (output)
Chỉ với các thao tác đơn giản bằng cách sử dụng chuột, người dùng có thể:
- Tạo node mới
- Chỉnh sửa tham số (biến) trên các node
- Kết nối các node với nhau thông qua đầu vào và đầu ra của chúng
- Trong ComfyUI, mỗi node đại diện cho một phần khác nhau của quá trình Stable Diffusion. Bằng cách tạo và kết nối các node này, bạn đã có thể sử dụng Stable Diffusion.
So sánh ComfyUI với AUTOMATIC1111 WebUI
Rất nhiều người mới làm quen với ComfyUI từ các giao diện đơn giản hơn như AUTOMATIC1111, InvokeAI hoặc SD.Next đều đặt ra cùng một câu hỏi: Tại sao bạn lại sử dụng một công cụ phức tạp như vậy để làm cùng một việc?
Nhưng thực tế bạn có thể làm được nhiều hơn thế với ComfyUI
Khả năng tùy biến rất phong phú
- Bạn muốn xem trước ảnh ở bất kỳ giai đoạn nào trong quá trình?
- Bạn muốn chạy song song tạo 2 ảnh cùng một lúc để tiện so sánh?
Đó chỉ là một số ví dụ cơ bản. Khi bạn trở nên quen thuộc hơn với ComfyUI, bạn sẽ dần khám phá thêm tiềm năng tùy biến rất bá đạo của công cụ này.
Với ComfyUI, bạn có thể thực hiện nhiều tác vụ cùng một lúc
Khi sử dụng AUTOMATIC1111 và bạn muốn tăng độ phân giải của một tấm ảnh lên, bạn sẽ cần thực hiện nhiều bước: từ tạo ảnh txt2img, gửi ảnh đến img2img để upscale đến độ độ phân giải mong muốn. Với AUTOMATIC111, các bước này đều là thủ công.
Ngược lại, với ComfyUI, bạn có thể thực hiện tất cả các bước này chỉ bằng một cú nhấp chuột.
Cấu trúc hoạt động này rất phù hợp với SDXL v1.0: mô hình mới của Stable Diffusion khi có tận 2 model chính đó là Cơ bản Base (được sử dụng để tạo ra các latents nhiễu), và Tinh chỉnh Refiner (mô hình tinh chỉnh chuyên biệt cho việc loại bỏ nhiễu, thực tế làm cho hình ảnh sắc nét và chi tiết hơn).
Sơ đồ quá trình 2 bước cơ bản và tinh chỉnh của SDXL.
Cấu trúc hoạt động này rất phù hợp với SDXL v1.0: mô hình mới của Stable Diffusion khi có tận 2 model chính đó là Cơ bản Base (được sử dụng để tạo ra các latents nhiễu), và Tinh chỉnh Refiner (mô hình tinh chỉnh chuyên biệt cho việc loại bỏ nhiễu, thực tế làm cho hình ảnh sắc nét và chi tiết hơn).
Sơ đồ quá trình 2 bước cơ bản và tinh chỉnh của SDXL.
Hiệu suất và tốc độ
Vì ta có thể cấu hình ComfyUI với độ tùy biến cao, quá trình tạo ảnh từ ComfyUI có thể được tối ưu hóa theo nhiều hướng mà hiện AUTOMATIC1111 không thể cấu hình theo vậy được.
Điều này giúp cải thiện tốc độ rất nhiều với người dùng báo cáo quá trình tạo ảnh nhanh hơn 3-5 lần khi sử dụng ComfyUI so với AUTOMATIC1111.
Cách cài đặt ComfyUI
Cài Đặt Nhanh (Windows, NVIDIA)
Để cài đặt ComfyUI ta sẽ sử dụng bản ComfyUI Portable NVIDIA. Tuy bản này có hỗ trợ CPU nhưng tạo ảnh sẽ rất chậm nên bạn nên có card NVIDIA để quá trình được nhanh nhất.
-
Click vào liên kết để download:
Github
Giải nén file .zip với 7-Zip. -
Giải nén ra một thư mục mang tên ‘ComfyUI_windows_portable’ có chứa thư mục ComfyUI.
-
Chạy tệp run_nvidia_gpu.bat để chạy với GPU NVIDIA, hoặc run_cpu.bat để chạy với CPU.
Cách cập nhật ComfyUI
Trong thư mực “ComfyUI_windows_portable\update”, để cập nhật ComfyUI, Double click vào tệp “update_comfyui.bat” hoặc “update_comfyui_and_python_dependencies.bat” nếu bạn muốn update cả những mục phụ trợ Python đi kèm.
Làm quen với giao diện của ComfyUI
Các Nút (node)
Bạn có thể thêm một nút bằng cách nhấp chuột phải vào không gian trống bất kỳ -> Add Node. (Thêm Nút)
Bạn có thể double click chuột vào không gian trống để hiển thị danh sách tất cả các nút và thanh tìm kiếm:
CTRL + kéo thả cho phép bạn chọn nhiều nút cùng một lúc. Bạn có thể di chuyển chúng cùng nhau bằng cách kéo thả với SHIFT.
Bạn có thể thay đổi màu của các nút để giúp bạn sắp xếp nút gọn gàn hơ bằng cách. Chuột phải -> Colors (Màu sắc) -> chọn màu:
Kết Nối Các Nút
Nếu bạn kéo và thả một đầu vào (input) vào không gian trống sẽ hiện ra danh sách các nút tương thích:
Các đầu vào và đầu ra chỉ tương thích nếu chúng có cùng màu. Bạn hay để ý là ta có thể kết nối đầu vào màu tím với đầu ra màu tím, nhưng không thể kết nối với các đầu ra màu khác.
Tạo ảnh
Khi bạn nhấp vào "Queue Prompt", quy trình sẽ đi qua các nút theo thứ tự chúng được kết nối, bắt đầu từ các Loader (bộ nạp) mà chỉ có đầu ra mà không có đầu vào.
Nếu bất kỳ nút nào thiếu đầu vào, bạn sẽ không thể thực hiện lệnh tạo ảnh.
Giải Thích Về Các Nút Trong ComfyUI
Làm thế nào chúng ta hiểu được các bước đang diễn ra để chúng ta có thể tạo và sửa đổi quy trình làm việc?
Để hiểu về các nút, chúng ta phải hiểu một chút về cách Stable Diffusion hoạt động.
Hãy xem xét workflow mặc định.
Nếu bạn đang không có sẵn workflow mặc định, hãy nhấp vào "Load Default" (Tải mặc định) trên thanh bên phải.
Nút Load Checkpoint Các mô hình đánh dấu .safetensors hoặc .ckpt mà bạn sử dụng để tạo ra hình ảnh có 3 thành phần chính:
Mô hình CLIP: để chuyển đổi văn bản thành một định dạng mà Unet có thể hiểu Unet: để thực hiện quá trình "diffusion", xử lý từng bước của hình ảnh VAE: để giải mã hình ảnh từ không gian tiềm tàng thành pixel (cũng được sử dụng để mã hóa hình ảnh thông thường từ pixel thành không gian tiềm tàng khi chúng ta thực hiện img2img) Trong quy trình ComfyUI, điều này được biểu thị bằng nút Load Checkpoint và 3 đầu ra của nó (MODEL đề cập đến Unet).
Những đầu ra này được kết nối với những gì?
Nút CLIP Text Encode Đầu ra CLIP của nút Load Checkpoint được kết nối với các nút CLIP Text Encode.
Mô hình CLIP được sử dụng để chuyển đổi văn bản thành một định dạng mà Unet có thể hiểu (một biểu diễn số của văn bản). Chúng ta gọi chúng là nhúng.
Các nút CLIP Text Encode lấy mô hình CLIP từ mô hình kiểm tra của bạn làm đầu vào, lấy các gợi ý của bạn (tích cực và tiêu cực) làm biến số, thực hiện quá trình mã hóa và đưa ra những nhúng này đến nút tiếp theo, KSampler.
KSampler Trong Stable Diffusion, hình ảnh được tạo ra bằng quá trình gọi là sampling.
Trong ComfyUI, quá trình này diễn ra trong nút KSampler. Đây chính là phần "tạo ảnh" chính, vì vậy bạn sẽ nhận thấy rằng KSampler mất nhiều thời gian nhất khi tạo ảnh.
KSampler lấy các đầu vào sau đây:
- model: Đầu ra MODEL (Unet) từ nút Load Checkpoint
-
positive: gợi ý tích cực được mã hóa bởi mô hình CLIP (nút CLIP Text Encode)
-
negative: gợi ý tiêu cực được mã hóa bởi mô hình CLIP (nút CLIP Text Encode khác)
- latent_image: một hình ảnh trong không gian tiềm tàng (nút Empty Latent Image) Vì ta đang chỉ tạo ảnh từ một prompt (txt2img), ta sẽ truyền hình ảnh tiềm tàng bằng cách sử dụng nút Empty Latent Image.
(Bạn cũng có thể truyền một hình ảnh thường vào KSampler để thực hiện img2img)
VAE:
Nút VAEDecode có 2 đầu vào:
VAE đi kèm với checkpoint model của bạn (bạn cũng có thể thêm VAE khác riêng biệt)
Hình ảnh không gian tiềm tàng mà KSampler của chúng ta đã hoàn thành quá trình làm sạch tạp âm (denoising).
VAE được sử dụng để dịch một hình ảnh từ không gian tiềm tàng thành không gian pixel.
Nó chuyển hình ảnh pixel cuối cùng này đến nút Save Image, được sử dụng để hiển thị hình ảnh và lưu ảnh về máy.
Workflow mặc định là Workflow đơn giản nhất bạn có thể tìm thấy trong ComfyUI.
Tải Mô hình (model)
Bạn có thể bắt đầu bằng cách tải xuống 2 mô hình SDXL v1.0 là Base và Refiner và tải thêm các model khác khi cần
Checkpoint
Đặt các checkpoint trong thư mục ComfyUI/models/checkpoints:
VAE
Đặt các VAE trong thư mục ComfyUI/models/vae
LoRA Đặt các LoRA trong thư mục ComfyUI/models/loras
Upscaler
Để tăng độ phân giải ảnh thì tùy thuộc vào workflow của bạn có bước này hay không
Đặt các bộ gia tăng trong thư mục ComfyUI/models/upscaler
Chia sẻ mô hình (model) giữa một giao diện người dùng UI khác và ComfyUI
Nếu bạn đã có sẵn mô hình trong giao diện UI khác như AUTOMATIC1111, bạn cũng có thể tái sử dụng chúng bằng cách sửa file cài đặt Config tới đường dẫn thư mục chưa mô hình.
Sau khi sửa, ta sẽ đổi tên file này tại: ComfyUI_windows_portable\ComfyUI\extra_model_paths.yaml.example thành extra_model_paths.yaml
Một số workflow tối ưu bạn có thể áp dụng ngay
Một trong những phần tốt nhất của ComfyUI là sự dễ dàng trong việc tải xuống và chuyển đổi giữa các workflow.
Dưới đây là danh sách các workflow mẫu trong kho lưu trữ chính thức của ComfyUI.
Để tải một workflow, đơn giản nhấp vào nút Load (Nạp) trong thanh bên phải, sau đó chọn tệp .json của workflow.
Một số workflow có thể yêu cầu bạn git clone custom node (nút tùy biến) vào thư mục ComfyUI/custom_nodes của bạn và khởi động lại ComfyUI.
Dưới đây là một số luồng làm việc phổ biến trong cộng đồng Stable Diffusion:
Workflow SDXL của Sytan
Một trong những luồng làm việc phổ biến nhất cho SDXL. Có bước tăng độ phân giải ảnh (upscaling).
Workflow SDXL của Searge
Có 3 chế độ hoạt động (txt2img, img2img, và inpainting ) đều có sẵn trong cùng Workflow và có thể chuyển đổi bằng một tùy chọn.
Cài Đặt Được Đề Xuất:
-
Mở thư mục ComfyUI/custom_nodes/ của bạn
-
Mở command line trong thư mục custom_nodes
-
Chạy lệnh git clone https://github.com/SeargeDP/SeargeSDXL.git
-
Khởi động lại ComfyUI
Chúc mọi người thực hiện thành công và hiệu quả. Nếu còn vướng mắc gì thì có thể xem toàn bộ hướng dẫn từ A-Z TẠI ĐÂY
Nguồn chính: https://aituts.com/comfyui/ - ComfyUI for Stable Diffusion: A Beginner's Guide