본문으로 건너뛰기

© 2026 Molayo

Reddit요약2026. 06. 15. 14:15

[2x3090]: SymmMemCommunicator: 디바이스 기능(Device capability) 8.6 미지원

요약

vLLM 환경에서 RTX 3090(Ampere 아키텍처) 사용 시 SymmMemCommunicator 오류가 발생하는 원인을 분석하고, P2P 활성화에 따른 성능 향상 수치를 공유합니다.

핵심 포인트

  • RTX 3090(CC 8.6)이 vLLM의 SymmMemCommunicator 화이트리스트에서 누락되어 오류 발생
  • P2P 활성화 시 Warm prefill 평균 33%, Raw decode TPS 33% 성능 향상 확인
  • 오류 해결을 위해 vLLM 소스 코드 내 하드코딩된 디바이스 역량 리스트 수정 필요

안녕하세요 여러분, 이 글은 문제에 대한 해결책이라기보다는 단순히 "다른 사람들은 어떻게 하고 있는지 확인해보자"는 취지의 게시글입니다. 초보자로서 저는 vLLM을 실행할 수 있는 2x3090 시스템을 구축했습니다. 많은 자료를 읽어본 끝에, 속도가 더 빨라지는지 평가하기 위해 P2P 드라이버를 컴파일하게 되었습니다. vLLM에서 제목과 같은 오류가 발생했는데, 이는 이 Blackwell 오류와 유사합니다. 혹시 같은 현상을 보신 분이 계신가요? 그리고 vLLM을 패치할 가치가 있을까요? 다음은 LLM 분석 결과입니다.

5분간의 P2P 적용 여부에 따른 비교

지표기준점 (P2P 미사용)P2P 활성화차이
Warm prefill p501,127ms921ms18% 빠름
Warm prefill avg1,517ms1,015ms33% 빠름
ITL avg68.3ms49.9ms27% 빠름
ITL p5052.1ms46.3ms11% 빠름
Cold prefill88.1s (110K tok)17.0s (추정)약 5배 빠름
Raw decode TPS~15 tok/s~20 tok/s33% 증가
KV cache peak(알 수 없음)37%

근본 원인 분석 (Root Cause Analysis)

"SymmMemCommunicator: Device capability 8.6 not supported, communicator is not available." 오류가 발생하는 이유는 다음과 같습니다:

  1. 하드코딩된 화이트리스트 (Hardcoded whitelist): vllm/distributed/device_communicators/all_reduce_utils.py에 있는 SYMM_MEM_ALL_REDUCE_MAX_SIZES 딕셔너리에는 CC "9.0" (Hopper/H100), "10.0" (Blackwell/B100), 그리고 "10.3" (Blackwell/GB200)에 대한 항목만 있습니다.
  2. 정확한 일치 확인 (Exact match check): symm_mem.py의 약 66-71번 라인에서 코드는 다음과 같이 정확한 문자열 조회를 수행합니다:
if self.device_capability not in SYMM_MEM_ALL_REDUCE_MAX_SIZES:
    logger.warning(
        "SymmMemCommunicator: Device capability %s not supported, "
        "communicator is not available.",
        self.device_capability,
    )
    return
  1. CC 8.6 = Ampere 아키텍처 (RTX 3090/3080과 같은 RTX 30 시리즈). 이 아키텍처는 화이트리스트에 추가되지 않았습니다. 대칭 메모리 (symmetric memory) 기능은 PyTorch의 torch.distributed._symmetric_memory 모듈에 의존하며, 이는 Ampere 하드웨어에서 작동할 수도 있고 그렇지 않을 수도 있습니다.
  2. 폴백/환경 변수 재정의 없음 (No fallback/env override): 이 확인 과정을 강제로 활성화하거나 우회할 수 있는 환경 변수가 없습니다. VLLM_ALLREDUCE_USE_SYMM_MEM=0 환경 변수를 통해 SymmMemCommunicator 초기화 시도를 비활성화할 수는 있지만, 지원되지 않는 아키텍처에 대해 이를 활성화할 수는 없습니다.

옵션 1: CC 8.6 지원 추가 (코드 수정) SYMM_MEM_ALL_REDUCE_MAX_SIZES 및 _WORLD_SIZES_MULTIMEM 모두에 "8.6" 항목을 추가합니다. 하지만 대칭 메모리 (Symmetric memory) 동작은 아키텍처마다 크게 다르기 때문에, Ampere GPU에 적합한 최대 크기를 결정하기 위한 벤치마킹 (Benchmarking)이 필요합니다. 옵션 2: 경고 억제 (우회 방법) VLLM_ALLREDUCE_USE_SYMM_MEM=0을 설정하여 SymmMemCommunicator 초기화를 완전히 건너뜁니다. 다른 All-reduce 구현체들 (PyNCCL, CustomAllreduce, FlashInfer)이 여전히 사용되므로, 이는 성능 저하를 최소화하는 우아한 퇴보 (Graceful degradation) 방식입니다. 옵션 3: 체크 로직 완화 (코드 변경) 정확한 CC 일치를 요구하는 대신, 지원되는 가장 가까운 하위 아키텍처의 설정을 사용하도록 폴백 (Fallback)합니다. 하지만 튜닝된 값들이 적용되지 않을 경우 성능이 조용히 저하될 수 있습니다. 가장 실용적인 즉각적 해결책은 옵션 2 — 환경 변수를 통해 해당 기능을 비활성화하는 것입니다. 적절한 장기적 해결책을 위해서는 실제 벤치마크 데이터가 포함된 옵션 1이 필요할 것입니다. 이제 제 분석을 제공할 준비가 되었습니다. /u/kapitanfind-us가 r/LocalLLaMA에 게시함 [link] [comments]

AI 자동 생성 콘텐츠

본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0