GPU คลาวด์ที่ดีที่สุดสำหรับการอนุมานและการให้บริการโมเดล
งานอนุมานมีความต้องการที่แตกต่างจากการฝึกอบรม: ความหน่วงต่ำ, กำลังประมวลผลสูง และการปรับขนาดที่คุ้มค่า จุดสิ้นสุด GPU แบบไม่มีเซิร์ฟเวอร์, การปรับขนาดอัตโนมัติ และการคิดค่าบริการเป็นวินาทีมีความสำคัญเมื่อให้บริการการทำนายในสภาพแวดล้อมการผลิต คู่มือฉบับนี้รวบรวมผู้ให้บริการ GPU คลาวด์ที่เหมาะสำหรับงานอนุมาน รวมถึงผู้ที่มี GPU แบบไม่มีเซิร์ฟเวอร์, การปรับขนาดเป็นศูนย์ และโมเดล GPU เฉพาะสำหรับงานอนุมาน เช่น L40S และ T4.
ยังไม่พบผู้ให้บริการ GPU ที่ตรงกับคำแนะนำนี้ กรุณาตรวจสอบใหม่เร็วๆ นี้
สิ่งที่การอนุมานต้องการจริง ๆ จาก GPU ที่เช่า
การอนุมานคือขั้นตอนการให้บริการของโมเดล: น้ำหนักถูกฝึกมาแล้ว และคุณจ่ายค่าคำนวณทุกครั้งที่ผู้ใช้ส่งคำสั่ง รูปภาพ หรือคำขอ นั่นทำให้คณิตศาสตร์ของฮาร์ดแวร์เปลี่ยนไปอย่างสิ้นเชิงเมื่อเทียบกับการฝึก การฝึกเป็นงานที่จำกัดด้วยปริมาณข้อมูลและใช้เวลาหลายชั่วโมงหรือหลายวันบนคลัสเตอร์หนาแน่น; การอนุมานไวต่อความหน่วงเวลา มีลักษณะเป็นช่วง ๆ และทำงานอย่างไม่มีกำหนด เมื่อคุณเช่า GPU เพื่อให้บริการโมเดล คุณกำลังปรับแต่งเพื่อให้ได้ต้นทุนต่อโทเค็นหรือต้นทุนต่อคำขอในเวลาตอบสนองที่ยอมรับได้ ไม่ใช่เพื่อ FLOPs ดิบในงานที่ใช้เวลานาน
ข้อจำกัดที่สำคัญที่สุดโดยทั่วไปคือ ความจุหน่วยความจำ ไม่ใช่การคำนวณ โมเดลต้องพอดีกับ VRAM พร้อมกับแคชคีย์-ค่า (KV) ซึ่งเพิ่มขึ้นตามขนาดแบตช์และความยาวบริบท สำหรับโมเดลภาษาขนาดใหญ่ นี่คือแรงกดดันหลัก: โมเดลที่ให้บริการในแบบ 16 บิตต้องใช้ประมาณสองไบต์ต่อพารามิเตอร์สำหรับน้ำหนัก ดังนั้นโมเดลขนาดกลางจึงสามารถอยู่บนการ์ดระดับกลางใบเดียวได้อย่างสบาย ในขณะที่โมเดลระดับแนวหน้าจำเป็นต้องใช้ GPU หลายตัวเชื่อมต่อกัน การเปรียบเทียบข้างต้นช่วยให้คุณกรองตาม VRAM ได้อย่างแม่นยำเพื่อให้คุณจับคู่การ์ดกับโมเดลที่ใหญ่ที่สุดที่คุณตั้งใจจะให้บริการพร้อมพื้นที่ว่างสำหรับคำขอพร้อมกัน
สเปกที่ส่งผลต่อต้นทุนและความหน่วงเวลาของการอนุมาน
- ความจุ VRAM กำหนดว่าโมเดลและแคช KV จะพอดีกับ GPU ตัวเดียวหรือจำเป็นต้องแบ่งชิ้นส่วน การย้ายข้อมูลไปยัง GPU ตัวที่สองหรือไปยังหน่วยความจำโฮสต์เพิ่มความหน่วงเวลาและความซับซ้อน
- แบนด์วิดท์หน่วยความจำ คือคอขวดที่แท้จริงสำหรับการสร้างโทเค็น การถอดรหัสแบบอัตโนมัติอ่านชุดน้ำหนักทั้งหมดสำหรับทุกโทเค็นที่ผลิต ดังนั้นหน่วยความจำแบนด์วิดท์สูง (ระดับ HBM) จึงสร้างโทเค็นได้เร็วกว่าเมมโมรีแบบ GDDR ในระดับการคำนวณเดียวกัน
- การรองรับความแม่นยำต่ำ มีความสำคัญอย่างมาก การ์ดที่มีเส้นทางเทนเซอร์ FP8 หรือ INT8 ช่วยให้คุณทำการควอนไทซ์โมเดลเพื่อให้บริการคำขอได้มากขึ้นต่อเงินโดยสูญเสียคุณภาพน้อยมาก การควอนไทซ์เป็น 8 บิตหรือ 4 บิตยังช่วยลดขนาดหน่วยความจำ ทำให้โมเดลพอดีกับการ์ดราคาถูกกว่าได้บ่อยครั้ง
- การเชื่อมต่อระหว่าง GPU (NVLink เทียบกับ PCIe) มีความสำคัญก็ต่อเมื่อโมเดลขยายข้ามหลาย GPU สำหรับการให้บริการด้วย GPU เดียวไม่เกี่ยวข้อง; สำหรับการให้บริการแบบเทนเซอร์ขนานของโมเดลขนาดใหญ่มาก จะส่งผลโดยตรงต่อความหน่วงเวลาของโทเค็น
การอนุมานแบบแบตช์ (ออฟไลน์) เทียบกับแบบเรียลไทม์
มีรูปแบบการให้บริการสองแบบที่แตกต่างกันมากซ่อนอยู่ภายใต้คำว่า “การอนุมาน” และต้องการการเช่าที่แตกต่างกัน
การอนุมานแบบเรียลไทม์ ให้บริการผู้ใช้สด: แชทบอท, จุดเชื่อมต่อ API, ตัวสร้างภาพเบื้องหลังเว็บแอป ที่นี่ความหน่วงเวลาสูงสุดมีความสำคัญ GPU มักจะนั่งว่างบางส่วนรอการจราจร และคุณไม่สามารถยอมให้อินสแตนซ์ถูกดึงออกไปกลางคำขอ รูปแบบนี้เหมาะกับความจุที่พร้อมใช้งานตามความต้องการตลอดเวลาและการ์ดที่มีแบนด์วิดท์หน่วยความจำสูงเพื่อให้ความหน่วงเวลาต่อคำขออยู่ในระดับต่ำแม้ที่ขนาดแบตช์เล็ก
การอนุมานแบบแบตช์หรือออฟไลน์ ประมวลผลงานที่ค้างอยู่จำนวนมาก: การให้คะแนนชุดข้อมูล, การสร้าง embeddings สำหรับชุดข้อมูล, การบรรยายภาพล้านภาพ ไม่มีผู้ใช้สด ดังนั้นความหน่วงเวลาต่อรายการแทบไม่สำคัญ และคุณสามารถจัดแบตช์ขนาดใหญ่เพื่อให้ GPU ทำงานเต็มที่ รูปแบบนี้เหมาะสำหรับความจุที่ขัดจังหวะได้หรือแบบ spot เพราะถ้าอินสแตนซ์ถูกยึดคืน คุณก็แค่เริ่มคิวใหม่ เมื่อคุณอ่านรายการข้างต้น ให้ตัดสินใจก่อนว่าคุณอยู่ในรูปแบบใดในสองแบบนี้ เพราะจะเปลี่ยนรูปแบบการคิดค่าบริการและระดับความพร้อมใช้งานที่เหมาะสม
เหตุใดปริมาณงานและการใช้งานจึงสำคัญกว่าค่า FLOPs สูงสุด
การ์ดที่ดูเหมือนทรงพลังกว่าสองเท่าบนกระดาษมักจะไม่ลดค่าบริการการอนุมานของคุณลงครึ่งหนึ่ง การถอดรหัสถูกจำกัดด้วยหน่วยความจำ ดังนั้นพีคคอมพิวต์ที่โฆษณาของ GPU มักถูกใช้งานน้อยในระหว่างการสร้างโทเค็น สิ่งที่คุณจ่ายจริงคือ โทเค็นที่มีประสิทธิภาพต่อวินาทีต่อดอลลาร์ ภายใต้ขนาดแบตช์และความยาวบริบทจริงของคุณ สแต็คการให้บริการสมัยใหม่กู้คืนความจุที่สูญเปล่าผ่านการจัดแบตช์อย่างต่อเนื่อง, แคช KV แบบแบ่งหน้า และการควอนไทซ์ ข้อสรุปเชิงปฏิบัติเมื่อเช่า: GPU ระดับกลางที่รันเซิร์ฟเวอร์ที่ปรับแต่งแล้วสามารถชนะการ์ดเรือธงที่รันเซิร์ฟเวอร์ที่ไม่ได้ปรับแต่ง และการ์ดที่เล็กกว่าและถูกกว่าที่ยังพอดีกับโมเดลของคุณบ่อยครั้งจะเป็นผู้ชนะด้านต้นทุนสำหรับการจราจรที่สม่ำเสมอ
ฟีเจอร์ของผู้ให้บริการที่สำคัญโดยเฉพาะสำหรับการให้บริการ
การอนุมานทำงานอย่างต่อเนื่อง ดังนั้นฟีเจอร์ของแพลตฟอร์มโดยรอบจึงมีน้ำหนักมากกว่าการฝึกแบบครั้งเดียว เมื่อเปรียบเทียบตัวเลือกข้างต้น ให้ตรวจสอบมิติเหล่านี้:
- ความละเอียดในการคิดค่าบริการ: การคิดค่าบริการแบบวินาทีหรือแบบนาทีให้รางวัลกับการให้บริการที่มีลักษณะเป็นช่วงและปรับขนาดเป็นศูนย์ได้; การคิดค่าบริการแบบรายชั่วโมงหยาบ ๆ ลงโทษจุดเชื่อมต่อที่ว่างงานระหว่างช่วงจราจร
- ความเร็วในการเริ่มต้นและการจัดเตรียม: หากคุณปรับจำนวนสำเนาขึ้นลงตามความต้องการ ความเร็วที่อินสแตนซ์ GPU ใหม่พร้อมใช้งานส่งผลโดยตรงต่อความหน่วงเวลาที่ผู้ใช้เห็นและความสามารถในการปรับขนาดอัตโนมัติ
- การจัดเก็บข้อมูลถาวรและแคชภาพ: การดึงน้ำหนักโมเดลขนาดใหญ่ทุกครั้งที่เริ่มต้นช้าและบางครั้งมีค่าใช้จ่าย การแคชภาพหรือการแนบโวลุ่มที่เก็บน้ำหนักช่วยลดเวลาการเริ่มต้นเย็นอย่างมาก
- ค่าธรรมเนียมการส่งข้อมูลออก: การให้บริการส่งผลลัพธ์กลับไปยังผู้ใช้อย่างต่อเนื่อง ค่าธรรมเนียมต่อกิกะไบต์ที่ไม่ปรากฏในการฝึกอาจกลายเป็นรายการค่าใช้จ่ายจริงสำหรับ API ที่มีปริมาณสูง
- ความน่าเชื่อถือแบบออนดีมานด์เทียบกับราคาสปอต: จุดเชื่อมต่อแบบเรียลไทม์โดยทั่วไปต้องการความจุแบบออนดีมานด์ที่รับประกันได้; งานแบตช์สามารถใช้ประโยชน์จากอินสแตนซ์ที่ขัดจังหวะได้ราคาถูกกว่า
- ตัวเลือกการปรับขนาดอัตโนมัติและเซิร์ฟเวอร์เลส: การปรับขนาดเป็นศูนย์มีความสำคัญเมื่อจราจรมีลักษณะเป็นช่วง เพื่อที่คุณจะไม่ต้องจ่ายสำหรับ GPU ที่ว่างงานในช่วงกลางคืน
วิธีอ่านการเปรียบเทียบข้างต้นสำหรับการอนุมาน
ทำงานตามลำดับนี้ ก่อนอื่น ระบุโมเดลที่ใหญ่ที่สุดที่คุณต้องให้บริการและยืนยันว่าการ์ดมี VRAM เพียงพอสำหรับน้ำหนักและแคช KV ที่ความพร้อมใช้งานที่คาดไว้ ประการที่สอง ให้ความสำคัญกับแบนด์วิดท์หน่วยความจำสูงและการรองรับความแม่นยำต่ำ (FP8/INT8) เพื่อเพิ่มโทเค็นต่อวินาทีต่อดอลลาร์ให้สูงสุด ประการที่สาม จับคู่รูปแบบการคิดค่าบริการและความพร้อมใช้งานกับรูปแบบของคุณ: ออนดีมานด์พร้อมการคิดค่าบริการละเอียดสำหรับจุดเชื่อมต่อสด, ความจุที่ขัดจังหวะได้สำหรับงานแบตช์ออฟไลน์ ใช้ตารางสดสำหรับอัตราปัจจุบัน เนื่องจากราคาต่อชั่วโมงเปลี่ยนแปลงตามความต้องการและความขาดแคลนและแตกต่างกันตามผู้ให้บริการ; กฎที่มั่นคงคือการ์ดที่ถูกที่สุดที่พอดีกับโมเดลและจราจรของคุณอย่างสบายมักจะชนะ ไม่ใช่การ์ดที่ทรงพลังที่สุดที่มีอยู่
คำถามที่พบบ่อย
ฉันต้องใช้หน่วยความจำ GPU เท่าไรในการให้บริการโมเดลสำหรับการอนุมาน?
วางแผนสำหรับน้ำหนักโมเดลบวกกับแคชคีย์-ค่า ในแบบ 16 บิต น้ำหนักต้องใช้ประมาณสองไบต์ต่อพารามิเตอร์ และการควอนไทซ์เป็น 8 บิตหรือ 4 บิตจะลดขนาดนี้อย่างมาก จากนั้นเพิ่มพื้นที่ว่างสำหรับแคช KV ซึ่งเพิ่มขึ้นตามขนาดแบตช์และความยาวบริบท กรองรายการข้างต้นตาม VRAM และเลือกการ์ดที่พอดีกับโมเดลพร้อมพื้นที่เหลือเพื่อให้ความพร้อมใช้งานพร้อมกันไม่ทำให้หน่วยความจำเต็ม
GPU ราคาถูกพอสำหรับการอนุมานหรือฉันต้องการการ์ดเรือธง?
สำหรับงานให้บริการหลายอย่าง การ์ดระดับกลางมักมีความคุ้มค่ากว่า การสร้างโทเค็นถูกจำกัดด้วยแบนด์วิดท์หน่วยความจำมากกว่าความสามารถการคำนวณสูงสุด FLOPs ของเรือธงจึงมักถูกใช้งานน้อย หากโมเดลของคุณพอดีกับ VRAM ของการ์ดที่เล็กกว่าและสแต็คการให้บริการที่ปรับแต่งแล้วทำให้ GPU ทำงานเต็มที่ คุณมักจะได้ต้นทุนต่อโทเค็นที่ดีกว่าการเช่าตัวเลือกที่แพงที่สุด
ฉันควรใช้อินสแตนซ์แบบสปอตหรือแบบขัดจังหวะสำหรับการอนุมานหรือไม่?
ขึ้นอยู่กับรูปแบบ การอนุมานแบบแบตช์ออฟไลน์ทนต่อการขัดจังหวะได้ดี เพราะคุณสามารถเริ่มคิวใหม่ได้ ทำให้ความจุแบบสปอตราคาถูกน่าสนใจ จุดเชื่อมต่อแบบเรียลไทม์ที่ผู้ใช้เห็นโดยทั่วไปต้องการความจุแบบออนดีมานด์ที่รับประกันได้ เพราะถ้าอินสแตนซ์ถูกยึดคืนกลางคำขอจะทำให้เกิดความล้มเหลวและทำลายการรับประกันความหน่วงเวลา
อะไรทำให้การคิดค่าบริการการอนุมานแตกต่างจากการคิดค่าบริการการฝึก?
การฝึกเป็นงานที่จำกัดและจำกัดด้วยปริมาณข้อมูล ในขณะที่การอนุมานทำงานอย่างต่อเนื่องและมักว่างงานระหว่างช่วงจราจรสูง นั่นทำให้การคิดค่าบริการแบบวินาที การจัดเตรียมที่รวดเร็ว การปรับขนาดเป็นศูนย์ และค่าธรรมเนียมการส่งข้อมูลออกที่คาดการณ์ได้มีความสำคัญมากกว่าสำหรับการให้บริการมากกว่าการฝึกแบบครั้งเดียว ให้พิจารณาฟีเจอร์ของแพลตฟอร์มเหล่านี้ในการเปรียบเทียบข้างต้นควบคู่ไปกับอัตราค่า GPU ต่อชั่วโมงดิบ