เรากําลังฝึกอบรมโมเดลภาษาสําหรับงานของเราอย่างต่อเนื่อง ทีมงานของเราใช้การ์ดวิดีโอที่แตกต่างกันหลายสิบใบที่เลือกสําหรับงานที่แตกต่างกัน: ที่ไหนสักแห่งที่เราต้องการสถานี DGX ที่ทรงพลัง และบางแห่งการ์ดเกมเก่าเช่น RTX 2080Ti ก็เพียงพอแล้ว การเลือก GPU ที่เหมาะสมที่สุดสําหรับการฝึกแบบจําลองอาจส่งผลกระทบอย่างมากต่อทั้งความเร็วและความคุ้มค่าของกระบวนการ
สิ่งที่น่าสนใจคือมีบทความบนอินเทอร์เน็ตค่อนข้างน้อยที่มีการเปรียบเทียบ GPU สําหรับการเรียนรู้ของเครื่อง แต่มีเพียงไม่กี่บทความที่เน้นเรื่องความเร็วสําหรับการฝึกอบรมโมเดลภาษา ส่วนใหญ่จะพบเฉพาะการทดสอบการอนุมานเท่านั้น เมื่อชิป H100 ใหม่เปิดตัว รายงานของ NVidia ระบุว่าในการฝึกซ้อมเร็วกว่า A100 ถึงเก้าเท่า แต่สําหรับงานของเรา การ์ดใหม่เร็วกว่าการ์ดเก่าเพียง 90% เท่านั้น จากการเปรียบเทียบ ผู้ให้บริการคลาวด์ของเรามีราคาที่แตกต่างกัน 2 เท่าระหว่าง GPU เหล่านี้ ดังนั้นจึงไม่มีประโยชน์ที่จะเปลี่ยนมาใช้ H100 ใหม่เพื่อประหยัดเงิน
นอกจากนั้น เรายังทําการทดสอบสถานี DGX ซึ่งประกอบด้วยการ์ดกราฟิก A100 80GB จํานวน 8 ใบ และราคา 10,000 ดอลลาร์ต่อเดือน หลังจากการทดสอบ เห็นได้ชัดว่าอัตราส่วนราคา/ประสิทธิภาพของสถานีนี้ไม่เหมาะกับเราเลย และสําหรับเงินจํานวนนี้ เราสามารถใช้ 66 x RTX 3090 ซึ่งโดยรวมแล้วจะมีประโยชน์มากกว่ามาก
โมเดลภาษาการแปลของเรามีพารามิเตอร์มากถึง 500 ล้านพารามิเตอร์ (โดยเฉลี่ย 100 ล้านถึง 300 ล้าน) เป็นไปได้ว่าหากเราเพิ่มจํานวนพารามิเตอร์อย่างมีนัยสําคัญ อัตราส่วนราคา/ประสิทธิภาพของ DGX จะดีขึ้น ปัจจุบันเราไม่ได้ฝึกโมเดลภาษาขนาดใหญ่ที่สามารถแปลระหว่างทุกภาษาได้ในทุกรูปแบบในคราวเดียวแต่ใช้โมเดลภาษาแยกกันในแต่ละคู่ภาษา เช่น อังกฤษ-เยอรมัน แต่ละรุ่นดังกล่าวมีความเร็วตั้งแต่ 120 ถึง 300 Mb
เป็นที่น่าสังเกตว่าภาษาต่างๆ มีข้อมูลบนอินเทอร์เน็ตในปริมาณที่แตกต่างกัน และในขณะเดียวกัน ตัวอย่างเช่น สําหรับภาษาสเปน คุณสามารถค้นหาประโยคพร้อมคําแปลได้ 500 ล้านประโยค แต่เมื่อฝึกอบรมโมเดลสําหรับภาษาที่หายากเช่นทิเบต คุณต้องเลือก GPU เฉพาะสําหรับงานแมชชีนเลิร์นนิงตามข้อมูลที่มีอยู่ ในการสร้างโมเดลการแปลจากภาษาอังกฤษเป็นภาษาสเปน เราใช้เซิร์ฟเวอร์ที่มี RAM 4 x RTX 4500 และ 256GB ในเวลาเดียวกัน ภาษาทิเบตสามารถฝึกบน RTX 2080 Ti ด้วย RAM ขนาด 16GB ได้ เนื่องจากไม่สมเหตุสมผลที่จะเพิ่มความซับซ้อนของโครงข่ายประสาทเทียม และด้วยเหตุนี้ จึงต้องใช้เซิร์ฟเวอร์ที่ทรงพลังยิ่งขึ้นพร้อมข้อมูลจํานวนเล็กน้อย
การเลือกโปรเซสเซอร์กราฟิกและตัวเลขทางทฤษฎี
การฝึกอบรมโมเดลภาษาเกิดขึ้นบนแพลตฟอร์ม Data Studio ภายในของเราโดยใช้เฟรมเวิร์ก OpenNMT-tf ระยะนี้รวมถึงการเตรียมข้อมูล การฝึกอบรมแบบจําลอง และการเปรียบเทียบแบบจําลองด้วยการแปลอ้างอิง การใช้ FP16 แทน FP32 ในระหว่างการฝึกอบรมทําให้เราสามารถลดเวลาการฝึกอบรมของโมเดลภาษาได้อย่างมาก โดยไม่ทําให้คุณภาพการแปลลดลง แต่ไม่ใช่ว่า GPU ทั้งหมดของเราจะสนับสนุนสิ่งนั้น
เมื่อเลือกโปรเซสเซอร์กราฟิก ถือเป็นมาตรฐานในการพิจารณาตัวชี้วัดต่างๆ เช่น กําลังการประมวลผล (TFLOPS) หน่วยความจําวิดีโอ (VRAM) ผลลัพธ์การวัดประสิทธิภาพ GPU การสนับสนุนไลบรารีและเฟรมเวิร์ก งบประมาณ และปัจจัยอื่นๆ (ขนาดและฟอร์มแฟคเตอร์ของการ์ดกราฟิก ความต้องการพลังงาน การระบายความร้อน และความเข้ากันได้กับระบบของคุณ) เมื่อฝึกอบรมโมเดลการสร้างข้อความ คุณควรจําไว้ว่าภาษาที่แตกต่างกันจะใช้ทรัพยากรในปริมาณที่แตกต่างกัน ตัวอย่างเช่น 1 ไบต์ใช้ในการเข้ารหัสอักขระหนึ่งตัวสําหรับภาษาละติน 2 ไบต์สําหรับภาษาซีริลลิก และ 3 ไบต์สําหรับภาษาที่มีอักษรอียิปต์โบราณ การทําความเข้าใจว่ากราฟิกการ์ดของคุณจะมีลักษณะใดมีผลกระทบอย่างมากต่อความเร็วของกระบวนการเรียนรู้
เมื่อฝึกโมเดลในแง่ของ GPU ที่ใช้ การ์ดแสดงผลจะถูกแบ่งออกเป็นสองกลุ่มตามระยะเวลาการใช้งาน: การ์ดแสดงผลรุ่นแรกๆ ซึ่งใช้ในการวัดความเร็วการเรียนรู้ครั้งแรก และการ์ดที่ใช้อยู่ในปัจจุบัน ลักษณะสําคัญของกราฟิกการ์ดเหล่านี้สามารถพบได้ในตารางที่ 1 และตารางที่ 2 ตามลําดับ
ตารางที่ 1 - โปรเซสเซอร์กราฟิกที่ใช้ก่อนหน้านี้และพารามิเตอร์ทางเทคนิค
Number of GPUs | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Tesla V100-SXM2 | HBM2, 16 | 7.0 | 31.33 | 16.31 |
2 | Tesla V100-SXM2 | HBM2, 32 | 7.0 | 31.33 | 15.67 |
1 | RTX 4060 Ti | GDDR6, 8 | 8.9 | 22.06 | 22.06 |
1 | Nvidia A40 | GDDR6, 48 | 8.6 | 37.42 | 37.42 |
2 | Nvidia A40 | GDDR6, 96 | 8.6 | 37.42 | 37.42 |
1 | Nvidia A100 | HBM2, 40 | 8.0 | 77.97 | 19.49 |
1 | Nvidia A100 | HBM2, 80 | 8.0 | 77.97 | 19.49 |
1 | Nvidia RTX A6000 | GDDR6, 48 | 8.6 | 38.71 | 38.71 |
1 | Nvidia A10 | GDDR6, 24 | 8.6 | 31.24 | 31.24 |
8 | Nvidia A10 | GDDR6, 192 | 8.6 | 31.24 | 31.24 |
1 | Nvidia H100 | HBM3, 80 | 9.0 | 204.9 | 51.22 |
หมายเหตุ
1 ด้วย CUDA ที่มากกว่า 7.0 การใช้ FP16 จะช่วยเพิ่มความเร็วในการฝึกซ้อม ขึ้นอยู่กับเวอร์ชัน CUDA และคุณลักษณะของการ์ดกราฟิกเอง
2 หากข้อกําหนดของการ์ดกราฟิกระบุว่าอัตราส่วนประสิทธิภาพ FP16 ถึง FP32 มากกว่า 1 ต่อ 1 การใช้ความแม่นยําแบบผสมจะรับประกันว่าจะเพิ่มความเร็วในการฝึกตามจํานวนที่ระบุในข้อกําหนด ตัวอย่างเช่น สําหรับ Quadro RTX 6000 ค่า FP16 TFLOPS ที่ 32.62 (2:1) จะเร่งการออกกําลังกายอย่างน้อยสองครั้ง (2.4 เท่าในทางปฏิบัติ)
ตารางที่ 2 - รุ่น GPU ที่ใช้อยู่ในปัจจุบันและคุณลักษณะหลัก
Number of GPUs in use | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Quadro RTX 6000 | GDDR6, 24 | 7.5 | 32.62 | 16.31 |
2 | Quadro RTX 6000 | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Quadro RTX 6000 | GDDR6, 96 | 7.5 | 32.62 | 16.31 |
2 | Nvidia TITAN RTX | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Nvidia RTX A4500 | GDDR6, 96 | 8.6 | 23.65 | 23.65 |
1 | Nvidia GeForce RTX 3090 | GDDR6X, 24 | 8.6 | 35.58 | 35.58 |
1 | Nvidia GeForce RTX 3070 | GDDR6, 8 | 8.6 | 20.31 | 20.31 |
* - ค่าสําหรับ FP16,TFLOPS และ FP32,TFLOPS นํามาจากข้อกําหนดเฉพาะต่อ GPU
กระบวนการฝึกอบรมและทดสอบ GPU
โมเดลเหล่านี้ได้รับการฝึกฝนโดยใช้ชุด GPU จํานวน 18 ตัว ในกระบวนการฝึกอบรมโครงข่ายประสาทเทียม เราใช้คู่ภาษามากมาย (มากกว่าร้อยภาษา) การทดสอบ GPU ได้ช่วยระบุว่าฮาร์ดแวร์ใดทํางานได้ดีที่สุดสําหรับงานเฉพาะ ในระหว่างการฝึกอบรมคู่ภาษาของเราพารามิเตอร์โครงข่ายประสาทเทียมต่อไปนี้ถูกนํามาใช้เป็นพื้นฐาน:
- ขนาด Vocab = 30 000
- จํานวนหน่วย = 768
- เลเยอร์ = 6
- หัว = 16
- มิติภายใน = 4 096
ก่อนอื่น เรามาอธิบายลักษณะ GPU ที่เป็นของกลุ่มแรกตามตารางที่ 1 กัน เวลาเป็นนาทีและวินาทีที่ใช้ในการฝึกแบบจําลองด้วยความเร็วประมาณ 1,000 ขั้น และขนาดชุดคูณ 100,000 หน่วย จะถูกนํามาใช้เป็นพื้นฐานในการเปรียบเทียบตัวบ่งชี้
เราเน้นย้ําว่าสําหรับกลุ่มแรก การวัดความเร็วจะดําเนินการโดยใช้ การจัดตําแหน่ง กลไกและการใช้งานเท่านั้น FP32● หากไม่ได้ใช้กลไกนี้ ความเร็วในการเรียนรู้บนเซิร์ฟเวอร์บางเครื่องอาจเร็วขึ้นมาก
กลไกการจัดตําแหน่งช่วยให้สามารถจับคู่สตริงย่อยในฐานและข้อความที่แปลได้ จําเป็นต้องแปลข้อความที่จัดรูปแบบ เช่น หน้าเว็บ เมื่อสตริงย่อยในประโยคอาจถูกเน้นด้วยแบบอักษรอื่น และควรแปลด้วยการเน้น
โดยคํานึงถึงพารามิเตอร์ที่กล่าวถึงข้างต้นของโครงข่ายประสาทเทียมเวลาที่ดีที่สุดจากตารางแรกแสดงโดย GPU Nvidia H100 ด้วยเวลาการเรียนรู้ 22 นาที, และเวลากลางแสดงโดย GPU ของแบรนด์เดียวกัน GeForce RTX 4060 Ti ด้วยเวลาการเรียนรู้ 72 นาที และอันดับสุดท้ายคือ GPU Tesla V100-SXM 2 ด้วยเวลาการเรียนรู้ 140 นาที
นอกจากนี้ยังมีการ์ด Nvidia A10 แปดใบในการทดสอบ GPU ที่มีช่วงการเรียนรู้ 20 นาที 28 วินาที การ์ด Nvidia A40 สองใบที่มีเวลา 56 นาที และการ์ด Tesla V100-SXM สองใบที่โอเวอร์คล็อกในเวลา 86 นาที การใช้การ์ดหลายใบในชุด GPU เดียวกันพร้อมกันสามารถเร่งกระบวนการฝึกอบรมของโมเดลและแสดงเกือบจะพร้อมกันกับ GPU ที่มีความจุสูงกว่า แต่เทคนิคดังกล่าวอาจไม่มีเหตุผลทางการเงินและขั้นตอนเพียงพอ ผลลัพธ์ของการวัดความเร็วการเรียนรู้สามารถสังเกตได้ในตารางที่ 3
ตารางที่ 3 - การวัดเวลาการฝึกอบรมบนแผนที่กราฟิกที่ใช้ก่อนหน้านี้
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
8 | Nvidia A10 | 20,28 | 6 250 |
1 | Nvidia H100 | 22 | 25 000 |
1 | A100 (80 Gb) | 40 | 25 000 |
1 | A100 (40 Gb) | 56 | 15 000 |
2 | Nvidia A40 | 56 | 12 500 |
1 | RTX A6000 | 68,25 | 12 500 |
1 | GeForce RTX 4060 Ti | 72 | 4 167 |
1 | Nvidia A40 | 82,08 | 12 500 |
2 | Tesla V100-SXM | 86 | 4 167 |
1 | Nvidia A10 | 104,50 | 5 000 |
1 | Tesla V100-SXM2 | 140 | 4 167 |
ต่อไปเรามาทําการวิเคราะห์เปรียบเทียบแป้นเหยียบแก๊สกราฟิกที่ใช้งานอยู่ในปัจจุบัน (ตารางที่ 2) สําหรับโปรเซสเซอร์กราฟิกกลุ่มนี้ การวัดความเร็วจะดําเนินการโดยใช้ การจัดตําแหน่ง กลไกตลอดจนการใช้ FP16 และ FP32 การวัดความเร็วรวมถึงกลไกนี้และความแม่นยําแบบผสมจะแสดงด้านล่างในตารางที่ 4 และ 5 ตามลําดับ
ดังนั้นเมื่อวัดความเร็วของ GPU จากตารางนี้แล้วเราสามารถพูดได้ว่าอันดับที่หนึ่งเป็นของ GPU ซีรีส์ RTX A4500 ด้วยเวลาฝึก 31 นาที แต่ควรเน้นย้ําว่าความเร็วของโมเดลการฝึกดังกล่าวได้มาจาก เพิ่มจํานวนหน่วยของ GPU ที่ใช้แล้วเป็น 4 หากไม่คํานึงถึงข้อเท็จจริงนี้ ความเร็วในการฝึกซ้อมของ GPU ดังกล่าวจะสูงขึ้นมาก ซึ่งจะจัดให้อยู่ในตําแหน่งสุดท้ายในตารางสุดท้าย
GPU ซีรีส์ Quadro RTX 6000 ที่มีเวลาเรียนรู้ 47 นาทีอยู่ในอันดับที่สอง ควรสังเกตว่าความเร็วการฝึกดังกล่าวถูกกําหนดเงื่อนไขผกผันด้วยจํานวนหน่วยของโปรเซสเซอร์ที่ใช้ ซึ่งเท่ากับสี่ การใช้ GPU ดังกล่าวเพียงตัวเดียวจะทําให้สูญเสียความเร็วประมาณ 3.2 เท่า และด้วยเหตุนี้จึงใช้เวลาประมาณ 153 นาทีและอยู่ในอันดับที่สุดท้าย
บรรทัดที่สามถ่ายโดย GPU ซีรีส์ TITAN RTX ด้วยเวลา 75 นาที 85 วินาที คะแนนความเร็วในการเรียนรู้นี้เกิดจากการใช้โปรเซสเซอร์ 2 ตัว ซึ่งทําให้เวลาในการฝึกของโมเดลลดลง
ผู้นําอย่างไม่ต้องสงสัยในแง่ของความเร็วในการฝึกซ้อมในจํานวนหนึ่งหน่วยจะเป็น GPU ซีรีส์ GeForce RTX 3090 ด้วยเวลา 78 นาที 26 วินาทีอย่างแน่นอน การเพิ่มจํานวนหน่วยของ GPU นี้จะช่วยเร่งความเร็วในการฝึกโมเดล ซึ่งจะแซงหน้า GPU ทุกรุ่นที่กล่าวมาข้างต้นอย่างชัดเจน ข้อมูลเกี่ยวกับการวัดเวลาการฝึกอบรมแบบจําลองสามารถดูได้ในตารางที่ 4
ตารางที่ 4 - การวิเคราะห์เปรียบเทียบความเร็วการฝึกแบบจําลองภาษาของ GPU ที่ใช้ก่อนหน้านี้
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 31 | 5 000 |
4 | Quadro RTX 6000 | 47 | 6 250 |
2 | Nvidia TITAN RTX | 75,85 | 6 250 |
1 | GeForce RTX 3090 | 78,26 | 6 250 |
2 | Quadro RTX 6000 | 88 | 6 250 |
1 | GeForce RTX 3070 | 104,17 | 2 000 |
1 | Quadro RTX 6000 | 153 | 6 250 |
การวัดความเร็วการฝึกต่อไปนี้ดําเนินการโดยใช้ FP16 เมื่อเปรียบเทียบกับ FP32 ความแม่นยําเพียงครึ่งเดียวช่วยลดปริมาณหน่วยความจําที่ใช้ระหว่างการฝึกโมเดล และเร่งการคํานวณบน GPU ความแม่นยําของการนําเสนอจะต่ํากว่าการใช้ FP32
การวัดเวลาการฝึกของโมเดลที่ใช้ FP32 จากตารางที่แล้ว เราสามารถพูดได้ว่าเวลาการฝึกของโครงข่ายประสาทเทียมลดลงเกือบสองเท่า จากผลการวัดประสิทธิภาพ เราสามารถสังเกตได้จากเกณฑ์มาตรฐาน GPU การเรียนรู้ของเครื่องในตารางที่ 4 ว่าตําแหน่งของ GPU ยังคงไม่เปลี่ยนแปลงส่วนใหญ่ การ์ดซีรีส์ Quadro RTX 6000 ขยับขึ้นจากอันดับที่ 5 มาอยู่ที่อันดับที่ 6 โดยเอาชนะ GeForce RTX 3090 GPU ได้ 96 วินาที ตัวเลขสุดท้ายแสดงไว้ในตารางที่ 5
ตารางที่ 5 - การวิเคราะห์เปรียบเทียบความเร็วการฝึกแบบจําลองภาษาของ GPU ที่ใช้ก่อนหน้านี้
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 16 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 15,81 | 10 000 |
4 | Quadro RTX 6000 | 20,34 | 12 500 |
2 | Nvidia TITAN RTX | 32,68 | 6 250 |
2 | Quadro RTX 6000 | 37,93 | 10 000 |
1 | GeForce RTX 3090 | 38,89 | 10 000 |
1 | GeForce RTX 3070 | 48,51 | 2 500 |
1 | Quadro RTX 6000 | 52,56 | 10 000 |