Rescale 미팅 예약

인공 지능

대규모 언어 모델 매개변수 및 메모리 요구 사항 이해: 심층 분석

mm

게재

 on

Transformer 기반 LLM의 매개변수 계산

대규모 언어 모델 (LLM)은 최근 몇 년 동안 눈에 띄는 발전을 보였습니다. GPT-4, Google의 Gemini, Claude 3와 같은 모델은 기능과 애플리케이션에서 새로운 표준을 설정하고 있습니다. 이러한 모델은 텍스트 생성 및 번역을 향상시킬 뿐만 아니라 텍스트, 이미지, 오디오 및 비디오 입력을 결합하여 보다 포괄적인 AI 솔루션을 제공하는 다중 모드 처리의 새로운 지평을 열었습니다.

예를 들어 OpenAI의 GPT-4는 인간과 유사한 텍스트를 이해하고 생성하는 데 있어 상당한 개선을 보인 반면, Google의 Gemini 모델은 텍스트, 이미지, 오디오를 포함한 다양한 데이터 유형을 처리하는 데 탁월하여 보다 원활하고 상황에 맞는 상호 작용을 가능하게 합니다. 마찬가지로 Anthropic의 Claude 3 모델은 AI 작업의 다국어 기능과 향상된 성능으로 유명합니다.

LLM 개발이 계속 가속화됨에 따라 이러한 모델의 복잡성, 특히 해당 매개변수 및 메모리 요구 사항을 이해하는 것이 중요해졌습니다. 이 가이드는 이러한 측면을 명확하게 설명하고 자세하고 이해하기 쉬운 설명을 제공하는 것을 목표로 합니다.

대규모 언어 모델의 기본

대규모 언어 모델이란 무엇입니까?

대규모 언어 모델은 인간 언어를 이해하고 생성하기 위해 대규모 데이터 세트로 훈련된 신경망입니다. 그들은 텍스트를 처리하고 생성하기 위해 self-attention과 같은 메커니즘을 사용하는 Transformers와 같은 아키텍처에 의존합니다.

LLM에서 매개변수의 중요성

매개변수는 이러한 모델의 핵심 구성요소입니다. 여기에는 예측 오류를 최소화하기 위해 훈련 중에 모델이 조정하는 가중치와 편향이 포함됩니다. 매개변수의 수는 모델의 용량 및 성능과 관련이 있는 경우가 많지만 계산 및 메모리 요구 사항에도 영향을 줍니다.

Transformer 아키텍처 이해

트랜스포머 아키텍처

트랜스포머 아키텍처

개요

Vaswani 등의 "Attention Is All You Need" 논문에 소개된 Transformer 아키텍처 (2017)은 많은 LLM의 기초가 되었습니다. 이는 인코더와 디코더로 구성되며 각각은 여러 개의 동일한 레이어로 구성됩니다.

인코더 및 디코더 구성 요소

  • 인코더: 입력 시퀀스를 처리하고 상황 인식 표현을 생성합니다.
  • 디코더: 인코더의 표현과 이전에 생성된 토큰을 사용하여 출력 시퀀스를 생성합니다.

주요 빌딩 블록

  1. 다중 헤드 주의: 모델이 입력 시퀀스의 여러 부분에 동시에 집중할 수 있도록 합니다.
  2. 피드포워드 신경망: 모델에 비선형성과 복잡성을 추가합니다.
  3. 계층 정규화: 중간 출력을 정규화하여 훈련을 안정화하고 가속화합니다.

매개변수 수 계산

변압기 훈련

효율적인 변압기 훈련을 위한 사전 훈련된 모델

Transformer 기반 LLM의 매개변수 계산

Transformer 기반 LLM의 각 구성요소에 대한 매개변수 계산을 분석해 보겠습니다. 우리는 원본 논문의 표기법을 사용할 것입니다. d_model 모델의 숨겨진 상태의 차원을 나타냅니다.

  1. 임베딩 레이어:
    • 매개변수 = vocab_size * d_model
  2. 다중 헤드 주의:
    • 럭셔리 h 머리, 와 d_k = d_v = d_model / h:
    • 매개변수 = 4 * d_model^2(Q, K, V 및 출력 투영용)
  3. 피드포워드 네트워크:
    • 매개변수 = 2 * d_model * d_ff + d_model + d_ff
    • 어디에 d_ff 일반적으로 4 * d_model
  4. 계층 정규화:
    • 매개변수 = 2 * d_model (규모 및 편향의 경우)

하나의 Transformer 레이어에 대한 총 매개변수:

  • Parameters_layer = Parameters_attention + Parameters_ffn + 2 * Parameters_layernorm

있는 모델의 경우 N 층 :

  • 총 매개변수 = N * Parameters_layer + Parameters_embedding + Parameters_output

계산 예

다음 사양의 모델을 고려해 보겠습니다.

  • d_model = 768
  • h (주의 헤드 수) = 12
  • N (레이어 수) = 12
  • vocab_size = 50,000
  1. 임베딩 레이어:
    • 50,000 * 768 = 38,400,000
  2. 다중 헤드 주의:
    • 4 * 768^2 = 2,359,296
  3. 피드포워드 네트워크:
    • 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616
  4. 계층 정규화:
    • 2 * 768 = 1,536

레이어당 총 매개변수:

  • 2,359,296 + 4,719,616 + (2 * 1,536) = 7,081,984

12개 레이어의 총 매개변수:

  • 12 * 7,081,984 = 84,983,808

총 모델 매개변수:

  • 84,983,808 + 38,400,000 = 123,383,808

이 모델에는 약 123억 XNUMX천 XNUMX백만 개의 매개변수가 있습니다.

메모리 사용량 유형

LLM으로 작업할 때 메모리 사용의 두 가지 주요 유형을 고려해야 합니다.

  1. 모델 메모리: 모델 매개변수를 저장하는 데 필요한 메모리입니다.
  2. 메모리 작동: 중간 활성화, 기울기 및 최적화 상태를 저장하기 위해 추론 또는 훈련 중에 필요한 메모리입니다.

모델 메모리 계산

모델 메모리는 매개변수 수와 직접적인 관련이 있습니다. 각 매개변수는 일반적으로 32비트 부동 소수점 숫자로 저장되지만 일부 모델은 16비트 부동 소수점을 사용한 혼합 정밀도 교육을 사용합니다.

모델 메모리(바이트) = 매개변수 수 * 매개변수당 바이트

123억 XNUMX만 개의 매개변수가 있는 예제 모델의 경우:

  • 모델 메모리(32비트) = 123,383,808 * 4바이트 = 493,535,232바이트 ≒ 494MB
  • 모델 메모리(16비트) = 123,383,808 * 2바이트 = 246,767,616바이트 ≒ 247MB

작업 기억 추정

작업 메모리 요구 사항은 특정 작업, 배치 크기 및 시퀀스 길이에 따라 크게 달라질 수 있습니다. 추론 중 작업 메모리에 대한 대략적인 추정치는 다음과 같습니다.

작업 기억 ≒ 2 * 모델 기억

이는 모델 매개변수와 중간 활성화를 모두 저장하는 역할을 합니다. 훈련 중에는 기울기와 최적화 상태를 저장해야 하기 때문에 메모리 요구 사항이 훨씬 더 높아질 수 있습니다.

트레이닝 메모리 ≒ 4 * 모델 메모리

예제 모델의 경우:

  • 추론 작업 메모리 ≒ 2 * 494MB = 988MB ≒ 1GB
  • 훈련 메모리 ≒ 4 * 494MB = 1,976MB ≒ 2GB

정상 상태 메모리 사용량 및 최대 메모리 사용량

Transformer 아키텍처를 기반으로 대규모 언어 모델을 훈련할 때 효율적인 리소스 할당을 위해서는 메모리 사용량을 이해하는 것이 중요합니다. 메모리 요구 사항을 안정적인 상태 메모리 사용량과 최대 메모리 사용량이라는 두 가지 주요 범주로 분류해 보겠습니다.

정상 상태 메모리 사용량

정상 상태 메모리 사용량은 다음 구성 요소로 구성됩니다.

  1. 모델 무게: 32N 바이트가 필요한 모델 매개변수의 FP4 사본. 여기서 N은 매개변수 수입니다.
  2. 최적화 상태: Adam 최적화 프로그램의 경우 8N 바이트가 필요합니다(매개변수당 2개의 상태).
  3. 그라디언트: 32N 바이트가 필요한 그라디언트의 FP4 복사본입니다.
  4. 입력 데이터: int64 입력을 가정하면 8BD 바이트가 필요합니다. 여기서 B는 배치 크기이고 D는 입력 차원입니다.

총 정상 상태 메모리 사용량은 다음과 같이 대략적으로 계산할 수 있습니다.

  • M_steady = 16N + 8BD 바이트

Peak Memory Usage

그래디언트 계산을 위해 활성화가 저장되는 역방향 전달 중에 최대 메모리 사용량이 발생합니다. 최대 메모리의 주요 원인은 다음과 같습니다.

  1. 계층 정규화: 계층당 4E 바이트 표준이 필요합니다. 여기서 E = BSH(B: 배치 크기, S: 시퀀스 길이, H: 숨겨진 크기).
  2. 주의 차단:
    • QKV 계산: 2E바이트
    • 어텐션 매트릭스: 4BSS 바이트(S: 시퀀스 길이)
    • 주의 출력: 2E 바이트
  3. 피드포워드 블록:
    • 첫 번째 선형 레이어: 2E바이트
    • GELU 활성화: 8E바이트
    • 두 번째 선형 레이어: 2E바이트
  4. 교차 엔트로피 손실:
    • 로지트: 6BSV 바이트(V: 어휘 크기)

총 활성화 메모리는 다음과 같이 추정할 수 있습니다.

  • M_act = L * (14E + 4BSS) + 6BSV 바이트

여기서 L은 변압기 레이어 수입니다.

총 최대 메모리 사용량

훈련 중 최대 메모리 사용량은 정상 상태 메모리와 활성화 메모리를 결합하여 대략적으로 계산할 수 있습니다.

  • M_peak = M_steady + M_act + 4BSV 바이트

추가 4BSV 기간은 역방향 패스 시작 시 추가 할당을 설명합니다.

이러한 구성 요소를 이해함으로써 훈련 및 추론 중에 메모리 사용을 최적화하여 효율적인 리소스 할당과 대규모 언어 모델의 성능 향상을 보장할 수 있습니다.

확장 법칙 및 효율성 고려 사항

 LLM의 확장 법칙

연구에 따르면 LLM의 성능은 매개변수 수가 증가함에 따라 특정 확장 법칙을 따르는 경향이 있는 것으로 나타났습니다. Kaplanet al. (2020)은 매개변수 수, 계산 예산 및 데이터 세트 크기의 거듭제곱 법칙에 따라 모델 성능이 향상된다는 것을 관찰했습니다.

모델 성능과 매개변수 수 간의 관계는 다음과 같이 근사화할 수 있습니다.

성능 ∝ N^α

여기서 N은 매개변수의 수이고 α는 언어 모델링 작업에 대한 일반적으로 약 0.07의 스케일링 지수입니다.

이는 10%의 성능 향상을 달성하려면 매개변수 수를 10^(1/α) ≒ 3.7배로 늘려야 함을 의미합니다.

효율성 기법

LLM이 지속적으로 성장함에 따라 연구원과 실무자는 효율성을 향상시키기 위해 다양한 기술을 개발했습니다.

a) 혼합 정밀 훈련: 메모리 사용량과 계산 요구 사항을 줄이기 위해 특정 작업에 16비트 또는 8비트 부동 소수점 숫자를 사용합니다.

b) 모델 병렬성: 단일 장치에 들어갈 수 있는 것보다 더 큰 모델을 처리하기 위해 여러 GPU 또는 TPU에 모델을 배포합니다.

c) 그라데이션 체크포인트: 역방향 전달 중에 특정 활성화를 저장하는 대신 다시 계산하여 계산을 메모리로 교환합니다.

d) 가지치기와 양자화: 덜 중요한 가중치를 제거하거나 훈련 후 정밀도를 줄여 더 작고 효율적인 모델을 만듭니다.

e) 증류: 더 큰 모델의 동작을 모방하도록 더 작은 모델을 훈련하여 더 적은 매개변수로 많은 성능을 잠재적으로 보존합니다.

실제 사례 및 계산

가장 큰 언어 모델 중 하나인 GPT-3에는 175억 개의 매개변수가 있습니다. 이는 Transformer 아키텍처의 디코더 부분을 사용합니다. 그 규모를 이해하기 위해 매개변수 수를 가상 값으로 분석해 보겠습니다.

  • d_model = 12288
  • d_ff = 4 * 12288 = 49152
  • 레이어 수 = 96

하나의 디코더 레이어의 경우:

총 매개변수 = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≒ 1.1억

총 96개 레이어:

1.1억 * 96 = 105.6억

나머지 매개변수는 임베딩 및 기타 구성요소에서 나옵니다.

결론

이러한 강력한 도구를 효과적으로 설계, 교육 및 배포하려면 대규모 언어 모델의 매개변수와 메모리 요구 사항을 이해하는 것이 중요합니다. Transformer 아키텍처의 구성 요소를 분석하고 GPT와 같은 실제 사례를 검토함으로써 이러한 모델의 복잡성과 규모에 대한 더 깊은 통찰력을 얻을 수 있습니다.

대규모 언어 모델 및 해당 애플리케이션의 최신 발전 사항을 더 자세히 이해하려면 다음 종합 가이드를 확인하세요.

저는 지난 50년 동안 기계 학습과 딥 러닝의 매혹적인 세계에 몰두했습니다. 저의 열정과 전문 ​​지식은 특히 AI/ML에 중점을 둔 XNUMX개 이상의 다양한 소프트웨어 엔지니어링 프로젝트에 기여하도록 이끌었습니다. 나의 계속되는 호기심은 또한 내가 더 탐구하고 싶은 분야인 자연어 처리로 나를 이끌었습니다.