ความต้องการหน่วยความจำของ GPU รวมถึงข้อมูลและน้ำหนักที่ใช้งานอยู่ ผลลัพธ์ระดับกลาง พื้นที่ทำงานขณะรัน และแคชที่ขึ้นอยู่กับปริมาณงาน วัดการใช้งานสูงสุดที่ความแม่นยำ ขนาดแบตช์ และการทำงานพร้อมกันตามที่ตั้งใจ ขนาดโมเดลที่บันทึกไว้เป็นเพียงข้อมูลนำเข้าส่วนหนึ่งเท่านั้น
เลือกภาระงานก่อนเลือก GPU
ข้อกำหนดของ GPU จะมีประโยชน์เมื่อคุณรู้จักซอฟต์แวร์และงานที่มันจะทำ การเรนเดอร์ การประมวลผลภาพ การฝึกโมเดล และการอนุมานมีรูปแบบการใช้หน่วยความจำและการประมวลผลที่แตกต่างกัน ตรวจสอบสถาปัตยกรรม GPU ไดรเวอร์ และรันไทม์ที่แอปพลิเคชันรองรับก่อนเปรียบเทียบความจุ การ์ดที่มีหน่วยความจำเพียงพออาจยังไม่เหมาะสมหากเส้นทางซอฟต์แวร์หรือฟีเจอร์ที่จำเป็นไม่ได้รับการรองรับ
อธิบายขนาดอินพุตสูงสุด ความแม่นยำ ขนาดแบตช์ และงานที่ทำพร้อมกันสูงสุดที่คุณตั้งใจจะอนุญาต สำหรับการอนุมาน ให้รวมคำขอที่ยาวที่สุดที่รองรับและเซสชันที่ทำงานพร้อมกัน สำหรับการเรนเดอร์ ให้รวมฉากและเท็กซ์เจอร์ที่เป็นตัวแทน การสาธิตขนาดเล็กที่สำเร็จเป็นหลักฐานว่าสแตกสามารถเริ่มต้นได้ แต่ไม่ใช่หลักฐานว่าปริมาณงานจริงทั้งหมดจะพอดี
แยกข้อมูลถาวรออกจากหน่วยความจำทำงาน
น้ำหนักหรือสินทรัพย์อินพุตอาจคงอยู่ในอุปกรณ์ ขณะที่ผลลัพธ์ระดับกลางและบัฟเฟอร์ชั่วคราวปรากฏขึ้นระหว่างการทำงาน การฝึกโมเดลอาจต้องใช้เกรเดียนต์และสถานะของออปติไมเซอร์เพิ่มเติม ปริมาณงานการอนุมานอาจเก็บแคชที่มีขนาดเปลี่ยนไปตามคำขอ การจัดวางที่แน่นอนขึ้นอยู่กับโมเดล เฟรมเวิร์ก และการนำไปใช้ อย่าใช้ตัวคูณสากลตัวเดียวกับทุกงานแล้วถือว่าเป็นการรับประกันความจุ
ตัวอย่างการคำนวณอย่างง่าย โมเดลสมมติที่มีเจ็ดพันล้านพารามิเตอร์ซึ่งแทนด้วยสองไบต์ต่อพารามิเตอร์ต้องใช้ประมาณหนึ่งหมื่นสี่พันล้านไบต์สำหรับพารามิเตอร์เหล่านั้นเพียงอย่างเดียว การคำนวณนี้ไม่รวมการจัดสรรขณะรัน แอคติเวชัน แคช และโอเวอร์เฮดของรูปแบบ เป็นตัวอย่างการวางแผนระดับพื้นฐาน ไม่ใช่ข้อความว่าปริมาณงานดังกล่าวจะพอดีกับการกำหนดค่า SwissOctet ใดโดยเฉพาะ
| องค์ประกอบหน่วยความจำ | สิ่งที่ทำให้เปลี่ยน | วิธีตรวจสอบ |
|---|---|---|
| น้ำหนักหรือสินทรัพย์ฉาก | ขนาดโมเดล การแทนค่า และสินทรัพย์ที่โหลด | ตรวจสอบรูปแบบที่ติดตั้งและการจัดสรรที่โหลดจริง |
| ผลลัพธ์ระดับกลาง | รูปร่างอินพุตและขนาดแบตช์ | วัดการทำงานเต็มรูปแบบที่เป็นตัวแทน |
| แคช | ความยาวคำขอและการทำงานพร้อมกัน | ทดสอบปริมาณงานสูงสุดที่รองรับ |
| พื้นที่ทำงานและรันไทม์ | ไลบรารี เคอร์เนล และกลยุทธ์การทำงาน | สังเกตการใช้งานอุปกรณ์และเฟรมเวิร์กสูงสุด |
วัดการใช้งานสูงสุดผ่านมุมมองที่ถูกต้อง
เมตริกของเฟรมเวิร์กและเมตริกระดับอุปกรณ์อาจอธิบายสิ่งที่แตกต่างกัน PyTorch แยกหน่วยความจำที่จัดสรรให้เทนเซอร์ออกจากหน่วยความจำที่ตัวจัดสรรแบบแคชสงวนไว้ และมีมาตรวัดค่าสูงสุด เอกสารการแสดงภาพหน่วยความจำยังอธิบายว่าการจัดสรรที่ทำนอกตัวจัดสรรอาจไม่ปรากฏในมุมมองนั้น เปรียบเทียบรายงานของเฟรมเวิร์กกับสถานะอุปกรณ์ในภาพรวม แทนที่จะสมมติว่าตัวเลขเดียวครอบคลุมการจัดสรรทั้งหมด
อุ่นเครื่องการทำงานจริง แล้ววัดงานทั้งหมดและการทับซ้อนจริงระหว่างงาน บันทึกเวอร์ชันซอฟต์แวร์และเงื่อนไขอินพุตที่แน่นอน เหตุการณ์หน่วยความจำไม่พออาจเกิดขึ้นที่จุดสูงสุดชั่วคราว ดังนั้นภาพรวมสุดท้ายที่นิ่งอาจพลาดปัญหาได้ เก็บข้อมูลวินิจฉัยไว้เป็นส่วนตัวเมื่ออาจมีรายละเอียดโมเดลหรือข้อมูลเกี่ยวกับอินพุตของแอปพลิเคชัน
ถือ batch size และความแม่นยำเป็นตัวเลือกการออกแบบ
แบตช์ที่ใหญ่ขึ้นสามารถเปลี่ยนทั้งอัตราการใช้งานและความต้องการหน่วยความจำ คำแนะนำด้านประสิทธิภาพของ NVIDIA อภิปรายปฏิสัมพันธ์ระหว่างรูปร่างการทำงาน ความเข้มข้นทางคณิตศาสตร์ และความสามารถของฮาร์ดแวร์ ขนาดแบตช์ที่มีประโยชน์ขึ้นอยู่กับเป้าหมายความหน่วงของปริมาณงานเช่นเดียวกับปริมาณงานต่อหน่วยเวลา นโยบายแบตช์ที่เพิ่มงานที่เสร็จต่อวินาทีสูงสุดอาจทำให้ผู้ใช้แต่ละรายรอนานกว่าที่แอปพลิเคชันอนุญาต
ความแม่นยำที่ลดลงหรือการควอนไทซ์สามารถลดความต้องการหน่วยความจำบางส่วนได้ แต่ความเข้ากันได้และคุณภาพผลลัพธ์ต้องทดสอบ เก็บชุดข้อมูลประเมินและเปรียบเทียบผลลัพธ์ที่เกี่ยวข้องหลังเปลี่ยนรูปแบบ อย่าเปลี่ยนการแทนค่าโมเดลเพียงเพื่อให้พอดีโดยไม่ตรวจสอบพฤติกรรมที่โครงการพึ่งพา การปรับหน่วยความจำควรคงผลลัพธ์ที่ต้องการไว้ ไม่ใช่เพียงหลีกเลี่ยงข้อผิดพลาดการจัดสรร
รวมส่วนที่เหลือของเครื่องไว้ในงบประมาณ
CPU โฮสต์ RAM และเส้นทางจัดเก็บเตรียมและป้อนงานให้ GPU การถอดรหัสอินพุตที่ช้าหรือหน่วยความจำโฮสต์ไม่เพียงพออาจทำให้ตัวเร่งรออยู่ ไฟล์โมเดลและชุดข้อมูลขนาดใหญ่ยังต้องมีพื้นที่ดิสก์เพียงพอสำหรับการติดตั้ง การแปลงชั่วคราว และการอัปเดต ประเมินไปป์ไลน์ทั้งหมดแทนที่จะซื้อ GPU แล้วคาดว่าทุกขั้นตอนก่อนหน้าจะเร็วขึ้น
GPU หลายตัวไม่ได้ทำงานเป็นอุปกรณ์หน่วยความจำรวมเดียวโดยอัตโนมัติ แอปพลิเคชันต้องใช้กลยุทธ์แบบขนานที่เหมาะสม และโอเวอร์เฮดการสื่อสารอาจมีผล ยืนยันว่ามีอุปกรณ์กี่ตัว หน่วยความจำของแต่ละตัว และการจัดวางที่ซอฟต์แวร์รองรับ รายการชื่อการอัปเกรด GPU ไม่ใช่คำอธิบายที่ตรวจสอบแล้วของหน่วยความจำที่พร้อมใช้กับโปรเซสเดียวที่ไม่ดัดแปลง
ใช้การทดสอบการยอมรับที่เป็นตัวแทน
กำหนดการทดสอบด้วยสแตกซอฟต์แวร์ที่เลือก อินพุตสูงสุดที่คาดหวัง และการทำงานพร้อมกันที่อนุญาต วัดหน่วยความจำสูงสุด เวลาที่เสร็จ ข้อผิดพลาด และคุณภาพของผลลัพธ์ เผื่อพื้นที่ว่างสำหรับความแปรปรวนปกติของรันไทม์และการบำรุงรักษา โดยปริมาณที่เผื่อไว้ต้องมีเหตุผลจากการสังเกต หากปริมาณงานไม่พอดี ให้ตัดสินใจว่าจะลดการทำงานพร้อมกัน เปลี่ยนการนำไปใช้ หรือเลือกฮาร์ดแวร์อื่น
Tensor GPU นำเสนอตัวเลือกที่เกี่ยวข้องกับ GPU ในแค็ตตาล็อก SwissOctet ยืนยันอุปกรณ์ที่แน่นอน VRAM ต่ออุปกรณ์ ความเข้ากันได้ของไดรเวอร์ และการกำหนดค่าที่เลือกก่อนพึ่งพา เว็บไซต์ไม่ได้ให้การรับประกันความพอดีเฉพาะแอปพลิเคชัน การทดสอบการยอมรับที่มีเอกสารประกอบเชื่อมโยงรายละเอียดฮาร์ดแวร์เหล่านั้นกับงานที่คุณต้องการให้เครื่องทำ
รายการตรวจสอบปฏิบัติของคุณ
- ยืนยันสถาปัตยกรรม GPU และรันไทม์ที่รองรับ
- จัดงบน้ำหนัก ผลลัพธ์ระดับกลาง แคช และพื้นที่ทำงาน
- วัดค่าสูงสุดที่อินพุตสูงสุดที่ตั้งใจและการทำงานพร้อมกัน
- เปรียบเทียบมุมมองหน่วยความจำของเฟรมเวิร์กและระดับอุปกรณ์
- ตรวจสอบผลลัพธ์หลังเปลี่ยนความแม่นยำหรือรูปแบบ
- ยืนยัน VRAM ต่ออุปกรณ์ที่แน่นอนก่อนสั่งซื้อ
รายละเอียดที่สำคัญ
ขนาดโมเดลที่บันทึกไว้เท่ากับความต้องการ VRAM หรือไม่+
ไม่ใช่ การทำงานเพิ่มผลลัพธ์ระดับกลาง พื้นที่ทำงาน แคช และการจัดสรรอื่น ๆ ขณะที่รูปแบบการจัดเก็บอาจแตกต่างจากการแทนค่าในหน่วยความจำ
การเพิ่ม GPU ตัวที่สองจะเพิ่มหน่วยความจำที่ใช้ได้เป็นสองเท่าโดยอัตโนมัติหรือไม่+
ไม่ใช่ แอปพลิเคชันต้องใช้กลยุทธ์แบบขนานที่เหมาะสม ขีดจำกัดต่ออุปกรณ์และพฤติกรรมการสื่อสารยังคงมีผล
ความแม่นยำที่ลดลงสามารถแก้ปัญหาหน่วยความจำไม่พอได้เสมอหรือไม่+
ไม่ใช่ อาจลดการจัดสรรบางส่วนได้ แต่การรองรับ บัฟเฟอร์ที่เหลือ และคุณภาพผลลัพธ์ที่ยอมรับได้ต้องทดสอบ
ไปที่ต้นทาง
แหล่งอ้างอิงเหล่านี้สนับสนุนแนวคิดทางเทคนิคในคู่มือนี้ ปฏิบัติตามเอกสารปัจจุบันก่อนเปลี่ยนระบบโปรดักชัน
- NVIDIA: เริ่มต้นกับประสิทธิภาพการเรียนรู้เชิงลึก docs.nvidia.com
- PyTorch: ทำความเข้าใจการใช้หน่วยความจำ CUDA docs.pytorch.org
- PyTorch: การจัดการหน่วยความจำ CUDA docs.pytorch.org
คำแนะนำด้านบรรณาธิการโดย SwissOctet ตัวอย่างมีไว้เพื่อประกอบ ข้อมูลจำเพาะของบริการ ตัวเลือกที่มี และเงื่อนไขตามสัญญาต้องได้รับการตรวจสอบแยกต่างหาก