4 điểm bởi GN⁺ 2023-10-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bài viết này bàn về việc chạy Stable Diffusion XL 1.0 trên Raspberry Pi Zero 2, một máy tính siêu nhỏ có 512MB RAM.
  • Thử thách là chạy Stable Diffusion 1.5, một mô hình transformer lớn với gần 1 tỷ tham số, mà không tăng không gian swap hoặc offload các kết quả trung gian ra đĩa.
  • Tác giả đã tạo ra OnnxStream, một thư viện suy luận nhỏ gọn, dễ tùy biến, tập trung vào việc giảm thiểu mức tiêu thụ bộ nhớ.
  • OnnxStream tách biệt bộ máy suy luận với thành phần cung cấp trọng số mô hình, cho phép nhiều kiểu nạp, cache và prefetch khác nhau đối với các tham số mô hình.
  • OnnxStream tiêu thụ ít bộ nhớ hơn OnnxRuntime tới 55 lần, trong khi chỉ chậm hơn khoảng 0.5-2 lần.
  • Bài viết có kèm các hình ảnh được tạo bởi bản triển khai ví dụ Stable Diffusion bằng OnnxStream với nhiều mức độ chính xác khác nhau của bộ giải mã VAE.
  • Bản triển khai ví dụ Stable Diffusion của OnnxStream hiện đã hỗ trợ SDXL 1.0, phiên bản đòi hỏi chi phí tính toán cao hơn SD 1.5 nhưng có thể tạo ra ảnh lớn hơn.
  • OnnxStream có thể chạy SDXL 1.0 với chưa tới 300MB RAM, phù hợp với Raspberry Pi Zero 2.
  • Bài viết thảo luận các tối ưu hóa cụ thể cho SDXL 1.0, trong đó có việc dùng giải mã theo tile để giảm mức tiêu thụ bộ nhớ từ 4.4GB xuống 298MB.
  • Các tính năng của OnnxStream gồm tách biệt bộ máy suy luận và WeightsProvider, attention slicing, lượng tử hóa động và tĩnh, hỗ trợ FP16, v.v.
  • Bài viết cung cấp hướng dẫn chi tiết về cách build ví dụ Stable Diffusion trên nhiều hệ điều hành khác nhau.
  • Bản triển khai Stable Diffusion của sd.cpp dựa trên hai dự án khác và đã được chỉnh sửa để dùng OnnxStream thay cho NCNN.

1 bình luận

 
GN⁺ 2023-10-04
Ý kiến trên Hacker News
  • Bài viết về việc sử dụng OnnxStream, cho thấy nó tiêu thụ ít bộ nhớ hơn OnnxRuntime tới 55 lần nhưng chậm hơn 0,5-2 lần.
  • Sự đánh đổi giữa mức sử dụng bộ nhớ và thời gian suy luận có thể có lợi trong một số kịch bản, đồng thời cho phép kích thước batch lớn hơn với cùng lượng RAM.
  • Một số người dùng đang sử dụng Stable Diffusion trên MacBook Pro thông qua invoke.ai, nhưng đang tìm kiếm khuyến nghị để tinh chỉnh tham số tốt hơn.
  • Bài viết đề cập rằng việc tạo ảnh bằng phương pháp này mất rất nhiều thời gian; trong README ghi rõ là mất 11 giờ.
  • Sự đánh đổi giữa mức sử dụng bộ nhớ và thời gian suy luận có thể gây cản trở cho các ứng dụng thời gian thực hoặc gần thời gian thực, nơi độ trễ là yếu tố quan trọng.
  • Có sự nhầm lẫn về cách diễn đạt "chậm hơn 0,5-2 lần", cho thấy có thể thiếu sự rõ ràng trong giao tiếp trong cộng đồng.
  • Một số người dùng đang tìm một bản tóm tắt về các yêu cầu tối thiểu để chạy và tạo bằng các mô hình mã nguồn mở chủ đạo.
  • Tốc độ tiến bộ nhanh chóng trong lĩnh vực này được chú ý, đặc biệt là những cải thiện về tốc độ trong 6-18 tháng qua rất ấn tượng.
  • Có ý kiến cho rằng những nỗ lực nhằm quản lý công nghệ kiểu Stable Diffusion có thể là vô ích, vì các mô hình này và hạ tầng suy luận của chúng có thể được thu nhỏ đến mức chạy được trên PS2.
  • Dù thời gian tạo khá lâu, một số người dùng vẫn kinh ngạc trước việc Stable Diffusion có thể chạy trên phần cứng như Pi Zero.