GPU คลาวด์ที่ดีที่สุดสำหรับการปรับแต่ง LLMs
การปรับแต่งโมเดลภาษาขนาดใหญ่ด้วยเทคนิคเช่น LoRA และ QLoRA ต้องใช้ GPU ที่มี VRAM เพียงพอสำหรับเก็บน้ำหนักโมเดลและสถานะของตัวปรับแต่ง GPU เดียวที่มี VRAM 24-80GB มักเพียงพอสำหรับการปรับแต่งที่มีประสิทธิภาพด้านพารามิเตอร์ ทำให้สามารถเข้าถึงได้ในราคาที่ต่ำกว่าการฝึกสอนเต็มรูปแบบ คู่มือนี้เน้นผู้ให้บริการ GPU คลาวด์ที่เหมาะสมกับเวิร์กโฟลว์การปรับแต่งโดยพิจารณาจาก VRAM ราคา และการรองรับเฟรมเวิร์ก
ยังไม่พบผู้ให้บริการ GPU ที่ตรงกับคำแนะนำนี้ กรุณาตรวจสอบใหม่เร็วๆ นี้
สิ่งที่การปรับแต่งแบบละเอียดต้องการจาก GPU เช่า
การปรับแต่งแบบละเอียดคือการนำโมเดลที่ผ่านการฝึกมาแล้วมาฝึกต่อบนชุดข้อมูลที่แคบลงเพื่อให้โมเดลปรับตัวเข้ากับโดเมน โทนเสียง หรือภารกิจของคุณ เมื่อเทียบกับการฝึกโมเดลตั้งแต่ต้น ค่าใช้จ่ายด้านการคำนวณจะน้อยกว่าอย่างมาก แต่ข้อกำหนดด้านหน่วยความจำและกระบวนการทำงานยังคงเฉพาะเจาะจงมาก ข้อจำกัดที่ใหญ่ที่สุดคือ หน่วยความจำวิดีโอ (VRAM) เพราะในระหว่างการปรับแต่งแบบละเอียด GPU ต้องเก็บน้ำหนักโมเดล กราดิเอนต์ สถานะของออปติไมเซอร์ และหน่วยความจำแอคติเวชันสำหรับชุดข้อมูลทั้งหมดพร้อมกัน รอยเท้ารวมนี้ ไม่ใช่เพียงแค่เทราฟลอปส์ดิบ มักเป็นตัวกำหนดว่างานนั้นจะพอดีกับการ์ดที่คุณเช่าจากการเปรียบเทียบข้างต้นหรือไม่
ความหนักของรอยเท้านั้นขึ้นอยู่กับวิธีการปรับแต่งแบบละเอียดที่คุณเลือก:
- การปรับแต่งแบบละเอียดเต็มรูปแบบ จะอัปเดตน้ำหนักทุกตัวและเป็นตัวเลือกที่ใช้หน่วยความจำมากที่สุด กฎคร่าวๆ คือคุณต้องการหน่วยความจำ VRAM หลายเท่าของจำนวนพารามิเตอร์ของโมเดลในหน่วยไบต์เมื่อรวมสถานะของออปติไมเซอร์แล้ว ซึ่งเป็นเหตุผลที่การปรับแต่งแบบละเอียดเต็มรูปแบบของโมเดลภาษาขนาดใหญ่โดยทั่วไปจะถูกผลักดันไปยังโหนดหลาย GPU
- LoRA และ QLoRA จะล็อกน้ำหนักฐานและฝึกอะแดปเตอร์ขนาดเล็กที่มีอันดับต่ำ ช่วยลดหน่วยความจำที่ต้องใช้สำหรับกราดิเอนต์และสถานะของออปติไมเซอร์ QLoRA ยังโหลดโมเดลฐานที่ถูกล็อกในรูปแบบควอนไทซ์ 4 บิต ดังนั้นโมเดลที่ปกติจะต้องใช้โหนดหลาย GPU มักจะสามารถปรับแต่งแบบละเอียดบนการ์ด VRAM สูงใบเดียวได้
- วิธีการที่ประหยัดพารามิเตอร์โดยทั่วไป (อะแดปเตอร์, การปรับแต่งพรีฟิกซ์) แลกกับความแม่นยำที่ลดลงเล็กน้อยเพื่อแลกกับข้อกำหนดฮาร์ดแวร์ที่ต่ำลงอย่างมาก และนี่คือเหตุผลที่การปรับแต่งแบบละเอียดที่ใช้งานได้จริงจำนวนมากทำบน GPU เช่าระดับกลางแทนที่จะใช้ตัวเร่งความเร็วชั้นนำ
การจับคู่การ์ดกับงาน
เนื่องจากกำแพงหน่วยความจำเป็นปัจจัยหลัก วิธีที่มีประโยชน์ที่สุดในการอ่านการเปรียบเทียบข้างต้นคือเริ่มจากโมเดลที่ใหญ่ที่สุดที่คุณตั้งใจจะปรับแต่งและวิธีที่คุณจะใช้ จากนั้นย้อนกลับไปยัง VRAM
- GPU เดี่ยวที่มี VRAM สูง (การ์ดศูนย์ข้อมูลที่มีพูล HBM ขนาดใหญ่): เหมาะสำหรับ LoRA และ QLoRA บนโมเดลภาษาและโมเดลวิชันขนาดกลาง รวมถึงการปรับแต่งแบบละเอียดของโมเดลกระจายส่วนใหญ่ นี่คือจุดที่เหมาะสมสำหรับงานอะแดปเตอร์ที่ต้องการความคุ้มค่า
- โหนดหลาย GPU ที่มี NVLink หรือการเชื่อมต่อความเร็วสูงเทียบเท่า: จำเป็นสำหรับการปรับแต่งแบบละเอียดเต็มรูปแบบของโมเดลขนาดใหญ่กว่า ซึ่งน้ำหนักและสถานะของออปติไมเซอร์จะถูกแบ่งชิ้นส่วนข้ามการ์ดโดยใช้เทคนิคเช่น ZeRO/FSDP ที่นี่ แบนด์วิดท์ระหว่าง GPUมีความสำคัญเท่ากับ VRAM ต่อการ์ด เพราะการฝึกแบบแบ่งชิ้นส่วนต้องแลกเปลี่ยนกราดิเอนต์อย่างต่อเนื่อง โหนดที่มีโครงข่ายความเร็วสูงจะช่วยให้ GPU ทำงานได้เต็มที่ ในขณะที่ลิงก์ PCIe เพียงอย่างเดียวอาจเป็นคอขวด
- การ์ดสำหรับผู้บริโภคที่ใช้หน่วยความจำ GDDR: เหมาะสำหรับโมเดลขนาดเล็กและการทดลอง QLoRA ที่มีงบประมาณจำกัด แต่เพดาน VRAM ที่ต่ำกว่าและการขาดการเชื่อมต่อหลาย GPU ที่รวดเร็วทำให้ไม่เหมาะสมเมื่อการทำงานเดียวไม่พอดีกับการ์ดใบเดียว
การรองรับความแม่นยำเป็นรายละเอียดฮาร์ดแวร์อีกอย่างที่ควรตรวจสอบ การปรับแต่งแบบละเอียดสมัยใหม่เน้นการใช้ BF16 และ FP16 แบบความแม่นยำผสม และวิธีควอนไทซ์จะใช้เคอร์เนล INT8/4 บิต การ์ดที่มีการสนับสนุนเทนเซอร์คอร์สำหรับฟอร์แมตเหล่านี้อย่างเต็มที่จะปรับแต่งได้เร็วขึ้นอย่างมีนัยสำคัญและช่วยให้คุณใส่ชุดข้อมูลขนาดใหญ่กว่าได้มากกว่าฮาร์ดแวร์รุ่นเก่าที่ต้องใช้เส้นทางที่มีประสิทธิภาพต่ำกว่า
ฟีเจอร์ของผู้ให้บริการที่ทำให้การปรับแต่งแบบละเอียดสำเร็จหรือล้มเหลว
การปรับแต่งแบบละเอียดเป็นกระบวนการวนซ้ำ: คุณลองการตั้งค่า ดูกราฟการสูญเสีย ปรับไฮเปอร์พารามิเตอร์ และรันใหม่ จังหวะนี้ทำให้ฟีเจอร์บางอย่างของผู้ให้บริการมีความสำคัญมากกว่าการทำอินเฟอเรนซ์ครั้งเดียว
- การจัดเก็บข้อมูลถาวรและการโหลดข้อมูลที่รวดเร็ว: ชุดข้อมูล แคชโทไคไนเซอร์ และจุดตรวจสอบต้องอยู่รอดระหว่างเซสชัน ผู้ให้บริการที่บังคับให้คุณอัปโหลดชุดข้อมูลขนาดใหญ่ใหม่ทุกครั้งจะทำให้เสียเงินโดยเปล่าประโยชน์ ตรวจสอบว่าการจัดเก็บข้อมูลยังคงอยู่เมื่ออินสแตนซ์หยุดทำงานและวิธีการคิดค่าบริการการส่งข้อมูลออก
- การบันทึกจุดตรวจสอบและความสามารถในการหยุดชั่วคราว: การรันการปรับแต่งแบบละเอียดที่ใช้เวลาหลายชั่วโมงจะได้ประโยชน์จากการเขียนจุดตรวจสอบบ่อยครั้ง ซึ่งทำให้ อินสแตนซ์แบบสปอตหรือแบบหยุดชั่วคราว ที่ราคาถูกกว่าสามารถใช้งานได้ หากโค้ดของคุณสามารถเริ่มต้นใหม่จากจุดตรวจสอบล่าสุดได้อย่างสะอาด การหยุดชะงักจะเสียเวลาเป็นนาที ไม่ใช่ทั้งการรัน
- ความละเอียดในการคิดค่าบริการ: การคิดค่าบริการแบบวินาทีหรือแบบนาทีจะตอบแทนการทำงานแบบหยุด-เริ่มของการทดลอง ซึ่งคุณอาจว่างในขณะที่ตรวจสอบผลลัพธ์ การคิดค่าบริการแบบรายชั่วโมงจะทำให้การทำงานแบบนี้เสียเปรียบ
- การควบคุมสภาพแวดล้อม: การเข้าถึง SSH, อิมเมจ Docker และโน้ตบุ๊ก Jupyter ช่วยให้คุณกำหนดเวอร์ชันของเฟรมเวิร์กและ CUDA ได้อย่างแม่นยำ ซึ่งสำคัญเพราะไลบรารีควอนไทซ์และ PEFT มีความไวต่อเวอร์ชัน
- เครือข่ายหลายโหนด: หากคุณคาดหวังการปรับแต่งแบบละเอียดเต็มรูปแบบของโมเดลขนาดใหญ่ ให้ยืนยันว่าผู้ให้บริการมีโหนดที่มีการเชื่อมต่อภายในโหนดและระหว่างโหนดที่รวดเร็วจริง ไม่ใช่แค่จำนวน GPU ในกล่องเท่านั้น
การอ่านการเปรียบเทียบข้างต้นเพื่อดูค่าใช้จ่าย
งานปรับแต่งแบบละเอียดมักจะสั้นและเป็นช่วงๆ ไม่ได้ทำงานตลอดเวลา ดังนั้นกลยุทธ์การเช่าจึงแตกต่างจากการให้บริการอินเฟอเรนซ์ ราคาตามความต้องการช่วยให้คุณได้เซสชันที่รับประกันและไม่ถูกขัดจังหวะสำหรับการรันที่สำคัญ ขณะที่ความจุแบบสปอตและแบบหยุดชั่วคราวสามารถลดต้นทุนได้มากสำหรับการทดลองที่รองรับจุดตรวจสอบและสามารถเริ่มใหม่ได้ง่าย ตัวเร่งความเร็วชั้นนำอยู่ในช่วงราคาสูงสุดและมักหายาก ดังนั้นสำหรับการปรับแต่งแบบละเอียดด้วยอะแดปเตอร์ การ์ด VRAM สูงรุ่นเก่ากว่าจากรายการข้างต้นมักให้สัดส่วนต้นทุนต่อผลลัพธ์ที่ดีกว่า ใช้ตารางสำหรับราคาปัจจุบันและความพร้อมใช้งานเฉพาะผู้ให้บริการ ราคามีการเปลี่ยนแปลงบ่อยและแตกต่างกันตามภูมิภาคและประเภทอินสแตนซ์ ดังนั้นให้ถือว่าตัวเลขใดๆ ในที่นั้นเป็นแหล่งข้อมูลที่ถูกต้อง ณ ปัจจุบัน แทนที่จะพึ่งพาตัวเลขที่อ้างถึงในข้อความ
คำถามที่พบบ่อย
ฉันต้องการหน่วยความจำ GPU เท่าไรในการปรับแต่ง LLM?
ขึ้นอยู่กับขนาดโมเดลและวิธีการ QLoRA สามารถใส่โมเดลขนาดใหญ่อย่างน่าประหลาดใจบนการ์ด VRAM สูงใบเดียวเพราะโมเดลฐานที่ถูกล็อกจะถูกควอนไทซ์เป็น 4 บิต ในขณะที่การปรับแต่งแบบละเอียดเต็มรูปแบบของโมเดลเดียวกันอาจต้องใช้หน่วยความจำรวมของ GPU หลายใบสำหรับน้ำหนัก กราดิเอนต์ และสถานะของออปติไมเซอร์ เริ่มจากโมเดลเป้าหมายที่ใหญ่ที่สุดและวิธีที่เลือก จากนั้นเลือกการ์ดหรือโหนดจากการเปรียบเทียบข้างต้นที่มีพื้นที่เพียงพอสำหรับแอคติเวชันและขนาดชุดข้อมูล
GPU ใบเดียวพอไหม หรือฉันต้องใช้โหนดหลาย GPU?
สำหรับ LoRA และ QLoRA บนโมเดลขนาดเล็กถึงกลาง GPU เดี่ยวที่มี VRAM สูงมักเพียงพอ การปรับแต่งแบบละเอียดเต็มรูปแบบของโมเดลขนาดใหญ่ หรือการฝึกด้วยชุดข้อมูลขนาดใหญ่โดยทั่วไปต้องใช้โหนดหลาย GPU ที่มีการเชื่อมต่อความเร็วสูงเพื่อแลกเปลี่ยนน้ำหนักและกราดิเอนต์แบบแบ่งชิ้นส่วนโดยไม่เกิดคอขวด
ฉันสามารถใช้อินสแตนซ์แบบสปอตหรือแบบหยุดชั่วคราวที่ถูกกว่าในการปรับแต่งแบบละเอียดได้ไหม?
ได้ ตราบใดที่ลูปการฝึกของคุณบันทึกจุดตรวจสอบบ่อยและเริ่มต้นใหม่ได้อย่างสะอาด เพราะการรันการปรับแต่งแบบละเอียดสามารถเริ่มใหม่จากจุดตรวจสอบล่าสุดได้ การหยุดชะงักจึงเสียค่าใช้จ่ายเพียงงานตั้งแต่จุดตรวจสอบนั้น ซึ่งทำให้ความจุแบบสปอตเป็นวิธีที่มีประสิทธิภาพในการลดต้นทุนสำหรับการทดลองที่ไม่มีเส้นตายที่เข้มงวด
การปรับแต่งแบบละเอียดต้องใช้ฮาร์ดแวร์เหมือนกับการฝึกเต็มรูปแบบไหม?
ไม่ การปรับแต่งแบบละเอียด โดยเฉพาะวิธีที่ประหยัดพารามิเตอร์ ต้องการหน่วยความจำและการคำนวณน้อยกว่าการฝึกโมเดลตั้งแต่ต้นมาก ดังนั้นคุณมักจะเช่าการ์ดที่เล็กกว่าหรือเก่ากว่าที่การฝึกตั้งแต่ต้นต้องการ ตัวเร่งความเร็วชั้นนำมักเกินความจำเป็นสำหรับการปรับแต่งแบบละเอียดด้วยอะแดปเตอร์และเหมาะสำหรับการฝึกก่อนขนาดใหญ่