DeepGEMM은 AI 훈련 및 추론을 위한 FP8 GEMM 라이브러리로, 밀도 및 전문가 혼합(MoE) 매트릭스 작업을 위해 특별히 설계되어 DeepSeek V3 및 R1 모델의 훈련 및 추론을 강력하게 지원합니다.
딥시크는 연속적으로 오픈소스를 공개해 왔습니다. FlashMLA 그리고 DeepEP그리고 오늘은 DeepGEMM는 Hopper 아키텍처 GPU에 특별히 최적화된 행렬 곱셈 라이브러리입니다. 이 라이브러리는 표준 행렬 연산과 전문가 혼합(MoE) 연산을 지원하여 DeepSeek-V3/R1의 훈련 및 추론을 강력하게 지원하며, Hopper GPU에서 1350+ FP8 TFLOPS의 고성능을 달성합니다.
DeepGEMM 은 약 300줄의 핵심 코드만으로 간단하고 효율적으로 설계되었으며, 대부분의 매트릭스 크기에서 기존 솔루션보다 뛰어난 성능을 발휘합니다. 라이브러리는 표준 정렬과 하이브리드 전문가 모델을 위해 설계된 두 가지 특수 정렬(순차 및 마스크)의 세 가지 데이터 정렬을 지원합니다. deepGEMM은 즉시 컴파일을 사용하므로 설치 시 컴파일할 필요가 없으며, 명확하고 이해하기 쉬운 코드 구조를 갖추고 있어 GPU 최적화 기술을 학습하는 데 이상적입니다.
DeepGEMM은 다양한 계산 시나리오에서 우수한 성능을 발휘합니다. 표준 행렬 곱셈의 경우, CUTLASS 3.6에 기반한 최적화된 구현에 비해 속도가 1.0~2.7배 빨라졌습니다. 가장 큰 속도 향상은 소량의 데이터 배치(M=64 또는 128)에서 최대 2.7배까지 달성되었습니다. 하이브리드 전문가 모델 계산의 경우, DeepGEMM이 제공하는 두 가지 특수 데이터 정렬도 상당한 이점을 제공합니다. 순차 배열은 훈련 및 배치 추론 단계 모두에 적합하며 약 1.1~1.2배의 속도 향상을 제공하며, 마스크 배열은 실시간 추론을 위해 설계되었으며 CUDA 그래프 기법의 사용을 지원하며 역시 1.1~1.2배의 속도 향상을 제공합니다.
M | N | K | 계산 | 메모리 대역폭 | 속도 향상 |
---|---|---|---|---|---|
64 | 2112 | 7168 | 206 TFLOPS | 1688 GB/s | 2.7x |
64 | 24576 | 1536 | 289 TFLOPS | 2455 GB/s | 1.7x |
64 | 32768 | 512 | 219 TFLOPS | 2143 GB/s | 1.8x |
64 | 7168 | 16384 | 336 TFLOPS | 2668 GB/s | 1.4x |
64 | 4096 | 7168 | 287 TFLOPS | 2320 GB/s | 1.4x |
64 | 7168 | 2048 | 295 TFLOPS | 2470 GB/s | 1.7x |
128 | 2112 | 7168 | 352 TFLOPS | 1509 GB/s | 2.4x |
128 | 24576 | 1536 | 535 TFLOPS | 2448 GB/s | 1.6x |
128 | 32768 | 512 | 358 TFLOPS | 2103 GB/s | 1.5x |
128 | 7168 | 16384 | 645 TFLOPS | 2604 GB/s | 1.4x |
128 | 4096 | 7168 | 533 TFLOPS | 2221 GB/s | 2.0x |
128 | 7168 | 2048 | 510 TFLOPS | 2277 GB/s | 1.7x |
4096 | 2112 | 7168 | 1058 TFLOPS | 527 GB/s | 1.1x |
4096 | 24576 | 1536 | 990 TFLOPS | 786 GB/s | 1.0x |
4096 | 32768 | 512 | 590 TFLOPS | 1232 GB/s | 1.0x |
4096 | 7168 | 16384 | 1358 TFLOPS | 343 GB/s | 1.2x |
4096 | 4096 | 7168 | 1304 TFLOPS | 500 GB/s | 1.1x |
4096 | 7168 | 2048 | 1025 TFLOPS | 697 GB/s | 1.1x |
#그룹 | 그룹당 M | N | K | 계산 | 메모리 대역폭 | 속도 향상 |
---|---|---|---|---|---|---|
4 | 8192 | 4096 | 7168 | 1297 TFLOPS | 418 GB/s | 1.2x |
4 | 8192 | 7168 | 2048 | 1099 TFLOPS | 681 GB/s | 1.2x |
8 | 4096 | 4096 | 7168 | 1288 TFLOPS | 494 GB/s | 1.2x |
8 | 4096 | 7168 | 2048 | 1093 TFLOPS | 743 GB/s | 1.1x |
#그룹 | 그룹당 M | N | K | 계산 | 메모리 대역폭 | 속도 향상 |
---|---|---|---|---|---|---|
1 | 1024 | 4096 | 7168 | 1233 TFLOPS | 924 GB/s | 1.2x |
1 | 1024 | 7168 | 2048 | 925 TFLOPS | 968 GB/s | 1.2x |
2 | 512 | 4096 | 7168 | 1040 TFLOPS | 1288 GB/s | 1.2x |
2 | 512 | 7168 | 2048 | 916 TFLOPS | 1405 GB/s | 1.2x |
4 | 256 | 4096 | 7168 | 932 TFLOPS | 2064 GB/s | 1.1x |
4 | 256 | 7168 | 2048 | 815 TFLOPS | 2047 GB/s | 1.2x |
DeepGEMM을 사용하려면 sm_90a를 지원하는 Hopper 아키텍처 GPU, Python 3.8 이상, CUDA 12.3 이상(최상의 성능을 위해 12.8 이상 권장), PyTorch 2.1 이상, CUTLASS 3.6 이상이 필요합니다.
개발
# 서브모듈을 복제해야 합니다.
git clone --recursive [email protected]:deepseek-ai/DeepGEMM.git
# 타사(컷클래스 및 쿠테)에 대한 심볼릭 링크에 디렉터리를 포함하도록 합니다.
파이썬 setup.py 개발
# 테스트 JIT 컴파일
파이썬 테스트/test_jit.py
# 모든 GEMM 구현(일반, 인접 그룹 및 마스크 그룹)을 테스트합니다.
파이썬 테스트/test_core.py
설치
파이썬 setup.py 설치
마지막으로 가져오기 deep_gemm 완료되었습니다!