AI 모델 및 플랫폼

UltraFastBERT: 지수적으로 더 빠른 언어 모델링 소개

mm
Unite.AI를 Google의 선호 소스에 추가

언어 모델과 생성적 AI는 유명한 능력으로 인해 AI 산업에서 핫한 주제입니다. 전 세계 연구자들은 그들의 효능과 능력을 향상시키고 있습니다. 이러한 시스템은 일반적으로 깊은 학습 모델로, 광범위한 레이블된 데이터에 사전 훈련되며, 자기 주의를 위한 신경 네트워크를 포함합니다. 그들은 입력 텍스트를 처리하고 관련된 출력을 생성하기 위해 피드포워드, 재귀, 임베딩, 주의层과 같은 다양한 층을 사용합니다.

대부분의 큰 언어 모델의 피드포워드 층은 가장 많은 매개변수를 가지고 있습니다. 연구에 따르면 이러한 모델은 추론 동안 출력 계산을 위해 사용 가능한 뉴런의 일부만 사용합니다.

이 기사에서는 UltraFastBERT, BERT 기반 프레임워크를 소개합니다. 이는 BERT 모델과 비슷한 효능을 제공하지만, 추론 동안에 사용하는 뉴런은 0.3%만 사용합니다. 특히, 각 층에서 4095개의 뉴런 중 12개만 사용합니다. 우리는 UltraFastBERT의 구조, 기능, 결과를 탐구할 것입니다. 시작해 보겠습니다.

UltraFastBERT : 지수적으로 더 빠른 언어 모델링 소개

전통적으로, 언어 모델은 피드포워드 층, 재귀 층, 임베딩 층, 주의 층과 같은 다양한 구성 요소를 사용하여 콘텐츠 생성 능력을 갖추게 됩니다. 이러한 구성 요소는 훈련 동안 패턴을 인식하는 것을 배우고, 궁극적으로 입력 텍스트에 따라 정확한 출력을 생성하는 데 책임이 있습니다. 이러한 구성 요소 각각에는 일부 매개변수가 있으며, 언어 모델에서 피드포워드 층이 이러한 매개변수의 대부분을 가지고 있습니다. 그러나 이러한 피드포워드 층은 추론 시간에 모든 입력에 대해 출력을 생성하기 위해 사용 가능한 뉴런을 100% 사용하지 않습니다. 이는 자원 낭비를 초래하여 복잡성, 계산 시간, 계산 비용을 증가시킵니다.

UltraFastBERT 프레임워크는 BERT 프레임워크의 변형으로, 피드포워드 층을 더 빠른 피드포워드 네트워크로 대체하여, 추론 동안에 사용하는 뉴런은 0.3%만 사용하는 프레임워크입니다. 이는 BERT 모델과 비슷한 효능을 제공하지만, 다운스트림 작업에서 훨씬 더 빠릅니다. 이러한 디자인 구현으로 인해, UltraFastBERT 프레임워크의 중간 층은 지수적으로 더 빠릅니다.

피드포워드 네트워크와 빠른 피드포워드 네트워크가 각각 n개의 뉴런을 가지고 있다고 가정해 봅시다. 피드포워드 네트워크의 전방 패스 시간 복잡도는 O(n)입니다. 그러나 빠른 피드포워드 네트워크의 시간 복잡도는 O(log2n)입니다. 이러한 시간 복잡도 차이는 빠른 피드포워드 네트워크에서 뉴런이 균형된 이진 트리로 조직되어 있기 때문입니다. 입력이 제공되면, 네트워크는 트리의 한 가지 분기만 조건적으로 실행합니다. 또한, 빠른 피드포워드 네트워크에서 추론을 수행하면, 조건부 행렬 곱셈(CMM)이 발생합니다. 여기서 입력 행은 자연스러운 가중치 열과 함께 점을 찍고, 이전 점의 곱셈 결과는 다음 열의 가중치를 결정합니다. 결과적으로, 네트워크는 모든 입력에 대해 모든 뉴런을 사용하지 않으며, 입력 중 하나도 네트워크에서 처리하기 위해 너무 많은 뉴런을 필요로하지 않습니다. CMM 점의 곱셈은 모든 입력과 모든 가중치 열의 점을 계산하는 밀도 행렬 곱셈(DMM)과 대조됩니다.

요약하면, UltraFastBERT는 BERT 기반 프레임워크로, 추론 동안에 사용하는 뉴런은 0.3%만 사용하는 프레임워크입니다. 이는 BERT 모델과 비슷한 효능을 제공하지만, 다운스트림 작업에서 훨씬 더 빠릅니다.

  1. 추론 단계에서 사용하는 뉴런은 0.3%만 사용하며, 각 층에서 4095개의 뉴런 중 12개만 사용합니다.
  2. 다운스트림 작업에서 강력한 성능을 제공하며, 이는 미세 조정 전략을 구현하여 상태-of-the-아트 BERT 모델과 비슷한 효능을 제공합니다.
  3. 조건부 행렬 곱셈(CMM)의 네이티브 구현을 제공하며, 이는 빠른 피드포워드 네트워크의 기초입니다. 이는 추론 시간에 78배의 속도 향상을 제공합니다.

피드 포워드 신경 네트워크

피드 포워드 신경 네트워크는 가장 간단한 인공 신경 네트워크 중 하나로, 정보를 오직 전방으로만 이동시킵니다. 즉, 입력 노드에서 출력 노드로, 숨겨진 노드를 통해 이동합니다. 피드 포워드 신경 네트워크의 주요 특징은 네트워크에 루프나 사이클이 없다는 것입니다. 또한, RNN이나 CNN과 비교하여 더 간단하게 구성할 수 있습니다. 피드 포워드 신경 네트워크의 구조는 세 가지 구성 요소로 구성됩니다. 즉, 입력 층, 숨겨진 층, 출력 층입니다. 각 층은 뉴런으로 구성되며, 각 층은 가중치로 연결되어 있습니다.

입력 층의 뉴런은 입력을 받고, 다음 층으로 전달합니다. 각 입력 층의 뉴런 수는 입력 데이터의 차원에 의해 결정됩니다. 다음으로, 숨겨진 층이 있습니다. 이는 입력이나 출력에 노출되지 않으며, 필요한 계산을 수행하는 데 책임이 있습니다. 각 숨겨진 층의 뉴런은 이전 층의 출력의 가중치 합을 계산하고, 활성화 함수를 적용하여 결과를 다음 층으로 전달합니다. 이 과정은 반복적으로 수행됩니다. 마지막으로, 출력 층이 있습니다. 이는 입력에 대한 출력을 생성합니다. 피드 포워드 신경 네트워크의 각 층의 뉴런은 다음 층의 모든 뉴런과 연결되어 있습니다. 즉, 피드 포워드 신경 네트워크는 완전 연결 네트워크입니다. 가중치는 뉴런 간의 연결 강도를 나타내며, 네트워크는 오류를 기반으로 가중치를 업데이트하여 패턴을 학습합니다.

계속해서, 피드 포워드 신경 네트워크의 작동에는 두 가지 주요 단계가 있습니다. 즉, 피드포워드 단계와 역전파 단계입니다.

피드포워드 단계

피드포워드 단계에서, 입력이 네트워크에 공급되고, 전방으로 전파됩니다. 숨겨진 층은 입력의 가중치 합을 계산하고, 활성화 함수를 적용하여 비선형성을 모델에 도입합니다. 이 과정은 반복적으로 수행됩니다. 가중치는 네트워크가 패턴을 학습하는 데 사용됩니다.

역전파 단계

모델이 예측을 생성한 후, 생성된 출력과 기대 출력 간의 오류를 계산합니다. 이 오류는 네트워크를 통해 역전파되고, 네트워크는 오류를 최소화하기 위해 가중치를 조정하는 경사 하강 최적화 알고리즘을 사용합니다.

UltraFastBERT : 모델 구조와 작동

UltraFastBERT 프레임워크는 crammedBERT 구조를 기반으로 하며, 중간 층에서 피드포워드 네트워크를 빠른 피드포워드 네트워크로 대체합니다. UltraFastBERT 프레임워크는 다음과 같은 변경을 적용합니다.

  1. 리프 노드와 非리프 노드 간의 차이를 제거하여, 모든 노드에서 GeLu 활성화 함수를 사용하고, 노드에 출력 가중치를 부여하며, 출력 편향을 제거합니다. 이후, 리프 크기를 1로 고정합니다.
  2. 마지막으로, 프레임워크는 빠른 피드포워드 네트워크 트리를 병렬로 공동으로 계산하여, 중간 출력 층을 생성합니다. 이를 통해, 프레임워크는 트리의 합을 계산하고, 이를 중간 출력 층으로 제공합니다.

훈련에서, UltraFastBERT 프레임워크는 crammedBERT 프레임워크의 훈련 절차를 따르며, 이는 드롭아웃을 비활성화하고, 1-사이클 삼각형 학습률 스케줄을 사용합니다. 모델은 이후 5 에포크 동안 GLUE 벤치마크의 다양한 작업에서 성능을 최대화하기 위해 미세 조정됩니다.

인터ферен스

인터ферен스는 빠른 피드포워드 네트워크에서 중요한 부분입니다. 이러한 네트워크는 큰 언어 모델의 주요 구성 요소이며, 예외적인 가속화 잠재력을 가지고 있습니다. 이를 이해하기 위해, 가장先進的な 언어 모델 중 하나인 GPT-3를 예로 들어보겠습니다. 여기서, 트랜스포머 층의 피드포워드 네트워크는 각각 49,100개의 뉴런으로 구성되어 있습니다. 훈련 가능한 빠른 피드포워드 네트워크(최대 깊이 15)를 원래 피드포워드 네트워크로 대체할 수 있습니다. 도입된 빠른 피드포워드 네트워크는 65,000개의 뉴런을 가지지만, 인터ферен스에서 16개의 뉴런만 사용합니다. 이는 GPT-3의 사용 가능한 뉴런의 약 0.03%에 해당합니다.

알고리즘 및 호환성

UltraFastBERT 프레임워크는 빠른 피드포워드 인터ферен스를 위한 재귀적 유사 코드 알고리즘을 사용하며, 알고리즘은 아래 이미지를 참조하십시오.

여기서, B는 배치 크기, H는 입력 층의 너비, M은 열을 나타냅니다. 또 다른 주요 관심사는 계산 행렬 곱셈(CMM) 접근 방식을 사용하는 것이 기존의 밀도 행렬 곱셈(DMM) 및 기존 딥 러닝 프레임워크와의 호환성을 방해하는지 여부입니다.幸い, CMM의 사용은 성능에 영향을 주거나 호환성을 제공하지 않지만, 캐싱 복잡성을 증가시킵니다.

중요한 것은, 빠른 피드포워드 네트워크의 일부로, 단일 스레드 밀도 행렬 곱셈은 MAC 또는 곱셈 및 누적 명령을 실행하는 것에 의존하며, 결과적으로 DMM을 CMM 접근 방식으로 대체하면 CPU에서 이점을 제공할 것입니다. 왜냐하면 각 요소당 계층 출력을 계산하기 위해 필요한 MAC 명령이 줄어들기 때문입니다. 따라서, 일반적으로 분기와 관련된 조건부성이지만, “신경 분기”는 프레임워크에서 메모리 오프셋에 대한 관련 포인터에 추가로 작용하며, CMM의 조건부성을 완전히 활용하기 위해 지시 분기 예측이 참여하지 않습니다. 또한, 프레임워크는 가중치 행렬의 관련 열을 개별적으로 로드합니다. 또한, 행-열 점의 곱셈을 수행함으로써, SIMD 또는 단일 명령어 다중 데이터 벡터 병렬 처리는 특정 장치에 대한 인터ферен스 구현을 가속화하기 위한 좋은 옵션입니다.

UltraFastBERT : 성능 및 결과

우리는 UltraFastBERT 프레임워크의 미세 조정 및 인터ферен스 작업의 성능을 분석하여, 상태-of-the-아트 언어 모델과 비교하여 프레임워크가 어떻게 수행하는지 살펴보겠습니다.

미세 조정 결과

다음 그림은 다양한 모델의 GLUE-dev 테스트 데이터셋에 대한 성능을 보여줍니다. 여기서, N은 프레임워크에 대한 훈련을 위한 사용 가능한 뉴런의 수를 나타내며, “평균”은 모든 작업의 평균 점수를 나타냅니다.

rõ ràng히 볼 수 있듯이, A6000 GPU에서 24시간 이상 훈련된 UltraFastBERT 프레임워크는 GLUE 다운스트림 작업에서 원래 BERT 프레임워크와 비교하여 약 96%의 예측 성능을 유지합니다. 또한, 빠른 피드포워드 네트워크의 깊이가 증가함에 따라, 프레임워크의 성능은 약간 저하되지만, 대부분의 성능 저하는 CoLa 작업에서 발생합니다. CoLa 작업을 무시하면, UltraFastBERT 프레임워크는 약 98.6%의 예측 성능을 제공합니다.

인터ферен스 결과

이 섹션에서는 여러 피드포워드 또는 빠른 피드포워드 네트워크의 인터ферен스 구현의 성능을 비교합니다. 이러한 구현은 세 가지 수준으로 나뉩니다.

  1. 1단계 구현은 BLAS 1단계 루틴을 사용하여 구축되며, 이는 스칼라-벡터 곱셈 및 벡터-벡터 점의 곱셈입니다.
  2. 2단계에서, 구현은 BLAS 2단계 루틴을 사용하여, 배치된 스칼라-벡터 곱셈 및 배치된 행렬-벡터 점의 곱셈입니다.
  3. 3단계에서, 구현은 비배치 BLAS 3단계 행렬-행렬 곱셈 접근 방식을 사용합니다. 이는 피드포워드 네트워크에서 가장 빠른 구현이지만, 빠른 피드포워드 네트워크에서는 사용할 수 없습니다. 왜냐하면 라이브러리가 계산 행렬 곱셈의 벡터 수준의 희소성을 지원하지 않기 때문입니다.

추가로, UltraFastBERT 프레임워크는 사용자 정의 CUDA 또는 PyTorch 커널을 사용하여 GPU 구현을 제공합니다.

위의 표는 UltraFastBERT 프레임워크와 그 전신인 BERT 기반 프레임워크의 피드포워드 및 빠른 피드포워드 층의 성능을 비교합니다. 각 열은 동일한 선형 대수 루틴 원시 연산을 사용하는 경우의 상대적인 인터ферен스 빠른 피드포워드 오버 피드포워드 구현 속도 향상을 나타냅니다.

그러나, 위의 표에 보고된 속도 향상은 “공정 비교”를 위해 설계되었습니다. 즉, 빠른 피드포워드와 피드포워드 구현 모두 동일한 선형 대수 루틴 원시 연산을 사용합니다. 또한, 1단계와 2단계에서, 빠른 피드포워드 네트워크 구현은 각각 48배와 78배 더 빠르게 인터ферен스를 수행할 수 있습니다.

최종 생각

이 기사에서, 우리는 UltraFastBERT, BERT 기반 프레임워크를 소개했습니다. 이는 추론 동안에 사용하는 뉴런은 0.3%만 사용하는 프레임워크입니다. 이는 BERT 모델과 비슷한 효능을 제공하지만, 다운스트림 작업에서 훨씬 더 빠릅니다. UltraFastBERT 프레임워크의 강력한 성능은, LLM이 개별 인터ферен스에서 매개변수의 일부만 사용하여 강력한 성능을 제공할 수 있다는 증거입니다. UltraFastBERT 프레임워크는 추론 동안에 사용하는 뉴런은 0.3%만 사용하지만, 인터ферен스 시간에 78배의 속도 향상을 달성합니다.

Kunal Kejriwal은 Python, PostgreSQL, Redis 및 GCP와 AWS의 클라우드 인프라를 전문으로 하는 백엔드 엔지니어입니다. 3년간 생산 시스템을 구축하고 확장한 경험을 바탕으로 AI 인프라, 분산 시스템, 그리고 머신러닝 워크로드 배포의 아키텍처에 대해 글을 씁니다.