GPU-unlock: 엔비디아 3000번대 카드의 FP/BF16 명령어 발행 속도 제한 풀기

GPU-unlock: FP/BF16 instruction issue rate on Nvidia 3000's cards

github.com/Zagitta ▲ 282 댓글 73 fragebogen

요약

GPU-unlock은 엔비디아 RTX 3000번대 카드가 절반으로 묶어 둔 FP16·BF16 연산 속도를 풀어 줍니다.

개발자 Zagitta가 공개한 리눅스 커널 모듈입니다. 엔비디아는 전문가용·데이터센터 카드에서는 이 명령어를 최고 속도로 내보내지만, 게이밍 카드에서는 발행 속도를 절반으로 제한합니다.

왜 중요한가

  • 엔비디아 드라이버를 고치지 않으므로 드라이버가 새로 나올 때마다 다시 패치할 필요가 없습니다.
  • RTX 3090 같은 카드로 언어 모델을 돌리는 사람은 장비를 바꾸지 않고 입력 처리 속도를 높일 수 있습니다.

핵심 내용

  • RTX 3090 Ti 행렬 곱셈에서 BF16(AI 연산에 쓰는 16비트 실수 형식)은 87.5에서 157.4테라플롭스로 약 80% 빨라졌습니다.
  • 이용자 보고로는 카드별 BF16 성능이 25~81% 올랐고, 전력을 225W로 묶은 3090이 가장 적게 올랐습니다.
  • 언어 모델 프리필(입력 처리)은 14~36% 빨라졌지만, 메모리 대역폭에 묶인 토큰 생성은 거의 그대로입니다.
  • 엔비디아 드라이버가 카드를 잡기 전에 속도 선택 레지스터 두 개를 바꾸고 카드를 재설정하는 방식입니다.
  • 절전 후 깨어나면 설정이 초기화되어 다시 풀어야 하고, 3080 Ti OEM 카드처럼 효과가 없는 사례도 있습니다.

HN 반응

  • 효과를 다 보려면 전력을 450W로 올리고 냉각을 보강해야 한다는 주장에, 전력 한도를 그대로 둬도 됐다는 반론이 나왔고 작성자는 작업마다 다르다고 답했습니다.
  • RTX 4090용 포크로 작업 시간이 30% 줄었다는 경험담이 나왔고, 작성자는 Hopper·Blackwell 세대는 보안 체계가 달라 이 방식이 통하기 어렵다고 했습니다.

댓글

30개 표시 · 전체 73개
  1. Zagitta HN

    이거 제가 만든 겁니다. 다만 익스플로잇 같은 건 제 아이디어가 전혀 아니고요. 엔비디아 드라이버를 직접 패치하는 번거로움 없이, 이 모든 걸 훨씬 덜 귀찮은 패키지 하나로 묶었을 뿐입니다. 원래는 OS로 체인로딩되는 독립 실행형 UEFI 모듈로 돌아가는 CMP90/50 윈도 언락에서 영감을 받았습니다.

    궁금한 점 있으면 편하게 물어보세요!

  2. aunty_helen HN

    정말 감사합니다. 27b는 제가 제일 좋아하는 모델인데, 어젯밤에 개발자가 벤치마크를 돌렸더니 133tks, 약 3.2배가 나왔어요. 경제성 자체가 달라집니다.

  3. xenonite HN

    잘됐네요. 양자화는 뭘로, KV 양자화와 KV 크기는 어떻게 쓰고 계세요? llama.cpp인가요?

  4. aunty_helen HN

    Claude가 진행한 실험을 정리한 글입니다: https://claude.ai/artifact/X6WJVtKdL1LrhYuCMqdXvG#b9a4d3e2-8dcb

  5. SSLy HN

    로그인을 해야 볼 수 있는데요.

  6. jacquesm HN

    정말 잘 만드셨네요. 모든 모드가 이런 방식이면 좋겠어요. 패치한 드라이버는 골칫거리거든요. 카드 종류가 여러 개면 특히 그렇고요. 감사합니다.

    추신: 이제 4090도 해주세요 ;)

  7. Zagitta HN

    네, 저도 패치된 드라이버는 질색입니다. CMP170도 갖고 있는데, 드라이버 패치를 아예 안 하거나 최소한만 하고도 똑같은 방식으로 완전히 동작하게 만들 방법이 있는지 찾아볼 생각입니다.

    4000번대는 작업 중입니다. 포크에서는 이미 언락했고요. 저는 여러 제품군을 더 잘 지원하도록 리팩터링하는 중이라, 그게 끝나면 옮겨 오겠습니다 :-)

  8. jacquesm HN

    기대됩니다. 저는 48G로 개조한 Ada 4090이 두 장 있고 기본 Blackwell 4000이 네 장 있습니다(Blackwell 쪽은 그렇게 쉽지 않을 것 같지만요). 4090만이라도 성능이 올라가면 정말 대단할 거예요. 제 주력 장비라서, 거기서 개선되는 만큼 곧바로 하루 작업량이 늘어나거든요. 테스트에 도움이 필요하시면 제 프로필에 이메일이 있습니다.

  9. Zagitta HN

    Blackwell과 Hopper는 부팅 과정이 완전히 새로워서, 제가 본 바로는 당분간 뚫릴 가능성이 낮습니다.

    4090이 못 기다릴 만큼 급하시면, 언락이 되는 것처럼 보이는 포크를 올려 둔 사람이 있어요 :D

  10. jacquesm HN

    네, 그런데 그건 제가 쓸 수 없는 드라이버 버전에 묶여 있어요. 그래서 이 방식이 가장 좋다고 보는 겁니다.

    저는 CPU 하나에 GPU 8장을 붙여 쓰는데, 가능한 한 많은 카드 사이에서 P2P를 돌리려면 그 드라이버가 꼭 필요합니다. 개조 4090이 문제인 이유는 BAR1이 보고하는 크기(32G)가 VRAM보다 작아서 모든 소프트웨어가 쓸 수 있는 게 아니기 때문입니다(48G 하나가 아니라 메모리 세그먼트 두 개가 있어야 돌아갑니다). 그 드라이버가 이 문제를 푸는 데 한몫하고요.

  11. Tiberium HN

    참고로 gpu unlock ada 저장소는 드라이버 버전에 묶여 있지 않아요. 저는 Codex로 그냥 컴파일했는데, 포크는 610.x용인데도 제 615.xx 드라이버에서 잘 돌아갑니다. 저장소가 그 버전의 펌웨어를 쓰는 것뿐인 듯해요. 제 GPU는 4070ti super입니다.

  12. jacquesm HN

    좋아요, 해보겠습니다. 저는 48G 4090을 쓰려고 상당히 많이 수정한 590.48.01을 쓰는데, 동작은 하지만 손이 좀 가요. 핵심 문제는 BAR1이 충분히 크지 않고 32G로 제한된다는 겁니다.

    하하, 됐습니다. 정말 감사합니다!!

    전체 소요 시간이 30% 줄었어요. 꽤 괜찮네요(아직 최대 전력으로는 안 돌리고 있어요. 그 빈약한 커넥터에 450 W는 좀 부담스러워서요).

  13. SlavikCA HN

    저도 VRAM 48GB로 개조한 RTX 4090이 두 장 있습니다. 그런데 기본 드라이버를 쓰고 있어요. 거의 48GB를 꽉 채우는 모델도 돌리고 있고요.

    이제 궁금해졌는데, 제가 놓친 설정이 있을까요? 그 BAR 관련해서 확인해야 할 게 있나요?

  14. jacquesm HN

    그럼 P2P를 안 쓰고 계실 가능성이 높습니다. NV 개발 패키지에 들어 있는 p2pbandwidthtest를 돌려서 쓰는지 아닌지 확인해 보세요.

  15. Zagitta HN

    제 저장소에서 갈라져 나온 포크라면 어떤 드라이버 버전에 고정해 뒀든 상관없습니다. 그 고정은 사실 AI(clanker)가 만든 군더더기예요. 실제로는 알맞은 booter 펌웨어를 추출해서 로드하는 데만 쓰이는데, booter 부분은 엔비디아 드라이버에 넘기기 전에 전부 리셋되기 때문에 버전이 전혀 맞지 않아도 됩니다.

  16. jacquesm HN

    그 포크가 맞는 것 같은데, 컴파일도 되고 설치도 되지만 아직은 성능 개선이 안 보입니다. 계속 붙들고 해볼게요.

  17. marcosscriven HN
  18. jacquesm HN

    그건 GP(원작자) 작업물의 포크예요.

  19. marcosscriven HN

    그래도 거기엔 4090용이 들어 있어요.

  20. modeless HN

    4090에도 해당되는 얘기인가요? 4090은 FP8을 지원해서 이미 FP16의 두 배 속도가 나오잖아요. 이 해킹으로 FP8 속도도 두 배로 올릴 수 있나요?

  21. mietek HN

    5090은요?

  22. Zagitta HN

    Hopper와 Blackwell은 보안 체인이 완전히 달라서, 적어도 이 방식으로는 범위 밖입니다.

    다만 중국이 5090을 엄청나게 사들여서 개조하는 것 같다는 보도를 보면, 뭔가 방법을 찾아냈을 것 같긴 합니다.

  23. jacquesm HN

    그 부분을 많이 찾아봤는데, 성능보다는 패키징 쪽 이야기가 대부분인 것 같아요. 제가 아는 한 '개선된' 5090이 어느 정도 물량으로 팔리는 일은 없고, 제가 아는 개조품(64G와 96G 버전)도 어떤 이유에선지 양산까지 가지 못했습니다. 꼭 나왔으면 좋겠지만요.

  24. Zagitta HN

    48GB 4090처럼 VRAM이 더 큰 버전용 vbios를 손에 넣은 건 아닐까요?

  25. jacquesm HN

    추측은 많은데 확실히 아는 사람은 없는 것 같습니다. 하드웨어가 지원하기만 하면 이론상 언락은 가능하지만, 48G 4090처럼 이상한 부작용이 생길 수 있어요. 예를 들어 개조된 카드인지는 P2P를 쓰기 전까지 알 수 없다가, P2P를 쓰는 순간 갑자기 다 무너집니다. P2P가 되려면 한 카드의 메모리 공간을 다른 카드의 메모리 공간에 매핑해야 하는데, BAR1이 전체 VRAM보다 작으면 그 블록의 끝(TOP)을 넘어서는 순간 크래시가 나기 때문입니다. 그 전까지는 이 방법이 통하고요.

    5090을 팔 수 있는 수준으로 개조하는 건 4090보다 훨씬 어려울 것 같습니다.

  26. az226 HN

    48GB 4090은 기본 vbios를 그대로 씁니다.

  27. marcosscriven HN
  28. verdverm HN

    GB10(DGX Spark)에서도 비슷한 일이 벌어지고 있고 같은 처리가 필요한지 아시나요?

    추신: 설령 그렇더라도 중국이 해내서 세상에 선심을 써주지 않는 이상 당분간은 어렵다고 이미 밝혀 주셨네요.

  29. jacquesm HN

    DGX Spark는 정말 어려울 겁니다.

  30. RachelF HN

    다소 관련 있는 얘기인데, 카드를 여러 장 쓰는 분들을 위한 패치가 있습니다. 이 라이브러리를 쓰면 소비자용 GPU에서 카드 간 속도를 20% 정도 끌어올릴 수 있어요.

    https://github.com/aikitoria/open-gpu-kernel-modules

    하드웨어는 원래 지원하는데, 엔비디아가 드라이버에서 더 저렴한 카드를 감지하면 이 기능을 꺼 버립니다. 이 패치는 엔비디아가 건 그 속도 제한을 우회합니다.

Hacker News에서 보기 ↗