Latent Space가 Amazon SageMaker 모델 병렬 처리 라이브러리를 사용하여 대규모 변압기의 경계를 확장 한 방법

소스 노드 : 1204406

이 블로그는 Sarah Jane Hong CSO, Darryl Barnhart CTO, Latent Space의 Ian Thompson CEO 및 AWS의 Prem Ranga가 공동 작성했습니다.

잠재 공간은 기계 학습 (ML) 모델이 학습하는 추상적 인 아이디어의 숨겨진 표현입니다. 예를 들어, "개", "꽃"또는 "문"은 잠재 공간의 개념 또는 위치입니다. 에서 잠복 공간, 우리는 언어 및 시각적 프롬프트를 모두 사용하여이 공간을 조작하고 탐색 할 수있는 엔진을 개발 중입니다. Latent Space 팀은 그래픽과 자연어 처리 (NLP)라는 두 분야에서 오랫동안 겹치는 부분이 거의 없었습니다. 전통적으로 이미지와 텍스트의 양식은 각각 복잡하고 비싸며 깨지기 쉬운 기능 엔지니어링의 역사를 가지고 개별적으로 처리되었습니다. 문서 이해 또는 질문 답변과 같은 NLP 작업은 일반적으로 장면 이해 또는 렌더링과 같은 비전 작업과 거의 공통점이 없으며 일반적으로 각 작업에 대해 매우 다른 접근 방식과 모델을 사용합니다. 그러나 이것은 빠르게 변화하고 있습니다.

단일 공유 잠복 공간에서 이러한 양식의 병합은 게임에서 문서 이해에 이르기까지 새로운 세대의 창의적이고 상업적인 응용 프로그램의 잠금을 해제합니다. 그러나 단일 모델에서 이러한 새로운 애플리케이션의 잠금을 해제하면 Richard Sutton의“The Bitter Lesson”에서 강조한 것처럼 새로운 확장 문제가 발생하고 지난 몇 년간 확장 법칙에 대한 흥미로운 작업이 시작됩니다. 이를 가능하게하기 위해 Latent Space는 이러한 양식을 단일 모델에 통합하는 동시에이를 효율적으로 확장하고 수행하는 최첨단 연구를 진행하고 있습니다. 이것이 모델 병렬 처리가 들어오는 곳입니다.

아마존 세이지 메이커의 고유 한 자동 모델 파티셔닝 및 효율적인 파이프 라이닝 접근 방식 덕분에 거의 엔지니어링 노력없이 모델 병렬화를 채택 할 수 있었고 모델 교육을 1 억 매개 변수 이상으로 확장했습니다 ( p4d.24xlarge A100 인스턴스), 이는 우리에게 중요한 요구 사항입니다. 또한 SageMaker 모델 병렬 처리 라이브러리를 사용하여 16 개 노드, 38 개 GPU 교육 설정으로 교육 할 때 이전 교육 실행에 비해 효율성이 XNUMX % 향상되었음을 확인했습니다.

대규모 변압기 훈련의 과제

Latent Space에서는 수십억 개의 매개 변수가 포함 된 변환기 모델의 언어와 비전을 융합하여 사용자의 상상력 또는 실제 세계에서는 발생하지만 학습 데이터에서는 발생하지 않는 "분배 외"사용 사례를 지원합니다. 우리는 수십억 개의 매개 변수와 그 이상으로 확장하는 데 내재 된 문제를 두 가지 방법으로 처리하고 있습니다.

정보 검색 기술은 오랫동안 검색 엔진 및 QA 작업의 핵심 구성 요소였습니다. 최근에는 고전적인 IR 기술과 최신 트랜스포머를 결합하여 흥미 진진한 진전을 이루었습니다. 특히 질문에 답하기 위해 관련 문서를 검색하는 방법을 배우는 신경 검색기와 함께 모델을 훈련하는 질문에 답하는 작업을위한 것입니다. 개요는 FAIR의 최근 작업을 참조하십시오. 검색 증강 생성 : 지능형 자연어 처리 모델 생성 간소화퓨전-인-디코더, Google Brain 왕국, 엔비디아 신경 리트리버 질문에 대답합니다.

검색 증강 기술은 비용과 효율성에 도움이되지만 여전히 가장 큰 모델의 단일 GPU에 모델을 맞출 수 없습니다. 이것은 우리가 그것을 훈련시키기 위해 모델 병렬화를 사용해야한다는 것을 의미합니다. 그러나 검색 아키텍처의 특성으로 인해 학습 입력에서 검색된 컨텍스트 간의 상호 종속성 때문에 모델 분할을 설계하는 것이 어려웠습니다. 또한 모델을 분할하는 방법을 결정하더라도 모델 병렬 처리를 도입하는 것은 연구 및 개발 수명주기 전반에 걸쳐 수동으로 수행해야하는 중요한 엔지니어링 작업이었습니다.

SageMaker 모델 병렬 처리 라이브러리

모델 병렬 처리는 여러 장치 또는 노드 (예 : GPU 장착 인스턴스)간에 모델을 분할하고 GPU 사용률을 최대화하기 위해 이러한 장치에서 모델을 훈련하는 효율적인 파이프 라인을 만드는 프로세스입니다. 그만큼 모델 병렬 처리 라이브러리 SageMaker에서는 자동화 된 모델 분할을 제공하여 모델 병렬 처리에 더 쉽게 액세스 할 수 있습니다. 자동화 된 모델 파티셔닝 정교한 파이프 라인 실행 스케줄링. 모델 분할 알고리즘은 속도 또는 메모리 소비를 최적화 할 수 있습니다. 라이브러리는 메모리 균형을 맞추고 장치 간 통신을 최소화하며 성능을 최적화하는 파티셔닝 알고리즘을 사용합니다.

자동화 된 모델 파티셔닝

PyTorch 사용 사례의 경우 모델 병렬 라이브러리는 모델 그래프를 구성하고 텐서 및 매개 변수 모양을 결정하는 추적 단계 (첫 번째 학습 단계에서)를 내부적으로 실행합니다. 그런 다음 중첩 된 트리로 구성된 트리를 구성합니다. nn.Module 모델의 개체와 추적에서 수집 된 추가 데이터 (예 : 저장된 양) nn.Parameters및 각각의 런타임 nn.Module.

그런 다음 라이브러리는 루트에서이 트리를 탐색하고 계산 부하와 메모리 사용의 균형을 맞추고 인스턴스 간의 통신을 최소화하는 파티셔닝 알고리즘을 실행합니다. 여러 nn.Modules가 동일한 nn.Parameter를 공유하는 경우 이러한 모듈은 동일한 매개 변수의 여러 버전을 유지하지 않도록 동일한 장치에 배치됩니다. 파티셔닝 결정이 내려지면 할당 된 모듈과 가중치가 장치에로드됩니다.

파이프 라인 실행 일정

SageMaker 분산 모델 병렬 라이브러리의 또 다른 핵심 기능은 다음과 같습니다. 파이프 라인 실행, 모델 학습 중 기기에서 계산이 수행되고 데이터가 처리되는 순서를 결정합니다. 파이프 라이닝은 미니 배치를 마이크로 배치로 분할하는 것을 기반으로하며, 마이크로 배치는 학습 파이프 라인에 하나씩 공급되고 라이브러리 런타임에 정의 된 실행 일정을 따릅니다.

마이크로 배치 파이프 라인은 모든 GPU가 완전히 활용되도록 보장하며, 이는 우리가 직접 구축해야하지만 모델 병렬 처리 라이브러리를 사용하면 뒤에서 깔끔하게 발생합니다. 마지막으로 아마존 FSx, 이는 검색이 포함 된 멀티 모달 모델을 학습하는 동안 읽는 파일 수를 고려할 때 읽기 속도가 빠르다는 것을 보장하는 데 중요합니다.

훈련 아키텍처

다음 다이어그램은 교육 아키텍처를 설정하는 방법을 나타냅니다. 우리의 주요 목표는 훈련 속도를 높이고 비용을 줄이는 것이 었습니다. 우리가 훈련하는 이미지 및 언어 변환기는 매우 복잡하며 내부에 상당히 많은 수의 레이어와 가중치가 있고 수십억 개의 매개 변수로 실행되며,이 모두가 단일 노드의 메모리에 맞지 않게 만듭니다. 각 노드는 모델의 하위 집합을 전달하며이를 통해 데이터 흐름과 변환이 공유되고 컴파일됩니다. 우리는 16을 설정했습니다. p4d.24x대형 다음 아키텍처 표현을 사용하는 각각 XNUMX 개의 GPU가있는 인스턴스 :

모델을 확장 할 때 일반적인 추세는 모든 것을 네트워크의 가중치에 저장하는 것입니다. 그러나 실제적인 목적을 위해 우리는 렌더링 작업에 도움이되는 관련 컨텍스트를 찾는 방법을 배우기 위해 모델을 보강하려고합니다. 이를 통해 이미지 품질을 손상시키지 않고 서빙 비용을 낮출 수 있습니다. 우리는 큰 변환기 기반 NLP 모델을 사용하고 앞서 언급했듯이 다음과 같이 SageMaker 모델 병렬 처리 라이브러리를 사용하여 훈련 효율성이 38 % 증가하는 것을 관찰했습니다.

  • 텐서 수준 병렬 처리의 경우 모든 계산에 대해 allreduce가 필요합니다. O (log_2 n) 병렬 단계가 필요합니다. 즉, O (n log_2 n) 총 작업에 대해 O (n) 단계를 수행하는 n 개의 머신입니다.
  • 파이프 라인 병렬 처리의 경우 데이터를 파이프 라인으로 전달하기위한 O (1) 병렬 단계가 필요합니다.
  • 16 개의 GPU가있는 1 개의 머신이 주어지면 파이프 라인 병렬의 경우 O (2) 비용, 깊이 별 모델 병렬의 경우 O (log_8 (3)) = O (XNUMX) 비용이 있습니다.
  • 이 경우 SageMaker 모델 병렬 처리와 함께 사용하는 파이프 라인 병렬로 전환하면 네트워크 비용이 1/3로 감소하고 전체 교육 비용이 1/2 + 1/2 * 1 / log_2 (16 ) = 원래 비용의 0.625로 그에 상응하는 효율성 향상.

일반적으로 분산 학습 (모델 크기 또는 학습 데이터 확장 문제)이 필요한 경우 일련의 모범 사례를 따라 어떤 접근 방식이 가장 효과적인지 결정할 수 있습니다.

분산 교육을위한 모범 사례

경험을 바탕으로 분산 데이터 병렬 접근 방식으로 시작하는 것이 좋습니다. 다음과 같은 분산 데이터 병렬 처리 SageMaker 분산 데이터 병렬 라이브러리 는 모델 복제본과 관련된 대부분의 네트워킹 문제를 해결하므로 모델을 가장 적은 수의 노드에 맞춘 다음 복제하여 필요에 따라 배치 크기를 조정해야합니다.

이 시나리오에서와 같이 학습 중에 메모리가 부족하면 모델 병렬 접근 방식으로 전환 할 수 있습니다. 그러나 모델 병렬 학습을 시도하기 전에 다음 대안을 고려하십시오.

  • NVIDIA Tensor Core가 장착 된 하드웨어에서 혼합 정밀도 훈련 속도를 높이고 메모리 소비를 줄입니다.
  • 배치 크기를 줄이십시오 (또는 가능하면 이미지 해상도 또는 NLP 시퀀스 길이를 줄이십시오).

또한 다음에 설명 된대로 배치 정규화가없는 모델 설계를 선호합니다. 정규화없는 고성능 대규모 이미지 인식. 피할 수없는 경우 배치 정규화가 장치간에 동기화되었는지 확인하십시오. 분산 학습을 사용하면 배치가 GPU로 분할되므로 정확한 배치 통계를 사용하려면 모든 장치에서 동기화해야합니다. 이것이 없으면 정규화는 오류를 증가시켜 수렴을 손상시킵니다.

다음과 같은 제약이있는 경우 모델 병렬 학습으로 시작합니다.

  • 모델이 단일 장치에 맞지 않습니다.
  • 모델 크기로 인해 모델 가중치가 GPU 메모리의 대부분을 차지하고 더 작고 최적이 아닌 배치 크기를 선택해야하는 경우와 같이 더 큰 배치 크기를 선택하는 데 제한이 있습니다.

성능을 최적화 할 때 다음을 수행하십시오.

  • 노드 간 통신에 파이프 라이닝을 사용하여 대기 시간을 최소화하고 처리량을 늘립니다.
  • 기포를 최소화하기 위해 파이프 라인을 가능한 한 짧게 유지하십시오. 마이크로 배치의 수는 계산 효율성과 버블 크기의 균형을 맞추기 위해 조정되어야하며 최소한 파이프 라인 길이 여야합니다. 필요한 경우 다음에 설명 된대로 토큰 수준에서 마이크로 배치를 형성 할 수 있습니다. TeraPipe : 대규모 언어 모델 학습을위한 토큰 수준 파이프 라인 병렬 처리

비용을 최적화 할 때 SageMaker 관리 형 스팟 인스턴스를 사용하여 교육하십시오. 이를 통해 온 디맨드 인스턴스에 비해 학습 모델 비용을 최대 90 %까지 최적화 할 수 있습니다. SageMaker는 사용자를 대신하여 스팟 중단을 관리합니다.

고려해야 할 기타 요소 :

  • 빠른 상호 연결이있는 노드 내에서 더 미묘합니다. 노드 내 네트워크 용량이 충분한 경우 최적의 컴퓨팅을 위해 데이터를 재구성하면 이점이 나타날 수 있습니다.
  • 활성화가 가중치 텐서보다 훨씬 큰 경우 분할 된 최적화 프로그램도 도움이 될 수 있습니다. 참조하십시오 제로 자세한 내용은.

다음 표는 몇 가지 일반적인 교육 확장 시나리오와이를 AWS에서 구성하는 방법을 제공합니다.

시나리오 언제 적용 되나요? 해법
단일 GPU에서 여러 GPU로 확장 학습 데이터의 양이나 모델의 크기가 너무 큰 경우 3.16 개의 GPU가있는 pXNUMXxlarge와 같은 다중 GPU 인스턴스로 변경하고 데이터와 처리를 XNUMX 개의 GPU로 분할하고 모델 학습에 걸리는 시간에 거의 선형적인 속도 향상을 가져옵니다.
단일 인스턴스에서 여러 인스턴스로 확장 확장이 인스턴스 크기 변경 이상으로 확장되어야하는 경우 instance_type을 p3.16xlarge로 설정하고 instance_count를 2로 설정하여 SageMaker Python SDK의 추정 기능을 사용하여 인스턴스 수를 확장합니다. 단일 p3.16xlarge에있는 16 개의 GPU 대신 두 개의 동일한 인스턴스에 XNUMX 개의 GPU가 있습니다. 사용 고려 SageMaker 분산 데이터 병렬 라이브러리.
훈련을위한 모델 병렬 접근 방식 선택 훈련 중 메모리 부족 오류가 발생하는 경우 다음을 사용하여 모델 병렬 접근 방식으로 전환 SageMaker 분산 모델 병렬 라이브러리.
노드 간 통신을위한 네트워크 성능 여러 인스턴스를 사용한 분산 학습 (예 : AllReduce 작업을 수행 할 때 클러스터의 노드 간 통신) 인스턴스는 동일한 리전 및 동일한 가용 영역에 있어야합니다. SageMaker Python SDK를 사용하면 자동으로 처리됩니다. 교육 데이터도 동일한 가용 영역에 있어야합니다. 사용 고려 SageMaker 분산 데이터 병렬 라이브러리.
최적화 된 GPU, 네트워크 및 스토리지 대규모 분산 교육 요구 사항 p4d.24xlarge 인스턴스 유형은 빠른 로컬 스토리지와 최대 400 기가비트의 빠른 네트워크 백플레인을 위해 설계되었으며 분산 교육을위한 가장 성능이 좋은 옵션으로 적극 권장합니다.

결론

SageMaker의 모델 병렬 라이브러리를 사용하면 자동 모델 분할 및 효율적인 파이프 라이닝과 같은 많은 이점을 즉시 얻을 수 있습니다. 이 게시물에서 우리는 ML 사용 사례, 다양한 교육 접근 방식에 대한 고려 사항, Amazon SageMaker 모델 병렬 처리 라이브러리를 사용하여 교육 속도를 높이는 방법에 대한 과제를 공유했습니다. 무엇보다도 여기에 설명 된 모델 병렬 처리 및 성능 향상을위한 모범 사례를 채택하는 데 몇 시간 밖에 걸리지 않습니다. 이 게시물이 문제를 해결하는 데 도움이되거나 영감을 준다면 우리는 그것에 대해 듣고 싶습니다! 귀하의 의견과 피드백을 공유하십시오.

참고자료

자세한 내용은 다음을 참조하십시오.


저자에 관하여

프렘 랑가 조지 아주 애틀랜타에 본사를 둔 엔터프라이즈 솔루션 아키텍트입니다. 그는 기계 학습 기술 분야 커뮤니티의 일원이며 ML 및 AI 여정에서 고객과 협력하는 것을 좋아합니다. Prem은 로봇 공학에 열정적이며 자율 주행 차량 연구원이며 휴스턴 및 기타 지역에 Alexa 제어 맥주 Pours를 구축했습니다.

사라 제인 홍 Latent Space의 공동 창립자이자 최고 과학 책임자입니다. 그녀의 배경은 인간-컴퓨터 상호 작용과 기계 학습의 교차점에 있습니다. 그녀는 이전에 대화 형 AI 공간에서 비즈니스에 서비스를 제공하는 Sonar (Marex가 인수)에서 NLP 연구를 이끌었습니다. 그녀는 또한 존경받는 AR / VR 개발자로서 Oculus, Mozilla Mixed Reality 및 Microsoft Hololens로부터 상과 펠로우 십을 받았습니다.

대릴 반 하트 Latent Space의 공동 창립자이자 CTO입니다. 그는 GPU 가속, 컴퓨터 그래픽, 대규모 데이터 및 기계 학습에 대한 경험이있는 노련한 개발자입니다. 다른 열정에는 수학, 게임 개발 및 정보 연구가 포함됩니다.

이안 톰슨 Latent Space의 설립자이자 CEO입니다. Ian은 우리 삶에 큰 영향을 미칠 기술인 "인접 가능한"에 영감을받은 엔지니어이자 연구원입니다. 현재는 안전하고 창의적인 AI를 구축 할 수 있도록 다중 모드 표현 학습을 단순화하고 확장하는 데 중점을 둡니다. 그는 이전에 그래픽 / 가상 현실 (Microsoft에서 인수 한 AltspaceVR) 및 교육 / NLP (HSE) 분야에서 회사를 구축하는 데 도움을주었습니다.

출처 : https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- 스케일 트랜스포머 /

타임 스탬프 :

더보기 AWS 머신 러닝 블로그