AI Neo Lab
스킬

DeepGEMM: 8,639개 스타 받은 엔비디아 GPU 초고속 커널 라이브러리 설치·사용법

대규모 언어 모델 학습·추론에서 병목이 되는 GEMM·MoE 연산을 엔비디아 호퍼·블랙웰 GPU에서 최고 성능으로 돌리고 싶은 개발자들을 위해 DeepGEMM이 런타임 JIT 컴파일로 설치 부담 없이 FP8·FP4·BF16 커널을 바로 쓰게 해줍니다. 이 자료는 환경 준비부터 Python 호출까지 전 과정을 단계별로 안내합니다.

DeepSeek이 공개한 DeepGEMM은 CUTLASS 템플릿 의존성을 줄이고 단일 CUDA 코드베이스로 GEMM, Fused MoE, MQA Scoring, HyperConnection까지 통합한 경량 BLAS 커널 라이브러리입니다. MIT 라이선스와 DeepJIT 런타임 컴파일 덕분에 복잡한 빌드 과정 없이 Python 한 줄로 최신 GPU 텐서 코어를 최대 성능으로 끌어낼 수 있습니다.

DeepGEMM이란 무엇인가요

DeepGEMM은 NVIDIA GPU(엔비디아 GPU)에서 FP8·FP4·BF16 GEMM, Mega MoE(퓨즈드 MoE + 통신 오버랩), MQA 스코어링, HyperConnection 같은 LLM 핵심 연산을 단일 CUDA 코드베이스로 모은 고성능 텐서 코어 커널 라이브러리다. DeepJIT로 런타임에 컴파일되므로 설치 시 별도 CUDA 컴파일이 필요 없고, CUTLASS·CuTe 아이디어만 가볍게 참고해 템플릿·대수 의존성을 최소화했다. 핵심 커널 함수가 적어 GPU 커널 최적화 학습 자료로도 적합하면서, 전문가 튜닝 라이브러리와 동급이거나 더 빠른 성능을 낸다.

지원 연산·아키텍처 요약

분류내용
지원 GEMM 정밀도FP8, FP4, BF16
주요 융합 커널Mega MoE(통신 오버랩), MQA 스코어링, HyperConnection
메모리 레이아웃SM90: NT만 지원 / SM100: NT·TN·NN·TT 모두 지원
컴파일 방식DeepJIT 런타임 JIT 컴파일(설치 시 CUDA 컴파일 불필요)
라이선스MIT

SM90 구현은 NT 레이아웃(row-major A, col-major B)만 지원하지만, SM100 구현은 NT·TN·NN·TT 모든 레이아웃을 지원한다. 좌변 스케일링 팩터는 양 아키텍처 모두 TMA 정렬·전치 레이아웃을 요구한다. 2026년 9월 30일자로 Ascend(NPU) 포트(DeepGEMM-Ascend)도 별도 저장소로 공개돼 플랫폼 커버리지가 넓어졌다.

  • 단일 코드베이스로 LLM 핵심 연산 통합
  • DeepJIT로 설치 단순화(사전 CUDA 컴파일 불필요)
  • CUTLASS/CuTe 의존성 최소화 → 학습·확장 용이
  • 전문가 튜닝 라이브러리 대비 동급·우위 성능
  • MIT 라이선스로 상용·연구 자유 이용 가능

왜 DeepGEMM을 쓰나요

DeepGEMM은 전문가가 튜닝한 라이브러리와 동급·이상 성능을 보여줍니다. 최신 NVIDIA SM90·SM100 GPU에서 FP8·FP4·BF16 GEMM, Mega MoE, MQA 스코어링, HyperConnection 등을 하나의 CUDA 코드베이스로 제공하는데, 모든 커널이 DeepJIT을 통해 런타임에 컴파일되기 때문에 설치 단계에서 별도의 CUDA 컴파일이 필요 없습니다. 코드베이스가 핵심 함수 몇 개로만 이루어져 가볍고, CUTLASS·CuTe의 복잡한 템플릿을 피했으므로 GPU 커널 최적화 학습에 적합합니다.

또한 DeepGEMM은 설치가 매우 간단합니다. NVIDIA SM90 혹은 SM100 GPU와 Python 3.8 이상, CUDA Toolkit 12.9 이상, PyTorch 2.3 이상, CUTLASS 4.0 이상만 준비하면 바로 사용할 수 있습니다. import deep_gemm만 하면 fp8_gemm_nt와 같이 D = C + A @ B.T 형태의 GEMM을 바로 호출할 수 있어 프로토타이핑이 빠릅니다. 현재 별 8,639개·포크 1,365개를 기록한 오픈소스 프로젝트이며 MIT 라이선스로 자유롭게 활용할 수 있습니다.

Python에서 사용
import deep_gemm
  • NVIDIA SM90 또는 SM100 GPU
  • Python 3.8 이상
  • CUDA Toolkit 12.9 이상
  • PyTorch 2.3 이상
  • CUTLASS 4.0 이상
⭐️ 스타8,639개
🍴 포크1,365개
라이선스MIT
최초 공개 시점1년 8개월 전(2025년 2월)
마지막 업데이트1개월 전(2026년 9월)

설치·실행 환경 준비 5단계

DeepGEMM을 사용하려면 먼저 실행 환경을 준비해야 합니다. 다음 5가지 항목을 순서대로 확인하면 됩니다.

  1. GPU 확인

    NVIDIA SM90 또는 SM100 아키텍처 GPU가 필요합니다.

  2. Python 설치

    Python 3.8 이상을 설치합니다.

  3. CUDA Toolkit 설치

    CUDA Toolkit 12.9 이상을 준비합니다.

  4. PyTorch 설치

    PyTorch 2.3 이상을 설치합니다.

  5. CUTLASS 준비

    CUTLASS 4.0 이상을 Git 서브모듈로 클론합니다.

필수 항목버전 이상
GPUSM90/SM100
Python3.8+
CUDA12.9+
PyTorch2.3+
CUTLASS4.0+

필수 항목을 모두 갖췄다면, 저장소를 클론한 뒤 Python 프로젝트에서 import deep_gemm만 하면 바로 사용할 수 있습니다.

주요 인터페이스·메모리 레이아웃 한눈에 보기

DeepGEMM은 GPU에서 GEMM 연산을 D = C + A @ B 형태로 구현합니다. 입력 행렬 A는 그대로(row‑major), B는 전치(col‑major)인 NT 레이아웃을 기본으로 사용해요. 예를 들어 FP8 타입 GEMM을 실행하려면 fp8_gemm_nt 함수를 호출하면 됩니다.

SM90 아키텍처에서는 현재 NT 레이아웃만 지원하고, SM100 아키텍처에서는 NT 외에 TN, NN, TT 네 가지 레이아웃을 모두 사용할 수 있어요. 두 아키텍처 모두 왼쪽 행렬의 스케일링 팩터는 TMA‑정렬되고 전치된 형태여야 합니다.

아키텍처지원 레이아웃
SM90NT만 지원
SM100NT, TN, NN, TT 모두 지원
Python에서 DeepGEMM 사용
import deep_gemm
result = deep_gemm.fp8_gemm_nt(A, B, C, scale)

주의할 점·자주 묻는 문제

DeepGEMM을 사용하면서 실수하기 쉬운 부분은 몇 가지가 있습니다. 먼저 GPU 아키텍처에 따라 메모리 레이아웃 제한이 달라요. SM90에서는 NT 레이아웃만 지원하고, SM100에서는 NT, TN, NN, TT 모든 레이아웃을 사용할 수 있습니다. 레이아웃을 잘못 지정하면 커널 실행이 바로 오류로 돌아갑니다.

또한 FP8·FP4 스케일 팩터는 TMA‑aligned와 전치된 형태여야 합니다. 스케일 팩터를 일반 배열로 전달하면 런타임에 정렬 오류가 발생합니다. CUTLASS 서브모듈을 직접 클론했을 경우 버전이 4.0 이상인지, 그리고 DeepGEMM 레포와 동일한 커밋인지 확인해야 합니다. 버전 차이가 있으면 컴파일 단계에서 타입 불일치가 잡히게 됩니다. 마지막으로 CUDA Toolkit 12.9 이상과 최신 드라이버가 필요합니다. 오래된 드라이버를 쓰면 설치가 멈추거나 ‘unsupported device’ 오류가 발생하니, Python 3.8+와 PyTorch 2.3+도 함께 점검해 주세요.

아키텍처지원 레이아웃
SM90NT only
SM100NT, TN, NN, TT
  • GPU 아키텍처와 레이아웃이 맞는지 확인
  • 스케일 팩터를 TMA‑aligned 전치 형태로 준비
  • CUTLASS 서브모듈을 4.0 이상 최신 커밋으로 동기화
  • CUDA Toolkit 12.9 이상 및 최신 드라이버 설치
  • Python 3.8+와 PyTorch 2.3+ 설치 여부 확인

정리·다음 단계

DeepGEMM을 실제 프로젝트에 적용하려면 공식 예제와 벤치마크를 먼저 실행해 보세요. 저장소에는 다양한 GEMM·MoE·MQA 시나리오가 Python 인터페이스로 제공됩니다. 예제를 돌리면 현재 GPU(SM90·SM100)에서 지원되는 연산과 메모리 레이아웃을 직접 확인할 수 있습니다.

실행 순서는 간단합니다. 먼저 환경을 준비하고, 저장소를 클론한 뒤 pip install -e . 로 설치합니다. 이후 Python에서 import deep_gemm 을 하고, README에 소개된 함수(예: fp8_gemm_nt)를 호출하면 됩니다. 벤치마크는 동일한 방식으로 호출해 성능을 측정할 수 있습니다.

Python에서 사용 예시
import deep_gemm
# 예: fp8_gemm_nt(A, B, C)
  1. 1. 저장소 클론

    git clone https://github.com/deepseek-ai/DeepGEMM.git

  2. 2. 환경 설치

    Python≥3.8, CUDA 12.9+, PyTorch 2.3+, CUTLASS 4.0+ 등 사전 요구사항을 만족시키세요.

  3. 3. 라이브러리 설치

    pip install -e .

  4. 4. 예제 실행

    Python 스크립트에서 import deep_gemm 후 원하는 커널 함수를 호출합니다.

  5. 5. 벤치마크 측정

    README에 소개된 벤치마크 스크립트를 실행해 성능을 확인합니다.

Issue·기여 방법

버그를 발견하거나 개선 아이디어가 있으면 GitHub Issues에 상세히 작성해 주세요. 수정이 필요하면 Pull Request를 보내고, MIT 라이선스를 따르기 때문에 자유롭게 기여할 수 있습니다.

  • ⭐ 스타: 8,639개 (2026‑10‑07 현재)
  • 🔧 포크: 1,365개
  • 📄 라이선스: MIT

이런 글도 있어요