Tăng tốc Stable Diffusion cho quá trình tạo hình ảnh mượt mà

Bạn có thấy Stable Diffusion của mình quá chậm? Hiện nay có nhiều tùy chọn để tăng tốc Stable Diffusion. Trong bài viết này, bạn sẽ tìm hiểu về các cách sau để tăng tốc Stable Diffusion:

  • cross-attention optimization (tối ưu hóa cross-attention)
  • Token merging (gộp các token)
  • Negative guidance minimum sigma (giảm sigma tối thiểu cho hướng dẫn tiêu cực)

Phần mềm

Chúng tôi sẽ sử dụng giao diện đồ họa AUTOMATIC1111 Stable Diffusion để tạo hình ảnh. Bạn có thể sử dụng giao diện này trên Google Colab, Windows hoặc Mac.

Các tùy chọn tối ưu cross-attention

Tất cả các tùy chọn tối ưu hóa đều tập trung vào việc làm cho tính toán cross-attention nhanh hơn và sử dụng ít bộ nhớ hơn. Dưới đây là tất cả các tùy chọn có sẵn trong AUTOMATIC1111.

Cách thiết lập tối ưu cross-attention

Trên giao diện Web-UI của AUTOMATIC1111, điều hướng đến trang Settings. Chọn Optimization trong bảng điều khiển bên trái. Trong menu thả xuống Cross attention optimization, chọn một tùy chọn tối ưu hóa. Lựa chọn ban đầu là Automatic. Nhấp vào Apply Settings.

Tăng tốc Stable Diffusion

Bạn nên chọn tùy chọn nào? Xem giải thích bên dưới.

Doggettx

Vào những ngày đầu của Stable Diffusion (cảm giác như đã rất lâu), người dùng GitHub có tên Doggettx đã đưa ra một số cải tiến về hiệu suất cho các hoạt động cross-attention so với phiên bản gốc.

Điều đó làm tăng tốc độ Stable Diffusion tốt nhất, nhưng hầu hết mọi người đã chuyển sang các tùy chọn tăng tốc khác được liệt kê dưới đây.

xFormers

Hoạt động attention là trái tim của thuật toán Stable Diffusion nhưng lại rất chậm.

xFormers là một thư viện transformer được phát triển bởi nhóm Meta AI. Nó tăng tốc và giảm việc sử dụng bộ nhớ của hoạt động attention bằng cách thực hiện attention hiệu quả về bộ nhớ và Flash Attention.

Memory-efficient attention tính toán hoạt động attention bằng cách sắp xếp lại các bước tính toán một cách thông minh để sử dụng ít bộ nhớ hơn. Flash Attention tính toán hoạt động attention một mảnh nhỏ mỗi lần. Kết quả cuối cùng là việc sử dụng ít bộ nhớ hơn và tốc độ hoạt động nhanh hơn.

xFormer được coi là công nghệ tiên tiến.

Scaled-Dot-Product (sdp) attention

Scaled-Dot-Product (sdp) attention là phiên bản cài đặt mặc định của Pytorch cho attention hiệu quả về bộ nhớ và Flash Attention. Nói cách khác, đó là một cài đặt thay thế cho tùy chọn xFormers.

Một nhược điểm của tối ưu này là hình ảnh kết quả có thể không xác định được (vấn đề trong các phiên bản xFormers cũ hơn). Bạn có thể không thể tái tạo cùng một hình ảnh bằng cùng các thông số tạo hình.

Đây là một chức năng mới yêu cầu Pytorch phiên bản 2 trở lên.

sdp-no-mem

sdp-no-memscaled-dot-product attention mà không sử dụng memory-efficient attention.

Khác với attention SDP, hình ảnh kết quả là xác định. Cùng các thông số tạo hình, sẽ tạo ra chính xác cùng một hình ảnh.

Đây là một chức năng mới yêu cầu Pytorch phiên bản 2 trở lên.

sub-quadratic attention

sub-quadratic attention (sub-quad) là một cài đặt khác của attention hiệu quả về bộ nhớ, là một phần của xFormerSDP. Bạn có thể thử tùy chọn này nếu bạn không thể sử dụng xFormers hoặc SDP.

Split-attention v1

Split-attention v1 là một cài đặt trước đây của attention hiệu quả về bộ nhớ.

Trước khi sử dụng tùy chọn này, bạn nên sử dụng xFormers hoặc SDP.

Invoke AI

Tối ưu cross-attention được sử dụng trong mã nguồn của Invoke AI. Tùy chọn này hữu ích đối với người dùng MacOS khi không có GPU Nvidia.

Xem thêm: Khóa học thiết kế đồ họa tại Arcline Academy

Token merging

Token merging (ToMe) là một kỹ thuật mới để tăng tốc Stable Diffusion bằng cách giảm số lượng token (trong câu gợi ý và câu gợi ý tiêu cực) cần được xử lý. Nó nhận ra rằng nhiều token là dư thừa và có thể được kết hợp mà không gây nhiều tác động.

Mức độ token merging được điều khiển bằng tỷ lệ phần trăm token được gộp.

Dưới đây là một số mẫu với mức độ token merging từ 0% đến 50%.

Tăng tốc Stable DiffusionToken Merging tạo ra những hình ảnh tương tự (Hình ảnh: Bài báo gốc)

Một nhược điểm của việc token merging là nó thay đổi hình ảnh. Bạn có thể không muốn bật tính năng này nếu bạn muốn người khác tái tạo chính xác các hình ảnh.

Sử dụng token merging trong giao diện WebUI AUTOMATIC1111

AUTOMATIC1111 hỗ trợ gộp token một cách tự nhiên. Bạn không cần cài đặt tiện ích mở rộng để sử dụng chức năng này.

Để sử dụng token merging, điều hướng đến trang Settings. Đi đến phần Optimizations. Đặt tỷ lệ token merging. Ví dụ, 0.2 có nghĩa là gộp 20% số token. Nhấp vào Apply Settings.

Tăng tốc Stable Diffusion

Negative guidance minimum sigma

Tùy chọn Negative guidance minimum sigma tắt hướng dẫn phủ định trong một số trường hợp được cho là không quan trọng. Thử nghiệm kinh nghiệm cho thấy rằng việc loại trừ điều kiện tiêu cực có thể được thực hiện trong một số bước mà không ảnh hưởng đến hình ảnh.

Tăng tốc Stable Diffusion

Thử nghiệm sigma tối thiểu bằng cách sử dụng câu gợi ý trong phần tiếp theo

Mặc dù chỉ là thay đổi nhỏ nhưng vẫn có thể nhận thấy được. Vì vậy, không sử dụng cài đặt này nếu bạn muốn ghi lại các thông số và tái tạo chính xác cùng một hình ảnh sau này.

Sử dụng negative guidance minimum sigma

Để sử dụng negative guidance minimum sigma, điều hướng đến trang Settings. Đi đến phần Optimizations. Đặt giá trị cho negative guidance minimum sigma. Nhấp vào Apply Settings.

Thử nghiệm tốc độ và bộ nhớ

Cài đặt thử nghiệm

Dưới đây là câu gợi ý và câu gợi ý tiêu cực được sử dụng trong bài kiểm tra đánh giá. Câu gợi ý chính xác không quan trọng đối với tốc độ, nhưng lưu ý rằng chúng nằm trong giới hạn token (75) để không gọi thêm các nhóm token.

(ảnh biên tập close-up của cô gái 20 tuổi, tóc vàng, dáng mảnh mai người Mỹ), (tàn nhang: 0.8), (môi mở), mắt xanh lá cây thực tế, góc nhìn cá nhân, hạt phim, ống kính 25mm, f/1.2, độ sâu trường ảnh, hiệu ứng bokeh, khuôn mặt đối xứng đẹp, đôi mắt lấp lánh hoàn hảo, học trò định nghĩa cao, da chi tiết tuyệt vời

 

(giả tưởng, cgi, 3d, render, bản phác họa, truyện tranh, anime: 1.4), văn bản, cận cảnh, cắt ra khỏi khung, chất lượng tồi, chất lượng thấp, hiện tượng nén jpeg, xấu xí, trùng lặp, u ám, biến dạng, ngón tay dư thừa, tay biến dạng, tay và khuôn mặt vẽ tệ, đột biến

Model: Chillout Mix (hỗn hợp Chillout)

Phương pháp lấy mẫu: Euler

Kích thước: 512×512

Bước lấy mẫu: 20

Số lượng nhóm: 2

Kích thước nhóm: 8

Tỷ lệ CFG: 7

Hạt giống: 100

Các kết quả sau đây là từ quá trình chạy trên một thẻ GPU RTX 4090 và CUDA 11.8.

Bài kiểm tra tốc độ cross-attention optimization 

Tăng tốc Stable Diffusion

Cross-attention optimization

Tối ưu hóa scaled dot product (SDP) đạt hiệu suất tốt nhất, theo sau là xFormers. Cả hai đều là những lựa chọn tốt để tăng tốc độ và giảm việc sử dụng bộ nhớ.

Bài kiểm tra cho việc token merging

Tăng tốc Stable DiffusionToken merging

Việc token merging cải thiện tốc độ tạo ra, mặc dù tôi không thấy nó quan trọng lắm.

Tuy nhiên, nó có thể làm thay đổi một cách đáng kể hình ảnh. Vì vậy, chỉ sử dụng nó nếu bạn không quan tâm đến khả năng tái tạo.

Bài kiểm tra cho negative guidance minimum sigma

Tăng tốc Stable DiffusionNegative guidance minimum sigma

Negative guidance minimum sigma đã giúp tăng tốc độ tương tự như token merging, nhưng thay đổi hình ảnh ít hơn.

Nên sử dụng tùy chọn tăng tốc Stable Diffusion nào?

Nếu bạn quan tâm đến việc tái tạo hình ảnh của mình, hãy sử dụng xFormers hoặc SDP-no-mem. Không sử dụng token merging hoặc negative guidance minimum sigma.

Nếu bạn không quan tâm đến khả năng tái tạo, hãy tự do lựa chọn giữa xFormers, SDP-no-mem và SDP. Sử dụng token merging và negative guidance minimum sigma để tăng tốc thêm.

Nếu bạn đang sử dụng MacOS, Invoke IA là lựa chọn tốt nhất.

Để biết thêm thông tin chi tiết về Stable Diffusion có thể tìm hiểu thêm tại khóa học Stable Diffusion – Midjourney tại Arcline Academy

Trụ sở chính: 32/19 Nghĩa Hòa, Phường 06, Q. Tân Bình, TPHCM (Nhà Thờ Nghĩa Hòa – Khu Bắc Hải)

Trụ sở miền Tây: L30-09, Đường số 43, Khu Dân cư Stella Megacity, P. Bình Thủy, Q. Bình Thủy, Tp. Cần Thơ

Hotline: 0988 363 967

Tags: No tags

Comments are closed.