การเสิร์ฟโมเดลภาษาขนาดใหญ่ความเร็วสูงบนพีซีที่ติดตั้ง GPU สำหรับผู้บริโภค
(github.com/SJTU-IPADS)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 สามารถทดลองและดีพลอยโมเดลสมรรถนะสูงได้ โดยไม่ต้องเข้าถึงฮาร์ดแวร์ระดับเซิร์ฟเวอร์
ยังไม่มีความคิดเห็น