1 điểm bởi GN⁺ 2023-07-19 | 1 bình luận | Chia sẻ qua WhatsApp
  • Cần chạy bản demo Stable Diffusion WebGPU trên phiên bản Chrome mới nhất với các cờ "Experimental WebAssembly" và "Experimental WebAssembly JavaScript Promise Integration (JSPI)" được bật.
  • Mỗi bước suy luận của bản demo mất khoảng 1 phút, và cần thêm khoảng 10 giây để chạy bộ giải mã VAE nhằm tạo hình ảnh.
  • Nếu mở DevTools, tốc độ của bản demo sẽ chậm đi khoảng 2 lần.
  • Mô hình UNET được dùng trong bản demo chỉ chạy trên CPU, và tab trình duyệt có thể bị treo, nhưng nhanh hơn khoảng 10% so với chạy trên GPU.
  • Số bước tối thiểu để có kết quả chấp nhận được trong bản demo là 20. Tuy nhiên, cho mục đích trình diễn thì 3 bước là đủ.
  • Các tệp mô hình được lưu vào bộ nhớ đệm nên không cần tải lại mỗi lần chạy bản demo.
  • Nếu gặp lỗi "protobuf parsing failed", bạn có thể vào Application -> Storage trong DevTools để xóa dữ liệu trang web.
  • Nếu gặp lỗi "sbox_fatal_memory_exceeded", nghĩa là không có đủ RAM để chạy bản demo. Bạn có thể thử tải lại tab hoặc trình duyệt.
  • Bản demo trở nên khả thi nhờ việc chuyển StableDiffusionPipeline từ Python sang JS, đồng thời vá onnxruntime và emscripten+binaryen để hỗ trợ cấp phát và sử dụng hơn 4GB bộ nhớ.
  • Hiện tại bản demo chậm vì không hỗ trợ đa luồng và chỉ sử dụng một lõi CPU. Việc thiếu hỗ trợ cho bộ nhớ 64-bit thông qua constructor WebAssembly.Memory cũng là một hạn chế.
  • Bản demo chạy trên GPU, nhưng webgpu và onnxruntime vẫn đang ở giai đoạn đầu nên còn nhiều phần chưa được triển khai. Dữ liệu liên tục được truyền giữa GPU và CPU thông qua JS, khiến tốc độ xử lý chậm. Khi nhiều tác vụ hơn có JS kernel, bản demo sẽ nhanh hơn.
  • Có thể chạy bản demo cục bộ bằng mã có sẵn trên GitHub.
  • Có thể dùng onnxruntime đã được vá để chạy các LLM lớn với transformers.js, nhưng bị giới hạn ở 8GB bộ nhớ. Với gói đó, có thể tải tối đa khoảng 4GB trọng số.
  • Tác giả trước đây đã có kinh nghiệm thêm tăng tốc GPU vào binding của node.js, nên dự định sẽ gửi pull request lên kho lưu trữ onnxruntime.

1 bình luận

 
GN⁺ 2023-07-19
Ý kiến trên Hacker News
  • Nhóm MLC đã triển khai hỗ trợ cho Stable Diffusion và các mô hình ngôn ngữ lớn.
  • Trình duyệt đã phát triển đến mức có thể xử lý các tác vụ phức tạp như Stable Diffusion.
  • Để sử dụng Stable Diffusion, cần có phiên bản Chrome mới nhất với một số cờ cụ thể được bật.
  • Stable Diffusion cũng đã được tích hợp vào các website khác, chẳng hạn như trình tạo hình nền tùy chỉnh.
  • Hãy cân nhắc sử dụng service worker để tránh luồng chính bị treo trong các tiến trình bị ràng buộc bởi CPU.
  • Các trường hợp sử dụng của Stable Diffusion bao gồm tạo hình ảnh theo thời gian thực mà không cần tải lại trang.
  • Có tiềm năng cho các ứng dụng trong tương lai như chatbot WebGPU hoặc đào Bitcoin trong thời gian GPU nhàn rỗi.
  • Một số người dùng đang chờ đến khi WebGPU khả dụng trên Firefox.
  • Khả năng về một Internet không có quảng cáo đã được đặt ra.