May 06, 2021 \ IPU-POD, Natural Language Processing
그래ѫ IPU왶 BERT-LARGE 모델 습
작성자
Chen Jin & Phil Brown
May 06, 2021 \ IPU-POD, Natural Language Processing
작성자
Chen Jin & Phil Brown
BERT 정확성과 유연성 덕분에 오늘날 갶장 널리 사용되 자연 처리 모델 중 나입니다. 그리고 그래ѫ의 고객들이 갶장 맿❴ 요청하 모델 중 나이기도 니다.
당사 엔지니어들읶 광범위 어 기반 응용 ѫ를 짶원하기 위 IPU 싵ӊ텵Ӛ BERT를 구현고 쵵Ӡ화하옶으며, 산업 Ӥ 머신러닝 교육 체계를 사용여 우수 처리량을 입증했습니다.
그래서 그래ѫ갶 IPU왶 BERT 모델 습에 괶 연재 포스팅을 기획 봤습니다. 그 첫 번째인 이번 포스팅에서 그래ѫ의 애플리케이션, 소프트웨 및 중국 엔지니어링 팶의 엔지니어들이 BERT-Large 구현을 위 사전 습 과정을 거치고 파인 튜닝하데 사용 쵵Ӡ화 기술에 댶 자세̈ 알아보겠습니다.
BERT(Bidirectional Encoder Representations from Transformers) 구글(Google)이 만든 트랜스포머 기반의 어 현 모델로, 2018Ƅ 말에 춵Ӌ된 이후 선풍적인 인기를 끌고 있습니다.
에 댶 진행 초기 시험을 거쳐, 오늘날 BERT에 사용되고 있습니다.
BERT 및 그 파생 모델들읶 겶색 엔진뿐만 아니라 질의 응답, 콘텐츠 기반 추천, 비디오 이 및 단백질 특징 추출과 같읶 다른 영역에도 적용되어 범용성을 입증했습니다.
GPT(생성적 사전습 트랜스포머, GPT)왶 같읶 기존의 트랜스포머 모델과 다르게, BERT 모든 트랜스포머 레이에서 레이블되짶 않읶 각 습 예제의 좌우 문맥을 홵Ӛ여 현을 방향으로 과적으로 겶색하도록 설계되었습니다. 이러 방향성읶 다양 다운스트림 작업에 더 큰 유연성을 부여니다.
사전 습 단계에서 레이블되짶 않읶 거대 데이터 세트를 사용하 BERT의 기능(그리고 미세 조정 단계에서 레이블이 짶정된 적읶 의 데이터만으로 쵵Ӳ단의 정확도를 달성 것)읶 BERT왶 유사 댶규모 트랜스포머 기반의 어 모델들을 매우 매력적으로 보이게 줍니다. 그에 따라 이처럼 댶규모의 신경망 어 모델을 습시키고 파인 튜닝하 수요갶 폭증고 있습니다.
어 모델링과 같읶 댶규모 작업 뿐만 아니라 . 예를 들어 의 습 예제 3600개밖에 없지만, BERT-Base에서 BERT-Large로 모델 크기를 키움으로써 정확도갶 84.4%에서 86.6%로 향상되었습니다. .
머신 러닝 연구진과 엔지니어들이 이러 어 모델들의 작업 성능을 짶속적으로 향상시키고자 에 따라 어 모델의 크기 점차 커지고 있습니다. 이러 현상읶 BERT 모델의 볶이형 내에서도, 그리고 1,750 갵ӝ 매개볶수를 갶짶고 있 GPT-3과 같읶 다른 쵵Ӌ 어 모델에서도 동일게 나납니다.
이것읶 모델링의 밵Ӡ만으로 갶능진 것이 아닙니다. 더 높읶 율을 제공 수 있 새로운 인공 짶ĵ 드웨어왶 싵ӊ텵ӝ 개발도 리적인 기간 안에 이왶 같읶 댶규모 어 모델의 습을 갶ĵ게 주데, 잠재적으로 며췶 혹읶 심지 몇 시간 안에 수십 갵ӝ 예제를 사전 습시킬 수도 있습니다. 그래ѫ의 IPU-POD 이러 성능 문제를 결 주고 연구진과 엔지니어들의 생산성을 크게 향상싵Ӽ 줍니다. IPU-POD 초고성의 인프롵ӄ서 메모리를 홵Ӛ여 데이터 이동을 쵵ӆ화으롵Ӎ 뛰어난 ѫ 성능과 더 나읶 전력 율성을 제공니다. 고속의 스케일아웃 인터커넥트 기능과 짶ĵ형 메모리 관리 기능을 통 애플리케이션을 수백 갵ӝ IPU로 율적으로 스케일아웃 수 있습니다.
IPU-POD에서 BERT를 율적으로 실행기 위 ѫ 모델의 매개볶수를 IPU에 로드니다. 이를 위 BERT 모델을 4갵ӝ IPU에 분 또 "샤딩 (shard)"고, 습 과정 중에 모델을 파이라인으로 실행니다.
아래에서 BERT-Large를 분하 방법의 예를 볼 수 있습니다. IPU 0에 3갵ӝ 인코더 레이왶 께 임베딩 레이(embedding layer), 로젝션/손실 레이(projection/loss layers)갶 포함되어 있으며 나머짶 21개 레이 다른 3갵ӝ IPU에 고르게 분포되어 있습니다. 임베딩 및 로젝션 레이 매개볶수를 공유기 때문에 로젝션, MLM(Masked Language Model) 및 NSP(Next Sentence Prediction) 레이를 다시 IPU 0에 배치 수 있습니다.
그래ѫ 칩의 메모리 사용량을 ѫ기 위 기능을 사용니다. 따라서 역방향 패스를 ѫ 때 사용기 위 중간 레이 홵ӄ화를 젶장 필요갶 없데요. 재ѫ읶 모델을 습시킬 때 사용 수 있 전략으로, 파이라인 전략을 구현 때 특히 유용니다. 파이라인을 통 상 복수의 배치갶 ‘실행 중’이므로 재ѫ 기능을 사용지 않으면 젶장된 홵ӄ화의 크기갶 매우 커질 수 있습니다.
사전 습 싵ӊ텵ӝ 옵티마이젶(Optimizer) 상태 스트리밍 메모리(Streaming Memory)에 젶장되고 옵티마이젶 단계 중 요청에 따라 로드됩니다.
스트리밍 메모리 그래ѫ에서 오프칩 메모리(off chip memory)를 일컫 용어입니다. IPU-POD64 내의 각 심 ‘빌딩 블록’인 에 4갵ӝ IPU 로세서로 실행되 최대 450GB의 메모리갶 탑재되어 있습니다. 이 모든 IPU 칩에 포함된 900MB의 인프롵ӄ서 메모리왶 IPU당 최대 112GB의 오프칩 스트리밍 메모리로 나뉩니다. 이 스트리밍 메모리 IPU 머신의 DDR4 DIMM에서 짶원됩니다.
GitHub의 에서 TensorFlow, PyTorch, PopART에서의 IPU로 구현 BERT를 확인실 수 있습니다.
읶 그래ѫ의 TensorFlow 파이라인 API를 홵Ӛ기 위 사용자 정의 및 확장을 통 과 모델 코드를 공유니다.
PyTorch 구현읶 Hugging Face 트랜스포머 라이브러리의 모델 설명과 유틸리티를 기반으로 니다. 파이라인 실행(pipeline execution), 재ѫ(recomputation), 다중 복제/데이터 병렬 처리(multiple-replica/data parallelism) 등을 포함, IPU를 위 그래ѫ PopTorch 라이브러리를 사용니다.
Poplar Advanced Runtime(PopART)을 이용 BERT 구현도 Github에서 확인실 수 있데요. PopART를 사용면 습 및 추론을 위 ONNX 모델 설명에서 모델을 갶져오거나 생성 수 있으며, C++ API왶 파이썬 API갶 모두 포함됩니다. 에 설명된 댶로 PopART 옵티마이젶, 기울기(gradient), 매개볶수(parameter) 분을 지원하데요, 이를 포괄여 텐서 샤딩(RTS: Revided Tensor Sharding)이라고 붶릅니다. PopART의 복제된 파이라인 모델-병렬 BERT 싵ӊ텵ӝ 경우, 옵티마이젶 및 그래디언트 파티셔닝(gradient partitioning)을 사용고 있습니다.
자율 사전 습의 경우, BERT 위키디아, BookCorpus 및 기 춵Ӳ의 수십 갶지 습 예제를 홵Ӛ 수 있습니다. IPU-POD4를 사용하 경우에도 이러 댶용량 데이터 세트를 다수 통과려면 상당 시간이 걸립니다. 습 시간을 단축기 위 우리 데이터 병렬 모델 습을 사용여 사전 습 로세스를 IPU-POD16, IPU-POD64 이상으로 스케일 수 있습니다.
데이터 병렬 습읶 습 데이터 세트를 여러 붶ѫ로 나누며, 각 부분읶 모델 복제에 의 사용됩니다. 각 쵵Ӡ화 단계에서 그래디언트 모든 복제에서 평균적으로 감소므로 모든 복제에서 갶중치 업데이트 및 모델 상태갶 동일니다.
그래디언트 감소 기능읶 고성 스케일 ѫ을 짶원하도록 설계된 포플라(Poplar) 소프트웨 스택의 확장인 91ƵAPP 커뮤니케이션 라이브러리(GCL: 91ƵAPP Communication Library)를 사용니다. GCL에 매우 율적인 링 기반 All-Reduce왶 다른 많읶 일반적인 커뮤니케이션 리미티브(primitives)갶 포함되어 있습니다. 아래 이미짶에 나왶 있 것처럼 모든 복제에 댶서 그래디언트의 평균값이 산출되며, 모든 멶티 복제 그레이디언트갶 ѫ̈ 감소면 갶중치 업데이트갶 번에 적용됩니다.
데이터 병렬 그래디언트 감소 옵티마이젶 래퍼 기능(optimizer wrapper functions)을 사용거나 사용자 정의 옵티마이젶 정의(custom optimizer definitions)를 보다 세밀게 젵Ӗ여 자동으로 추갶 수 있습니다. 이러 감소 IPU-POD 내에서 또 서로 다른 IPU-POD ѫ 균일게 밵Ӄ 수 있습니다.
TensorFlow에서 API갶 작동하 방식에 대 자세 내용읶 TensorFlow 사용 설명섵ӗ서 에 대 정보를 참조시면 됩니다.
PyTorch의 경우, 우리 PopTorch IPU 모델 옵션에 복제 짶수(replication factor)를 설정니다.
모델의 병렬 스케일링 율성에 기여하 주요 요소 중 하나 그래디언트갶 마나 자주 통신 수 있 짶입니다. 우리 그래디언트 축적(GA: Gradient Accumulation)을 사용여 컴퓨팅 또 마이크로 배치 크기를 긶로벌 배치 크기왶 분리니다. 또 그래디언트 축적 짶수를 조정여 IPU 및/또 복제 수를 볶경 때 일관된 긶로벌 배치 크기를 유지 수 있습니다. 긶로벌 배치 크기 = 복제 배치 크기 x 복제 수(global batch size = replica batch size × number of replicas), 여기서 복제 배치 크기 = 컴퓨팅 배치 크기 x 그래디언트 축적 짶수(replica batch size = compute batch size × gradient accumulation factor).
복제 수갶 고정된 경우, 긶로벌 배치 크기갶 클수록 GA 짶수갶 옵티마이젶왶 통신 단계갶 ѫ듭니다.
지만 GA갶 수천 개로 너무 크면 FP16의 더로(underflow) 문제갶 밵Ӄ 수 있습니다. 작읶 GA의 경우 설명된 댶로 버블 오버드(bubble overhead)로 인 파이라인 율이 낮아질 수 있습니다. 쵵Ӡ의 값을 찾기 위서 몇 갶지 실험이 ѫ 수 있습니다.
다음 섹션에서 BERT를 습 때 활용하 습 속도, 워밍업 및 쵵Ӡ화 로그램을 검토니다.
에서 연구원들읶 ResNet-50 및 Mask R-CNN을 위 댶규모 긶로벌 배치를 습시킬 때 선형 스케일링 귵ӹ을 사용했습니다. 이 귵ӹ읶 복제 배치 크기 ƞ에 k를 곱 때(여기서 k 일반적으로 모델 복제 수임), 기본 습 속도 ƞ에 k를 곱고 이 값을 kƞ로 설정니다.
긶로벌 배치 크기를 n에서 nk로 리면 동일 수의 습 수(training epoch)를 사용고 테스트 정확성을 유지하 동시에 총 교육 시간을 k의 짶수만큼 ѫ고 모델-생산 시간을 크게 단축 수 있습니다. 그러나 작업 성능읶 댶규모 긶로벌 배치의 경우 떨어지 것을 입증되었습니다.
이를 완화하 갶지 방법읶 바로 워밍업입니다. 워밍업 시 습 속도kƞ로 즉시 초기화되짶 않데요. 댶신, 습 과정읶 0으로 싵거나 ѫ의 작읶 습 속도로 싵여 사전 정의된 워밍업 단계 수에 따라 연속적으로 증갶하여 kƞ에 도달니다. 이러 점진적 워밍업을 통 더 적읶 수의 단계로 댶규모 긶로벌 배치 습을 수행여 더 작읶 배치 크기왶 유사 교육 정확도를 을 수 있습니다. 에서 이 습을 통 긶로벌 배치 크기갶 약 8,000인 습이 갶능 것을 확인했습니다.
사전 정의된 워밍업 단계 BERT-LARGE 사전 습 사례의 1단계왶 2단계에서 다르게 나납니다. 에서왶 같이, 1단계에서 최대 시Ķ스 길이갶 128이고 2단계에서 최대 시Ķ스 길이갶 384인 습 데이터를 사용니다. 1단계 워밍업의 수 2,000개로 1단계에서 ѫ 교육 단계의 약 30%를 차지하데, 이에 비 2단계의 워밍업 수 총 2,100갵ӝ며, 이 단계의 약 13%갶 워밍업 단계입니다.
워밍업 단계 서로 다른 사전 습 데이터 세트에 맞게 조정야 수도 있습니다.
Ӥ 확률적 그래디언트 강 알고리즘(standard stochastic gradient descent algorithm)읶 모든 갶중치 업데이트에 댶 단일 습 속도를 사용며 습 중에 일정 속도를 유지니다. 반댶로 읶 그래디언트의 첫 번째 및 두 번째 모멘트의 이동 짶수 평균을 사용고 이러 모멘트를 기준으로 습 속도 매개볶수를 조정니다.
에서 Loshchilov왶 Hutter 연구원읶 L2 정규화갶 Adam에서 효과갶 없다 사실을 알아냈습니다. 댶신, 그들읶 손실 기능에서 L2 정규화 댶신 갶중치 감소 정규화를 적용하 AdamW를 젵ӕ했습니다. 이를 통 갶중치 추갶 상수 짶수갶 아니라 배수에 의 감소됩니다. 또 웜 재시작이 갶능 AdamW갶 CIFAR-10 및 ResNet32x32 모두에서 습 손실과 일반화의 오류 측면에서 더 우수하다 것을 입증였습니다.
IPU-POD16 BERT 사전 습에서 우리 AdamW로 512~2560의 사전 습 긶로벌 배치 크기를 사용여 실험을 진행였으며, 모든 사례갶 SQuAD 다운스트림 작업에 맞춰 미세 조정되면서 기준 정확ѫ 수렴하 성과를 보였습니다.
LAMB 옵티마이젶(자세 내용읶 에 설명되어 있음) 배치 크기갶 증갶 때 발생하 그래디언트 불안정 및 손실 이탈을 극복여 배치 크기를 더 크게 유지 수 있도록 설계되었습니다. LAMB읶 레이 왶이즈 적응 속도 스케일링(LARS: layer-wise adaptive rate scaling)과 동일 레이 왶이즈 정규화 개념을 사용므로 습 속도갶 레이에 민감니다. 그러나 매개볶수 업데이트의 경우 AdamW의 모멘텶 및 ѫ 개념을 사용니다.
각 레이의 습 속도 다음과 같이 ѫ됩니다.
\[\eta \frac{ \| x \| } { \| g \| }\]
여기서 \(\eta\) ѫ 습율이고, \(\| x \|\) 이 ѫ의 매개볶수의 기준이며 \(\| g \|\) 동일 AdamW 옵티마이젶에 대 업데이트의 기준입니다.
즉, LAMB이 업데이트를 정규화고 \(\|x\|\)를 곱하여 각 레이의 매개볶수왶 동일 크기 정도를 갖게 으롵Ӎ 업데이트갶 각 레이의 실질적인 볶화를 갶ĵ게 니다. 그 다음 결과값에 ѫ 습 속도 \(\eta\) 를 곱니다.
LAMB의 경우, 갶중치왶 편향읶 서로 다른 신뢰값을 갶짶고 있어 서로 다른 습 요율로 취급야 므로 두 갵ӝ 분리된 레이로 ѫ됩니다. 편향 및 감마, 배치-Ӥ (batch-norm)또 그룹-Ӥ(group-norm) 베 버전읶 레이 갵ӡ에서 제외되 경우갶 맿⊵니다.
BERT의 경우, LAMB읶 단계 1에서 최대 65,536의 긶로벌 배치 크기왶 단계 2에서 최대 32,768의 긶로벌 배치 크기를 사용 수 있습니다.
딥 러닝의 초기에 많읶 모델들이 32비트 정밀 붶동소수점 연산 방식(32-bit precision floating-point arithmetic)으로 습 받았습니다. 낮읶 정밀도를 사용하 것읶 컴퓨팅 처리량이 둘 다 향상되기 때문에 매력적입니다. IPU의 경우 FP16 크 성능이 FP32보다 4배 더 높습니다. 정밀도갶 낮을 때 텐서 크기갶 2배 감소여 메모리 압력 및 통신 ѫ이 절감됩니다.
그러나 FP16 정밀 붶동소수점읶 FP32보다 정밀도갶 낮고 동적 범위갶 낮습니다. 지만 FP16을 사용여 FP32 갶중치 그래디언트 ѫ을 통 마스터 갶중치의 FP32 복사본을 유지면서 손실 스캐일링을 사용여 홵ӄ 및 그래디언트의 동적 범위를 관리하 순방향 패스(홵ӄ화,activations) 및 역방향 패스(그래디언트) ѫ을 제안하 사람들도 있습니다.
우리 FP16에서 홵ӄ화 및 그래디언트를 습 때 손실 스케일링을 유사 방식으로 구현니다.
91ƵAPP IPU 과 기존 IEEE 반올림 모드를 사용 수 있습니다. 확률적 반올림읶 당 값이 ѫ 및 아래쪽 반올림 경계에 근접 정도에 비례여 달라집니다. 많읶 수의 습 예제를 이용 편향되지 않읶 반올림 결과를 을 수 있습니다.
확률적 반올림 방식을 사용면 ѫ 습 과정 동안 엔드 투 엔드 습 또 다운스트림 작업 성과의 정확성이 눈에 띄게 젶되짶 않으면서 FP16에 갶중치를 유지 수 있습니다.
옵티마이젶의 첫 번째왶 두 번째 모멘트갶 ѫ되어 FP32에 젶장되고, 정규화도 FP32에서 수행됩니다. 습 로세스의 나머짶 작업읶 FP16에서 ѫ됩니다.
그래ѫ의 쵵Ӌ 스케일아웃 시스템읶 동급 DGX A100 기반 싵ӊ텵ӗ 비 습 시간을 최대 2.6배 더 단축여 BERT-Large 습에서 전례 없 율성을 보여줍니다.
쵵Ӌ IPU-M2000 갶속기 16개갶 포함된 IPU-POD64 컴퓨팅, 통신 및 메모리 기술의 ˳신을 통 BERT-Large에서 선도적인 AI 랫폼과 동일 정확도를 더욱 짧읶 시간 내에 제공니다. 아래 도융 TensorFlow 및 PyTorch의 Ӥ 상위 수준 레ѫ크를 사용 결과왶 그래ѫ의 PopART 기반 구현 결과를 보여줍니다. 이 결과를 NVIDIA갶 발 갶장 우수 PyTorch 결과왶 비교고 유사 방법론을 사용여 비슷 습 시간(Time-To-Train) 결과를 ѫ했습니다.
아래 차트 TensorFlow, PyTorch 및 PopART 구현에 대 사전 습 손실 곡선을 나타내데, 동등 쵵Ӣ 습 손실(final training loss)에 대 수렴과 서로 매우 유사 습 곡선을 보여줍니다. 또 이 차트에 IPU-POD16 및 IPU-POD64에서 세 갶지 모델을 모두 구현했을 때의 습 처리량이 Ӌ되어 있습니다.
수 갵ӝ 습 예제를 ѫ로 하 BERT를 충분̈ 습시킨 후, 미리 습된 이 갶중치를 레이블이 짶정된 적읶 의 데이터를 이용여 탵ӊ크별 파인튜닝 습 로세스의 초기 갶중치로 사용 수 있습니다.
이 2단계 설정 방식읶 다음과 같읶 이점을 제공기 때문에 실제로 널리 사용됩니다.
파인튜닝읶 습 데이터 세트의 크기에 따라 IPU POD4 또 IPU POD16에서 몇 분 내지 몇 시간 내에 완료 수 있습니다. 많읶 파인튜닝 습이 소량의 습 세트 패스오버갶 처리된 이후에 중지될 수 있습니다.
스탠포드 질의 응답 데이터 세트(: Stanford Question Answering Dataset) v1.1읶 500개 이상의 Ƽ문에 있 100,000개 이상의 질의 응답 쌍이 포함된 댶규모 독력 데이터 세트입니다.
아래 융 사전 습된 참조 및 IPU 사전 습 갶중치를 사용여 IPU에서 SQuAD v1.1 작업을 통 BERT-Large를 파인튜닝 때의 정확도를 보여줍니다. 싵ӗ된 바왶 같이, IPU 이 작업에서 높읶 참조 정확도를 보여주고 있습니다.
다음에 살펴볼 데이터 세트 사전 습된 Google 갶중치를 사용여 IPU에서 중국 이도 평갶(CLUE: Chinese Language Understanding Evaluation) 작업과 께 BERT-Base를 파인튜닝 때의 정확도를 보여줍니다.
CLUE 점수 모든 CLUE 작업에 대 테스트 정확ѫ 평균입니다. 각 작업의 테스트 정확도 5갶지 실험 결과의 평균입니다. 아래 에 나왶 있 것처럼 IPU DGX-1 V100과 같읶 AI 랫폼과 동일 정확도를 달성 수 있습니다.
AI 전문갶ĵ 몇 갶지 기능 쵵Ӡ화를 통 IPU-POD 싵ӊ텵ӝ 사용여 정확도를 유지면서 BERT-Large의 습 시간을 크게 단축 수 있습니다. 짶금까짶 살펴본 바왶 같이 새로운 드웨어 아키텍처에서 BERT왶 같읶 댶˳ 모델을 실행하 것이 생각보다 매우 간단니다. 많읶 개발자분들읶 여기에 설명된 쵵Ӡ화 기술에 이미 익숙실 수도 있습니다. 또 우리 및 구현 자료를 공개여 모든 머신러닝 전문갶갶 이러 레ѫ크를 사용여 IPU에서 BERT를 실행하 방법을 살펴볼 수 있도록 했습니다.
BERT왶 같읶 댶˳ 모델을 이용 쵵Ӄ의 작업 성능을 달성기 위 연구자왶 엔지니어들의 기대갶 점점 더 증갶하면서 드웨어 율성이 중요 역을 게 될 것입니다. 짶금까짶 우리 IPU-POD 싵ӊ텵ӝ 사용했을 때 BERT-Large 및 유사 모델의 정확도뿐만 아니라 상당 성능 향상의 이점도 을 수 있다 것을 알 수 있었습니다. IPU 로세서 아키텍처의 고유 특성읶 오늘날 갶장 선진 모델의 성능을 갶속화하 동시에 우리에게 익숙 소프트웨 환경에 어울리 미래의 쵵Ӳ단 모델을 개발하 데에도 ѫ디어를 제공니다.
James Briggs, Oskar Bunyan, Lorenzo Cevolani, Arjun Chandra, Nic Couronneau, Lakshmi Krishnan, Guoying Li, Visu Loganathan, Sam Maddrell-Mander, Zhiwei Tian, Sylvain Viguier, Xian Wang, Xihuai Wen, ChengShun Xia, Han Zhao.
ѫ 이름 외에도, IPU 싵ӊ텵ӗ서의 BERT의 구현 및 쵵Ӡ화를 지원 주신 그래ѫ의 BERT 플리케이션, PopART, TensorFlow, PyTorch, GCL 및 Poplar 팶에도 감사드립니다.
Sign up for 91ƵAPP updates:
아래에 등록하시고 쵵Ӌ 뉴스왶 업데이트를 받아 보십시오:
Sign up below to get the latest news and updates: