Stable Cascade ổn định
(github.com/Stability-AI)- Stable Cascade là codebase chính thức của Stability AI, cung cấp các script huấn luyện/suy luận và nhiều checkpoint mô hình cho mô hình tạo ảnh dựa trên kiến trúc Würstchen
- Khác biệt cốt lõi là nó hoạt động trong không gian tiềm ẩn (latent space) nhỏ hơn rất nhiều so với Stable Diffusion, mã hóa ảnh 1024x1024 thành 24x24 thay vì 128x128 như Stable Diffusion để giảm thời gian suy luận và chi phí huấn luyện
- Mô hình gồm chuỗi 3 giai đoạn Stage A, Stage B, Stage C; Stage A và B phụ trách nén ảnh, còn Stage C phụ trách tạo biểu diễn tiềm ẩn 24x24 từ prompt văn bản
- Các tính năng được cung cấp gồm text-to-image, image variations, image-to-image, ControlNet, LoRA, tái tạo ảnh, huấn luyện từ đầu và fine-tuning; cũng có thể truy cập qua diffusers 🤗
- Codebase đang ở giai đoạn phát triển ban đầu, nên có thể có lỗi không mong muốn hoặc mã huấn luyện/suy luận chưa được tối ưu; mã nguồn theo giấy phép MIT License, còn trọng số mô hình theo Stability AI Non-Commercial Research Community License
Vấn đề mà Stable Cascade muốn giải quyết
- Stable Cascade là codebase chính thức của Stable Cascade, cung cấp script huấn luyện và suy luận cùng nhiều mô hình có thể sử dụng
- Mô hình dựa trên kiến trúc Würstchen
- Khác biệt chính so với các mô hình như Stable Diffusion là nó hoạt động trong không gian tiềm ẩn nhỏ hơn rất nhiều
- Stable Diffusion dùng hệ số nén 8 để mã hóa ảnh 1024x1024 thành 128x128
- Stable Cascade đạt hệ số nén 42, cho phép mã hóa ảnh 1024x1024 thành 24x24
- Mô hình có điều kiện theo văn bản được huấn luyện trong không gian tiềm ẩn nén mạnh này
- Không gian tiềm ẩn nhỏ giúp suy luận nhanh hơn và huấn luyện rẻ hơn
- Phiên bản trước của kiến trúc này đã đạt mức giảm chi phí 16 lần so với Stable Diffusion 1.5
Hiệu năng và hiệu quả
- Stable Cascade được giới thiệu là mô hình phù hợp cho các trường hợp coi trọng hiệu quả
- Các cách mở rộng quen thuộc như fine-tuning, LoRA, ControlNet, IP-Adapter, LCM cũng có thể áp dụng với phương pháp này
- Trong đánh giá nội bộ, Stable Cascade cho hiệu năng tốt nhất gần như ở mọi phép so sánh về cả độ bám prompt và chất lượng thẩm mỹ
- Đánh giá bởi con người được thực hiện bằng cách trộn parti-prompts và aesthetic prompts
- Stable Cascade được so sánh ở 30 bước suy luận
- Các đối tượng so sánh gồm Playground v2 50 bước, SDXL 50 bước, SDXL Turbo 1 bước và Würstchen v2 30 bước
- Mô hình lớn nhất có nhiều hơn Stable Diffusion XL 1,4 tỷ tham số nhưng vẫn cho thời gian suy luận nhanh hơn
Cấu trúc mô hình 3 giai đoạn
- Đúng như tên gọi, Stable Cascade gồm 3 mô hình Stage A, Stage B, Stage C tạo thành cấu trúc cascade để sinh ảnh
- Stage A và Stage B có vai trò nén ảnh tương tự VAE của Stable Diffusion
- Stage C nhận prompt văn bản và tạo biểu diễn tiềm ẩn 24 x 24 nhỏ
- Stage A là VAE, còn Stage B và Stage C là các mô hình khuếch tán
- Bản phát hành này cung cấp các checkpoint sau
- Stage C: bản 1 tỷ tham số và bản 3,6 tỷ tham số
- Stage B: bản 700 triệu tham số và bản 1,5 tỷ tham số
- Stage A: 20 triệu tham số, được cố định do kích thước nhỏ
- Với Stage C, do phần lớn công việc fine-tuning tập trung vào bản 3,6 tỷ tham số nên họ đặc biệt khuyến nghị dùng bản 3,6 tỷ
- Với Stage B, cả hai phiên bản đều cho kết quả tốt, nhưng bản 1,5 tỷ tham số vượt trội hơn trong việc tái tạo các chi tiết nhỏ và tinh tế
- Để có kết quả tốt nhất, tài liệu đề xuất dùng các biến thể lớn hơn ở từng giai đoạn
Tính năng suy luận và notebook
- Có thể chạy mô hình bằng các notebook trong phần inference
- Phần này bao gồm chi tiết về tải mô hình, yêu cầu tính toán và hướng dẫn sử dụng
-
Text-to-Image
- text_to_image.ipynb cung cấp các chức năng cơ bản text-to-image, image variations và image-to-image
- Image variations có thể hiểu embedding của ảnh để tạo ra các biến thể của ảnh đã cho; trong ví dụ không có prompt nào được cung cấp
- Image-to-image hoạt động bằng cách thêm nhiễu vào ảnh đến một mức nhất định rồi tạo ảnh từ điểm khởi đầu đó
- Trong ví dụ, ảnh bên trái được thêm nhiễu 80% và dùng chú thích
A person riding a rodent. - Mô hình cũng có thể được truy cập qua thư viện diffusers 🤗 thông qua tài liệu stable-cascade trên Hugging Face
-
ControlNet
- controlnet.ipynb trình bày cách dùng ControlNet được cung cấp cho Stable Cascade hoặc ControlNet do người dùng tự huấn luyện
- ControlNet trong bản phát hành này bao gồm Inpainting / Outpainting, Face Identity, Canny và Super Resolution
- Face Identity ControlNet sẽ được phát hành sau
- Có thể dùng trong cùng một notebook, chỉ cần thay đổi cấu hình cho từng ControlNet
-
LoRA
- Stable Cascade cung cấp triển khai riêng cho việc huấn luyện và sử dụng LoRA
- LoRA có thể được dùng để fine-tuning Stage C, mô hình điều kiện theo văn bản
- Có thể thêm và huấn luyện token mới, đồng thời thêm các lớp LoRA vào mô hình
- lora.ipynb cho thấy cách dùng LoRA đã được huấn luyện
-
Tái tạo ảnh
- reconstruct_images.ipynb cho thấy cách mã hóa/giải mã ảnh và lợi ích của phương pháp nén mạnh
- Diffusion Autoencoder của Stable Cascade cho phép làm việc trong không gian nén rất cao
- Có thể dùng Stage A và Stage B như cách dùng VAE của Stable Diffusion để huấn luyện mô hình riêng
- Batch ví dụ
4 x 3 x 1024 x 1024được mã hóa thành4 x 16 x 24 x 24 - Hệ số nén theo không gian là
1024 / 24 = 42.67 - Sau đó có thể giải mã lại thành
4 x 3 x 1024 x 1024bằng Stage A và Stage B - Kết quả tái tạo được cho là rất gần với ảnh gốc ngay cả ở các chi tiết nhỏ, điều mà theo tài liệu là không thể với VAE tiêu chuẩn và các phương pháp tương tự
Huấn luyện, ứng dụng, giấy phép
- Mã huấn luyện bao gồm huấn luyện Stable Cascade từ đầu, fine-tuning, ControlNet và LoRA
- Cách huấn luyện chi tiết được cung cấp trong training folder
- Codebase đang ở giai đoạn phát triển ban đầu
- Có thể có lỗi không mong muốn
- Mã huấn luyện và suy luận có thể chưa được tối ưu hoàn toàn
- Nếu có quan tâm, họ dự định tiếp tục phát hành các bản cập nhật phản ánh những cải tiến và tối ưu mới nhất
- Họ sẵn sàng nhận ý tưởng, phản hồi và đóng góp cập nhật
- Để chạy ứng dụng Gradio, trước tiên cài đặt các gói sau
pip3 install gradiopip3 install acceleratepip3 install git+https://github.com/kashif/diffusers.git@wuerstchen-v3
- Từ thư mục gốc của dự án, chạy ứng dụng Gradio bằng lệnh sau
PYTHONPATH=./ python3 gradio_app/app.py
- Mã nguồn tuân theo MIT LICENSE
- Trọng số mô hình có thể tải từ Hugging Face tuân theo STABILITY AI NON-COMMERCIAL RESEARCH COMMUNITY LICENSE
1 bình luận
Ý kiến trên Hacker News
Sau vài giờ dùng thử, có vẻ khả năng tuân thủ prompt đã tốt hơn nhiều
Trước mắt chất lượng có vẻ thấp hơn một số mô hình SDXL, nhưng tôi sẽ tạm chưa kết luận cho đến khi thử nghiệm thêm vài ngày nữa
Tốc độ cũng nhanh, cảm giác nhanh hơn khoảng 2–3 lần so với SDXL không phải bản turbo
Nếu phải dùng đến ControlNet, OpenPose, thậm chí depth map để ép ra một hình dáng hoặc độ sâu cụ thể, thì giải pháp cho mỗi lần tạo ảnh trở nên quá tùy biến
Tự thử thì thấy nó cải thiện ở mặt làm theo prompt, và hình ảnh cũng dễ nhìn hơn với tôi
Nghe nói mô hình lớn nhất có nhiều hơn SDXL 1,4 tỷ tham số, mà SDXL vốn đã đòi hỏi khá nhiều VRAM
Rất ấn tượng
Theo tôi hiểu thì Stability AI hiện đang nhận vốn đầu tư mạo hiểm, nhưng có vẻ họ không thể tránh khỏi việc đốt rất nhiều tiền, và cũng chưa rõ mô hình kinh doanh có bền vững hay không
Có lẽ họ xứng đáng được nhận tài trợ nghiên cứu từ chính phủ
Có nguồn tin nói rằng vào thời điểm thỏa thuận với Intel, họ đang chi khoảng 8 triệu USD mỗi tháng cho hóa đơn và lương, còn doanh thu chỉ bằng một phần nhỏ con số đó
Doanh thu tháng 8 là 1,2 triệu USD, và từng có một bài đăng X của Mostaque nói rằng phần mềm và dịch vụ đang hướng tới 3 triệu USD trong tháng đó, nhưng sau đó đã bị xóa
https://fortune.com/2023/11/29/stability-ai-sale-intel-ceo-r...
Hôm nay tìm kiếm trên HN không được đúng lắm nên tôi không tìm lại được bình luận cụ thể đang nhớ
Nếu ai tìm được thì trang người dùng ở đây: https://news.ycombinator.com/user?id=emadm
Vậy tôi tò mò cấu trúc này vận hành thế nào
Đây có phải là công việc độc quyền cho stability.ai không?
Nhìn commit thì giấy phép đã đổi từ MIT sang giấy phép tùy chỉnh riêng: https://github.com/Stability-AI/StableCascade/commit/209a526...
Về mặt pháp lý, có thể dùng snapshot cũ trước khi đổi giấy phép theo giấy phép MIT ban đầu không?
Thông thường tòa án sẽ nhìn tổng thể hơn và xem xét ý định, đồng thời cũng hiểu rằng có thể xảy ra sai sót hành chính
Tuy nhiên có thể có ngoại lệ nếu một công ty nào đó nói rằng họ đã tin vào giấy phép cũ và đầu tư nhiều tài nguyên
Thời điểm commit có vẻ khá quan trọng. Nếu kho chỉ ở trạng thái MIT trong vài giờ trước khi công khai, thì có lẽ khó để một doanh nghiệp tuyên bố rằng họ đã thực sự đầu tư đáng kể
Commit đó vẫn có thể được dùng tùy ý theo giấy phép MIT tại thời điểm công khai
Giống như bạn đã mua ebook, rồi sau này ấn bản 2 chỉ phát hành bìa cứng, thì ebook ấn bản 1 vẫn có thể đọc được
Các tác phẩm khác nhau nằm dưới các giấy phép khác nhau
Stability AI nói rằng giấy phép phi thương mại này là vì đây là bản xem trước công nghệ, giống SDXL 0.9
Bạn có thể đóng một codebase được cấp phép MIT, nhưng không thể hồi tố thay đổi giấy phép của mã cũ đã công khai
Commit ban đầu của Stability có giấy phép MIT, nên có thể fork commit đó và làm gì tùy ý
Phần rắc rối là họ có commit đổi giấy phép từ MIT sang độc quyền, nhưng không có thay đổi mã nào
Điều này có khả năng không hợp lệ, vì không thể phân phối cùng một codebase dưới hai giấy phép mâu thuẫn nhau
Giấy phép mới chỉ có thể áp cho các thay đổi được thêm vào codebase sau khi đổi giấy phép
Tôi sẽ không nói là “bất hợp pháp”, nhưng vì họ đã phân phối cùng phần mềm đó dưới giấy phép mở, nên nếu tuyên bố đó là phần mềm độc quyền thì có lẽ khó đứng vững trước tòa
Có một playground đã được tối ưu ở đây: https://www.fal.ai/models/stable-cascade
Đặc biệt là trong lĩnh vực cạnh tranh khốc liệt như hiện nay, và nhóm người dùng HN có khả năng sẽ chọn tự chạy nếu bị yêu cầu đăng ký chỉ để thử tạo một ảnh
Cũng như các trình tạo ảnh khác mà tôi đã thử, cái này cũng không tạo đúng phím đàn piano [1]
Có lẽ cần một cách tiếp cận khác để đếm được các cụm phím đen
[1] https://fal.ai/models/stable-cascade?share=13d35b76-d32f-45c...
Với tôi, khi tạo ảnh liên quan đến bóng rổ thì đa số có nhiều hơn một quả bóng
Tôi không phải chuyên gia, nhưng có vẻ việc huấn luyện không nắm được, hoặc chỉ nắm được một phần, các ràng buộc cơ bản của đời sống văn hóa con người, kiểu như mọi phím đàn piano phải giống nhau hay trong một trận đấu chỉ có một quả bóng
Mô hình này được xây dựng trên kiến trúc Würstchen
Có một video trong đó một trong các tác giả giải thích rất rõ mô hình này hoạt động như thế nào
https://www.youtube.com/watch?v=ogJsCPqgFMk
Gemini Advanced> Summarize this video: https://www.youtube.com/watch?v=ogJsCPqgFMk
Video này nói về phương pháp huấn luyện mô hình khuếch tán văn bản-thành-hình ảnh tên là Würstchen
Nó hiệu quả hơn nhiều so với các phương pháp hiện có như Stable Diffusion 1.4, và có thể cho kết quả tương tự dù chỉ dùng 1/16 thời gian huấn luyện và lượng tính toán
Điểm cốt lõi là quy trình nén 2 giai đoạn
Giai đoạn đầu dùng VQ-VAE để nén hình ảnh vào không gian tiềm ẩn nhỏ hơn 4 lần so với không gian tiềm ẩn mà Stable Diffusion dùng, và giai đoạn thứ hai dùng mô hình khuếch tán để nén tiếp không gian tiềm ẩn thêm 10 lần
Vì vậy, tỷ lệ nén tổng cộng là 40 lần, cao hơn nhiều so với mức nén 8 lần của Stable Diffusion
Nhờ không gian tiềm ẩn đã được nén, mô hình khuếch tán văn bản-thành-hình ảnh của Würstchen nhỏ hơn nhiều và có thể huấn luyện nhanh hơn so với mô hình Stable Diffusion
Würstchen có thể được huấn luyện trên một GPU đơn với 24.000 giờ GPU, trong khi Stable Diffusion 1.4 cần 150.000 giờ GPU
Dù hiệu quả, nó vẫn có thể tạo ảnh có chất lượng tương tự Stable Diffusion, và đôi khi cho chất lượng tốt hơn ở ảnh có độ phân giải cao hơn hoặc nhiều chi tiết hơn
Nhìn chung, Würstchen là một bước tiến quan trọng trong lĩnh vực tạo ảnh từ văn bản, cho phép huấn luyện mô hình hiệu quả hơn và rẻ hơn, qua đó mở rộng phạm vi ứng dụng như hình ảnh marketing, minh họa sách và avatar cá nhân hóa
Có cách nào dùng nó để tạo nhiều ảnh của cùng một mô hình không?
Ví dụ tạo các ảnh của một mẫu ô tô được xoay ở nhiều góc khác nhau, nhưng tất cả vẫn giữ nguyên cùng một chiếc ô tô được sinh ra
[1] https://zero123.cs.columbia.edu/
Có thể tạo luồng ảnh đầu vào => embedding => N ảnh, và nếu tính đến cả góc nhìn kết xuất 3D thì áp dụng ControlNet cho N ảnh đó là được
Tham khảo: “The model can also understand image embeddings, which makes it possible to generate variations of a given image (left). There was no prompt given here.”
Tôi nhớ trước đây đã thử nghiệm đủ thứ với hai nhà nghiên cứu này để tìm cách tối ưu nối Stage B có điều kiện với biểu diễn tiềm ẩn
Cuối cùng chúng tôi đã bỏ cuộc vì cách chỉ đơn giản nối thêm các kênh đầu vào với bản upsample theo láng giềng gần nhất của biểu diễn tiềm ẩn lại cho kết quả tốt hơn so với cross-attention rất fancy có thêm embedding vị trí 2D tương đối
Mô hình này trước đây được biết đến với tên Würstchen v3
Nó có chạy trên AMD không?
Tôi không tìm thấy thông tin hỗ trợ
Người dùng chạy Stable Diffusion trên AMD hẳn đang bị suy giảm hiệu năng, nên đây là một tính năng khá quan trọng đối với những dự án như thế này
Tôi nghĩ điều ấn tượng nhất là nén
Việc có thể nén ảnh 42 lần là một lợi thế rất lớn trên thiết bị di động, kết nối Internet kém, hoặc cả hai
Theo hướng cung cấp độ phân giải 8K với băng thông thấp