기술 가이드

대형 모델의 텐서 병렬성

하나의 장치에 비해 너무 큰 모델이 계속 실행될 수 있도록 여러 GPU에 걸쳐 단일 신경망 계층 내부의 수학을 분할하는 방법입니다.

2분 읽기마지막 업데이트

개요

It matters because frontier models have hundreds of billions of parameters that no single GPU can hold or compute fast enough alone.

심층 분석

텐서 병렬 처리(계층 내 모델 병렬 처리라고도 함)는 전체 레이어를 별도의 장치에 배치하는 대신 GPU 전체에 개별 가중치 행렬을 분할합니다. 변환기에서는 큰 행렬 곱셈(주의 투영 및 피드포워드 MLP)이 분할됩니다. 예를 들어 MLP의 첫 번째 가중치 행렬은 열로 분할되고 두 번째는 행으로 분할되므로 각 GPU는 슬라이스를 계산하고 단일 전체 감소가 결과를 결합합니다. 각 GPU가 하위 집합을 처리하면서 주의가 여러 헤드로 분산됩니다. 모든 GPU는 모든 계층의 일부를 동시에 수행하기 때문에 텐서 병렬 처리는 GPU당 메모리를 줄이고 컴퓨팅 속도를 높이지만 각 계층 GPU 간에 빈번한 고대역폭 통신이 필요합니다. 그렇기 때문에 일반적으로 NVLink로 연결된 노드 내에 제한되고 대규모 교육 및 서비스 작업을 위해 파이프라인 및 데이터 병렬성과 결합됩니다.

기술적 통찰력

Megatron-LM이 대중화한 비결은 파티션 크기를 선택하여 통신을 최소화하는 것입니다. 첫 번째 MLP 행렬을 열 단위로 분할하면 각 GPU가 동기화 없이 로컬로 비선형성을 적용할 수 있습니다. 두 번째 행을 분할한다는 것은 부분 결과를 합산하기 위해 출력에 하나의 전체 감소만 필요하다는 것을 의미합니다. 따라서 각 레이어에는 대략 두 번의 전체 감소(앞으로)와 두 번(뒤로)이 발생합니다. 이러한 집단은 모든 계층에서 발생하기 때문에 대기 시간이 지배적입니다. 따라서 텐서 병렬 처리는 느린 노드 간 네트워크가 아닌 NVLink와 같은 빠른 노드 내 링크 뒤에 존재합니다.

전략적 영향

비용 및 예산

아키텍처 결정은 수년 동안 성능과 운영 비용을 결정합니다.

더 명확한 결정들

기술 교육은 팀이 최신 스택뿐만 아니라 올바른 스택을 선택하는 데 도움이 됩니다.

품질 관리

더 나은 엔지니어링 선택은 생산 시 신뢰성 사고를 줄입니다.

대형 모델을 위한 텐서 병렬성의 미래

텐서 병렬 처리는 여전히 기본이지만 점차 '3D 병렬 처리'(텐서 + 파이프라인 + 데이터)로 혼합되고 전문가 혼합 모델을 위한 전문가 병렬 처리와 결합됩니다. Megatron-LM, DeepSpeed ​​및 vLLM과 같은 프레임워크는 샤딩을 자동화합니다. GPU 상호 연결(NVLink, NVSwitch) 및 광학 패브릭이 더 빨라짐에 따라 노드 경계 제한이 완화되어 더 넓은 텐서 병렬 그룹이 허용됩니다. 지정된 클러스터 토폴로지에 대한 통신을 최소화하기 위해 샤드 크기와 그룹 크기를 선택하는 보다 스마트한 자동 병렬화를 기대합니다.

실제 구현

Megatron-LM을 사용하여 하나의 NVLink 연결 노드에서 8개의 GPU에 걸쳐 각 레이어의 가중치 행렬을 샤딩하여 175B 매개변수 모델을 훈련합니다.

tensor_parallel_size=4를 사용하여 vLLM에서 70B 매개변수 채팅 모델을 제공하므로 가중치가 4개의 GPU에 적합하고 실시간으로 응답합니다.

트랜스포머 어텐션 헤드를 GPU 전체에 분할하여 각 장치가 하위 집합을 계산한 후 다음 레이어에 대한 출력을 연결합니다.

노드 내 텐서 병렬성과 노드 간 파이프라인 병렬성을 결합하여 대규모 GPU 클러스터에서 1000조 매개변수 모델을 훈련합니다.

위험 및 가드레일

하나의 벤치마크를 최적화하면 더 광범위한 시스템 약점을 숨길 수 있습니다.

인프라 및 유지 관리 비용은 종종 과소평가됩니다.

시스템이 더욱 복잡해짐에 따라 보안 및 관찰 가능성의 격차가 커질 수 있습니다.

구현 로드맵

1

구현하기 전에 지연 시간, 품질, 비용 목표를 정의하세요.

2

현실적인 로드 및 데이터 조건에서 벤치마킹합니다.

3

오류, 드리프트 및 사용자 영향에 대한 계측기 모니터링.

4

확장하기 전에 롤백 및 사고 대응 경로를 준비하세요.

계속 탐색하세요

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Tensor Parallelism for Large Models quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

퀴즈 시작

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

다음 가이드

모델 및 파이프라인 병렬성

자주 묻는 질문

What is Tensor Parallelism for Large Models?

하나의 장치에 비해 너무 큰 모델이 계속 실행될 수 있도록 여러 GPU에 걸쳐 단일 신경망 계층 내부의 수학을 분할하는 방법입니다. 프론티어 모델에는 단일 GPU만으로는 충분히 빠르게 보유하거나 계산할 수 없는 수천억 개의 매개변수가 있기 때문에 중요합니다.

텐서 병렬 처리는 GPU에서 무엇을 분할합니까?

텐서(레이어 내) 병렬 처리는 레이어 내부의 가중치 행렬을 분할하므로 모든 GPU가 동일한 레이어의 일부를 계산합니다. 이는 전체 레이어를 다른 GPU에 배치하는 파이프라인 병렬 처리와는 다릅니다.

Megatron 스타일 MLP 분할에서 통신을 최소화하기 위해 두 개의 가중치 행렬을 어떻게 분할합니까?

첫 번째 행렬을 열로 분할하면 각 GPU가 비선형성을 로컬로 적용할 수 있습니다. 두 번째를 행으로 분할한다는 것은 단일 전체 감소가 부분 출력을 합산하여 동기화를 최소화한다는 것을 의미합니다.

텐서 병렬 처리가 일반적으로 단일 노드 내에 유지되는 이유는 무엇입니까?

각 계층은 집단 통신(전체 감소)을 트리거하므로 대기 시간에 민감한 대용량 트래픽에는 느린 노드 간 네트워크보다는 NVLink와 같은 빠른 노드 내 링크가 필요합니다.

텐서 병렬 처리에서 주의 메커니즘은 일반적으로 어떻게 병렬화됩니까?

어텐션 헤드는 독립적이므로 GPU 전체에 분산됩니다. 각 장치는 일부 헤드를 계산하고 출력을 결합합니다.

일반적으로 텐서 병렬 처리에서 부분 결과를 결합하는 집합 작업은 무엇입니까?

All-Reduce는 각 GPU에서 계산된 부분 출력을 합산하여 레이어 결과에 동의합니다. 이는 순방향 및 역방향 패스에서 레이어당 여러 번 발생합니다.