한 줄 정의
CUDA 12.9는 NVIDIA GPU용 코드를 빌드하고 실행할 때 쓰는 CUDA Toolkit의 12.9 버전을 말해. 로컬 LLM 글에서 이 숫자가 보이면 “모델이 이 버전이라서 빠르다”보다 “그 사람이 쓴 드라이버, 런타임, vLLM 휠, 커널 경로가 이 조합에서 맞았구나”에 더 가까워.
이번 후보가 나온 맥락도 그래. LocalLLaMA 글은 Qwen3.6 27B FP8을 RTX 5000 PRO 48GB에서 vLLM 0.20.1, CUDA 12.9, 서버 길이 196608, BF16 KV로 띄운 사례를 적었어. 여기서 CUDA 12.9는 200K 컨텍스트나 80 TPS를 보장하는 이름이 아니라, 그 실행 레시피 안의 버전 한 줄이야.
그래서 CUDA 12.9를 볼 때는 세 줄을 나눠 읽는 게 맞아. 첫째, NVIDIA가 낸 Toolkit 릴리스야. 둘째, Blackwell 같은 새 GPU 세대와 컴파일 타깃을 어디까지 맞추는지 보는 개발 환경이야. 셋째, vLLM이나 PyTorch 같은 추론 스택이 어떤 wheel과 드라이버 조합으로 빌드됐는지 확인하는 재현 조건이야.
어떻게 작동하나
CUDA Toolkit은 하나의 버전 숫자처럼 보이지만 안쪽 구성요소는 따로 움직여. NVIDIA의 12.9 Update 1 릴리스 노트는 CUDA Runtime을 12.9.79, NVCC를 12.9.86, CUDA NVRTC를 12.9.86, cuBLAS를 12.9.1.4처럼 각각 적어. 그러니까 “CUDA 12.9를 쓴다”는 말은 컴파일러, 런타임, 수학 라이브러리, 프로파일러 묶음이 그 계열이라는 뜻이지, 모든 내부 라이브러리가 같은 12.9.0 숫자를 가진다는 뜻은 아니야.
드라이버도 따로 봐야 해. CUDA 12.9 GA의 패키지 드라이버 표에는 Linux 575.51.03 이상, Windows 576.02 이상이 나오고, 12.9 Update 1 표에는 Linux 575.57.08 이상, Windows 576.57 이상이 나와. 반면 CUDA 12.x minor compatibility 표에는 Linux 525.60.13 이상, Windows 528.33 이상이 따로 적혀 있어. 두 숫자는 같은 문장이 아니야. 하나는 해당 Toolkit 릴리스에 동봉된 개발용 드라이버 표에 가깝고, 다른 하나는 호환성 모드에서 보는 낮은 기준선이야.
12.9 자체의 기술 신호도 있어. GA 릴리스 노트는 sm_103, sm_103f, sm_103a, sm_121 컴파일러 타깃 지원과 family-specific architecture 지원을 새 항목으로 적어. Blackwell 카드에서 FP8, FP4, 새 Tensor Core 경로를 제대로 쓰려면 모델만 맞으면 끝나는 게 아니라 이 컴파일 타깃, cuBLAS 경로, PyTorch·vLLM 빌드가 맞아야 한다는 뜻이야.
추론 서버 쪽에서는 vLLM 인자와 붙어. vLLM 0.20.1 문서는 서버 길이 인자를 prompt와 output을 합친 model context length라고 설명하고, KV cache dtype 선택지에 bfloat16, float16, fp8 계열을 넣어. Reddit 사례가 CUDA 12.9와 함께 196608 길이와 BF16 KV를 적은 이유도 이쪽이야. CUDA 버전만이 아니라 긴 컨텍스트 윈도우를 감당할 KV 캐시 dtype과 GPU VRAM 예산이 같이 맞아야 해.
왜 중요한가
CUDA 12.9가 중요한 이유는 “최신 버전이면 더 빠르다”가 아니라, 재현 가능한 로컬 추론 조건을 좁혀 주기 때문이야. Qwen/Qwen3.6-27B-FP8 모델 카드는 FP8 quantized weights, block size 128, native context 262,144 tokens를 적고, vLLM 예시는 8 GPU tensor parallel에서 길이 262144를 써. 그런데 LocalLLaMA 실행 글은 단일 RTX 5000 PRO 48GB에서 196608로 낮춰. 이 차이가 바로 실무에서 보는 지점이야.
RTX PRO 5000 Blackwell 공식 사양은 48GB 또는 72GB GDDR7 ECC, 1,344 GB/sec memory bandwidth, 300W max power를 적어. 이 정도 카드에서도 200K 근처 BF16 KV를 잡으면 가중치와 캐시가 같은 VRAM 안에서 서로 밀어내. 그래서 CUDA 12.9라는 버전보다 FP8 weights + BF16 KV + 196608 length + vLLM 0.20.1 + Blackwell GPU 조합이 더 직접적인 정보야.
StartupFortune은 이 사례를 200,000-token BF16 KV cache와 약 80 tokens/s 로컬 추론 경제성으로 해석했어. 그 말은 흥미롭지만, 그대로 구매 결론이 되지는 않아. 전력, 냉각, 동시 요청, 프리필 시간, 모델 업데이트 비용, 실패했을 때 되돌릴 드라이버 조합까지 같이 봐야 해. CUDA 12.9는 그 판단에서 “이 사람이 어느 계열 스택으로 성공했나”를 알려 주는 표식에 가까워.
주의해서 볼 점
첫째, CUDA 12.9는 200K나 80 TPS의 원인이 아니야. 같은 모델이라도 CUDA 12.9, CUDA 12.8, CUDA 13.x 중 무엇이 더 낫다고 말하려면 같은 드라이버, 같은 PyTorch, 같은 vLLM, 같은 attention backend, 같은 prompt 묶음으로 다시 재야 해. Reddit 작성자도 “왜 CUDA 12.9냐”는 질문에 그때 작동한 버전이라는 취지로 답했어. 이건 필수 조건이라기보다 재현 로그에 가까워.
둘째, “CUDA 12.x compatible driver”와 “그 Toolkit에 들어 있는 driver”를 섞으면 헷갈려. 12.x minor compatibility 표의 Linux 525.60.13 이상은 낮은 호환성 기준이고, 12.9 GA 표의 Linux 575.51.03 이상은 해당 Toolkit 릴리스 표에 나온 드라이버 숫자야. 서버에 어떤 wheel을 깔았는지, 컨테이너가 어떤 CUDA runtime을 들고 있는지, 호스트 드라이버가 어느 버전인지까지 같이 확인해야 해.
셋째, Blackwell 지원을 12.9 하나로 단순화하면 안 돼. CUDA 12.8 릴리스 항목에도 Blackwell 라이브러리 지원이 들어 있고, 12.9는 새 SM 타깃과 도구·라이브러리 변경을 더해. 어떤 문제가 sm_103 컴파일 타깃 문제인지, cuBLAS FP8/FP4 경로 문제인지, vLLM wheel 문제인지, PyTorch가 묶은 CUDA 버전 문제인지 나눠 보는 게 안전해.
실무 사용
CUDA 12.9가 들어간 벤치마크나 실행 글을 보면 아래 순서로 보면 돼.
- 호스트 드라이버를 먼저 봐. Linux라면
nvidia-smi의 driver version이 12.9 GA 표의575.51.03이상인지, Update 1 표의575.57.08이상인지, 아니면 12.x minor compatibility 기준으로만 버티는 환경인지 구분해. - 프레임워크 wheel을 봐. PyTorch와 vLLM이 실제로 어떤 CUDA runtime으로 빌드됐는지 확인하지 않으면, 시스템에
/usr/local/cuda-12.9가 있어도 실행 경로는 다를 수 있어. - 모델 카드의 context와 서버 설정을 나눠 적어. Qwen3.6 27B FP8의 native context
262,144와 Reddit의196608실행값은 같은 숫자가 아니야. - KV 캐시 dtype을 봐. BF16 KV는 FP8 가중치와 별개 설정이라서, 긴 문맥에서는 VRAM을 크게 먹어.
- 성공 로그를 복사하기 전에 프리필 시간, decode tokens/sec, 동시성, peak VRAM을 같이 재. 긴 문맥에서는 토큰 생성 속도 하나보다 첫 응답 대기와 메모리 여유가 더 빨리 병목이 돼.
같이 보면 좋은 개념
- CUDA: CUDA 12.9가 전체 GPU가 아니라 NVIDIA 쪽 프로그래밍 모델과 라이브러리 경로라는 점을 먼저 잡아 준다.
- Blackwell: CUDA 버전 숫자와 RTX PRO 5000 같은 GPU 세대, FP8·FP4 경로를 분리해서 보게 해 준다.
- vLLM:
--max-model-len,--kv-cache-dtype, prefix caching 같은 실제 추론 서버 인자가 어디서 작동하는지 확인할 때 필요하다. - BF16 KV: FP8 모델 이름만 보고 캐시까지 FP8이라고 착각하지 않게 해 준다.
- GPU VRAM: 48GB 카드에서 가중치, KV 캐시, 버퍼가 어떻게 같은 공간을 나눠 쓰는지 보는 기준이다.