PowerInfer: การเสิร์ฟโมเดลภาษาขนาดใหญ่ความเร็วสูงด้วย GPU สำหรับผู้บริโภค

  • PowerInfer คือเอนจินอนุมาน LLM แบบ CPU/GPU ที่ใช้ประโยชน์จาก locality ของการกระตุ้นทำงาน
  • PowerInfer และ llama.cpp ทำงานบนฮาร์ดแวร์ชุดเดียวกัน และใช้ VRAM ของ RTX 4090 ได้อย่างเต็มที่

ภาพรวม

  • PowerInfer เป็นเอนจินที่ทำให้งานอนุมานโมเดลภาษาขนาดใหญ่ (LLM) บนพีซีส่วนบุคคล (PC) ที่มี GPU สำหรับผู้บริโภคเพียงตัวเดียวทำงานได้อย่างรวดเร็ว
  • รากฐานการออกแบบของ PowerInfer คือการใช้ประโยชน์จาก locality ที่ปรากฏในการอนุมาน LLM โดยมีลักษณะเด่นคือการกระตุ้นทำงานของนิวรอนมีการกระจายแบบกฎกำลัง
  • การกระจายนี้แสดงให้เห็นว่านิวรอน “ร้อน” จำนวนเล็กน้อยจะถูกกระตุ้นอย่างสม่ำเสมอ ขณะที่นิวรอน “เย็น” ส่วนใหญ่จะแตกต่างกันไปตามอินพุต
  • PowerInfer ใช้ข้อสังเกตนี้ในการออกแบบเอนจินอนุมานแบบไฮบริด GPU-CPU: นิวรอน “ร้อน” จะถูกโหลดไว้ล่วงหน้าบน GPU และนิวรอน “เย็น” จะคำนวณบน CPU เพื่อลดความต้องการหน่วยความจำของ GPU และการรับส่งข้อมูลระหว่าง CPU-GPU ลงอย่างมาก
  • PowerInfer ผสานตัวทำนายแบบปรับตัวและตัวดำเนินการแบบ sparse ที่รับรู้นิวรอน เพื่อเพิ่มประสิทธิภาพของการกระตุ้นนิวรอนและความเบาบางของการคำนวณ
  • จากการประเมิน PowerInfer บรรลุอัตราการสร้างโทเค็นเฉลี่ย 13.20 โทเค็น/วินาที และสูงสุด 29.08 โทเค็น/วินาทีสำหรับ LLM หลายตัว (เช่น OPT-175B) บน NVIDIA RTX 4090 เพียงตัวเดียว โดยมีประสิทธิภาพต่ำกว่า GPU ระดับเซิร์ฟเวอร์ A100 อยู่ 18%
  • เมื่อยังคงรักษาความแม่นยำของโมเดลไว้ได้ มีความเร็วสูงกว่า llama.cpp ได้สูงสุด 11.69 เท่า

คุณสมบัติ

  • การออกแบบที่ยึด locality เป็นศูนย์กลาง: ใช้การกระตุ้นทำงานแบบ sparse และแนวคิดนิวรอน “ร้อน”/“เย็น” เพื่อการอนุมาน LLM ที่มีประสิทธิภาพ รับประกันความเร็วสูงด้วยความต้องการทรัพยากรต่ำ

  • การใช้ CPU/GPU แบบไฮบริด: ผสานความสามารถด้านหน่วยความจำและการคำนวณของ CPU และ GPU ได้อย่างราบรื่น เพื่อให้ภาระงานสมดุลและประมวลผลได้รวดเร็ว

  • ผสานรวมได้ง่าย: รองรับโมเดล sparse แบบ ReLU ยอดนิยม

  • เหมาะกับการดีพลอยในเครื่อง: ปรับแต่งเชิงลึกสำหรับการดีพลอยบนฮาร์ดแวร์สำหรับผู้บริโภค ทำให้สามารถอนุมานและเสิร์ฟ LLM แบบ latency ต่ำบน GPU เพียงตัวเดียวได้

  • รองรับย้อนหลัง: แม้จะแตกต่างจาก llama.cpp แต่สามารถใช้ examples/ ส่วนใหญ่ เช่น เซิร์ฟเวอร์และการสร้างแบบแบตช์ ได้ในลักษณะเดียวกับ llama.cpp

เริ่มต้นใช้งาน

  • มีคำแนะนำสำหรับ การติดตั้ง และ น้ำหนักโมเดล

การตั้งค่าและติดตั้ง

  • มีคำแนะนำวิธีดึงโค้ดและการบิลด์

น้ำหนักโมเดล

  • โมเดล PowerInfer ถูกจัดเก็บในรูปแบบ PowerInfer GGUF ซึ่งรวมทั้งน้ำหนัก LLM และน้ำหนักของตัวทำนาย
  • สามารถดาวน์โหลดน้ำหนัก PowerInfer GGUF ได้ผ่าน Hugging Face
  • มีคำแนะนำวิธีแปลงน้ำหนักโมเดลดั้งเดิมและน้ำหนักตัวทำนายเป็น PowerInfer GGUF

การอนุมาน

  • มีแนวทางสำหรับการอนุมานด้วย CPU ล้วน หรือการอนุมานแบบไฮบริด CPU-GPU ที่ใช้ VRAM ที่มีอยู่ทั้งหมด

การควอนไทซ์

  • รองรับการควอนไทซ์ที่ปรับแต่งแล้วสำหรับโมเดล INT4(Q4_0) พร้อมคำแนะนำการใช้งาน

การประเมิน

  • PowerInfer ให้ความเร็วเพิ่มขึ้นสูงสุด 11 เท่าและ 8 เท่าสำหรับโมเดล FP16 และ INT4 ตามลำดับ

คำถามที่พบบ่อย

  • มีคำแนะนำการแก้ปัญหาสำหรับข้อผิดพลาด CUDA_ERROR_OUT_OF_MEMORY และการสนับสนุนสำหรับการแก้ปัญหาอื่น ๆ

สิ่งที่ต้องทำ

  • มีแผนปล่อยโค้ดหลักของ PowerInfer, โมเดล Mistral-7B, การรองรับ Windows, text-generation-webui, โค้ดประเมิน perplexity, การรองรับ Metal บน Mac, โค้ดสำหรับโมเดล OPT, โค้ดฝึกตัวทำนาย, การแบ่งพาร์ทิชันออนไลน์ของเครือข่าย FFN และการรองรับ Multi-GPU เป็นต้น

งานวิจัยและการอ้างอิง

  • รายละเอียดทางเทคนิคของ PowerInfer สามารถดูได้จากงานวิจัย
  • หาก PowerInfer มีประโยชน์หรือช่วยต่อยอดโครงการและงานวิจัยที่เกี่ยวข้อง ขอความกรุณาอ้างอิงงานวิจัยนี้

คำขอบคุณ

  • ขอขอบคุณไลบรารีโอเปอเรเตอร์ที่ปรับแก้ได้ ggml และรันไทม์สำหรับการทำงานของ llama.cpp
  • ขอขอบคุณ THUNLP สำหรับการสนับสนุนโมเดล sparse ที่อิง ReLU
  • ขอขอบคุณงานวิจัย Deja Vu ที่เป็นแรงบันดาลใจให้กับ PowerInfer

ความเห็นของ GN⁺

  • PowerInfer เป็นเอนจินนวัตกรรมที่ทำให้การอนุมานโมเดลภาษาขนาดใหญ่ด้วย GPU สำหรับผู้บริโภคทำได้รวดเร็วและมีประสิทธิภาพ
  • ด้วยแนวคิดนิวรอน “ร้อน”/“เย็น” และการใช้ CPU/GPU แบบไฮบริด จึงมอบความเร็วในการอนุมานที่เข้าใกล้ระดับเซิร์ฟเวอร์พร้อมกับประหยัดทรัพยากร
  • เทคโนโลยีนี้เปิดโอกาสให้นักพัฒนาเดี่ยวหรือทีมขนาดเล็กในงานวิจัยและพัฒนา AI สามารถทดลองและดีพลอยโมเดลสมรรถนะสูงได้ โดยไม่ต้องเข้าถึงฮาร์ดแวร์ระดับเซิร์ฟเวอร์

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น