실행 프로그램과 확장
최종 업데이트
멀티 GPU·듀얼 GPU로 로컬 LLM 돌리기
GPU 두 장으로 모델을 나누거나 여러 요청을 분담할 수 있어요.
멀티 GPU1 실행은 한 모델을 여러 카드에 분할하거나, 카드마다 모델 복제본을 올려 요청을 나누는 방식이에요. 24GB GPU 두 장은 물리 메모리 합계가 48GB지만, 런타임2이 모델과 캐시를 분할하지 않으면 한 요청이 이를 함께 쓸 수 없어요. 적재 용량과 한 답변의 지연, 팀 전체 처리량3은 각각 확인해야 해요.
팀에서 쓸 코딩 서버에 24GB GPU 두 장을 둘 때, 먼저 해결하려는 문제가 큰 모델 적재인지 한 답변의 속도인지 여러 사용자의 대기열인지 정해요. 카드를 더하면 필요한 런타임 경로, 카드 간 통신, 냉각과 전원 같은 조건도 함께 늘어나요.
가중치와 캐시를 각 GPU에 배치해요.
두 장의 24GB 카드를 더하면 물리 메모리는 48GB예요. 그러나 앱이 첫 번째 GPU만 사용하면 두 번째 카드의 메모리가 첫 카드의 모델 적재를 돕지 않아요. 런타임이 가중치와 실행 중 KV 캐시4를 나누는 경로를 지원해야 큰 모델 하나에 두 장을 활용할 수 있어요.
운영체제에서 두 장을 봤는지와 특정 모델이 실제로 양쪽에서 실행되는지는 다른 확인이에요. 런타임 로그와 GPU별 메모리를 살펴 모델이 분할됐는지, 한 카드에만 올라갔는지 봐요. 작업 공간과 요청별 캐시도 필요하므로 48GB를 가중치로 모두 채울 수 없고, 카드별 배치가 다르면 한쪽이 먼저 메모리 한계에 닿을 수 있어요.

레이어 분할은 모델의 앞뒤 층을 카드에 배치해요
레이어 분할은 모델 앞쪽 층을 한 GPU에, 뒤쪽 층을 다른 GPU에 둬요. 입력은 앞층부터 처리되고 중간 결과가 다음 카드로 넘어가므로 한 장에 들어오지 않던 가중치를 나눠 적재할 수 있어요.
다음 층은 앞 단계 결과를 받아야 계산을 이어가므로 카드 간 전달과 대기가 반복돼요. 모델 적재가 가능해지는 효과와 한 사람의 응답이 빨라지는 효과는 따로 측정해요. 여러 요청을 겹쳐 처리할 수 있는 정도는 런타임 스케줄링에 달려 있고, 카드 메모리가 다르면 분할 비율도 단순히 반반으로 나누기 어려워요.

텐서 병렬은 한 레이어의 계산을 나누고 자주 통신해요
텐서 병렬5은 모델의 같은 레이어 안에서 계산을 여러 GPU가 나눠 하고 결과를 주고받아요. 레이어 분할이 앞뒤 층을 배치하는 것과 달리, 텐서 병렬은 레이어가 진행되는 동안 GPU 통신을 반복해요.
메인보드의 PCIe 세대뿐 아니라 각 슬롯의 실제 레인 수와 두 장을 꽂았을 때의 연결 조건을 확인해요. NVLink를 고려한다면 카드가 지원하는지와 필요한 연결 부품을 장착할 수 있는지도 봐요. 인터커넥트가 제한되면 통신 비용이 계산 절감분을 상쇄할 수 있고, 카드 사양이나 대역폭을 단순히 더해 두 배 속도를 예상할 수 없어요. 실제 앱이 어떤 병렬 방식을 구현하고 선택한 모델 형식을 지원하는지도 확인해요.

모델 복제는 한 요청보다 여러 요청을 나눠요
모델이 한 GPU에 들어간다면 같은 모델을 양쪽 카드에 각각 올려 서로 다른 요청을 처리할 수 있어요. 이 방식은 팀 전체 요청 처리량이나 대기열을 다룰 때 후보가 되지만, 한 요청의 계산을 두 카드에 나누는 것은 아니므로 한 사람의 답변이 자동으로 빨라지지 않아요.
레이어·텐서 분할은 한 모델이 단일 카드에 들어가지 않는 문제를, 복제는 같은 모델을 이용하는 여러 요청의 분배 문제를 다뤄요. 요청이 겹칠 때 각 사용자의 대기 시간과 메모리 피크를 시험하고, 스케줄러가 요청을 어떻게 배정하는지 확인해요. 전체 처리량이 늘어도 개별 요청의 첫 응답이나 가장 오래 기다리는 사용자에게 지연이 생길 수 있어요.
구매 전에 슬롯·전원·냉각과 실행 경로를 확인해요
두 번째 카드를 고를 때 메인보드 슬롯 개수만으로 판단하지 않아요. 카드 두께 때문에 나란히 설치되지 않을 수 있고 전원공급장치와 케이블이 두 장을 감당하는지, 케이스 안 공기 흐름과 냉각 공간이 충분한지 확인해요. 장시간 동작의 소음과 전력도 카드 가격 외에 고려해요.
큰 모델을 꼭 올려야 하고 지원되는 분할 경로가 확인됐다면 두 GPU를 검토할 근거가 있어요. 목적이 혼자 쓰는 모델 하나의 속도라면 통신·설치 비용과 단일 카드 대안을 비교해요. 구매 전에 사용할 앱과 모델 형식, 메모리 분할 또는 복제 중 목표 경로를 정해 두면 장비를 산 뒤 경로가 맞지 않는 문제를 줄일 수 있어요.
큰 MoE를 나눠 실행한다면 전문가 캐시도 비교해요
GPU에 전부 들어가지 않는 MoE6는 일부 전문가 가중치를 시스템 RAM7에 두고 필요할 때 가져와요. llama.cpp의 다중 GPU MoE 캐시는 자주 사용하는 전문가를 GPU에 남겨 이 전송을 줄여줘요. GPU 메모리에 이미 가중치가 모두 올라간 구성이라면 먼저 일반 분할 설정으로 비교하면 돼요.
| 설정 | 입력 tok/s | 생성 tok/s |
|---|---|---|
기본 --fit | 440.7 | 34.78 |
--fit + 전문가 캐시 | 402.0 | 60.38 |
| CPU 전문가 + 캐시 | 321.5 | 64.39 |
개발 중 공개 측정 · RTX 4090 2장·레이어 분할 · Qwen3.8-Flash-Next Q4_0 93.7 GiB·전문가 65 GiB · EPYC 7742 16스레드·NUMA 노드 1개 · SPEED-Bench qualitative 11개 입력·각 분류 1회·출력 길이 설정 512·temperature 0·동시 요청 1개. 캐시 설정은 병합 전 GPU별 예산을 사용했어요. 원 측정과 최종 구현
이 기록에서는 캐시를 켜면 생성 속도가 높아졌지만 입력 처리 속도는 낮아졌어요. 긴 문서의 첫 답을 빨리 받고 싶다면 프리필8도 함께 비교해야 해요. 문서가 짧고 답변을 길게 생성하는 작업은 디코드9 개선의 이점을 얻기 쉬워요.
병합된 b11507 이후에는 캐시 예산을 전체 용량으로 지정해요. 예를 들어 --moe-cache-mib 8192 --tensor-split 1,1은 두 GPU에 약 4 GiB씩 배분하는 설정이에요. 캐시가 가중치·KV 캐시·계산용 공간과 VRAM10을 함께 사용하므로, 기존 설정에서 남는 VRAM을 확인하고 작은 예산부터 늘리세요.
용어 각주
GPU — 많은 계산을 병렬로 처리하는 프로세서입니다. AI 모델 실행에서는 모델 계산을 맡습니다.
본문으로 돌아가기런타임 — 프로그램이 실행될 때 필요한 기능을 제공하는 소프트웨어 환경입니다. 로컬 AI에서는 모델을 실행하는 엔진을 가리키기도 합니다.
본문으로 돌아가기처리량 — 일정 시간 동안 처리하거나 생성한 작업량입니다. 토큰/초, 요청/초처럼 단위를 함께 확인해야 비교할 수 있습니다.
본문으로 돌아가기KV 캐시 — 어텐션에서 이전 토큰의 키·값을 저장해 다음 토큰 생성 때 재사용하는 메모리입니다. 문맥 길이와 배치 크기에 따라 용량이 달라집니다.
본문으로 돌아가기텐서 병렬 — 모델 층 안의 행렬과 연산을 여러 장치로 분할해 함께 계산하는 방식입니다. 부분 결과를 모으기 위해 장치 간 통신이 필요합니다.
본문으로 돌아가기MoE — 여러 전문가 하위망 중 일부를 입력에 따라 선택해 사용하는 모델 구조입니다. 총 파라미터 수와 한 토큰 처리에 활성화되는 파라미터 수는 다를 수 있습니다.
본문으로 돌아가기시스템 RAM — 프로그램이 실행되는 동안 데이터를 임시로 보관하는 시스템 메모리입니다.
본문으로 돌아가기프리필 — LLM이 입력 프롬프트를 읽고 각 토큰의 내부 표현을 계산하는 단계입니다. 입력이 길수록 처리할 토큰이 많아집니다.
본문으로 돌아가기토큰 디코드 — 입력과 앞서 만든 답변을 바탕으로 다음 출력 토큰을 차례로 생성하는 단계입니다.
본문으로 돌아가기VRAM — 그래픽카드의 GPU가 사용하는 메모리입니다. 모델 가중치와 계산 중간값을 저장합니다.
본문으로 돌아가기
자주 묻는 질문
- 이 글에서 가장 먼저 확인할 것은 무엇인가요?
- 멀티 GPU 실행은 한 모델을 여러 카드에 분할하거나, 카드마다 모델 복제본을 올려 요청을 나누는 방식이에요. 24GB GPU 두 장은 물리 메모리 합계가 48GB지만, 런타임이 모델과 캐시를 분할하지 않으면 한 요청이 이를 함께 쓸 수 없어요. 적재 용량과 한 답변의 지연, 팀 전체 처리량은 각각 확인해야 해요.
- 필요한 메모리는 어느 정도인가요?
- 두 장의 24GB 카드를 더하면 물리 메모리는 48GB예요. 그러나 앱이 첫 번째 GPU만 사용하면 두 번째 카드의 메모리가 첫 카드의 모델 적재를 돕지 않아요. 런타임이 가중치와 실행 중 KV 캐시를 나누는 경로를 지원해야 큰 모델 하나에 두 장을 활용할 수 있어요.
이 조건으로 답변 보기
장비와 모델이 선택된 속도 체험입니다.
