CUDA와 HIP 모두를 위한 Llama cpp 빌드에 관한 질문
요약
llama cpp를 CUDA와 HIP 모두에서 사용하기 위한 빌드 전략에 대한 질문과 답변을 다루고 있습니다. 핵심은 NVIDIA(CUDA)와 AMD(HIP) GPU 환경에서 안정적으로 llama cpp를 운영하는 방법입니다. 전문가들은 두 플랫폼용으로 별도의 바이너리 및 빌드 디렉터리를 유지하고, 각 인스턴스를 분리하여 실행할 것을 권장합니다.
핵심 포인트
- NVIDIA (CUDA)와 AMD (HIP)는 별개의 빌드로 관리해야 합니다.
- 두 개의 독립적인 빌드 디렉터리와 바이너리를 사용하는 것이 가장 안정적입니다.
- 각 GPU별로 서버 인스턴스를 분리하여 실행하는 것이 최적의 성능을 제공합니다.
- 단일 모델을 CUDA와 HIP에 걸쳐 분산시키는 것은 실험적이며 권장되지 않습니다.
저는 원래 페이지의 설치 스크립트를 통해 llama cpp를 설치했는데, 기본적으로 Vulkan을 사용했습니다. GPU(NVIDIA)가 '사라지고' 컴퓨터를 재부팅해야 했습니다. 저는 CUDA용으로 llama cpp를 다시 빌드했고, 기존 설치는 제거해야 했지만, CUDA용으로 빌드된 llama cpp가 훨씬 더 안정적입니다. 만약 AMD GPU도 얻게 되어 PC에 둘 다 사용하고 싶다면, HIP 사용을 위해 별도의 llama cpp '인스턴스'를 구축해야 하나요? 저는 NVIDIA와 AMD 카드에서 동일한 llama cpp 인스턴스를 동시에 사용할 계획은 없습니다 (텐서 분할이나 같은 LLM을 여러 GPU에 병렬화하는 것을 시도하려는 것이 아닙니다). 서로 다른 목적을 위해, 항상 동시에 아닐 수도 있지만, 한 GPU에서 하나의 모델이 실행되고 다른 GPU에서 두 번째 모델이 실행되는 경우가 있을 수 있습니다. 이런 관점에서 볼 때, 현재의 CUDA용 llama 버전을 유지하고 이를 llama-hip으로 별칭 지정할 수 있는 두 번째 버전을 빌드하는 것이 의미가 있을까요? 혹시 이 작업을 해보신 분이 있다면 의견을 듣고 싶습니다. 만약 모델을 1:2 비율(16GB CUDA:32GB HIP)로 분할하는 것이 의미가 있다면 기꺼이 실험해 보겠지만, 그것이 제 의도는 아니었습니다. 초기 LLM 채팅에 따르면 다음과 같은 것을 시도해 볼 수 있습니다:
Do you need a separate binary for HIP?
Yes — a HIP build is a distinct build.
HIP is not "added at runtime" to your CUDA binary; it has to be compiled in with -DGGML_HIP=ON, using the ROCm toolchain.
The good news: the two builds can coexist happily. Just use separate build directories: your existing NVIDIA build stays as-is
cmake -B build-cuda -DGGML_CUDA=ON cmake --build build-cuda --config Release -j a sibling HIP build
HIPCXX="$(hipconfig -l)/clang"
HIP_PATH="$(hipconfig -R)"
cmake -B build-hip -DGGML_HIP=ON -DGPU_TARGETS=gfxXXXX -DCMAKE_BUILD_TYPE=Release cmake --build build-hip --config Release -j
나머지는 동일한 llama cpp 인스턴스(CUDA와 HIP 모두용으로 빌드됨)를 사용하려고 할 때 문제가 될 수 있다는 경고에 관한 것이었으며, 다음 내용으로 끝났습니다:
sh What I'd recommend 1.
5060 Ti용 CUDA 빌드는 유지하고, Radeon을 위한 별도의 HIP 빌드를 추가하세요. 두 개의 바이너리, 두 개의 빌드 디렉터리를 사용합니다. 2. 두 개의 서버 인스턴스를 실행(다른 포트)하여 각 카드별로 하나씩 운영하는 것이 가장 안정적이며, 카드당 최고의 성능을 제공하고 두 GPU를 동시에 사용할 수 있습니다. 3. 'CUDA+HIP에 걸쳐 분산된 단일 모델'은 실험적인 것으로 간주하세요. 궁금하다면 시도해 볼 수는 있습니다(build-both, -sm layer -ts 16,32, --list-devices), 하지만 이 기능에 워크플로우를 구축하지 마세요. 만약 단일 모델이 정말로 >32GB가 필요하고 Radeon 하나에 들어가지 않는 경우에만 혼합 빌드(mixed build)가 유일한 대안이며, 심지어 중복 버그 때문에 메모리 이점을 제공하지 못할 수도 있습니다. /u/espece-de-bon 님이 제출함 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기