본문 바로가기

AI Agent

[실전] B300 GPU에서 SGLANG으로 gpt-oss-20b 서빙하기 (CUDA 13 버전 해결법)

반응형

안녕하세요! 오늘은 최신 사양인 B300 GPU에서 SGLANG을 사용해 gpt-oss-20b 모델을 올리는 방법을 알아보겠습니다. 일반적인 방식으로는 CUDA 버전이 맞지 않아 오류가 날 수 있는데, 이를 어떻게 해결했는지 공유해 드릴게요.

1. 왜 latest 이미지 대신 dev-cu13인가요?

처음에는 SGLANG의 latest 태그 이미지를 사용해서 실행해 보았습니다. 하지만 B300 하드웨어는 아주 최신이라서, 기존 이미지에 들어있는 CUDA 버전과 맞지 않는 문제가 발생했어요.

그래서 저는 CUDA 13이 포함된 lmsysorg/sglang:dev-cu13 이미지를 사용했습니다. 최신 그래픽 카드의 성능을 제대로 쓰려면 꼭 이 버전을 확인해야 합니다!


2. Docker 실행 명령어

제가 성공한 Docker 실행 스크립트입니다. B300의 아키텍처를 인식시키기 위해 환경 변수(env) 설정이 아주 중요합니다.

docker run -itd --rm --gpus '"device=0"' \
    -p 3000:3000 \
    -v /home/ubuntu/model_files:/root/.cache/huggingface/models \
    --env "HF_TOKEN=hf_YOUR_TOKEN_HERE" \
    --env "TORCH_CUDA_ARCH_LIST=10.3" \
    --env "CUDA_LAUNCH_BLOCKING=1" \
    --env "TORCH_USE_CUDA_DSA=1" \
    --ipc=host \
    --name=sglang_20b_workspace \
    lmsysorg/sglang:dev-cu13 \
    python3 -m sglang.launch_server --model-path /root/.cache/huggingface/models/gpt-oss-20b \
    --host 0.0.0.0 --port 3000 \
    --mem-fraction-static 0.15 \
    --context-length 30000 \
    --grammar-backend xgrammar \
    --reasoning-parser gpt-oss

3. 설정값들, 왜 이렇게 넣었을까요? (핵심 포인트)

명령어에 포함된 복잡한 설정들을 알기 쉽게 풀어서 설명해 드릴게요.

  • --env "TORCH_CUDA_ARCH_LIST=10.3": B300 GPU 아키텍처에 맞게 연산을 수행하도록 지정해 주는 아주 중요한 설정입니다.
  • --env "CUDA_LAUNCH_BLOCKING=1" & "TORCH_USE_CUDA_DSA=1": 에러가 났을 때 어디가 문제인지 더 정확하게 찾고, 장치 내부의 안전한 접근을 도와주는 도구들입니다.
  • --mem-fraction-static 0.15: 모델이 사용할 GPU 메모리 비율을 정해줍니다. 현재 남은 VRAM에 mem-fraction-static 값을 곱한만큼 VRAM을 점유합니다.
  • --context-length 30000: 모델이 한 번에 사용할 수 있는 context 길이를 설정합니다. (단, 지난 글에서 설명해 드린 것처럼 gpt-oss의 안정성을 위해서는 실제 호출 시 max_model_len을 적절히 조절하는 지혜가 필요합니다!). VRAM 여유가 많으면 크게 해도 되겠지용
  • --grammar-backend xgrammar: JSON 같은 정해진 형식을 더 잘 출력할 수 있게 도와주는 기능을 켭니다.
  • --reasoning-parser gpt-oss: gpt-oss 모델 특유의 생각(reasoning) 과정을 서버에서 인식할 수 있게 해줍니다.

4. 직접 해보며 느낀 꿀팁

B300과 같은 최신 장비는 하드웨어 사양은 훌륭하지만, 소프트웨어 환경(CUDA, PyTorch 등)을 맞추는 것이 가장 큰 숙제입니다.

  1. 이미지 선택: 무조건 최신형 GPU라면 dev-cu13 같은 상위 CUDA 버전 이미지를 먼저 고려해 보세요.
  2. 권한 설정: --ipc=host와 --shm-size를 충분히 주어야 모델이 연산 중에 멈추지 않고 쌩쌩 돌아갑니다.
  3. HF_TOKEN: 모델을 내려받을 때 필요한 HuggingFace 토큰도 환경 변수로 미리 넣어주면 훨씬 편합니다.

5. 결론

B300 GPU에서 SGLANG으로 gpt-oss-20b를 성공적으로 서빙했습니다! 핵심은 dev-cu13 이미지 사용TORCH_CUDA_ARCH_LIST=10.3 환경 변수 설정에 있었습니다.

반응형