목록으로
GitHub - deepseek-ai/profile-data: Analyze computation-communication overlap in V3/R1.
Service2025.03.08

GitHub - deepseek-ai/profile-data: Analyze computation-communication overlap in V3/R1.

요약

DeepSeek-AI는 통신-계산 오버랩 전략 및 저수준 구현 세부 사항을 공유하기 위해 PyTorch Profiler로 캡처한 훈련 및 추론 프레임워크 프로파일링 데이터를 공개했습니다.
훈련 프로파일은 DeepSeek-V3의 DualPipe 내 개별 MoE 레이어 청크에서 통신-계산 오버랩 전략을 보여주며, 추론 단계(Prefilling 및 Decoding)에서는 두 개의 Micro-batch를 활용하여 이 오버랩을 구현합니다.
특히 Decoding 단계에서는 all-to-all 통신이 GPU SMs를 점유하지 않아, RDMA 메시지 발행 후 GPU SMs가 다음 연산에 즉시 활용될 수 있도록 하여 효율성을 높였습니다.

상세 내용

이 문서는 DeepSeek AI의 훈련 및 추론 프레임워크에서 수집된 프로파일링 데이터를 공개적으로 공유하여, 통신-연산(communication-computation) 오버랩 전략 및 낮은 수준의 구현 상세 정보를 커뮤니티가 이해하도록 돕는 것을 목표로 합니다. 이 프로파일링 데이터는 PyTorch Profiler를 사용하여 캡처되었으며, Chrome 브라우저의 chrome://tracing 또는 Edge 브라우저의 edge://tracing을 통해 직접 시각화할 수 있습니다. 프로파일링은 절대적으로 균형 잡힌 MoE (Mixture of Experts) 라우팅 전략을 시뮬레이션합니다.

훈련(Training) 프로파일링 데이터:
훈련 프로파일링 데이터는 DualPipe에서 개별 순방향(forward) 및 역방향(backward) 청크(chunk) 쌍에 대한 오버랩 전략을 보여줍니다. 각 청크는 4개의 MoE 레이어를 포함합니다. 병렬 구성은 DeepSeek-V3 사전 훈련 설정과 동일하게 EP64 (Expert Parallelism 64), TP1 (Tensor Parallelism 1)을 사용하며, 시퀀스 길이는 4K입니다. 단순화를 위해 이 프로파일링에서는 PP (Pipeline Parallelism) 통신이 포함되지 않았습니다.

추론 사전 채우기(Inference Prefilling) 프로파일링 데이터:
사전 채우기 단계의 프로파일링은 EP32, TP1 구성을 사용하며, 이는 DeepSeek V3/R1의 실제 온라인 배포와 일치합니다. 프롬프트 길이는 4K로 설정되었고, GPU당 배치 크기는 16K 토큰입니다. 이 사전 채우기 단계에서는 두 개의 마이크로 배치(micro-batches)를 활용하여 연산과 All-to-All 통신을 오버랩시킵니다. 어텐션(attention) 연산 부하는 두 마이크로 배치에 걸쳐 균형 있게 분산되도록 설계되었으며, 이는 동일한 프롬프트가 두 마이크로 배치로 분할될 수 있음을 의미합니다.

추론 디코딩(Inference Decoding) 프로파일링 데이터:
디코딩 단계의 프로파일링은 EP128, TP1 구성을 사용하며, 실제 온라인 배포 설정과 매우 유사합니다. 프롬프트 길이는 4K이고, GPU당 배치 크기는 128 요청입니다. 사전 채우기와 유사하게, 디코딩 또한 두 개의 마이크로 배치를 활용하여 연산과 All-to-All 통신을 오버랩시킵니다. 그러나 사전 채우기와는 달리, 디코딩 중의 All-to-All 통신은 GPU SM(Streaming Multiprocessors)을 점유하지 않습니다. RDMA(Remote Direct Memory Access) 메시지가 발행된 후 모든 GPU SM이 해제되며, 시스템은 연산이 완료된 후 All-to-All 통신이 완료되기를 기다립니다. All-to-All 구현에 대한 자세한 정보는 DeepEP를 참조할 수 있습니다.

원본 보기
GitHub
Shared by Anonymous