17 คะแนน โดย kuroneko 2023-07-21 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • ไลบรารีสำหรับรัน Stable Diffusion บน Raspberry Pi Zero 2 ที่มี RAM 512MB
  • ได้พัฒนาไลบรารี OnnxStream โดยมุ่งเน้นการเพิ่มประสิทธิภาพการใช้หน่วยความจำ
  • แยกคอมโพเนนต์ที่ป้อนค่าน้ำหนักให้โมเดลออกมาเพื่อปรับการใช้หน่วยความจำให้เหมาะสม
    • ในทางทฤษฎี สามารถส่งค่าน้ำหนักโดยตรงจาก HTTP server เพื่อรันโมเดลได้โดยไม่ต้องเขียนอะไรลงดิสก์เลย
  • ผลลัพธ์คือใช้หน่วยความจำน้อยกว่า OnnxRuntime ได้สูงสุด 55 เท่า แต่ช้ากว่าประมาณ 0.5~2 เท่า
  • แต่โมเดล VAE ที่รวมอยู่ใน Stable Diffusion ยังใช้ RAM ราว 1GB แม้จะใช้ไลบรารีนี้ก็ตาม
    • จึงเพิ่มประสิทธิภาพการใช้หน่วยความจำต่อด้วยการทำ static quantization แบบ 8 บิต (W8A8) กับโมเดล VAE
    • สุดท้ายสามารถสร้างภาพบน RPI Zero 2 เครื่องจริงได้สำเร็จภายใน 3 ชั่วโมง
    • โดยท้ายที่สุดใช้ RAM เพียงประมาณ 260MB

3 ความคิดเห็น

 
wkang586 2023-07-31

จะทรมานเจ้าตัวจิ๋วนั่นไปถึงไหนกัน.....
ดูเหมือนว่ามนุษย์จะเป็นสิ่งมีชีวิตที่พิลึกพิลั่นที่สุดแล้วครับ

 
kuroneko 2023-07-21

เหลือเชื่อจริง ๆ ที่รันโมเดลขนาดหลาย GB ได้ด้วยแรม 260MB...

ที่ใช้เวลาตั้ง 3 ชั่วโมงก็คงเพราะเป็น Raspberry Pi แต่บน CPU ประสิทธิภาพสูงก็น่าจะเร็วขึ้นเป็นธรรมดา
และใช้แรมน้อยกว่ามากด้วย

แบบนี้ต่อไปอาจมีวิธีที่ทำให้รันบน Edge แบบ Serverless ได้ก็เป็นได้....

 
ninebow 2023-07-21

โอ้ เป็นโปรเจ็กต์ที่น่าสนใจนะครับ ขอบคุณครับ!
ดูเหมือนว่าจะมีความพยายามมากขึ้นในการลดคอขวดระหว่าง CPU กับ RAM ด้วย +_+