งานวิจัย · arXiv 2412.19437
รายงานเชิงเทคนิคของ DeepSeek-V3
DeepSeek-V3 Technical Report
สรุปสามบรรทัด
- 🎯 โมเดล MoE ขนาดระดับแนวหน้าต้องใช้งบประมาณการประมวลผลมหาศาล ประสบปัญหาประสิทธิภาพลดลงจาก Balancing Loss เสริม และเผชิญกับคอขวดด้านการสื่อสารแบบ All-to-All ข้ามโหนดขนาดใหญ่
- 🔧 นำ Multi-head Latent Attention (MLA), DeepSeekMoE พร้อมการปรับสมดุลแบบไร้ Auxiliary Loss, การเทรนแบบ Mixed-Precision ด้วย FP8 ร่วมกับ Fine-Grained Quantization, การจัดตารางเวลาเหลื่อมกันด้วย DualPipe และ Multi-Token Prediction (MTP) มาใช้งาน
- 📈 เทรนพารามิเตอร์ 671B (แอกทิเวต 37B) บน 14.8T โทเคนโดยใช้เวลา GPU H800 เพียง 2.788 ล้านชั่วโมง (~$5.576M) ทำคะแนนระดับแนวหน้าของโอเพนซอร์สและมีประสิทธิภาพสูสีกับ GPT-4o และ Claude-3.5-Sonnet
บทคัดย่อ
เราขอนำเสนอ DeepSeek-V3 ซึ่งเป็นโมเดลภาษาแบบ Mixture-of-Experts (MoE) ประสิทธิภาพสูงที่มีพารามิเตอร์รวม 671B โดยมีการแอกทิเวต 37B สำหรับแต่ละโทเคน เพื่อให้การอนุมานมีประสิทธิภาพและการเทรนมีความคุ้มค่าด้านต้นทุน DeepSeek-V3 จึงนำสถาปัตยกรรม Multi-head Latent Attention (MLA) และ DeepSeekMoE มาใช้ ซึ่งผ่านการพิสูจน์และตรวจสอบอย่างละเอียดมาแล้วใน DeepSeek-V2 นอกจากนี้ DeepSeek-V3 ยังบุกเบิกกลยุทธ์การทำ Load Balancing แบบไร้ Auxiliary Loss และกำหนดวัตถุประสงค์การเทรนแบบทำนายหลายโทเคนล่วงหน้า (Multi-Token Prediction) เพื่อเพิ่มประสิทธิภาพให้แข็งแกร่งยิ่งขึ้น เราได้ทำการพรีเทรน DeepSeek-V3 บนโทเคนที่มีความหลากหลายและคุณภาพสูงจำนวน 14.8 ล้านล้านโทเคน ตามด้วยขั้นตอน Supervised Fine-Tuning และ Reinforcement Learning เพื่อดึงศักยภาพของโมเดลออกมาอย่างเต็มที่ การประเมินผลอย่างครอบคลุมเผยให้เห็นว่า DeepSeek-V3 ทำผลงานได้เหนือกว่าโมเดลโอเพนซอร์สอื่นๆ และบรรลุประสิทธิภาพเทียบเท่ากับโมเดลแบบปิดระดับชั้นนำ แม้จะมีประสิทธิภาพที่ยอดเยี่ยม แต่ DeepSeek-V3 ใช้เวลาประมวลผล GPU H800 เพียง 2.788 ล้านชั่วโมงสำหรับการเทรนทั้งหมด นอกจากนี้ กระบวนการเทรนยังมีความเสถียรอย่างโดดเด่น โดยตลอดกระบวนการเทรนทั้งหมด เราไม่พบปัญหา Loss Spike ที่กู้คืนไม่ได้และไม่มีการย้อนกลับสถานะ (Rollback) ใดๆ ทั้งสิ้น จุดตรวจสอบของโมเดล (Checkpoints) มีให้ใช้งานได้ที่ https://github.com/deepseek-ai/DeepSeek-V3
บทคัดย่อต้นฉบับ (ภาษาอังกฤษ)
We present DeepSeek-V3, a strong Mixture-of-Experts (MoE) language model with 671B total parameters with 37B activated for each token. To achieve efficient inference and cost-effective training, DeepSeek-V3 adopts Multi-head Latent Attention (MLA) and DeepSeekMoE architectures, which were thoroughly validated in DeepSeek-V2. Furthermore, DeepSeek-V3 pioneers an auxiliary-loss-free strategy for load balancing and sets a multi-token prediction training objective for stronger performance. We pre-train DeepSeek-V3 on 14.8 trillion diverse and high-quality tokens, followed by Supervised Fine-Tuning and Reinforcement Learning stages to fully harness its capabilities. Comprehensive evaluations reveal that DeepSeek-V3 outperforms other open-source models and achieves performance comparable to leading closed-source models. Despite its excellent performance, DeepSeek-V3 requires only 2.788M H800 GPU hours for its full training. In addition, its training process is remarkably stable. Throughout the entire training process, we did not experience any irrecoverable loss spikes or perform any rollbacks. The model checkpoints are available at https://github.com/deepseek-ai/DeepSeek-V3.
คู่มือการอ่าน
ปัญหาและแรงจูงใจ
โมเดลภาษาขนาดใหญ่ (LLMs) ระดับแนวหน้ายังคงลดช่องว่างสู่ AGI อย่างต่อเนื่อง แต่การขยายขนาดโมเดลโอเพนซอร์สมักต้องการงบประมาณการคำนวณและโครงสร้างพื้นฐานที่สูงจนแทบเป็นไปไม่ได้ นอกจากนี้ การขยายขนาดสถาปัตยกรรม Mixture-of-Experts (MoE) ยังนำมาซึ่งความท้าทายทางวิศวกรรมเฉพาะด้าน:
- การลดทอนจาก Auxiliary Loss: Load Balancing Loss เสริมแบบดั้งเดิมจำกัดความยืดหยุ่นในการเราต์ติงอย่างมากและส่งผลเสียต่อขีดความสามารถในการจำลองภาษา
- คอขวดด้านการสื่อสาร: การเราต์ติงข้ามโหนดแบบละเอียดทำให้เกิด Overhead การสื่อสารแบบ All-to-All อย่างรุนแรง ซึ่งบ่อยครั้งมีอัตราส่วนการคำนวณต่อการสื่อสารอยู่ที่ 1:1
- ความแม่นยำเชิงตัวเลขและหน่วยความจำ: การเทรนแบบ 16-bit มาตรฐานใช้หน่วยความจำสูง ในขณะที่การเทรนแบบ FP8 ทั่วไปประสบปัญหาความไม่เสถียรเชิงตัวเลขและการเกิด Underflow เนื่องจากค่าผิดปกติใน Activation และความแม่นยำในการสะสมค่าที่จำกัดของ Tensor Core
DeepSeek-V3 จัดการกับความท้าทายเหล่านี้ผ่านกลยุทธ์เชิงขั้นตอนวิธีที่ได้รับการออกแบบร่วมกันและการปรับปรุงโครงสร้างพื้นฐานระดับฮาร์ดแวร์ เพื่อให้ได้ประสิทธิภาพระดับแนวหน้าด้วยต้นทุนการเทรนที่ต่ำที่สุด
แนวคิดสำคัญ
- ประสิทธิภาพของสถาปัตยกรรม: ผสานการบีบอัด Key-Value แบบ Low-Rank ผ่าน Multi-head Latent Attention (MLA) เข้ากับ Routed Expert แบบละเอียดผ่าน DeepSeekMoE (1 Shared Expert + 256 Routed Experts โดยเปิดใช้งาน 8 ตัว)
- การทำสมดุลโหลดแบบไร้ Auxiliary Loss: แทนที่ Auxiliary Loss ที่ลดทอนประสิทธิภาพด้วยพจน์ Bias ของ Expert ที่อัปเดตแบบไดนามิก ช่วยให้เกิดความเชี่ยวชาญเฉพาะทางที่ชัดเจนโดยไม่เกิดปัญหา Routing Collapse
- Multi-Token Prediction (MTP): ทำนายโทเคนในอนาคตหลายตัวตามลำดับที่แต่ละตำแหน่งไปตาม Causal Chain ที่คงไว้ เพื่อเพิ่มสัญญาณการเรียนรู้และรองรับ Speculative Decoding (ความเร็วเพิ่มขึ้น 1.8 เท่า)
- การขนานแบบ DualPipe: ตารางเวลา Pipeline แบบสองทิศทางที่ซ้อนทับการคำนวณ Forward และ Backward เข้ากับการสื่อสารแบบ MoE All-to-All ข้ามโหนดและการสื่อสารแบบ PP ได้อย่างสมบูรณ์
- การเทรน Mixed-Precision แบบ FP8: ใช้รูปแบบ E4M3 ในทุก Tensor โดยใช้การสเกล Activation ระดับ Tile () และการสเกลน้ำหนักระดับ Block () พร้อมทั้งถ่ายโอนการสะสมผลรวมไปยังรีจิสเตอร์ของ CUDA Core ในรูปแบบ FP32 ทุกๆ ขั้นตอน
- การกลั่นกรองทักษะการให้เหตุผล (Reasoning Distillation): กลั่นกรองรูปแบบการใช้เหตุผลแบบ Long-CoT ทั้งการตรวจสอบความถูกต้องและการทบทวนตนเองจากซีรีส์ DeepSeek-R1 เข้าสู่ขั้นตอน SFT และ RL Post-Training โดยตรง
วิธีการ
1. Multi-head Latent Attention (MLA)
สำหรับ Hidden State ของโทเคน สถาปัตยกรรม MLA จะบีบอัด KV Cache ให้อยู่ในรูปเวกเตอร์แฝงร่วม และสถานะ Query ให้อยู่ในรูป :
ในระหว่างการอนุมาน การทำ Cache จะจำกัดไว้เฉพาะ และ ซึ่งช่วยลดการใช้หน่วยความจำลงอย่างมหาศาล
2. DeepSeekMoE พร้อมการทำสมดุลแบบไร้ Auxiliary Loss
เอาต์พุตของ Feed-Forward Network จะรวม Shared Experts และ Routed Experts เข้าด้วยกัน:
ค่าความสัมพันธ์ของ Expert คำนวณจาก โดยค่า Gating ได้มาจากการปรับนอร์มัลของ ซึ่งการตัดสินใจเลือกเราต์ติงจะรวมพจน์ Bias แบบไดนามิก เข้าไปด้วย:
หาก Expert รับโหลดเกินเมื่อสิ้นสุดขั้นตอน การปรับค่าจะเป็น แต่หากรับโหลดน้อยเกินไป จะเป็น (โดยที่ ) และใช้ Balance Loss ระดับลำดับขนาดเล็กมากๆ () เป็นส่วนเสริม
3. Multi-Token Prediction (MTP)
สำหรับความลึกในการทำนาย (โดยที่ ) ตัวแทนเวกเตอร์ จะถูกรวมเข้ากับ Token Embedding ที่เลื่อนตำแหน่ง:
ค่า Loss การเทรนทั้งหมดจะบวกเพิ่มด้วย
ผลลัพธ์
- งบประมาณการพรีเทรน: พรีเทรนบน 14.8T โทเคนโดยใช้เวลา GPU H800 เพียง 2.664 ล้านชั่วโมง (3.7 วันต่อ 1T โทเคนบน 2048 GPUs) การเทรนทั้งหมดใช้เวลา GPU 2.788 ล้านชั่วโมง (~$5.576M ที่อัตรา $2/ชั่วโมง)
- ความเสถียร: ไม่มีการย้อนกลับสถานะ (Rollback) และไม่มี Loss Spike ที่กู้คืนไม่ได้ตลอดทั้ง 14.8T โทเคน
- เบนช์มาร์กของ Base Model:
- เหนือกว่า LLaMA-3.1 405B Base ในชุดทดสอบ MMLU (87.1 เทียบกับ 84.4), BBH (87.5 เทียบกับ 82.9), HumanEval (65.2 เทียบกับ 54.9) และ MATH (61.6 เทียบกับ 49.0)
- เหนือกว่า Qwen2.5 72B Base ใน C-Eval (90.1 เทียบกับ 89.2) และ GSM8K (89.3 เทียบกับ 88.3)
- เบนช์มาร์กของ Chat Model:
- คณิตศาสตร์และการเขียนโค้ด: ทำคะแนนระดับแนวหน้าในกลุ่มที่ไม่ใช่ตระกูล o1: MATH-500 (90.2), AIME 2024 (39.2), LiveCodeBench CoT (40.5)
- ความรู้ทั่วไป: MMLU (88.5), MMLU-Pro (75.9), GPQA-Diamond (59.1)
- คำถามปลายเปิด: อัตราการชนะเกิน 85% บน Arena-Hard (85.5%) และทำได้ 70.0% บน AlpacaEval 2.0 แบบควบคุมความยาว
ข้อจำกัดและประเด็นที่ยังเปิดกว้าง
- ข้อกำหนดขั้นต่ำของฮาร์ดแวร์ในการอนุมาน: การให้บริการอย่างมีประสิทธิภาพจำเป็นต้องใช้หน่วยประมวลผลขนาดใหญ่ (32 GPUs สำหรับการ Prefill, 320 GPUs สำหรับการ Decode) ซึ่งเป็นอุปสรรคเชิงโครงสร้างพื้นฐานสำหรับองค์กรขนาดเล็ก
- การจัดสรร SM ข้ามโหนด: มีการกัน SM จำนวน 20 ชุดต่อ GPU ไว้สำหรับการจัดการรูทีนการสื่อสารแบบ All-to-All ข้ามโหนดโดยเฉพาะ แทนที่จะนำไปใช้คำนวณทางคณิตศาสตร์ของเมทริกซ์
- ความแม่นยำของข้อเท็จจริง: ยังตามหลังโมเดลปิดระดับแนวหน้า (เช่น GPT-4o, Claude-3.5-Sonnet) ในงานข้อเท็จจริงภาษาอังกฤษ เช่น SimpleQA (24.9% เทียบกับ 38.2%) แม้ว่าจะเป็นผู้นำใน SimpleQA ภาษาจีน (64.8%) ก็ตาม
คำศัพท์สำคัญ
- Multi-head Latent Attention (MLA)
- กลไก Attention ที่บีบอัด Key และ Value แบบ Low-Rank ให้อยู่ในรูปเวกเตอร์แฝงร่วม เพื่อลดการใช้ KV Cache ในระหว่างการอนุมานลงอย่างมาก
- DeepSeekMoE
- สถาปัตยกรรม Mixture-of-Experts ที่ใช้ Expert ขนาดละเอียดร่วมกับ Shared Expert โดยเฉพาะ เพื่อเพิ่มความเชี่ยวชาญเฉพาะทางและความสามารถในการแสดงออกของการเราต์ติง
- Auxiliary-Loss-Free Load Balancing
- แนวทางการเราต์ติงที่ปรับพจน์ Bias ความสัมพันธ์ของแต่ละ Expert แบบไดนามิกตามปริมาณโหลดของแบตช์ แทนที่จะเพิ่ม Regularizing Auxiliary Loss ขนาดใหญ่เข้าไปในฟังก์ชันวัตถุประสงค์
- Multi-Token Prediction (MTP)
- เฟรมเวิร์กการเทรนที่ทำนายโทเคนในอนาคตหลายตัวพร้อมกันตามลำดับในแต่ละตำแหน่ง โดยใช้โมดูลแบบ Causal ร่วมกับการใช้ Embeddings และ Head ของโมเดลหลักซ้ำ
- DualPipe
- อัลกอริทึม Pipeline Parallelism แบบสองทิศทางที่ซ้อนทับการคำนวณ Forward, Backward-for-inputs และ Backward-for-weights เข้ากับการสื่อสารแบบ All-to-All และแบบ Pipeline
- Warp Specialization
- รูปแบบการประมวลผลที่แบ่ง GPU Streaming Multiprocessor ออกเป็น Warp งานเฉพาะสำหรับการส่ง (Dispatch) และรวม (Combine) ข้อมูลผ่าน IB และ NVLink พร้อมๆ กัน
- Group Relative Policy Optimization (GRPO)
- อัลกอริทึม Reinforcement Learning ที่ตัดความจำเป็นในการมีโมเดล Critic แยกต่างหาก โดยคำนวณ Advantage เปรียบเทียบกับกลุ่มของคำตอบที่สุ่มตัวอย่างมา
คำถามที่พบบ่อย
DeepSeek-V3 มีพารามิเตอร์รวมและพารามิเตอร์ที่แอกทิเวตจำนวนเท่าใด?
DeepSeek-V3 มีพารามิเตอร์รวม 671B โดยมีการแอกทิเวต 37B ต่อโทเคน (ประกอบด้วย 1 Shared Expert และอีก 8 Routed Experts ที่ถูกเลือกจากทั้งหมด 256 ตัว)
การเทรน DeepSeek-V3 มีค่าใช้จ่ายเท่าใด?
การเทรนอย่างสมบูรณ์ใช้เวลา GPU H800 รวม 2.788 ล้านชั่วโมง (2.664 ล้านชั่วโมงสำหรับการพรีเทรน, 119K ชั่วโมงสำหรับการขยาย Context และ 5K ชั่วโมงสำหรับ Post-Training) ซึ่งคิดเป็นค่าใช้จ่ายประมาณ $5.576 ล้านดอลลาร์สหรัฐ ที่ราคาประเมิน $2 ต่อชั่วโมง GPU
เหตุใดวิธีปรับสมดุลแบบไร้ Auxiliary Loss จึงเหนือกว่าการใช้ Auxiliary Loss แบบมาตรฐาน?
Auxiliary Loss ระดับลำดับแบบมาตรฐานจะบังคับให้อัตราการใช้งาน Expert มีความสม่ำเสมอกันในแต่ละลำดับข้อมูล ซึ่งทำลายความเชี่ยวชาญเฉพาะด้าน แต่การอัปเดต Bias แบบไดนามิกของ DeepSeek ช่วยรับประกันความสมดุลในระดับแบตช์โดยไม่รบกวน Gradient Objective หลักของการจำลองภาษา
การเทรนแบบ Mixed-Precision ด้วย FP8 ประสบความสำเร็จโดยไม่เกิด Loss Divergence ได้อย่างไร?
ทำได้โดยใช้ Quantization สำหรับ Activation ระดับ Tile (1x128) และค่าน้ำหนักระดับ Block (128x128) ใช้การแทนค่าแบบ E4M3 ล้วน และคัดลอกผลรวมระหว่างกลางของ Tensor Core ไปยังรีจิสเตอร์ FP32 บน CUDA Cores ทุกๆ 128 สมาชิก เพื่อหลีกเลี่ยงปัญหา Underflow จากการสะสมค่าด้วยความแม่นยำต่ำ
คำอธิบายในหน้านี้เขียนโดย AI จากงานวิจัยและอาจมีข้อผิดพลาด โปรดอ่านต้นฉบับเพื่อดูรายละเอียด