파이프라인 병렬화는 서로 다른 레이어 그룹을 순차적인 디바이스 단계에 할당하고, 각 단계 사이에서 활성값을 전달해 모델을 여러 홈 AI 가속기에 분산합니다.
이 방법은 딥 모델이 하나의 가속기에 담기에는 너무 크지만, 여러 디바이스에 맞는 레이어 그룹으로 나눌 수 있을 때 유용합니다. 텐서 병렬화와 달리 각 단계는 동일한 행렬을 분할한 조각이 아니라 완전한 레이어를 소유합니다. 주요 절충점은 디바이스별 가중치 상주량을 줄이는 대신 활성값 전송, 단계별 불균형, 파이프라인 유휴 시간이 발생한다는 것입니다.
파이프라인 병렬화는 딥 모델을 순차적인 레이어 단계로 나눕니다
트랜스포머는 본질적으로 순서가 있습니다. 뒤쪽 레이어가 실행되려면 먼저 앞쪽 레이어가 입력을 변환해야 합니다. 파이프라인 병렬화는 이러한 깊이의 연속된 구간을 그룹화하고 각 구간을 서로 다른 가속기에 할당합니다.
PyTorch의 파이프라이닝 런타임은 모델을 서로 다른 디바이스에서 순차적인 단계로 실행되는 파티션으로 나눕니다. 각 디바이스에는 할당된 단계의 파라미터만 저장됩니다.
이를 통해 디바이스별 모델 메모리 사용량을 줄여, 하나의 홈 GPU에 담기 어려운 모델도 실행할 수 있습니다.
활성값은 한 단계에서 다음 단계로 전달됩니다
GPU 0이 해당 레이어를 처리하면 은닉 상태 활성값을 GPU 1로 보냅니다. GPU 1은 다음 레이어 집합을 적용하고 또 다른 활성값을 전달하며, 마지막 단계에서 로짓 또는 기타 모델 출력이 생성될 때까지 이 과정이 이어집니다.
vLLM-Omni는 파이프라인 병렬화를 트랜스포머 블록을 GPU 간 순차적인 단계로 분할하는 방식으로 설명합니다. 기본 순방향 경로에서는 인접한 단계 사이의 경계 활성값만 전달하면 됩니다.
텐서 병렬화와 달리 디바이스들이 같은 레이어 안에서 하나의 행렬을 함께 계산하지 않습니다. 각 디바이스가 서로 다른 레이어를 소유합니다.
단일 요청도 여전히 단계들을 순서대로 통과합니다
하나의 토큰이나 마이크로배치에서는 이전 단계에서 필요한 활성값이 도착해야 다음 단계가 시작될 수 있습니다. 네 개의 레이어 그룹을 네 개의 GPU에 배치한다고 해서 순차적인 요청 하나가 네 배 빠르게 처리되는 것은 아닙니다.
NVIDIA의 병렬화 가이드는 PP를 모델 레이어를 깊이 방향으로 수직 분할하는 방식으로 정의합니다. 깊이 방향의 직렬 의존성은 그대로 유지됩니다.
따라서 즉각적인 이점은 지연 시간보다 처리 용량일 수 있습니다. 런타임이 단계 간 서로 다른 작업을 겹쳐 실행할 수 있을 때 처리량이 향상됩니다.
마이크로배치가 파이프라인을 채워 여러 단계가 동시에 작업하도록 합니다
입력을 마이크로배치로 나누거나 여러 추론 항목이 서로 다른 단계에 동시에 배치될 수 있을 때 파이프라인은 효율적으로 작동합니다. 단계 2가 한 마이크로배치를 처리하는 동안 단계 1은 다음 마이크로배치를 시작할 수 있습니다.
Hugging Face의 병렬화 가이드는 파이프라인 실행이 파이프라인 유휴 시간을 줄이기 위해 마이크로배치를 사용한다고 설명합니다. 추론 런타임이 독립적인 작업을 겹쳐 실행할 수 있는 경우에도 같은 활용 원칙이 적용됩니다.
대화형 단일 사용자 토큰 생성은 새 토큰이 이전 토큰의 출력에 의존하므로 자연스러운 병렬성이 제한적입니다. 배치 요청이나 다중 사용자 트래픽은 단계를 계속 바쁘게 유지할 기회를 더 많이 제공합니다.
단계별 실행 시간이 고르지 않으면 버블이 발생하고 가장 느린 단계가 전체 성능을 좌우합니다
한 단계에 더 많은 레이어가 포함되어 있거나, 하드웨어가 느리거나, 특히 비용이 큰 연산이 있으면 다음 단계는 입력을 기다리고 이전 단계는 결국 공간이 생기기를 기다리게 됩니다. 이러한 유휴 구간이 파이프라인 버블입니다.
DeepSpeed의 파이프라인 엔진은 모델 레이어를 파이프라인 단계로 분할하는 작업을 강조합니다. 따라서 파라미터 용량의 균형을 맞추는 것만큼 단계별 연산량의 균형을 맞추는 것도 중요합니다.
서로 다른 홈 가속기를 조합한 환경에서는 느린 GPU에 의도적으로 더 적은 레이어를 할당할 수 있지만, 메모리 용량과 활성값 크기, 지원되는 디바이스 간 전송 방식이 이러한 배치를 제한합니다.
파이프라인 병렬화는 가중치 수용량과 활성값 전송 및 스케줄링을 맞바꿉니다
PP는 모델이 깊고 개별 디바이스에 맞는 레이어 그룹으로 나눌 수 있을 때 매력적인 선택입니다. 텐서 병렬화에서 일반적인 잦은 레이어 내부 집단 통신 대신 경계 활성값을 전송하지만, 직렬 의존성과 버블이라는 비용이 발생합니다.
ZimaSpace의 다중 사용자 홈 AI 동시성 가이드가 관련이 있는 이유는 동시에 처리하는 작업이 많아지면 파이프라인을 채우는 데 도움이 되는 반면 KV 캐시와 스케줄링에 대한 부담도 증가하기 때문입니다.
단계별 메모리, 단계 실행 시간, 활성값 전송 시간, 종단 간 지연 시간, 처리량, 디바이스 유휴 비율을 측정하세요. 모델은 담을 수 있지만 가속기의 절반이 유휴 상태로 남는 구성이라면 다른 분할 방식이 필요할 수 있습니다.
ZimaSpace의 로컬 AI 하드웨어 가이드에서 용량의 기본 기준을 확인할 수 있습니다. 파이프라인 병렬화는 단일 디바이스의 메모리 한계를 넘는 한 가지 방법이지만, 성공 여부는 GPU 개수만큼이나 단계 균형에 달려 있습니다.
기술 및 AI 허브
더 읽어보기

홈 카메라는 클라우드 시간 서비스 없이 이벤트를 동기화할 수 있나요?
클라우드 없이 카메라 시간을 동기화하는 메커니즘 우선 설명, 공유 리소스의 트레이드오프, 쿼리 팬아웃 관련 자주 묻는 질문 3가지, 그리고 실용적인 검증 프로토콜.

로컬 AI 서비스가 추론 전에 손상된 모델 레이어를 감지할 수 있나요?
손상된 모델 계층 감지에 대한 메커니즘 중심 설명, 공유 리소스의 트레이드오프, 쿼리 팬아웃 관련 자주 묻는 질문 3가지, 그리고 실용적인 검증 프로토콜.

모든 임베딩을 다시 생성하지 않고 RAG 시스템을 복원할 수 있을까요?
재임베딩 없이 RAG를 복원하는 메커니즘 중심 설명, 공유 리소스의 트레이드오프, 쿼리 팬아웃 관련 자주 묻는 질문 3가지, 그리고 실용적인 검증 프로토콜.

