여러 개의 V620 또는 기타 gfx1030 카드를 사용하면서 llama.cpp의 텐서 분할 (tensor split) 작동에 문제를 겪는
요약
llama.cpp에서 여러 개의 구형 GPU(V620 등)를 사용할 때 발생하는 텐서 분할(tensor split) 오류와 해결 방법을 다룹니다. 특정 마이크로배치 설정 시 발생하는 메모리 버그를 우회하는 팁과 PCIe 대역폭에 따른 성능 변화를 공유합니다.
핵심 포인트
- 마이크로배치(ub) 설정 시 512 이상의 값은 메모리 손상 버그 유발 가능성 있음
- -ub 384 설정 및 배치 사이즈 조절을 통해 안정적인 구동 가능
- PCIe 아키텍처 및 인터커넥트 구조에 따라 GPU 개수 증가 시 성능이 저하될 수 있음
- V620 등 구형 GPU를 활용한 llama.cpp의 높은 추론 성능 확인
기본적으로 제목에서 말하는 내용입니다. 저의 경우, 텐서 분할 (tensor split)을 사용하려고 하면 항상 충돌이 발생하며 실패했습니다. 듣기로는 기본 마이크로배치 (microbatch) (512) 또는 그 이상의 값을 사용할 때 GPU 메모리가 손상되는 버그가 있다고 합니다. 만약 이와 관련된 이슈 보고가 이미 올라와 있지 않다면, llama.cpp GitHub에 이슈 리포트를 작성할 예정입니다. 저는 ROCm을 사용 중이지만 Vulkan에서도 문제를 겪었습니다. 하지만 네, -ub 384를 설정하고 (384와 512 사이의 값은 시도해보지 않았지만, 이 값이 작동합니다), -b를 모델을 분할할 GPU 개수 이상을 곱한 그 값의 배수로 설정하세요. 저는 R740에 V620 3개를 사용하고 있습니다. 방금 Qwen3.6을 사용하여 카드 2개로 두 번의 빠른 테스트를 진행했습니다. 27B Q8_0 + Q8_0 KV (MTP 포함) = 생성 속도 4050+ t/s, 프리필 (prefill) 500800+ t/s. 35B-A3B Q8_0 + Q8_0 KV (MTP 포함) = 생성 속도 80110+ t/s, 프리필 (prefill) 14001800+ t/s. 드디어 구형 GPU를 산 게 돈 낭비가 아니었다는 느낌이 들기 시작하네요! ㅎㅎ 안정적인 것 같습니다. 이 방식으로 Claude Code에서 27B 모델을 몇 시간 동안 헤비하게 사용했는데 아무런 문제도 없었습니다. 카드 3개로 늘리는 것이 성능 향상에 도움이 되지 않는다는 것을 발견했는데, 오히려 약간 느려지기도 했습니다. 하지만 이는 R740 서버의 PCIe 아키텍처 때문일 수도 있습니다. 두 개의 PCIe 라이저 (riser)는 동일한 CPU에 연결되어 있고, 세 번째는 다른 CPU에 연결되어 있어 세 번째와의 통신은 더 느린 인터커넥트 (interconnect)를 거쳐야 합니다... 텐서 분할 (tensor split)은 NVLink와 같은 직접적인 인터커넥트가 없다면 PCIe 대역폭을 심하게 사용합니다. 채굴용 프레임을 주문했으며, 그런 인터커넥트가 없는 6x V620 시스템을 구축할 예정입니다. 상황이 어떻게 변할지 지켜보겠습니다. 이제, 바라건대 곧 DSV4 텐서 분할 (tensor split) 모드 지원이 추가되었으면 좋겠네요... 그리고 만약 이 메모리 버그가 수정된다면, ub를 더 높여서 훨씬 더 빠른 프리필 (prefill)을 얻을 수 있을 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기