엔비디아 RTX 3000 시리즈, 커널 모듈로 FP/BF16 성능 잠금 해제
원제 GPU-unlock: FP/BF16 instruction issue rate on Nvidia 3000's cards
143 포인트댓글 53
Key Point
GeForce 게이밍 카드의 하드웨어 성능을 전문가용 수준으로 해제하는 커널 모듈 방식이 등장했으며, 드라이버 업데이트 때마다 수동 패치 없이 작동하는 점과 구체적인 성능 배수를 통해 AI/ML 워크로드 비용 최적화 전략을 바꿀 수 있다.
핵심 요약
- GPU unlock은 리눅스 커널 모듈로 엔비디아 RTX 3090 Ti, 3090, 3080, 3070, 3060 등 GA102/GA103/GA104/GA106 칩 기반 카드의 FP/BF16 명령어 발급 속도를 전문가용 수준으로 끌어올린다.
- NVIDIA 드라이버 바인딩 전에 조기 실행되는 방식으로, 새 드라이버 출시 때마다 매번 수동 패치할 필요가 없다.
- 속도 선택자(SS0 0x88888888, SS1 0x8)를 기록하고 FLR을 수행한 뒤 작동하며, CMP 언로커의 V67/PLM 기법과 UEFI 방식의 사전 드라이버 타이밍을 결합한다.
- RTX 3090 Ti에서 BF16 GEMM은 87.50 TFLOPS에서 157.41 TFLOPS로 약 80% 향상되었고, FP16은 87.46 TFLOPS에서 118.39 TFLOPS, TF32는 42.58 TFLOPS에서 82.61 TFLOPS로 상승했다.
- 사용자 보고에 따르면 RTX 3090은 +25~67%, 3080은 +70~73%, 3070은 +73~81%, 3060은 약 +80%의 BF16 GEMM 이득을 얻었으나 RTX 3080 Ti 20GB OEM 모델은 BF16이 반 속도로 유지되고 있다.
- 전력 제한이 중요하며, 225W 상한선인 경우 25% 정도의 낮은 이득을 보였다.
- LLM 프리필, 디퓨전, FlashAttention 같은 행렬 중심 작업은 +14~36% 속도 향상을 보이지만, 메모리 대역폭 제한 작업인 LLM 디코딩과 INT8 작업은 거의 변하지 않는다.
- 설치는 git clone 후 make install로 진행하며, 커널 명령줄에 gpu_unlock.targets=all을 추가하고, GRUB, systemd-boot, dracut 등 부트로더별로 설정한다.
- 모듈은 gpu_unlock.targets 커널 옵션으로 작동하며, 전체 카드('all')나 특정 PCI 주소를 지정할 수 있고, 이미 바인딩되었거나 꺼진 카드는 건너뛴다.
- 디스플레이 카드도 작동하며 부트 콘솔과 Plymouth는 언락 펌웨어 실행 중에 계속 표시되고, 리셋 직전에 제거된다.
- 일시 중지 후 재개 시 전원이 꺼졌다가 다시 켜지면서 속도 선택자가 리셋되지만, 모듈이 부트 시 언락했던 모든 카드를 재개 전에 다시 언락하며 약 1초가 더해진다.
- hibernate 기능은 지원되지 않으며, 펌웨어가 멈추지 않으면 모듈이 로깅하고 다음 전원 끄기까지 DMA 버퍼를 유지한다.
- 커널 모듈과 로컬 패키징은 GPL-2.0-only 라이선스이고, 생성된 페이로드는 CMP 참조에서 파생되며 NVIDIA 펌웨어는 자체 약관 하에 있다.