자연어 처리에서 2배의 훈련 속도 향상을 위한 Packed BERT 소개

소스 노드 : 1062065

자연어 처리에서 2배의 훈련 속도 향상을 위한 Packed BERT 소개

보다 효율적인 교육을 위해 이 새로운 BERT 패킹 알고리즘을 확인하십시오.


By 마리오 마이클 크렐 박사, Graphcore의 수석 기계 학습 책임자 및 마테이 코섹, Graphcore의 AI 애플리케이션 전문가


헤더 이미지
작성자의 이미지.

 

새로운 패킹 알고리즘을 사용하여 BERT-Large를 훈련하는 동안 자연어 처리 속도를 2배 이상 높였습니다. 우리의 새로운 패킹 기술은 패딩을 제거하여 훨씬 더 효율적인 계산을 가능하게 합니다.

우리는 이것이 다른 산업 및 응용 분야에서 훨씬 더 광범위한 영향을 미치기 위해 길이 분포가 비스듬한 다른 모델 및 게놈 및 단백질 접힘 모델에도 적용될 수 있다고 생각합니다.

Graphcore의 고효율 Non-Negative Least Squares Histogram-Packing algorithm(또는 NNLSHP)과 패킹된 시퀀스에 적용된 BERT 알고리즘을 새 논문[1]에서 소개했습니다.

시퀀스 패딩으로 인한 NLP의 계산 낭비

 
 
우리는 최근에 작업하면서 BERT 교육을 최적화하는 새로운 방법을 조사하기 시작했습니다. MLPerf™에 대한 벤치마크 제출. 목표는 실제 응용 프로그램에서 쉽게 채택할 수 있는 유용한 최적화를 개발하는 것이었습니다. BERT는 업계와 많은 고객이 널리 사용하기 때문에 이러한 최적화에 집중해야 하는 모델 중 하나로 자연스럽게 선택되었습니다.

Wikipedia 데이터 세트를 사용하는 자체 BERT-Large 교육 애플리케이션에서 데이터 세트에 있는 토큰의 50%가 패딩되어 컴퓨팅 낭비가 많다는 사실을 알고 정말 놀랐습니다.

시퀀스를 모두 동일한 길이로 정렬하는 패딩 시퀀스는 GPU에서 사용되는 일반적인 접근 방식이지만 다른 접근 방식을 시도해 볼 가치가 있다고 생각했습니다.

다음 두 가지 이유로 시퀀스의 길이가 크게 변합니다.

  1. 기본 Wikipedia 데이터는 문서 길이에 큰 변화가 있음을 보여줍니다.
  2. BERT 전처리 자체는 훈련 시퀀스를 생성하기 위해 결합되는 추출된 문서의 크기를 무작위로 줄입니다.

길이를 최대 길이 512로 채우면 전체 토큰의 50%가 패딩 토큰이 됩니다. 패딩의 50%를 실제 데이터로 대체하면 동일한 계산 노력으로 50% 더 많은 데이터를 처리할 수 있으므로 최적 조건에서 속도가 2배 빨라집니다.



그림 1: Wikipedia 데이터 세트 분포. 저자의 이미지.

 

이것은 Wikipedia에만 해당됩니까? 아니요.

글쎄, 그것은 언어에 특정합니까? 아니요.

사실, 왜곡된 길이 분포는 언어, 유전체학, 단백질 접힘 등 모든 곳에서 발견됩니다. 그림 2와 3은 SQuAD 1.1 데이터셋과 GLUE 데이터셋의 분포를 보여줍니다.



그림 2: 최대 시퀀스 길이 1.1에 대한 SQuAD 384 BERT 사전 훈련 데이터 세트 시퀀스 길이 히스토그램. 작성자 이미지.

 


그림 3: 최대 시퀀스 길이 128에 대한 GLUE 데이터 세트 시퀀스 길이 히스토그램. 작성자 이미지.

 

계산 낭비를 피하면서 어떻게 다른 길이를 처리할 수 있습니까?

현재 접근 방식은 길이가 다르거나 엔지니어가 프로그래밍 방식으로 패딩을 제거한 다음 각 주의 블록 및 손실 계산에 대해 반복적으로 다시 추가하기 위해 다른 계산 커널을 필요로 합니다. 코드를 부풀리고 더 복잡하게 만들어서 계산을 절약하는 것은 매력적이지 않았기 때문에 더 나은 것을 찾았습니다. 최대 길이의 팩에 여러 시퀀스를 함께 넣고 함께 처리할 수 없습니까? 우리는 할 수 있습니다!

이 접근 방식에는 세 가지 핵심 요소가 필요합니다.

  1. 남은 패딩을 최대한 줄이기 위해 조합할 샘플을 결정하는 효율적인 알고리즘
  2. 시퀀스 대신 팩을 처리하도록 BERT 모델 조정
  3. 그리고 하이퍼파라미터 조정

포장

 
 
처음에는 Wikipedia와 같은 대규모 데이터 세트를 매우 효율적으로 포장할 수 있을 것 같지 않았습니다. 이 문제는 일반적으로 bin-packing으로 알려져 있습니다. 패킹이 XNUMX개 이하의 시퀀스로 제한되는 경우에도 결과 문제는 효율적인 알고리즘 솔루션이 부족하여 여전히 NP-완전합니다. 기존 휴리스틱 패킹 알고리즘은 최소한 O(n 로그(n)), 어디 n 시퀀스의 수입니다(Wikipedia의 경우 ~16M). 우리는 수백만 개의 시퀀스로 잘 확장되는 접근 방식에 관심이 있었습니다.

두 가지 트릭을 통해 복잡성을 크게 줄일 수 있었습니다.

  1. 팩의 시퀀스 수를 XNUMX개로 제한(첫 번째 솔루션 접근 방식의 경우)
  2. 발생하는 각 길이에 대해 하나의 빈이 있는 시퀀스 길이의 히스토그램에서만 작동

우리의 최대 시퀀스 길이는 512였습니다. 따라서 히스토그램으로 이동하면 차원과 복잡성이 16만 시퀀스에서 512 길이 카운트로 줄어듭니다. 한 팩에 최대 22개의 시퀀스를 허용하면 허용되는 길이 조합 수를 4K로 줄였습니다. 여기에는 시퀀스가 ​​팩의 길이별로 정렬되도록 요구하는 트릭이 이미 포함되어 있습니다. 그렇다면 왜 22개의 시퀀스를 시도하지 않습니까? 이로 인해 조합 수가 940에서 3으로 증가했으며 이는 첫 번째 모델링 접근 방식에는 너무 많았습니다. 또한 깊이 XNUMX은 이미 상당히 높은 패킹 효율을 달성했습니다.

원래 한 팩에 XNUMX개 이상의 시퀀스를 사용하면 계산 오버헤드가 증가하고 훈련 중 수렴 동작에 영향을 미칠 것이라고 생각했습니다. 그러나 더 빠른 실시간 패킹이 필요한 추론과 같은 응용 프로그램을 지원하기 위해 고효율 NNLSHP(Non-Negative Least Squares Histogram-Packing) 알고리즘을 개발했습니다.

NNLSHP(Non-Negative Least Squares Histogram-Packing)

 
 
Bin 패킹은 종종 수학적 최적화 문제로 공식화됩니다. 그러나 16만 개(또는 그 이상)의 시퀀스에서는 실용적이지 않습니다. 문제 변수만으로도 대부분의 시스템 메모리를 초과합니다. 히스토그램 기반 접근 방식을 위한 수학적 프로그램은 매우 깔끔합니다. 간단하게 하기 위해 우리는 최소 제곱 접근 방식을 사용하기로 결정했습니다(도끼=ㄴ) 히스토그램 벡터 b. 전략 벡터를 요청하여 확장했습니다. x 음수가 아니어야 하고 약간의 패딩을 허용하기 위해 가중치를 추가합니다.

까다로운 부분은 전략 매트릭스였습니다. 각 열은 최대 합이 512이고 원하는 총 길이와 정확히 일치하도록 함께 압축되는 시퀀스를 인코딩합니다. 우리의 경우 XNUMX입니다. 행은 전체 길이에 도달할 수 있는 각 잠재적 조합을 인코딩합니다. 전략 벡터 x 이것은 우리가 20k 조합 중 어느 것을 선택하는지를 설명하는 우리가 찾고 있던 것입니다. 흥미롭게도 마지막에 약 600개의 조합만 선택되었습니다. 정확한 솔루션을 얻으려면 전략이 중요합니다. x 양의 정수여야 하지만 음수가 아닌 근사 반올림 솔루션이 x 충분했다. 근사 솔루션의 경우 즉시 사용 가능한 간단한 솔버를 사용하여 30초 이내에 결과를 얻을 수 있습니다.



그림 4: 시퀀스 길이 8 및 패킹 깊이 3에 대한 전략 행렬의 예. 행은 함께 패킹되는 길이 1–8의 시퀀스를 나타내고 열은 특정 순서 없이 팩에서 가능한 모든 길이 조합을 나타냅니다. 저자의 이미지.

 

결국, 우리는 전략이 할당되지 않았지만 최소한의 샘플을 수정해야 했습니다. 또한 각 시퀀스가 ​​잠재적으로 패딩과 함께 패킹되고 패딩에 따라 가중치가 적용되도록 하는 변형 솔버를 개발했습니다. 시간이 훨씬 더 오래 걸렸고 솔루션도 그다지 좋지 않았습니다.

Shortest-Pack-First 히스토그램 패킹

 
 
NNLSHP는 우리에게 충분한 포장 접근 방식을 제공했습니다. 그러나 이론적으로 더 빠른 온라인 가능 접근 방식을 얻고 3개의 시퀀스만 함께 배치하는 제한을 제거할 수 있는지 궁금했습니다.

따라서 우리는 기존 패킹 알고리즘에서 약간의 영감을 얻었지만 여전히 히스토그램에 집중했습니다.

첫 번째 알고리즘인 SPFHP(Shortest-pack-first histogram-packing)에는 네 가지 요소가 있습니다.

  1. 가장 긴 시퀀스에서 가장 짧은 시퀀스까지 히스토그램의 개수에 대해 연산
  2. 현재 시퀀스 길이가 팩에 맞지 않으면 새 팩 세트를 시작하십시오.
  3. 여러 피팅이 있는 경우 시퀀스 길이의 합이 가장 짧은 팩을 선택하고 각각 개수를 수정합니다.
  4. 나머지 개수가 맞는지 다시 확인

이 접근 방식은 구현하기 가장 간단했으며 0.02초밖에 걸리지 않았습니다.

변형은 더 완벽한 맞춤을 얻기 위해 가장 짧은 수와 분할 수 대신 시퀀스 길이의 가장 큰 합계를 취하는 것이었습니다. 전반적으로 이것은 효율성을 크게 변경하지 않았지만 코드 복잡성을 많이 증가시켰습니다.



shortest-pack-first 히스토그램 패킹이 작동하는 방식. 작가의 애니메이션.

 

Wikipedia, SQuAD 1.1, GLUE 패킹 결과

 
 
Table 1, 2, 3은 제안한 두 알고리즘의 패킹 결과를 보여준다. 포장 깊이 패킹된 시퀀스의 최대 수를 설명합니다. 패킹 깊이 1은 기준 BERT 구현입니다. 최대 발생 패킹 깊이, 제한이 설정되지 않은 경우 추가 "최대"로 표시됩니다. NS 팩의 수 새 패킹된 데이터 세트의 길이를 설명합니다. 효율성 포장된 데이터 세트에서 실제 토큰의 백분율입니다. NS 패킹 팩터 패킹 깊이 1과 비교하여 결과적으로 잠재적인 속도 향상을 설명합니다.

네 가지 주요 관찰 사항이 있었습니다.

  1. 편향된 분포가 많을수록 패킹의 이점이 높아집니다.
  2. 모든 데이터 세트는 패킹의 이점이 있습니다. 일부는 심지어 2배 이상입니다.
  3. SPFHP는 패킹 깊이가 제한되지 않을 때 더 효율적입니다.
  4. 최대 3개의 패킹된 시퀀스의 경우 NNLSHP가 더 복잡할수록 더 효율적입니다(99.75 대 89.44).



표 1: Wikipedia에서 제안된 패킹 알고리즘(SPFHP 및 NNLSHP)의 주요 성능 결과. 저자의 이미지.

 


표 2: SQUAD 1.1 BERT 사전 훈련을 위해 제안된 패킹 알고리즘의 성능 결과. 저자의 이미지.

 


표 3: GLUE 데이터 세트에 대해 제안된 패킹 알고리즘의 성능 결과. 보압 깊이를 제한하지 않고 기준선 및 SPFHP 보압 결과만 표시됩니다. 저자의 이미지.

 

BERT 처리 조정

 
 
BERT 아키텍처에서 흥미로운 점은 대부분의 처리가 토큰 수준에서 발생하므로 패킹을 방해하지 않는다는 것입니다. 조정이 필요한 구성 요소는 주의 마스크, MLM 손실, NSP 손실 및 정확도의 네 가지뿐입니다.

서로 다른 수의 시퀀스를 처리하는 네 가지 접근 방식 모두의 핵심은 벡터화와 연결할 수 있는 최대 수의 시퀀스를 사용하는 것이었습니다. 주의를 위해 패딩을 처리하는 마스크가 이미 있습니다. 이것을 여러 시퀀스로 확장하는 것은 다음 TensorFlow 의사 코드에서 볼 수 있듯이 간단했습니다. 개념은 주의가 별도의 시퀀스로 제한되고 그 이상으로 확장될 수 없도록 했다는 것입니다.

주의 마스크 코드 샘플.


 


그림 5: 제로원 마스크의 예

 

손실 계산을 위해 원칙적으로 시퀀스의 압축을 풀고 개별 손실을 계산하여 결국 시퀀스(팩 대신)에 대한 손실의 평균을 얻습니다.

MLM 손실의 경우 코드는 다음과 같습니다.

손실 계산 코드 샘플.


 

NSP 손실과 정확도의 경우 원리는 동일합니다. 공개 예에서 사내 코드를 통해 해당 코드를 찾을 수 있습니다. 팝아트 프레임워크.

Wikipedia 오버헤드 및 속도 향상 추정

 
 
BERT를 수정하면서 두 가지 질문이 생겼습니다.

  1. 얼마나 많은 오버 헤드가 발생합니까?
  2. 오버헤드는 팩에 함께 포함되는 최대 시퀀스 수에 따라 얼마나 달라지나요?

BERT에서 데이터 준비는 번거로울 수 있으므로 지름길을 사용하고 여러 다른 패킹 깊이에 대한 코드를 컴파일하고 각각의 (측정된) 주기를 비교했습니다. 결과는 표 4에 나와 있습니다. 간접비, 우리는 패킹을 가능하게 하는 모델 변경으로 인한 처리량 감소 백분율을 나타냅니다(예: 주의를 위한 마스킹 방식 및 변경된 손실 계산). NS 가속을 실현 패킹으로 인한 속도 향상의 조합입니다( 패킹 팩터) 및 다음으로 인한 처리량 감소 간접비.



표 4: Wikipedia에서 제안된 패킹 알고리즘(SPFHP 및 NNLSHP)의 예상 속도 향상 비교. 저자의 이미지.

 

벡터화 기술 덕분에 오버헤드가 놀라울 정도로 작으며 많은 시퀀스를 함께 묶는 데 따른 단점이 없습니다.

초매개변수 조정

 
 
포장을 통해 유효 배치 크기(평균)를 두 배로 늘리고 있습니다. 이것은 훈련 하이퍼파라미터를 조정해야 함을 의미합니다. 간단한 트릭은 훈련 전과 동일한 유효 평균 배치 크기를 유지하기 위해 그래디언트 누적 수를 절반으로 줄이는 것입니다. 사전 훈련된 체크포인트와 함께 벤치마크 설정을 사용하여 정확도 곡선이 완벽하게 일치함을 확인할 수 있습니다.



그림 6: Packed 및 Unpacked 처리에 대한 학습 곡선 비교 감소된 배치 크기 패킹된 접근을 위해. 작가별 이미지.

 

정확도 일치: MLM 훈련 손실은 처음에는 약간 다를 수 있지만 빠르게 따라잡습니다. 이 초기 차이는 이전 교육에서 짧은 시퀀스로 편향되었을 수 있는 주의 레이어의 약간의 조정에서 비롯될 수 있습니다.

속도 저하를 피하기 위해 때로는 원래 배치 크기를 동일하게 유지하고 하이퍼파라미터를 증가된 유효 배치 크기(XNUMX배)로 조정하는 것이 도움이 됩니다. 고려해야 할 주요 하이퍼파라미터는 베타 파라미터와 학습률입니다. 한 가지 일반적인 접근 방식은 배치 크기를 두 배로 늘리는 것인데, 이 경우 성능이 저하됩니다. LAMB 옵티마이저의 통계를 보면 베타 매개변수를 패킹 팩터의 거듭제곱으로 높이는 것이 모멘텀과 속도를 비교 가능한 상태로 유지하기 위해 여러 배치를 연속적으로 훈련하는 것에 해당한다는 것을 증명할 수 있습니다.



그림 7: Packed 및 Unpacked 처리에 대한 학습 곡선 비교 발견 적 방법 적용된. 작가별 이미지.

 

우리의 실험은 베타를 XNUMX의 거듭제곱으로 취하는 것이 좋은 경험적 방법이라는 것을 보여주었습니다. 이 시나리오에서는 배치 크기를 늘리면 일반적으로 목표 정확도에 도달할 때까지 샘플/에포크의 의미에서 수렴 속도가 감소하기 때문에 곡선이 일치하지 않을 것으로 예상됩니다.

이제 문제는 실제 시나리오에서 예상되는 속도 향상을 실제로 얻을 수 있는지입니다.



그림 8: 압축 및 압축 해제 처리에 대한 학습 곡선 비교 최적화된 설정. 작가별 이미지.

 

응 우리는 그래! 데이터 전송을 압축했기 때문에 속도가 추가로 향상되었습니다.

결론

 
 
문장을 함께 묶으면 계산 노력과 환경을 절약할 수 있습니다. 이 기술은 PyTorch 및 TensorFlow를 포함한 모든 프레임워크에서 구현할 수 있습니다. 우리는 확실한 2배의 속도 향상을 얻었고 그 과정에서 패킹 알고리즘의 최첨단을 확장했습니다.

우리가 궁금해하는 다른 응용 프로그램은 유사한 데이터 분포가 관찰될 수 있는 게놈 및 단백질 접힘입니다. 비전 트랜스포머는 또한 다양한 크기의 압축 이미지를 적용하는 흥미로운 영역이 될 수 있습니다. 어떤 응용 프로그램이 잘 작동할 것이라고 생각합니까? 우리는 당신의 의견을 듣고 싶습니다!

논문 읽기

GitHub에서 코드에 액세스

고맙습니다

 
 
이 작업에 기여한 Graphcore 애플리케이션 엔지니어링 팀의 동료인 Sheng Fu와 Mrinal Iyer에게 감사드리며 귀중한 피드백을 제공한 Graphcore 리서치 팀의 Douglas Orr에게도 감사드립니다.

참고자료

 
 
[1] M. Kosec, S. Fu, MM Krell, 패킹: 2x NLP BERT 가속을 향하여 (2021), arXiv

 
마리오 마이클 크렐 박사 Graphcore의 주요 기계 학습 책임자입니다. Mario는 12년 이상 기계 학습 알고리즘을 연구 및 개발하여 로봇 공학, 자동차, 통신 및 의료와 같은 다양한 산업을 위한 소프트웨어를 만들고 있습니다. Graphcore에서 그는 우리의 인상적인 MLPerf 제출 통계적 COVID-19 데이터 분석을 위한 근사 베이지안 계산과 같은 새로운 비표준 모델을 가속화하려는 열정이 있습니다.

마테이 코섹 Palo Alto에 있는 Graphcore의 AI 애플리케이션 전문가입니다. 그는 이전에 산호세에 있는 NIO에서 자율 주행에 관한 AI 과학자로 일했으며 스탠포드 대학에서 항공 및 우주 비행학 석사 학위를 받았습니다.

실물. 허가를 받아 다시 게시했습니다.

관련 :

출처: https://www.kdnuggets.com/2021/08/packed-bert-training-speed-up-natural-language-processing.html

타임 스탬프 :

더보기 너 겟츠