한 줄 정의

**텐서 병렬 처리(Tensor Parallelism)**는 거대 언어 모델(LLM)의 메모리 점유 및 연산 병목을 극복하기 위해, 단일 레이어의 행렬 연산(Matrix Multiplication) 자체를 분할하여 다수의 GPU가 동시에 나누어 연산하고 결과를 동기화하는 분산 컴퓨팅 기법이다.

핵심 요지

  • 행렬 연산의 분산 처리: 모델의 개별 레이어 가중치 행렬을 열(Column) 또는 행(Row) 단위로 쪼개어 각 GPU가 부분적인 연산을 수행하게 함으로써, 연산 부하가 특정 그래픽 카드에 쏠리지 않도록 분산시킨다 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).
  • 초대형 모델 구동을 위한 필수성: 2.8조 개의 매개변수를 지녀 4비트 양자화를 거쳐도 가중치 용량이 약 1.4TB에 달하는 Kimi K3와 같은 초거대 모델을 서빙하려면 단일 GPU 장치 수준의 메모리 한계를 무조건 초과하므로 텐서 병렬 처리가 강제된다 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).
  • 고대역폭 인터커넥트 요구: 연산 과정에서 매 레이어마다 GPU 간 빈번한 텐서 조각 동기화(All-Reduce, All-Gather 등)가 수반된다. 따라서 노드 내부 GPU는 NVLink로, 노드 간은 InfiniBand와 같은 저지연·고대역폭 전송망으로 단단히 묶여야 실용적인 수준의 추론 성능을 보장할 수 있다 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).
  • KV 캐시 마진 및 컨텍스트 확보: Kimi K3가 지원하는 최대 100만 토큰의 초장기 컨텍스트 창(Context Window)을 안정적으로 소화하려면 모델 자체의 가중치 용량(1.4TB) 외에도 거대한 KV 캐시 메모리 영역이 필요하므로, H100 GPU 4대(VRAM 320GB) 수준의 단순 분산을 넘어 다중 노드 및 대단위 텐서 병렬 클러스터 구성이 요구된다 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).

상세

1. 동작 매커니즘 (Column & Row Parallelism)

일반적인 텐서 병렬 처리는 Megatron-LM의 구조를 따르며, 크게 두 가지 Linear 레이어 변환 방식을 사용한다.

  1. 열 병렬 처리(Column Parallel Linear): 가중치 행렬 를 열 단위로 분할하여 으로 나누고, 입력 를 복제하여 각 GPU에서 를 독립적으로 계산한다. 이후 All-Gather 통신을 통해 최종 출력 을 병합 복원한다.
  2. 행 병렬 처리(Row Parallel Linear): 가중치 행렬 를 행 단위로 분할하여 각 GPU가 입력 의 분할 텐서 와 곱해 를 계산한 뒤, All-Reduce 통신을 통해 각 결과를 합산하여 최종 출력 를 구한다.

이러한 연산은 모델 내 트랜스포머의 어텐션(Attention) 레이어(QKV Projection 및 Output Projection)와 MLP(Feed-Forward) 레이어 전반에 적용되어 분산 처리를 수행한다.

2. 하드웨어 인프라 및 전송 대역폭 병목

텐서 병렬 처리는 레이어를 단계별로 지나치는 파이프라인 병렬 처리(Pipeline Parallelism)에 비해 동기화 주기가 극도로 짧다. 매 연산마다 동기화 통신이 발생하므로 통신 지연(Latency)이 전체 추론 속도의 결정적인 요인으로 작용한다.

  • 노드 내부(Intra-node): PCI Express 버스는 GPU 간 대용량 가중치 동기화를 처리하기에 대역폭이 턱없이 부족하여 심각한 지연을 발생시킨다. 이에 따라 GPU 간 직접 통신 선로인 NVLink(예: H100 간 900 GB/s 대역폭)를 이용한 전용 토폴로지가 핵심이 된다 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).
  • 노드 외부(Inter-node): 단일 서버의 물리적 한계를 벗어나는 초대형 모델의 경우(예: H100 8대 노드가 2~3개 탑재된 환경), 노드 간 메모리를 가상으로 엮어 텐서 병렬 처리를 수행해야 한다. 이때 노드 간 물리 인터페이스는 반드시 InfiniBand 망으로 설계되어 데이터 전송 지연을 최소화해야 한다 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).

3. MoE(Mixture-of-Experts) 아키텍처 환경에서의 역할

Kimi K3와 같은 전문가 혼합 아키텍처(MoE) 모델은 활성화되는 전문가 수가 토큰당 16개로 작더라도(전체 전문가 896개) 실시간 라우팅의 민첩성을 확보하기 위해 전문가 전체를 메모리에 적재해야 하는 메모리 벽 한계에 부딪힌다 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md). 이때 텐서 병렬 처리는 896개의 전문가 서브 네트워크 레이어를 여러 GPU 장치에 고르게 배치하고 나눔으로써, 단일 GPU의 메모리 용량 부족 문제를 직접적으로 상쇄하고 연산 병목을 제거하는 근간 인프라 기술로 사용된다 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).

예시

1. PyTorch 기반의 Column Parallel Linear 시뮬레이션 코드

단일 프로세스 내에서 가상의 두 대 GPU가 가중치 행렬을 열 단위로 나누어 병렬 연산한 뒤, All-Gather로 결과를 병합하는 개념 검증용 파이썬 코드다.

import torch
import torch.nn as nn
 
class ColumnParallelLinearSimulation(nn.Module):
    """
    텐서 병렬 처리 중 '열 병렬 선형 레이어(Column Parallel Linear)'의 동작을
    단일 프로세스 내에서 다중 GPU(혹은 분할 텐서)로 모사한 시뮬레이션 코드입니다.
    """
    def __init__(self, in_features, out_features, num_gpus=2):
        super().__init__()
        self.num_gpus = num_gpus
        self.in_features = in_features
        # 출력 특징 차원을 GPU 개수만큼 균등 분할
        self.split_out_features = out_features // num_gpus
        
        # 각 가상 GPU가 개별 적재할 가중치 조각 (Weight Shards)
        # 실제 multi-GPU 분산 처리 환경에서는 각 GPU 메모리에 개별 탑재됩니다.
        self.weight_shards = nn.ParameterList([
            nn.Parameter(torch.randn(self.split_out_features, in_features))
            for _ in range(num_gpus)
        ])
        
    def forward(self, x):
        # x: [batch_size, in_features] 형태의 입력 텐서
        partial_outputs = []
        
        # 1. 각 GPU 장치에서 로컬 가중치 조각으로 병렬 행렬곱(MatMul) 수행
        for i in range(self.num_gpus):
            # Y_i = X * W_i^T
            partial_out = torch.matmul(x, self.weight_shards[i].t())
            partial_outputs.append(partial_out)
            
        # 2. All-Gather 연산 모사: 각 GPU에서 계산된 열 분할 결과를 병합하여 최종 출력 복원
        final_output = torch.cat(partial_outputs, dim=-1)
        return final_output
 
if __name__ == "__main__":
    # 입력 차원 1024, 출력 차원 2048의 레이어를 2대의 GPU로 텐서 병렬 처리하는 상황 설정
    tp_layer = ColumnParallelLinearSimulation(in_features=1024, out_features=2048, num_gpus=2)
    
    # 32 배치 크기의 입력 데이터 생성
    input_data = torch.randn(32, 1024)
    
    # 순방향 전파 시뮬레이션
    output = tp_layer(input_data)
    
    print(f"입력 텐서 크기: {input_data.shape}")
    print(f"가상 GPU 0번 적재 가중치 크기: {tp_layer.weight_shards[0].shape}")
    print(f"가상 GPU 1번 적재 가중치 크기: {tp_layer.weight_shards[1].shape}")
    print(f"All-Gather 병합 후 최종 출력 크기: {output.shape}")

2. Kimi K3 (2.8조 매개변수) 구동을 위한 텐서 병렬화 인프라 구성 예시

  • 대상 모델 상세: Kimi K3 (MXFP4 양자화 적용 시 실제 메모리 점유 1.4TB) (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).
  • 가용 장비 명세: H100 80GB GPU가 탑재된 8-GPU 서버 노드 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).
  • 인프라 규모 산정:
    • 단일 노드 구동 불가: H100 8대 노드 1개의 총 VRAM은 640GB로, 1.4TB의 가중치조차 물리적으로 적재 불가능하다.
    • H100 8대 노드 2개(VRAM 1,280GB): 여전히 1.4TB 가중치 요구 사양에 미달하여 구동에 실패한다.
    • H100 8대 노드 3개(VRAM 1,920GB): 1.4TB의 모델 가중치를 적재한 후, 약 520GB의 유효 VRAM 공간이 남는다. 이 여유 공간을 통해 최대 100만 토큰 컨텍스트 처리를 위한 대형 KV 캐시 공간을 온전히 할당할 수 있게 된다 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).
  • 인터커넥트 구조: 3개의 노드를 통합하여 24-way 텐서 병렬 처리 혹은 텐서-파이프라인 하이브리드 병렬 처리(Tensor-Pipeline Hybrid Parallelism)로 구동한다. 이때 각 노드 내 8대 GPU는 NVLink로 격자식 초고속 연동을 하고, 노드 3개 사이는 InfiniBand 광스위치망을 구축하여 분산 행렬 조각들의 레이턴시 병목을 극복한다 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).

충돌

  • 이론적 분산 선형 가속 vs 인터커넥트 통신 병목 현상: 분산 처리 프레임워크 설계론에서는 텐서 병렬화의 축(TP degree)을 늘릴수록 개별 GPU가 분담해야 할 연산 크기가 줄어들므로 계산 지연 시간이 선형에 가깝게 감소할 것이라 예측한다. 그러나 실제 배포 환경에서는 TP degree가 확장될 때 GPU 간의 All-Reduce 동기화 통신 패킷 크기와 빈도 역시 기하급수적으로 폭증하게 된다. 결국 병렬화 수가 단일 노드 내부(통상 NVLink 한계인 8대)를 초과하여 외부 노드 간 이더넷/인피니밴드 물리 통신 구간을 경유하게 되는 즉시, 데이터 전송 오버헤드가 단축된 행렬 연산 시간보다 비대해져 오히려 전체 추론 속도가 더 저하되는 ‘스케일링의 역전 한계(Scaling Wall)‘에 부딪힌다 (raw/Kimi K3 Is the Biggest Open Source Model Ever. Almost No One Can Run It..md).

관련 노트

  • 메모리 벽: 단일 GPU 가용 메모리의 물리적 한계가 왜 텐서 병렬화와 같은 복잡한 멀티노드 클러스터 구성을 강제하는지 물리적 배경을 제시한다.
  • 전문가 혼합 아키텍처: MoE 모델이 갖는 활성화 전문가 희소성과 가중치 적재의 한계를 다루며, 텐서 병렬 처리 없이는 MoE 기반 초대형 모델의 배포가 물리적으로 불가능한 연결 고리를 설명한다.
  • 공개 가중치 모델: 대규모 매개변수를 담은 가중치가 투명하게 공개되더라도, 텐서 병렬 처리를 원활히 구동하기 위해 수억 원 대에 이르는 클러스터 하드웨어를 필수적으로 갖춰야 하는 연산 격차(Compute Divide) 문제를 다룬다.
  • MXFP4: 텐서 병렬화 클러스터 구성을 위한 기본 모델 크기 계산(1.4TB)의 전제가 되는 저정밀도 양자화 포맷에 대해 서술한다.