- 4 ปัจจัยที่ทำให้ Nvidia เพิ่มประสิทธิภาพ GPU ได้ 1,000 เท่าในช่วง 10 ปี
- Bill Dally หัวหน้านักวิทยาศาสตร์ อธิบายเรื่องนี้ด้วยสไลด์เพียงหน้าเดียวในคีย์โน้ตของ IEEE Hot Chips 2023
Number Representation: 16 เท่า
- "โดยรวมแล้ว ประโยชน์ที่ใหญ่ที่สุดที่เราได้รับคือการปรับปรุงการแทนค่าตัวเลข"
- ตัวเลขเหล่านี้หมายถึงพารามิเตอร์หลักของโครงข่ายประสาทเทียม
- ในบรรดาพารามิเตอร์เหล่านี้ ตัวหนึ่งคือค่าน้ำหนัก (Weights) และอีกตัวหนึ่งคือค่าแอ็กทิเวชัน (Activations)
- ค่าน้ำหนัก: ความแรงของการเชื่อมต่อระหว่างนิวรอนในโมเดล
- ค่าแอ็กทิเวชัน: การนำผลรวมของอินพุตที่ผ่านการถ่วงน้ำหนักในนิวรอนมาคำนวณเพื่อกำหนดว่าจะถูกกระตุ้นหรือไม่ และส่งต่อข้อมูลไปยังเลเยอร์ถัดไป
- ก่อน P100 GPU ของ Nvidia ใช้ตัวเลขแบบ single precision floating-point เพื่อแทนค่าน้ำหนักเหล่านี้
- ตัวเลขชนิดนี้ถูกกำหนดโดยมาตรฐาน IEEE 754 มีความยาว 32 บิต โดย 23 บิตใช้แทนเศษส่วน 8 บิตทำหน้าที่เป็นเลขชี้กำลังของเศษส่วน และ 1 บิตใช้เป็นเครื่องหมายของตัวเลข
- แต่นักวิจัยแมชชีนเลิร์นนิงค้นพบว่าสามารถใช้ตัวเลขที่แม่นยำน้อยลงในการคำนวณหลายอย่างได้ และโครงข่ายประสาทเทียมก็ยังให้คำตอบที่ถูกต้องได้อยู่
- เมื่อประมวลผลด้วยจำนวนบิตที่น้อยลง ก็สามารถทำให้ลอจิกที่ใช้สำหรับการคำนวณหลักของแมชชีนเลิร์นนิง (การคูณและการสะสมค่า) มีขนาดเล็กลงและมีประสิทธิภาพมากขึ้น
- พลังงานที่ต้องใช้ในการคูณแปรผันตามกำลังสองของจำนวนบิต
- ดังนั้น Nvidia จึงใช้ FP16 ใน P100 เพื่อลดจำนวนดังกล่าวลงครึ่งหนึ่ง ขณะที่ Google ก็ออกเวอร์ชันของตัวเองชื่อ bfloat16
- ความแตกต่างระหว่างทั้งสองคือสัดส่วนของจำนวนบิตในส่วนเศษที่ให้ความแม่นยำ กับบิตของเลขชี้กำลังที่ให้ช่วงของค่า
- bfloat16 มีจำนวนบิตของเลขชี้กำลังเท่ากับ FP32 จึงแปลงไปมาระหว่างสองฟอร์แมตนี้ได้ง่าย
- ปัจจุบัน GPU รุ่นล่าสุดอย่าง H100 สามารถใช้ตัวเลข 8 บิตเพื่อประมวลผลบางส่วนของโครงข่ายทรานส์ฟอร์เมอร์ขนาดใหญ่ เช่น ChatGPT และ LLM อื่น ๆ
- แต่ Nvidia พบว่านี่ไม่ใช่โซลูชันแบบ one-size-fits-all ที่ใช้ได้กับทุกกรณี
- ตัวอย่างเช่น สถาปัตยกรรม GPU Hopper ของ Nvidia ใช้ FP8 อยู่จริงถึง 2 ฟอร์แมตในการคำนวณ
- แบบหนึ่งมีความแม่นยำสูงกว่าเล็กน้อย อีกแบบหนึ่งมีช่วงค่ากว้างกว่าเล็กน้อย
- เคล็ดลับพิเศษของ Nvidia คือ รู้ว่าควรใช้ฟอร์แมตไหนเมื่อไร
- Dally และทีมของเขามีไอเดียน่าสนใจมากมายในการรีดประสิทธิภาพ AI ให้ได้มากขึ้นจากบิตที่น้อยลง
- และชัดเจนว่าระบบ floating-point ยังไม่ใช่สิ่งที่เหมาะสมที่สุด
- ปัญหาหลักอย่างหนึ่งคือความแม่นยำของ floating-point ค่อนข้างคงที่ ไม่ว่าตัวเลขจะใหญ่หรือเล็ก
- แต่พารามิเตอร์ของโครงข่ายประสาทเทียมไม่ได้ใช้ตัวเลขขนาดใหญ่มาก และมักกระจุกตัวอยู่รอบ 0
- ดังนั้นจุดโฟกัสด้าน R&D ของ Nvidia คือการหาวิธีที่มีประสิทธิภาพในการแทนค่าตัวเลขให้แม่นยำมากขึ้นเมื่ออยู่ใกล้ 0
Complex Instructions: 12.5 เท่า
- "โอเวอร์เฮดในการดึงและถอดรหัสคำสั่งสูงกว่าการทำงานเลขคณิตง่าย ๆ หลายเท่า"
- ตัวอย่างเช่น การคูณอย่างหนึ่งมีโอเวอร์เฮดสูงถึง 20 เท่าของพลังงาน 1.5 picojoules ที่ใช้กับตัวการคำนวณเอง
- Nvidia ได้ประโยชน์อย่างมากจากการออกแบบ GPU ให้ทำการคำนวณขนาดใหญ่ด้วยคำสั่งเดียว แทนที่จะเป็นชุดของคำสั่ง
- แม้ยังมีโอเวอร์เฮดอยู่ แต่การใช้คำสั่งที่ซับซ้อนช่วยกระจายต้นทุนนี้ไปกับงานคณิตศาสตร์ที่มากขึ้นได้
- ตัวอย่างเช่น โอเวอร์เฮดของคำสั่งซับซ้อนอย่าง IMMA (integer matrix multiply and accumulate, การคูณและสะสมค่าเมทริกซ์จำนวนเต็ม) คิดเป็นเพียง 16% ของต้นทุนพลังงานด้านคณิตศาสตร์
Moore’s Law: 2.5 เท่า
- การรักษาความก้าวหน้าตามกฎของมัวร์ต้องอาศัยการลงทุนระดับหลายพันล้านดอลลาร์ งานวิศวกรรมที่ซับซ้อนมาก และความไม่แน่นอนระหว่างประเทศอีกมากมาย
- อย่างไรก็ตาม นี่ก็เป็นส่วนหนึ่งของการเพิ่มประสิทธิภาพ GPU ของ Nvidia
- Nvidia ใช้เทคโนโลยีการผลิตที่ล้ำหน้าที่สุดมาโดยตลอด
- H100 ผลิตด้วยกระบวนการ N5 (5 นาโนเมตร) ของ TSMC และโรงงานรับจ้างผลิตชิปเพิ่งเริ่มการผลิตระยะแรกของ N3 รุ่นถัดไปในช่วงปลายปี 2022 เท่านั้น
Sparsity: 2 เท่า
- หลังการฝึก มักยังมีนิวรอนจำนวนมากในโครงข่ายประสาทเทียมที่ไม่ควรมีอยู่ตั้งแต่แรก
- สำหรับโครงข่ายบางประเภท "แม้จะลบนิวรอนออกมากกว่าครึ่งหนึ่งก็อาจไม่สูญเสียความแม่นยำ"
- ค่าน้ำหนักของนิวรอนเหล่านี้เป็น 0 หรือเกือบ 0 จึงไม่ส่งผลต่อเอาต์พุต และการรวมมันไว้ในการคำนวณก็เป็นเพียงการสิ้นเปลืองเวลาและพลังงาน
- การทำให้เครือข่ายเหล่านี้เป็นแบบ "Sparse" เพื่อลดภาระการคำนวณเป็นงานที่ค่อนข้างยาก
- แต่ผ่าน A100 ซึ่งเป็นรุ่นก่อนหน้าของ H100 นั้น Nvidia ได้เพิ่มความสามารถที่เรียกว่า Structured Sparsity
- ฮาร์ดแวร์นี้สามารถบังคับให้เกิดเหตุการณ์การตัดทิ้งที่เป็นไปได้ 2 จาก 4 รายการ เพื่อให้ต่อยอดไปสู่การคำนวณเมทริกซ์ใหม่ที่มีขนาดเล็กลงได้
- "ปัญหาเรื่อง sparsity ยังไม่จบ" "เราจำเป็นต้องทำอะไรบางอย่างกับ activations และเรายังสามารถเพิ่ม sparsity ในส่วนของ weights ได้อีก"
6 ความคิดเห็น
โอ้ ขอบคุณสำหรับบทความดีๆ!
อ่านได้เพลินมากครับ
ว้าว ต้องซื้อต่อไปอีก..
ผมมีหุ้น Nvidia อยู่บ้างที่ซื้อติดไม้ติดมือไว้ตั้งแต่ปี 2018 ตอนนี้ขึ้นมา 1100% แล้ว ตอนนั้นน่าจะซื้อเยอะ ๆ หน่อย ฮือ
ว้าว..!
16 x 12.5 x 2.5 x 2 ก็ได้ 1000 พอดีเลยนะ