Nvidia 3000번대 GPU 언락 커널 모듈 등장, BF16 FMA 발행 속도 2배
- 리눅스 커널 모듈 GPU-unlock은 GA102·GA103·GA104·GA106 카드에서 FP/BF16 FMA를 FP32로 내보내는 발행 속도를 2배로 올림
- CMP 언락커의 V67/PLM 기법과 UEFI 방식의 pre-driver 타이밍을 결합해 SS0 0x88888888과 SS1 4비트 0x8을 쓰고 FLR을 수행한 뒤 수정되지 않은 Nvidia 드라이버가 카드를 바인딩하기 전에 실행되므로, 새 드라이버가 나올 때마다 패치할 필요가 없음
- 3090 Ti dense 8192³ GEMM 450W 측정에서 BF16이 87.50에서 157.41 TFLOPS로, TF32가 42.58에서 82.61 TFLOPS로, FP16이 87.46에서 118.39 TFLOPS로 늘어남
- 사용자 보고 기준 3090은 +25~67%, 3070은 +73~81%, 3060 12GB는 약 +80%이고, 3080 Ti 20GB OEM(GA102-250)은 언락이 완료돼도 BF16이 절반 속도에 머무름
- LLM prefill은 +14~36%, diffusion과 FlashAttention도 빨라지지만 메모리 대역폭에 묶인 LLM decode와 INT8은 거의 그대로이고, 출력을 비교한 보고에서는 결과가 비트 단위로 동일했음
Hacker News opinions
직접 테스트해봤는데 결과 진짜임. 펌웨어 익스플로잇에 기대는 거라 좀 위험하긴 한데 대단함. 부트로더가 스택에 직접 쓰는 고전적 버퍼 오버플로가 있어서 ROP로 코드 실행이 가능함.
그 4090/4070 Ti Super용 리포는 작동은 하는데 다른 모드랑 같이 못 씀. 여기처럼 편하게 쓰는 게 아니라 드라이버 버전을 고정해야 함.
진짜긴 한데 주의할 점이 있음. 카드가 좀 더 뜨거워지고, 진짜 이득은 파워 리밋을 450W까지 올려야 나옴. p2p 모드랑은 서로 간섭 없이 겹쳐 쓸 수 있음.
파워 리밋을 안 바꿨는데 왜 뜨겁다는 거임? 최대 전력에서 더 오래 머물 수는 있어도 리밋 안에서는 똑같은 거 아님?
4070 기준으로 240W에 묶인 전력 소모 수치가 릴리스 노트에 있음.
그냥 2비트 뒤집어서 특정 명령 발행 속도를 2배로 만드는 거임. 더 많은 연산은 전력을 더 쓰니까 카드가 주파수 곡선에서 아래로 내려가서 와트를 맞춤. 그래서 순정 파워 리밋에서도 어느 정도 이득은 나옴. 3090 두 장을 수랭으로 한 달째 문제없이 돌리는 중임.
흥미롭긴 한데 제한된 워크로드에만 적용됨. 학습은 메모리 대역폭에 묶이는 경우가 많고, 전력 소모가 어떻게 되는지도 궁금함.
학습은 compute bound임. 메모리 대역폭에 묶인다면 배치 크기를 키워서 병렬성을 끌어내야 함.
prefill에도 쓸모 있음. VLLM에서 커널이랑 prefill 크기에 따라 최대 30%까지 오름.
아니야, 헤드라인이 틀렸음. 16비트 연산이 아니라 FP32가 절반으로 잘린 게 풀린 거임. 그리고 지난주에 여기저기 찾아봤는데 3090/3090 Ti 말고 다른 3xxx 카드에 적용된 보고는 못 봤음.
리포에 fp16 수치도 있음. 4070용 리포는 fp8에도 적용된다고 나옴.
리포 이슈에 다른 3xxx 카드 보고가 잔뜩 있음. 3080 Ti, 3070 Ti, 3070, 3060 다 있음.
FP/BF16 FMA to FP32 명령이고, 3000번대는 대부분 같은 GA102 부트로더를 써서 다 작동함. vbios 레이아웃이 이상한 카드에서 문제가 나온다는 보고가 있는데 고쳐볼 생각임.
이거 만든 사람임. 익스플로잇 아이디어는 전부 내 게 아니고, 드라이버를 패치하는 것보다 훨씬 덜 귀찮게 포장한 것뿐임. 원래 CMP90/50 윈도우 언락이 UEFI 모듈로 OS를 체인로드하는 방식에서 영감을 받았음. 질문 받음.
아주 잘 만들었음. 패치된 드라이버는 진짜 짜증남, 특히 카드 종류가 여러 개면 더 심함. 이제 4090도 해줘.
27b 모델을 즐겨 쓰는데 어젯밤에 dev가 벤치 돌려서 133tks, 약 3.2배 나왔음. 경제성이 바뀌는 수준임.
반쯤 관련된 얘기인데, 여러 카드 쓰는 사람은 open-gpu-kernel-modules 패치로 카드 간 통신 속도를 20% 정도 올릴 수 있음. 하드웨어는 지원하는데 드라이버가 싼 카드를 감지하면 Nvidia가 꺼놓은 걸 우회하는 거임.
다음 버전은 서명된 펌웨어로 이 설정을 고정해서 막을 거임.
펌웨어는 이미 암호화돼 있는데 Nvidia가 공개 테스트 키로 복호화되는 암호화 디버그 이미지를 배포해왔음. 그게 프로덕션 펌웨어랑 충분히 비슷해서 익스플로잇을 만들 수 있었음. 여기서는 스택에 쓰는 DMA 버퍼 오버플로라서 ROP로 제어권을 얻는 방식이고, 서명 안 된 코드는 실행되지 않음.
실제 이득은 광고보다 훨씬 적음. 200W 캡에서 재보면 25% 정도고, prefill 위주라 디코딩은 7~8% 수준임. Qwen 27B Int4에 3090 4장, VLLM 풀 배칭으로 돌린 벤치임.
내 3060으로 nanochat 학습이 6% 정도 빨라짐. 리포가 커널 6.x 기준이라 5.15에서 몇 가지 손을 봐야 했고 Claude Code로 넘겼음. 지금 170W에 묶여 있고 카드 태울 생각은 없음.