실행 프로그램과 확장

최종 업데이트

Strata 다중 GPU 레이어 분할: 설정과 실측 읽기

레이어마다 실행할 GPU를 나누고, 각 GPU는 맡은 레이어의 가중치만 들고 있어요.

Strata의 다중 GPU1 모드는 연속된 모델 레이어를 카드별로 나누는 pipeline/layer parallelism이에요. --gpus 0,2로 두 카드를 선택하거나 설정 파일의 gpu와 layer_split을 조정해요. RTX 5080+3090 Coder 측정에서는 프롬프트2 처리량3이 약 18~20% 늘었고 디코드4는 이야기 작업과 코딩 작업에서 다른 결과를 보였어요. NVLink는 필요하지 않지만 느린 카드를 더한다고 자동으로 빨라지지는 않아요.

실행 조건과 핵심 내용
  • 레이어 분할은 모델을 연속된 구간으로 나눠 GPU마다 다른 단계를 맡겨요.
  • NVIDIA 다중 GPU에는 NVLink가 필요하지 않고 레이어 사이 데이터는 호스트 메모리를 거쳐 이동해요.
  • 프롬프트 처리와 답변 디코드를 별도로 비교하고 모델·입력·엔진 조건을 고정해요.

레이어 분할은 카드마다 모델의 구간을 맡겨요

Strata의 다중 GPU 레이어 분할은 한 모델의 연속된 레이어 범위를 카드별로 배정해 실행해요. 첫 GPU가 앞쪽 레이어를 처리해 넘기면 다음 GPU가 뒤쪽 레이어를 처리해요. 각 카드는 자신이 맡은 레이어의 전문가 캐시를 유지하고, 마지막 GPU는 출력 헤드와 draft/MTP 레이어도 맡아요.

이 방식은 layer/pipeline parallelism이에요. GPU마다 서로 다른 레이어를 맡고, tensor parallelism5처럼 한 레이어의 행렬을 여러 GPU에 나누지는 않아요.

verify window마다 토큰6 데이터를 카드 사이에서 한 번 전달하고 호스트 메모리를 거쳐요. 그래서 NVLink나 GPU 간 peer-to-peer 연결은 필요하지 않으며, PCIe x4나 x1에서도 실행할 수 있어요.

검은 타워형 PC와 화면이 비어 있는 모니터, 옆에 놓인 RAM 모듈
레이어 구간을 나눠 GPU마다 다른 단계를 맡겨요.

카드 추가는 전문가 캐시가 부족할 때 유리해요

두 카드가 레이어를 나누면 각 카드가 담당 구간의 전문가 캐시를 채워요. 단일 카드가 모델의 자주 쓰는 전문가를 충분히 보관하지 못할 때 두 번째 카드의 캐시가 CPU7 쪽 계산을 줄여 디코드를 도울 수 있어요. 모든 카드에는 dense weight, 전체 문맥의 KV 상태, verify window와 프롬프트 버퍼도 필요하므로 VRAM8 용량을 합산한 값만으로 모델 적합성을 판단하지 마세요.

카드가 늘면 PCIe를 오가는 비용도 생겨요. 느린 GPU를 추가한다고 항상 빨라지는 것은 아니에요. Strata는 카드 두 장의 자동 분할 위치를 시험해 전문가 프로필을 가장 많이 담는 배치를 골라요.

두 카드의 아키텍처가 다르면 실행기 지원과 빌드 조건을 확인하세요. NVIDIA와 AMD를 한 번의 실행에서 섞는 구성은 지원하지 않아요.

두 번째 카드의 VRAM이 8GB 미만이면 설정 도구가 위험을 표시해요. 카드마다 dense weight와 프롬프트 버퍼를 확보해야 해서 작은 VRAM이 전체 배치를 제한할 수 있어요.

카드를 더하기 전에 현재 한 장 구성의 캐시 적중률과 CPU 사용률을 확인하세요. 두 번째 카드가 어떤 병목을 줄일지 정한 뒤 시험하면 결과를 해석하기 쉬워요.

setup 명령이나 설정 파일에서 GPU를 고르세요

Windows에서는 Strata 폴더에서 START-HERE.bat --gpus 0,2를 실행하면 두 카드를 선택해 설정을 저장해요. Linux에서는 ./setup.sh --gpus 0,2를 사용해요. 장치 번호는 NVIDIA의 nvidia-smi 번호 순서예요. --gpus all은 사용 가능한 모든 지원 카드를 선택하고, --gpu 0은 이번 실행에만 한 장을 지정해요.

설정 파일에서는 gpu 배열과 layer_split 값을 바꿔요. 예를 들어 gpu를 [0, 2], layer_split을 auto로 두면 자동 분할을 사용해요. 수동 분할에서 layer_split 26은 두 번째 카드가 26번 레이어부터 맡는다는 뜻이에요. 세 장이면 18,32처럼 뒤쪽 단계의 첫 레이어 번호를 오름차순으로 적어요. 이 값은 각 카드가 담당할 레이어 개수가 아니에요.

Strata는 자동 분할 때 선택한 카드 순서를 시작 로그에 표시해요. 후속 main/0.1.41 라인의 문서와 setup.py는 auto가 더 빠른 카드를 마지막에 두도록 정렬한다고 설명해요. 이 자동 정렬과 gpu_order 설정은 v0.1.40.2에는 없으므로, 해당 버전에서는 설치 화면과 시작 로그에 나온 순서를 기준으로 삼아요.

크림색 나무 책상 위에 그래픽카드와 RAM, NVMe SSD가 놓여 있어요.
카드를 더할 때는 각자 필요한 메모리와 PCIe 경로를 살펴요.

5080+3090은 프롬프트에서 더 큰 이득을 보였어요

Coder를 Ryzen 9 9950X3D와 문맥 32K에서 실행한 측정이에요. 단독 RTX 5080과 RTX 5080+3090 자동·수동 분할을 나눠, 두 입력 길이의 프롬프트 처리와 이야기·코드 답변 디코드를 따로 기록했어요.

느린 RTX 2080 Ti를 세 번째 카드로 더한 별도 구성에서는 이야기·코드 디코드가 68·90 tok/s로 내려갔어요. 카드 수나 VRAM 합계보다 실제 작업에서 추가 카드가 해결할 병목을 먼저 확인해요.

좌우로 밀어 표 전체를 비교하세요.

RTX 5080 단독과 5080+3090 분할의 Coder 측정
구성16K 입력 tok/s28K 입력 tok/s이야기 디코드 tok/s코드 디코드 tok/s
RTX 5080 단독1,726–2,0171,97083–8788–105
5080 + 3090 · 자동 K=222,0372,07380109
5080 + 3090 · 수동 K=262,0392,35784110

출처: Strata v0.1.40.2 MULTI_GPU.md의 Coder 측정 표예요. 입력 처리량과 답변 디코드는 서로 다른 작업이므로 각 열을 따로 읽어요.

조립된 PC 케이스 안에 두 장의 그래픽카드가 장착돼 있어요.
두 장의 그래픽카드가 PC 내부에 장착돼 있어요.

용어 각주

  1. GPU — 많은 계산을 병렬로 처리하는 프로세서입니다. AI 모델 실행에서는 모델 계산을 맡습니다.

    본문으로 돌아가기
  2. 프롬프트 — 모델에 보내는 입력문입니다. 생성 모델에서는 만들 결과를 설명하는 문장이 되어 출력의 구성과 내용을 크게 좌우합니다.

    본문으로 돌아가기
  3. 처리량 — 일정 시간 동안 처리하거나 생성한 작업량입니다. 토큰/초, 요청/초처럼 단위를 함께 확인해야 비교할 수 있습니다.

    본문으로 돌아가기
  4. 토큰 디코드 — 입력과 앞서 만든 답변을 바탕으로 다음 출력 토큰을 차례로 생성하는 단계입니다.

    본문으로 돌아가기
  5. 텐서 병렬 — 모델 층 안의 행렬과 연산을 여러 장치로 분할해 함께 계산하는 방식입니다. 부분 결과를 모으기 위해 장치 간 통신이 필요합니다.

    본문으로 돌아가기
  6. 토큰 — 모델이 입력이나 출력을 나누어 처리하는 단위입니다.

    본문으로 돌아가기
  7. CPU — 운영체제와 일반 프로그램 명령을 실행하고, AI에서는 전처리·데이터 이동 등 범용 연산을 맡는 중앙 처리 장치입니다.

    본문으로 돌아가기
  8. VRAM — 그래픽카드의 GPU가 사용하는 메모리입니다. 모델 가중치와 계산 중간값을 저장합니다.

    본문으로 돌아가기

자주 묻는 질문

이 글에서 가장 먼저 확인할 것은 무엇인가요?
Strata의 다중 GPU 모드는 연속된 모델 레이어를 카드별로 나누는 pipeline/layer parallelism이에요. --gpus 0,2로 두 카드를 선택하거나 설정 파일의 gpu와 layer_split을 조정해요. RTX 5080+3090 Coder 측정에서는 프롬프트 처리량이 약 18~20% 늘었고 디코드는 이야기 작업과 코딩 작업에서 다른 결과를 보였어요. NVLink는 필요하지 않지만 느린 카드를 더한다고 자동으로 빨라지지는 않아요.
필요한 메모리는 어느 정도인가요?
verify window마다 토큰 데이터를 카드 사이에서 한 번 전달하고 호스트 메모리를 거쳐요. 그래서 NVLink나 GPU 간 peer-to-peer 연결은 필요하지 않으며, PCIe x4나 x1에서도 실행할 수 있어요.
선택하지 않는 편이 좋은 경우는 언제인가요?
두 카드가 레이어를 나누면 각 카드가 담당 구간의 전문가 캐시를 채워요. 단일 카드가 모델의 자주 쓰는 전문가를 충분히 보관하지 못할 때 두 번째 카드의 캐시가 CPU 쪽 계산을 줄여 디코드를 도울 수 있어요. 모든 카드에는 dense weight, 전체 문맥의 KV 상태, verify window와 프롬프트 버퍼도 필요하므로 VRAM 용량을 합산한 값만으로 모델 적합성을 판단하지 마세요.