지난 몇 년 동안 자연어 처리(NLP) 분야에서 급속한 발전이 있었습니다. NVIDIA 및 Amazon의 최신 액셀러레이터와 같이 하드웨어가 향상되었지만 고급 머신 러닝(ML) 실무자는 여러 GPU에서 대규모 언어 모델을 확장하는 데 여전히 정기적으로 문제가 발생합니다.
이 블로그 게시물에서는 주로 Hugging Face와 Amazon SageMaker의 모듈식 백엔드에서 제공하는 추상화를 통해 대규모 및 소규모 NLP 모델의 부상을 간략하게 요약합니다. 특히 SageMaker 모델 병렬 라이브러리 내에서 175억 개의 매개변수 NLP 모델 사전 교육 및 고객을 위한 미세 조정을 해제하는 XNUMX가지 추가 기능의 출시를 강조합니다.
SageMaker 교육 플랫폼에서 이 라이브러리를 사용하여 32ml.p120d.4xlarge 인스턴스 및 24억 개의 매개변수에서 초당 175개 샘플의 처리량을 달성했습니다. 이를 최대 240개의 인스턴스로 늘리면 전체 모델을 학습하는 데 25일이 걸릴 것으로 예상합니다.
모델 병렬 처리에 대한 자세한 내용은 문서를 참조하십시오. Amazon SageMaker 모델 병렬 처리: 대규모 모델 교육을 위한 일반적이고 유연한 프레임워크.
이러한 성능 수치를 생성하는 데 사용한 GPT2 노트북은 GitHub 저장소.
SageMaker 모델 병렬 내에서 새로운 기능을 사용하는 방법에 대한 자세한 내용은 다음을 참조하십시오. PyTorch용 SageMaker 모델 병렬 라이브러리의 확장 기능및 SageMaker Python SDK와 함께 사용.
Amazon SageMaker의 NLP – 포옹 얼굴 및 모델 병렬 처리
Hugging Face 및 NLP를 처음 접하는 경우 알아야 할 가장 큰 하이라이트는 NLP(자연어 처리)를 사용하는 애플리케이션이 인간 수준의 성능을 달성하기 시작했다는 것입니다. 이것은 주로 학습 메커니즘에 의해 주도됩니다. 주의, 라고 불리는 딥 러닝 모델을 탄생시켰습니다. 변압기, 이는 이전의 딥 러닝 순차 방법보다 훨씬 더 확장 가능합니다. 지금은 유명한 BERT 모델 변압기를 활용하기 위해 개발되었으며 그 과정에서 몇 가지 유용한 NLP 전술을 개발했습니다. BERT에서 영감을 받은 NLP 내부 및 외부의 Transformers 및 모델 제품군, Google 검색 결과의 기본 엔진입니다., 귀하의 구글 번역 결과및 다수의 새로운 스타트업.
SageMaker와 Hugging Face는 협력하여 고객이 그 어느 때보다 쉽게 사용할 수 있도록 했습니다. Hugging Face의 DLC(딥 러닝 컨테이너)를 출시하여 Hugging Face의 사전 훈련된 모델을 직접 훈련하고 호스팅할 수 있습니다. 26,000개 이상의 모델 저장소. 우리는 시작했습니다 SageMaker 교육 컴파일러 포옹 얼굴 훈련 루프의 실행 시간을 최대 50%까지 높일 수 있습니다. 우리는 또한 통합했습니다 허깅페이스 플래그십 트랜스포머 SDK 과 분산 교육 라이브러리 NLP 모델을 그 어느 때보다 쉽게 확장할 수 있습니다.
Amazon SageMaker의 Hugging Face Transformer 모델에 대한 자세한 내용은 단원을 참조하십시오. 허깅 페이스 트랜스포머 모델 지원.
SageMaker 모델 병렬 라이브러리를 사용한 대규모 NLP 모델 교육을 위한 새로운 기능
AWS re:Invent 2020에서 SageMaker는 다음과 같은 컴퓨터 비전 모델을 교육하기 위해 클라우드에서 최고의 성능을 제공하는 분산 라이브러리를 출시했습니다. 마스크 -RCNN 및 NLP 모델과 같은 T5-3B. 이는 AWS의 NCCL보다 20-40% 더 빠른 향상된 통신 기본 기능과 수십에서 수백, 수천 개의 GPU로 확장할 수 있는 초대형 언어 모델을 가능하게 하는 모델 배포 기술을 통해 가능합니다.
SageMaker 모델 병렬 라이브러리(SMP)는 Hugging Face 또는 다른 곳을 통해 PyTorch에서 미리 정의된 NLP 모델을 가져오고 해당 모델을 클러스터의 여러 GPU로 분할할 수 있는 기능을 항상 제공했습니다. 달리 말하면 SMP는 모델을 더 작은 청크로 나눕니다. 따라서 메모리 부족(OOM) 오류가 발생하지 않습니다. 대규모 모델에 중요한 추가 메모리 절약 기술을 추가하게 된 것을 기쁘게 생각합니다.
- 텐서 병렬 처리
- 옵티마이저 상태 샤딩
- 활성화 체크포인트
- 활성화 오프로딩
이 XNUMX가지 기능을 결합하여 메모리를 보다 효율적으로 활용하고 차세대 익스트림 스케일 NLP 모델을 훈련할 수 있습니다.
분산 훈련 및 텐서 병렬 처리
텐서 병렬 처리를 이해하려면 많은 종류의 분산 교육 또는 병렬 처리가 있다는 것을 아는 것이 도움이 됩니다.. 가장 일반적인 유형은 이미 알고 있을 것입니다. 데이터 병렬 처리. 데이터 병렬 처리의 핵심은 다음과 같이 작동합니다. SageMaker 추정기에서 2개에서 XNUMX개의 ml.ECXNUMX 인스턴스로 이동하는 것과 같이 클러스터에 추가 노드를 추가합니다. 그런 다음 Horovod, PyTorch Distributed Data Parallel 또는 SageMaker Distributed와 같은 데이터 병렬 프레임워크를 사용합니다. 이렇게 하면 가속기당 하나씩 모델의 복제본이 생성되고 신경망의 역전파 단계에서 모든 결과를 함께 가져오는 것과 함께 데이터를 각 노드로 분할하는 작업을 처리합니다. 분산 경사 하강법을 생각하십시오. 데이터 병렬 처리는 서버 내에서도 널리 사용됩니다. 데이터를 모든 노드의 모든 GPU 및 때때로 CPU로 분할하고 있습니다. 다음 다이어그램은 데이터 병렬 처리를 보여줍니다.
모델 병렬 처리 약간 다릅니다. 동일한 모델을 복사하는 대신 모델을 여러 조각으로 나눕니다. 그런 다음 실행을 관리하므로 데이터는 수학적으로 정확히 같은 방식으로 신경망을 통해 계속 흐르지만 모델의 다른 부분은 다른 GPU에 있습니다. ml.p3.8xlarge를 사용하는 경우 100개의 NVIDIA V4이 있으므로 모델을 GPU당 하나씩 4개로 분할하고 싶을 것입니다. 최대 24개의 ml.p16d.100xlarge로 점프하면 클러스터에 있는 총 16개의 AXNUMX이므로 모델을 XNUMX개로 나눌 수 있습니다. 이것은 때때로 파이프라인 병렬 처리 그 이유는 네트워크의 레이어 집합이 GPU 간에 분할되고 GPU 활용을 최대화하기 위해 파이프라인 방식으로 실행되기 때문입니다. 다음 다이어그램은 모델 병렬성을 보여줍니다.
모델 병렬 처리를 대규모로 수행하려면 세 번째 유형의 배포가 필요합니다. 텐서 병렬 처리. Tensor 병렬 처리는 한 단계 더 나아가 동일한 개념을 적용합니다. 즉, 우리는 신경망의 가장 큰 계층을 분리하고 계층 자체의 일부를 다른 장치에 배치합니다. 이것은 175억 개 이상의 매개변수로 작업하고 모델의 일부와 함께 RAM에 몇 개의 레코드라도 맞추려고 할 때 해당 변환기를 훈련시키는 것과 관련이 있습니다. 다음 다이어그램은 텐서 병렬 처리를 보여줍니다.
사용하려면 텐서 병렬 처리, smp 옵션 내에서 설정 당신은 당신의 평가자에게 전달합니다.
앞의 코드에서 pipeline_parallel_degree
위에서 논의한 파이프라인 병렬 처리를 기반으로 모델을 샤딩해야 하는 세그먼트 수에 대해 설명합니다. 이에 대한 또 다른 말은 점수.
텐서 병렬 처리를 활성화하려면 다음을 설정하십시오. tensor_parallel_degree
원하는 수준으로. ml.p8d.4xlarge 머신의 경우 인스턴스당 GPU 수와 같거나 더 작은 수를 선택해야 하므로 24보다 크지 않아야 합니다. 추가 스크립트 변경 사항은 다음을 참조하십시오. Tensor Parallelism을 사용하여 SageMaker 분산 모델 병렬 학습 작업 실행.
ddp 매개변수는 분산 데이터 병렬을 나타냅니다. 모델 병렬 처리 라이브러리는 이러한 기능에 대해 DDP에 의존하기 때문에 일반적으로 데이터 병렬 처리 또는 텐서 병렬 처리를 사용하는 경우 이 기능을 활성화합니다.
옵티마이저 상태 샤딩, 활성화 오프로딩 및 체크포인트
매우 큰 모델이 있는 경우 매우 큰 최적화 상태도 필요합니다. SMP용 옵티마이저를 준비하는 것은 간단합니다. 스크립트의 디스크에서 선택하여 로드하기만 하면 됩니다. smp.DistributedOptimizer()
목적.
설정하여 추정기에서 이것을 활성화했는지 확인하십시오. shard_optimizer_state
에서 True로 smp_options
SMP를 구성하는 데 사용합니다.
텐서 및 파이프라인 병렬 처리와 유사하게 SMP는 모델과 세계 크기(모든 훈련 노드의 총 GPU 수)를 프로파일링하여 최상의 배치 전략을 찾습니다.
딥 러닝에서 중간 계층 출력은 활성화라고도 하며 순방향 전달 중에 저장해야 합니다. 이는 역방향 패스에서 기울기 계산에 사용해야 하기 때문입니다. 대규모 모델에서 이러한 모든 활성화를 메모리에 동시에 저장하면 상당한 메모리 병목 현상이 발생할 수 있습니다. 이 병목 현상을 해결하기 위해 다음을 사용할 수 있습니다. 활성화 체크포인트, SageMaker 모델 병렬 처리 라이브러리의 세 번째 새로운 기능입니다. 활성화 체크포인트 또는 그라데이션 체크포인트, 특정 계층의 활성화를 지우고 역방향 패스 중에 다시 계산하여 메모리 사용량을 줄이는 기술입니다. 이것은 메모리 사용량을 줄이기 위해 추가 계산 시간을 효과적으로 교환합니다.
마지막으로, 활성화 오프로딩 활성화 체크포인트를 직접 사용합니다. 모델 훈련 중에 GPU RAM에서 몇 가지 텐서 활성화만 유지하는 전략입니다. 특히, 정방향 패스 중에 체크포인트 활성화를 CPU 메모리로 이동하고 특정 마이크로 배치의 역방향 패스를 위해 GPU로 다시 로드합니다.
마이크로 배치 및 배치 전략
때때로 고객에게 혼란을 야기하는 다른 주제는 마이크로 배치 및 배치 전략입니다. 둘 다 SageMaker 모델 병렬 라이브러리에 제공할 수 있는 하이퍼파라미터입니다. 특히 마이크로 배치는 크기가 최소 30억 개 이상의 매개변수와 같이 파이프라인 병렬 처리에 의존하는 모델을 구현할 때 적합합니다.
마이크로 배치는 미니 배치의 하위 집합입니다. 모델이 훈련 루프에 있을 때 선택하고 레이어를 통해 앞뒤로 전달할 특정 수의 레코드를 정의합니다. 미니배치, 또는 때로는 일괄. 데이터 세트를 통한 전체 패스를 시대. 파이프라인 병렬 처리로 정방향 및 역방향 패스를 실행하기 위해 SageMaker 모델 병렬 라이브러리는 배치를 마이크로 배치라고 하는 더 작은 서브세트로 분할합니다. 이 서브세트는 GPU 활용을 최대화하기 위해 한 번에 하나씩 실행됩니다. 결과적으로 GPU당 훨씬 더 작은 예제 세트를 마이크로 배치라고 합니다. GPT-2 예에서, 훈련 스크립트에 1 마이크로배치의 기본값을 직접 추가했습니다..
교육 구성을 확장하면 그에 따라 배치 크기와 마이크로 배치 크기를 변경하는 것이 좋습니다.. 이것이 좋은 성능을 보장하는 유일한 방법입니다. 파이프라인 병렬 처리에 의존할 때 배치 크기와 마이크로 배치 크기를 전체 세계 크기의 함수로 고려해야 합니다.
배치 전략은 모델 파티션을 배치할 위치를 SageMaker에 물리적으로 알려주는 방법입니다. 모델 병렬 및 데이터 병렬을 모두 사용하는 경우 설정 placement_strategy
에 “cluster”
물리적으로 서로 가까운 GPU(장치 ID)에 모델 복제본을 배치합니다. 그러나 병렬화 전략에 대해 더 구체적으로 알고 싶다면 세 글자의 다른 조합을 사용하여 단일 문자열로 나눌 수 있습니다. D는 데이터 병렬화, D는 P
파이프라인 병렬 처리를 나타냅니다. T
텐서 병렬 처리를 위해 일반적으로 기본 배치를 유지하는 것이 좋습니다. "cluster"
, 대규모 모델 훈련에 가장 적합하기 때문입니다. "클러스터" 배치는 "DPT
".
배치 전략에 대한 자세한 내용은 Tensor Parallelism을 사용한 배치 전략.
사용 사례 예시
훈련 작업에 하나의 ml.p3.16xlarge가 있다고 가정해 보겠습니다. 그것은 당신에게 제공합니다 노드당 8개의 NVIDIA V100. 추가 인스턴스를 추가할 때마다 추가 대역폭 오버헤드가 발생하므로 단일 노드에 더 많은 GP'U를 사용하는 것이 항상 더 좋습니다. 이 경우 ml.p3.16xlarge 하나를 사용하는 것이 예를 들어 ml.p3.8xlarge XNUMX개보다 낫습니다. GPU 수가 동일하더라도 추가 노드의 추가 대역폭 오버헤드로 인해 처리량이 느려집니다.
다음 다이어그램은 양방향 데이터 병렬 처리와 결합된 XNUMX방향 모델 병렬 처리를 보여줍니다. 즉, 실제로 모델의 복제본이 두 개 있고(데이터 병렬로 생각) 각각이 XNUMX개의 GPU(모델 병렬)로 분할됩니다.
이러한 모델 파티션 중 하나가 너무 커서 단일 GPU에 맞지 않는 경우 추가 유형의 배포(텐서 병렬 처리)를 추가하여 두 장치를 모두 사용할 수 있습니다.
결론
이 블로그 게시물에서 우리는 특히 모델 병렬 처리에 중점을 둔 SageMaker 분산 교육 라이브러리에 대해 논의했습니다. 최신 테스트의 성능 벤치마크를 공유하여 Amazon SageMaker에서 32 ml.p120d.4xlarge 인스턴스와 24B 파라미터에서 초당 175개의 샘플을 달성했습니다. 이것을 240p4 인스턴스로 늘리면 175일 안에 25B 매개변수 모델을 훈련할 수 있을 것으로 예상합니다.
또한 대규모 훈련을 가능하게 하는 최신 기능, 즉 텐서 병렬 처리, 최적화 상태 샤딩, 활성화 체크포인트 및 활성화 오프로딩에 대해서도 논의했습니다. Amazon SageMaker에 대한 교육을 통해 이를 활성화하기 위한 몇 가지 팁과 요령을 공유했습니다.
직접 사용해 보세요 여기 GitHub에서 사용할 수 있는 번호를 생성한 동일한 노트북 사용. 다음을 통해 AWS 계정에 더 많은 GPU를 요청할 수도 있습니다. 여기에서 서비스 제한 승인 요청.
저자에 관하여
에밀리 웹버 SageMaker가 출시된 직후 AWS에 합류했으며 그 이후로 전 세계에 알리기 위해 노력해 왔습니다! Emily는 고객을 위한 새로운 ML 경험을 구축하는 것 외에도 티베트 불교 명상과 공부를 즐깁니다.
아 디트 야 빈달 AWS Deep Learning의 선임 제품 관리자입니다. 그는 고객이 AWS에서 딥 러닝 모델을보다 쉽게 교육 할 수있는 제품을 개발하고 있습니다. 여가 시간에는 딸과 함께 시간을 보내고 테니스를 치며 역사 소설을 읽고 여행을 즐깁니다.
루이스 퀸텔라 AWS SageMaker 모델 병렬 라이브러리의 소프트웨어 개발자 관리자입니다. 여가 시간에는 SF Bay Area에서 Harley를 타고 있는 모습을 볼 수 있습니다.
- "
- 000
- 100
- 2020
- 39
- 소개
- 가속 자
- 계정
- 달성
- 가로질러
- 추가
- 주소
- 많은
- All
- 이미
- 아마존
- 다른
- 어플리케이션
- 지역
- 가능
- AWS
- 만
- BEST
- 가장 큰
- 억원
- 블로그
- 건물
- 원인
- 이전 단계로 돌아가기
- 클라우드
- 암호
- 조합
- 공통의
- 의사 소통
- 구성
- 혼동
- 용기
- 핵심
- 수
- 고객
- 데이터
- 개발
- 개발자
- 개발
- 장치
- 디바이스
- 다른
- 분산
- 분포
- 아래 (down)
- 구동
- 가능
- 특히
- 예
- 경험
- 체험
- 극단
- 페이스메이크업
- 빠른
- 특색
- 특징
- 소설
- 맞게
- 수행원
- 앞으로
- 발견
- 뼈대
- 가득 찬
- 기능
- 일반
- 생성
- GitHub의
- 가는
- 좋은
- 구글
- Google 검색
- GPU
- 하드웨어
- 도움이
- 강조
- 역사적인
- 방법
- How To
- HTTPS
- 수백
- 증가
- 정보
- 영감
- 통합 된
- 문제
- IT
- 일
- 합류 한
- 도약
- 유지
- 언어
- 넓은
- 최근
- 시작
- 배우다
- 배우기
- 레벨
- 도서관
- 하중
- 기계
- 기계 학습
- 기계
- 유튜브 영상을 만드는 것은
- 매니저
- 메모리
- ML
- 모델
- 모델
- 모듈러
- 가장
- 움직임
- 즉
- 자연의
- 네트워크
- 새로운 기능
- 노드
- 수첩
- 숫자
- 기타
- 서
- 파트너
- 성능
- 조각
- 플랫폼
- 인기 문서
- 가능한
- 일차
- 프로덕트
- 제품
- 프로필
- 제공
- 램
- RE
- 읽기
- 권하다
- 기록
- 감소
- 결과
- 달리기
- 달리는
- 말했다
- 확장성
- 규모
- 스케일링
- SDK
- 검색
- 서비스
- 세트
- 설정
- 샤딩
- 공유
- 상당한
- 크기
- So
- 소프트웨어
- 구체적으로
- 속도
- 지출
- 분열
- 주 정부
- 전략들
- 전략
- 공급
- 전술
- 기법
- test
- 세계
- 수천
- 을 통하여
- 시간
- 도움말
- 도움말 및 유용한 정보
- 함께
- 이상의 주제
- 거래
- 트레이닝
- 이해
- 사용
- 활용
- 시력
- 이내
- 일하는
- 일
- 세계
- 년