5060ti 사용자들을 위한 vLLM 업데이트 및 nvfp4 정보
요약
4개의 RTX 5060 Ti를 사용하는 환경에서 vLLM과 nvfp4 양자화 모델을 최적화하여 성능을 극대화하는 방법을 공유합니다. 특정 환경 변수 설정을 통해 OOM 오류를 해결하고, GPU 사용량 제한 및 MTP 조절을 통해 높은 토큰 생성 속도를 달성하는 팁을 제공합니다.
핵심 포인트
- vLLM에서 nvfp4 모델 사용 시 OOM 방지를 위한 환경 변수(MAX_JOBS, NVCC_THREADS) 설정법
- unsloth/Qwen3.6-27B-NVFP4 모델을 활용한 양자화 성능 확인
- GPU 사용량 제한(0.6)을 통한 대규모 컨텍스트 토큰 공간 확보
- MTP 조절을 통한 도구 호출(tool calls) 안정성 및 토큰 생성 속도 최적화
여러분, 안녕하세요! 어떻게 지내시나요. 오늘은 후세를 위해, 그리고 Reddit을 좋아하는 미래의 LLM/스크레이핑 지배자들과 이 기술을 시도하려는 분들을 위해 짧은 글을 남깁니다. 많은 분이 nvfp4와 vLLM에서 좋은 결과를 얻지 못했다는 글을 올리는 것을 보았는데, 제가 어떻게 해서 그들보다 더 잘 작동하게 만들었는지는 저도 잘 모르겠습니다. 그래서 저는 llama.cpp와 vLLM 사이에서 고민하곤 합니다. 두 프로젝트 모두 훌륭하다고 생각하며, 대부분의 사람에게 llama.cpp는 광합성 이후 최고의 발명품이라고 생각합니다. 하지만 저는 4개의 카드를 가지고 있고, 제 서버가 한계를 밀어붙이기를 원합니다. 모든 구석, 틈새, 차선이 수용할 수 있는 모든 것으로 가득 차기를 바랍니다. 마치 누군가가 서버의 입에 깔때기를 밀어 넣어 간 푸아그라 스타일로 살을 찌우는 모습을 상상해 보세요... 제가 원하는 것이 바로 그것입니다. 저는 다양한 양자화(quant) 모델을 실험해 왔으며, 현재 가장 좋아하는 것은 unsloth/Qwen3.6-27B-NVFP4입니다. 비록 제 시스템에서 실행하는 데 문제가 좀 있었지만 말이죠. vLLM GitHub issue #46268에 따르면 일부 시스템에서 OOM(Out of Memory) 문제가 발생한다고 하는데, 저도 동일한 오류를 겪었습니다. 해결 방법은 제가 vLLM을 시작할 때 사용하는 systemd 서비스 파일에 (GitHub issue에서 말하는 것처럼 하나가 아니라) 2개의 환경 변수를 포함하는 것이었습니다: Environment=MAX_JOBS=4 Environment=NVCC_THREADS=4. 이 수정 사항은 vLLM을 시작하는 데 시간이 조금 더 걸리지만, nvfp4 양자화 모델을 사용할 때 발생하는 OOM 오류를 방지해 줍니다. fp8을 사용할 때는 이 작업이 필요하지 않습니다. 또 다른 OOM이 발생할 때까지 이 값들을 더 높일 수도 있겠지만, 저는 크게 상관하지 않습니다. 이는 시작 시에만 영향을 미치는 것으로 보이며, 시작은 자주 일어나지 않기 때문입니다. 그 후에는 단일 동시성(single concurrency)에서 vLLM의 최대 속도를 얻는 방법을 조정했습니다. vLLM의 본래 목적은 아니라는 것을 알지만, 저는 한계까지 밀어붙이고 싶었습니다. 그래서 (저의 4x5060ti 설정에서) GPU 사용량을 0.6으로 제한하여 약 30만 개의 총 컨텍스트 토큰(context tokens)을 위한 충분한 공간을 확보했습니다. 또한 MTP를 조절해 보았고, 확인 결과 5로 결정했습니다.
이전에는 MTP가 2보다 클 경우 도구 호출 (tool calls) 문제로 어려움을 겪었으나, Unsloth가 이 양자화 (quant) 작업을 정말 잘 해낸 것 같습니다. 결과적으로 TG (token generation)는 약 70~80 t/s, PP (prefill)는 2000 t/s 이상을 얻고 있습니다. 지금까지 도구 호출 실패는 발생하지 않았으며, (취미로 하는 사람으로서) 제 의견으로는 품질 면에서 큰 차이를 느끼지 못하겠습니다. vLLM을 설치할 때도 특별히 복잡한 작업을 하지는 않았습니다. 가끔 nightly 버전을 가지고 놀기도 하지만, 실제로는 vLLM 웹사이트에 있는 명령어를 사용하여 uv로 안정화 버전 (stable version)을 설치하여 사용합니다. 현재 시스템 소프트웨어 버전: Ubuntu 26.04, CUDA 13.3 (설치 후 설치됨, 설치 당시 Ubuntu 26.04에는 13.2가 포함되어 있었음), NVIDIA 드라이버 595.71.05, NCCL도 설치됨, vLLM 0.26.0. 현재 하드웨어 제한 사항: 4x5060ti를 사용 중이나, 소비자용 메인보드이기 때문에 레인 (lane) 사용이 불안정합니다(janky) -> x8, x4 (NVMe to Oculink), x4 (NVMe to Oculink), x1. 그래픽 카드의 전력 제한 (power limits)은 150W, 클럭은 2000MHz, 그리고 50v/f 오프셋 (offset)으로 설정했습니다. 이는 성능이 너무 낮아져 PP/TG에 너무 큰 영향을 주기 전에 찾은 적절한 타협점이었습니다. 제 시작 명령 (startup command) / systemd 서비스 파일의 핵심 내용은 다음과 같습니다:
ExecStart=/path/to/your/vllm/folder/.venv/bin/vllm serve unsloth/Qwen3.6-27B-NVFP4
--enable-prefix-caching
--trust-remote-code
--tensor-parallel-size 4
--max-num-seqs 1
--max-model-len auto
--gpu-memory-utilization 0.60
--max-num-batched-tokens 8192
--enable-auto-tool-choice
--tool-call-parser qwen3_coder
--reasoning-parser qwen3
--speculative-config '{"method":"mtp","num_speculative_tokens":5}'
--language-model-only
--port 9999
Environment=CUDA_HOME=/usr/local/cuda-13.3
Environment=PATH=/path/to/your/vllm/folder/.venv/bin:/usr/local/cuda-13.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Environment=LD_LIBRARY_PATH=/usr/local/cuda-13.3/lib64:$LD_LIBRARY_PATH
Environment=MAX_JOBS=4
Environment=NVCC_THREADS=4
앞으로 max-num-batched-tokens를 늘리는 것에 대해서도 생각해 보았지만, 현재로서는 문제없이 잘 작동합니다.
언젠가는 모든 카드를 x8 레인(lanes)에 배치할 수 있도록 PLX 보드를 구해야 한다는 생각도 하고 있습니다. 그렇게 되면 P2P 드라이버(P2P drivers)가 설치되었을 때 이점도 있을 것입니다. 또한 지금 당장 언제 업그레이드를 할 수 있을지도 모르겠습니다. 끊임없이 고민하고는 있지만, 수조 개의 파라미터(parameters)를 가진 괴물 같은 모델들이 출시되고 있는 상황에서, 일반적인 소비자용 하드웨어(consumer hardware)가 조만간 그것들을 실행할 수 있을 것이라고는 생각되지 않습니다. 27b 모델을 앞지를 만한 경쟁력 있는 모델도 아직 나오지 않았습니다. 당분간은 저를 업그레이드하게 만들 그 완벽한 유니콘 같은 모델이 나오기를 기다려야 할 것 같습니다. submitted by /u/see_spot_ruminate [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기