ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • NVIDIA RTX 50 시리즈 (5080·5090) 유저 필독: 2026년 PyTorch·CUDA·FlashAttention 최종 정리(Blackwell)
    Dev🚀 2026. 1. 30. 19:26
    이 글은 아래 기준을 만족하는 독자를 대상으로 합니다.

    - RTX 50xx (5070/5080/5090) GPU 사용자
    - PyTorch stable 환경을 사용하고 싶은 개발자/연구자
    - nightly 없이 CUDA / FlashAttention을 쓰고 싶은 경우

    요약

    RTX 50xx시리즈는 NVIDIA Blackwell 아키텍처 기반 GPU로 Compute Capability 12.0(SM120)을 사용한다. 출시 초기에는 PyTorch stable 릴리즈 및 주요 CUDA 확장 라이브러리들이 SM120을 포함해 빌드되지 않아 정상 사용이 어려웠다. PyTorch 2.7.0(2025년 4월)부터 CUDA 12.8 기반 stable wheel에 Blackwell(SM120) 지원이 포함되었으며, 2026년 기준에서는 nightly 빌드 없이도 RTX 50xx를 사용하는 것이 가능하다.


    1. RTX 50xx에서 PyTorch가 처음에 동작하지 않았던 이유

    [RTX 50xx GPU]  (Compute Capability = 12.0 / sm_120)
            |
            |  실행하려는 커널이 sm_120으로 컴파일되어 있어야 함
            v
    [PyTorch wheel / CUDA extension wheel]
       - 포함된 아키텍처 리스트: sm_80, sm_86, sm_89, sm_90 ... (초기엔 여기서 sm_120 누락)
            |
            |  sm_120용 바이너리 코드가 없음 → 런타임에서 매칭 실패
            v
    "sm_120 not compatible" / "no kernel image available" / CPU fallback


    RTX 50xx의 핵심 특성은 다음과 같다.

    • 아키텍처: Blackwell
    • Compute Capability: 12.0
    • SM 버전: SM120

    PyTorch 및 CUDA 확장 라이브러리는 빌드 시점에 특정 SM 아키텍처를 타깃으로 컴파일된 바이너리(wheel)를 사용한다.
    RTX 50xx 출시 초기의 PyTorch stable wheel들은:

    • SM80, SM86, SM89, SM90 등은 포함
    • SM120은 포함되지 않음

    이로 인해 다음과 같은 현상이 발생했다.

    • GPU는 인식되지만 CUDA 커널 실행 불가
    • sm_120 is not supported 또는 no kernel image available 오류
    • 일부 환경에서는 CPU fallback

    이는 GPU 드라이버 문제가 아니라, PyTorch 바이너리 자체가 SM120 코드를 포함하지 않았기 때문이다.


    2. PyTorch에서 Blackwell(SM120)을 공식적으로 지원한 시점

    PyTorch 2.7.0 (2025년 4월)

    PyTorch 2.7.0 릴리즈부터:

    • CUDA 12.8 기반 사전 빌드 wheel 제공
    • 해당 빌드에 Blackwell(SM120) 아키텍처 지원 포함
    [CUDA 12.8+ toolchain & libs]  +  [PyTorch 2.7+ (cu128 wheels)]
                    |
                    |  sm_120 포함해 빌드/배포
                    v
          [torch + torchvision + triton 등]
                    |
                    |  (선택) FlashAttention 등 CUDA extension 설치
                    v
            [sm_120용 커널 로딩 성공] → 정상 가속

    이 시점부터 PyTorch stable 환경에서도:

    • RTX 50 시리즈 GPU 인식 가능
    • SM120에 대한 커널 로딩 가능

    즉, 기술적으로는 2025년 4월부터 공식 지원이 시작되었다고 볼 수 있다.


    3. 그럼 왜 “2025년 말~2026에야 안정화됐다”는 체감?

    이유는 PyTorch 본체가 아니라 생태계 전체의 문제였다.

    1) CUDA 확장 라이브러리 지연

    • FlashAttention, 일부 Triton 기반 커널 등은
    • PyTorch보다 늦게 SM120 대응이 이루어짐

    2) Windows 환경 문제

    • FlashAttention은 공식 Windows wheel이 거의 없음
    • RTX 50xx 초기에는 Windows에서 소스 빌드가 사실상 어려웠음

    3) Inductor / Triton 안정화

    • PyTorch 2.7 직후에는
      • torch.compile
      • Triton 커널
        에서 Blackwell 관련 안정화가 충분하지 않았음

    이로 인해 “PyTorch는 된다는데 실제로 쓰기엔 불안정한 시기”가 2025년 중반까지 이어졌고, 2025년 하반기 이후 stable 릴리즈 누적과 함께 체감 안정성이 확보되었다.


    4. 2026년 기준: nightly 없이 가능한가?

     

    가능하다.

     

     

    다음 조건을 만족하면 nightly 빌드는 필요 없다.

    최소 조건

    1. PyTorch ≥ 2.7.x (CUDA 12.8 wheel)
    2. Blackwell 지원 NVIDIA Driver
    3. 사용하는 CUDA extension이 SM120 대응 버전

    이 조합이면:

    • RTX 50xx 정상 인식
    • CUDA 커널 실행 문제 없음
    • 일반적인 학습/추론/torch.compile 사용 가능

    (단, FlashAttention v3 preview, 최신 Triton 실험 기능, 커스텀 CUDA 커널 개발과 같은 경우에는 여전히 nightly 빌드가 필요할 수 있다.)


    5. FlashAttention 관련 주의사항

    • FlashAttention은 PyTorch와 별도의 CUDA extension
    • PyTorch보다 SM120 대응이 늦었음
    • Windows에서는 공식 wheel이 거의 없고, 커뮤니티에서 빌드한 wheel 사용이 일반적

    중요한 점:

    • PyTorch가 stable에서 SM120을 지원한다고 해서
    • FlashAttention도 자동으로 되는 것은 아니다

    2026년 기준:

    • FlashAttention의 경우, v2.7.2(2025년 하반기) 릴리즈부터 Blackwell(SM120) 아키텍처를 타깃으로 한 최적화 커널이 공식 코드베이스(Upstream)에 포함되었습니다. 다만, Windows 환경에서는 여전히 공식 바이너리 휠 배포가 제한적이므로, 커뮤니티(e.g. bghira 등)에서 빌드한 SM120 대응 휠을 사용하거나 WSL2 환경에서 소스 빌드하는 것이 권장됩니다. (단, Python / torch / CUDA 버전 매칭이 매우 중요)

    6. 정리

    • RTX 50xx 문제의 본질은 새로운 SM 아키텍처(SM120) 도입
    • PyTorch는 2.7.0(2025년 4월)부터 stable에서 Blackwell 지원
    • 다만 CUDA 확장 생태계 안정화까지 시간이 필요했음
    • 2026년 기준에서는 nightly 없이 사용 가능

     


    ✔️ Blackwell 환경 구축 스크립트

    1) Linux / WSL2 (권장)

    # 1) 가상환경
    conda create -n blackwell_env python=3.11 -y
    conda activate blackwell_env
    pip install -U pip
    
    # 2) PyTorch (CUDA 12.8 wheel, cu128)
    # PyTorch 공식 "previous versions" 페이지에서 cu128 wheel 제공이 확인됨
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
    
    # 3) (선택) FlashAttention
    # 방법 A: pip로 설치(=대개 소스 빌드가 돌아갈 수 있음)
    # 빌드가 길어질 수 있고, 환경에 따라 CUDA_HOME/nvcc 등 이슈가 날 수 있음
    pip install flash-attn --no-build-isolation
    
    # 방법 B(권장): prebuilt wheel을 찾아 설치 (빌드 시간/실패 줄임)
    # - GitHub 이슈에서 Blackwell 포함 wheel 릴리즈가 공유된 사례가 있음
    # - wheel 탐색 도구(여러 리포를 스캔)도 존재
    #   (아래 링크 섹션 참고)

    2) Windows Native 

    # 1) PyTorch (cu128)
    pip install -U pip
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
    
    # 2) FlashAttention (Windows)
    # Windows는 공식 wheel이 잘 제공되지 않아, 아래 중 택1을 권장:
    # A) 커뮤니티 prebuilt wheel(.whl) 받아서 설치
    #    pip install <flash_attn-...-win_amd64.whl>
    # B) FlashAttention 대신 xFormers/SDPA 등 대안 사용(설치 난이도 낮음)
    
    # 3) 설치 확인
    python -c "import torch; print('PyTorch:', torch.__version__); print('GPU:', torch.cuda.get_device_name(0)); print('CC:', torch.cuda.get_device_capability(0));"

     

    ☄️ 참고 트러블 슈팅

    - PyTorch sm_120 Patch (Reddit): https://www.reddit.com/r/CUDA/comments/1jhvtqm/patch_to_enable_pytorch_on_rtx_5080_cuda_128_sm/
    - FlashAttention SM120 사용 이슈 (GitHub #1665): https://github.com/Dao-AILab/flash-attention/issues/1665
    - Blackwell 포함 FlashAttention wheel (GitHub #1683): https://github.com/Dao-AILab/flash-attention/issues/1683
    - FlashAttention Blackwell 지원 논의 (GitHub #1987): https://github.com/Dao-AILab/flash-attention/issues/1987 
    - PyTorch sm_120 지원 진행 상황 (PyTorch Discuss): https://discuss.pytorch.org/t/pytorch-support-for-sm120/216099
    - PyTorch stable 지원 요청 이슈 (PyTorch GitHub): https://github.com/pytorch/pytorch/issues/164342 

    반응형
Designed by Tistory.