>  기사  >  기술 주변기기  >  7B? 13B? 175B? 대형 모델의 매개변수 해석

7B? 13B? 175B? 대형 모델의 매개변수 해석

PHPz
PHPz원래의
2024-06-12 20:04:15715검색

대형 모델도 크기가 다양하며 크기는 매개변수 수로 측정됩니다. GPT-3에는 175억 개의 매개변수가 있으며 Grok-1은 314억 개의 매개변수로 더욱 인상적입니다. 물론 Llama와 같이 매개변수 수가 70억에서 700억 사이에 불과한 더 얇은 모델도 있습니다.

여기서 언급된 70B는 훈련 데이터의 양이 아니라 모델에 조밀하게 포함된 매개변수를 의미할 수 있습니다. 이러한 매개변수는 작은 "뇌 세포"와 같습니다. 매개변수가 많을수록 모델이 더 똑똑해지고 데이터의 복잡한 관계를 더 잘 이해할 수 있습니다. 이러한 "뇌 세포"를 사용하면 모델이 작업을 더 잘 수행할 수 있습니다. 그러나 특히 대규모 모델에서는 이러한 매개변수로 인해 문제가 발생할 수 있는 경우가 많습니다. 이러한 "뇌 세포"는 작업을 처리할 때 서로 상호 작용할 수 있으므로 모델이 데이터의 복잡한 관계를 이해하기 어렵게 만듭니다. 이러한 "뇌 세포"를 사용하면 모델이 작업을 더 잘 수행할 수 있습니다. 따라서 작업을 수행할 때 이러한 매개변수 간의 관계를 관리할 수 있는 방법을 찾아야 합니다. 일반적으로 사용되는 방법은 정규화를 통한 것입니다. 이러한 대규모 모델의 매개변수는 모델 내부의 "설계자"와 같으며 복잡한 알고리즘과 학습 프로세스를 통해 이 거대한 언어 세계가 조금씩 구축됩니다. 각 매개변수에는 고유한 역할이 있으며, 함께 작동하여 모델이 우리의 언어를 더 정확하게 이해하고 더 적절한 답변을 제공할 수 있습니다.

그렇다면 대형 모델의 매개변수는 어떻게 구성되어 있나요?

1. 대형 모델의 매개변수

대형 모델 매개변수는 "내부 부품"입니다. 이러한 각 부품에는 일반적으로 다음 범주를 포함하되 이에 국한되지 않는 고유한 목적이 있습니다.

무게: 무게는 신경과 같습니다. 네트워크의 "와이어"는 각 뉴런을 연결합니다. 이들은 신호 전송의 "볼륨"을 조정하여 중요한 정보는 더 멀리 전송되고 덜 중요한 정보는 더 조용하게 전송되도록 하는 역할을 합니다. 예를 들어 완전 연결 계층에서 가중치 행렬 W는 어떤 입력 특성이 출력 특성과 가장 밀접하게 관련되어 있는지 알려주는 "맵"입니다.
  • 편향: 편향은 뉴런의 "작은 조력자"와 같으며, 뉴런 반응의 기준선을 설정하는 역할을 합니다. 이를 통해 뉴런은 어느 수준에서 활성화되어야 하는지를 알 수 있습니다.
  • 주의 매개변수: Transformer 기반 모델에서 이러한 매개변수는 "나침반"과 같으며 어떤 정보가 가장 주목할 가치가 있는지 모델에 알려줍니다. 여기에는 쿼리 행렬, 키 행렬, 값 행렬 등이 포함되며, 이는 많은 양의 정보에서 가장 중요한 "단서"를 찾는 것과 같습니다.
  • 임베딩 행렬: 텍스트 데이터를 처리할 때 임베딩 행렬은 모델의 "사전"입니다. 각 열은 단어를 나타내며 숫자는 단어를 나타내는 데 사용됩니다. 이런 방식으로 모델은 텍스트의 의미를 이해할 수 있습니다.
  • 숨겨진 상태 초기화 매개변수(초기 숨겨진 상태 매개변수): 이 매개변수는 "생각"을 시작할 위치를 알 수 있도록 모델의 톤을 설정하는 것과 마찬가지로 모델의 초기 숨겨진 상태를 설정하는 데 사용됩니다.
  • ......
  • 이 매개변수는 일반적으로 4가지 표현 및 저장 형식을 사용합니다.

Float: 32비트 부동 소수점 수, 즉 4바이트
  1. Half/BF16: 16비트 부동 소수점 수 , 즉 2바이트
  2. Int8: 8비트 정수, 즉 1바이트
  3. Int4: 4비트 정수, 즉 0.5바이트
  4. 일반적으로 매개변수의 개수가 영향을 미치는 주요 요소입니다. 대형 모델의 성능. 예를 들어, 13B-int8 모델은 일반적으로 동일한 아키텍처의 7B-BF16 모델보다 우수합니다.

2. 대규모 모델 매개변수에 대한 메모리 요구 사항

엔지니어가 직면하는 문제는 대규모 모델 훈련이나 추론 중에 얼마나 많은 메모리 리소스가 사용되는지입니다. V100(32GB GPU 메모리 포함) 또는 A100(40GB GPU 메모리 포함)이 매우 강력하더라도 Tensorflow나 PyTorch와 같은 단일 GPU에서는 대규모 모델을 훈련할 수 없습니다.

2.1 훈련 단계의 메모리 요구 사항

모델 훈련 중에는 모델 상태 및 활동 프로세스에 대한 메모리 저장 요구 사항에 주로 반영됩니다. 모델 상태는 옵티마이저 상태, 기울기, 매개변수로 구성된 텐서로 구성됩니다. 활성 프로세스에는 역방향 채널의 기울기 계산에 필요한 순방향 채널에서 생성된 모든 텐서가 포함됩니다. 메모리 사용량을 최적화하기 위해 다음 측면을 고려할 수 있습니다. 1. 모델 매개변수 수 줄이기: 모델 크기를 줄이거나 희소 행렬과 같은 기술을 사용하여 매개변수 수를 줄이고 메모리 사용량을 줄일 수 있습니다. 2. 최적화 상태 저장: 모든 상태를 저장하는 대신 필요한 최적화 상태만 저장하도록 선택할 수 있습니다. 필요에 따라 최적화 상태를 선택적으로 업데이트하고 저장할 수 있습니다. 3. 텐서의 데이터 유형 수정:

훈련 중 언제든지 각 모델 매개변수에 대해 저장할 GPU 메모리가 항상 충분해야 합니다.

  • 안정적인 학습을 유지하고 수치 이상을 방지하기 위해 모델 매개변수로 복사된 바이트 수입니다.
  • 이는 훈련 중에 모든 모델 상태와 프로세스 데이터를 저장하는 데 다음 메모리가 필요하다는 것을 의미합니다. (x+y+12) * model_size
  • 2.2 추론 단계에 대한 메모리 요구 사항

추론 단계는 사전 텍스트 생성 또는 번역과 같은 훈련된 LLM 작업. 여기에서 메모리 요구 사항은 일반적으로 낮으며 주요 영향 요인은 다음과 같습니다.

제한된 컨텍스트: 추론은 일반적으로 더 짧은 입력 시퀀스를 처리하므로 더 작은 텍스트 청크와 관련된 활성화를 저장하는 데 더 적은 메모리가 필요합니다.

역전파 없음: 추론 중에 LLM은 매개변수 조정을 위한 훈련에 사용되는 기술인 역전파의 중간 값을 보존할 필요가 없습니다. 이는 많은 메모리 오버헤드를 제거합니다.
  • 추론 단계에서는 동일한 매개변수 개수 및 유형에 대해 훈련 단계에 필요한 메모리의 1/4보다 더 많은 메모리가 필요하지 않습니다. 예를 들어, 7B 모델의 경우 일반적으로 부동 소수점 정밀도를 사용하려면 28GB의 메모리가 필요하고, BF16 정밀도를 사용하려면 14GB의 메모리가 필요하며, int8 정밀도를 사용하려면 7GB의 메모리가 필요합니다. 이 대략적인 추정 방법은 그에 따라 모델의 다른 버전에도 적용될 수 있습니다.
  • 또한 특정 작업을 위해 LLM을 조정할 때 미세 조정을 위해서는 더 많은 메모리 공간이 필요합니다. 미세 조정에는 일반적으로 대상 작업의 미묘한 차이를 포착하기 위한 더 긴 훈련 시퀀스가 ​​포함됩니다. 이는 LLM이 더 많은 텍스트 데이터를 처리함에 따라 더 큰 활성화로 이어질 것입니다. 역전파 과정에서는 훈련 중에 모델의 가중치를 업데이트하는 데 사용되는 기울기 계산에 사용되는 중간 값을 저장해야 합니다. 이는 추론에 비해 상당한 메모리 부하를 추가합니다.

2.3 Transformer 기반 대형 모델의 메모리 추정

특히 Transformer 기반 대형 모델의 경우 훈련에 필요한 메모리를 계산해 보십시오. number of attention

b: 배치 크기

s: 시퀀스 길이

    h: 은닉층의 차원 크기
  • p: 정확도
  • 여기서, bshp = b * s * h * p는 관심의 양을 나타냅니다. 입력 데이터의 크기. 변압기의 선형 레이어 부분에서는 후속 활성화를 위해 약 9bshp+bsh의 공간이 필요합니다. Attention 부분에서 self-attention은 다음과 같이 표현될 수 있습니다: Softmax((XQ)(XK)^T)XV
  • 그러면 XQ, XK, XV 모두 bshp 크기의 공간이 필요합니다. 표준 self-attention에서 (XQ) * (XK) ^ T를 곱한 결과는 로짓을 포함하는 b * s * s 행렬입니다. 그러나 실제로는 멀티 헤드 어텐션 메커니즘의 사용으로 인해 각 헤드마다 별도의 s*s 저장 공간을 구축해야 합니다. 이는 ABSSP 바이트의 공간이 필요하며, SoftMAX의 출력을 저장하는 데도 ABSSP 바이트가 필요함을 의미합니다. 소프트맥스 이후에는 일반적으로 마스크를 저장하기 위해 추가적인 ABS 바이트가 필요하므로 어텐션 부분에는 2abssp+abss 저장 공간이 필요합니다.
  • 또한 변환기에는 두 개의 Norm 레이어가 있으며 각 레이어에는 여전히 bshp 저장 공간이 필요하므로 총 2 bshp가 됩니다.
  • 따라서 Transformer 기반 대규모 모델 훈련에 필요한 메모리는 대략 다음과 같습니다. L(9bshp+bsh+2abssp+abss +2bshp) = Lbshp[16+2/p+(as/h)(2+1/p)]
Transformer를 기반으로 대규모 모델을 훈련하는 데 필요한 메모리는 대략 다음과 같다고 설명합니다. 모델의 레이어 수 x 훈련 배치의 크기 x 시퀀스 길이 x 숨겨진 레이어의 차원 x 정확도 이론적 하한 훈련 중 모델 매개변수의 메모리 요구 사항에 대해 알아봅니다.

3. 대규모 모델 매개변수에 대한 GPU 요구 사항

대형 모델 매개변수에 대한 메모리 요구 사항을 통해 대규모 모델의 훈련 및 추론에 필요한 GPU 수를 추가로 추정할 수 있습니다. 그러나 GPU 수의 추정은 약간 더 많은 매개변수에 의존하기 때문에 누군가(Dr. Walid Soula, https://medium.com/u/e41a20d646a8)가 대략적인 추정을 위한 간단한 공식을 제공했는데, 이는 또한 공학.

Picture

그 중

십억 단위의 모델 매개변수는 B의 모델 매개변수 수입니다.

18은 훈련 중 다양한 구성 요소의 메모리 사용 요소입니다.

7B? 13B? 175B? 대형 모델의 매개변수 해석1.25는 메모리에 필요한 활성화 프로세스를 나타냅니다. 금액 요소 활성화는 모델이 입력 데이터를 처리함에 따라 변경되는 동적 데이터 구조입니다. GB 단위의 GPU 크기는 사용 가능한 GPU 메모리의 총량입니다

실용적인 예로, 24GB VRAM을 갖춘 NVIDIA RTX 4090 GPU를 사용한다고 가정하고 'Llama3 7B'를 훈련하는 데 필요한 GPU 수를 계산하세요. ' 모델 , 대략:
  • 총 GPU 수≒(7 * 18 * 1.25)/24, 이는 대략 7
  • 과 같습니다.

    추론적으로는 훈련 단계의 1/8~1/9로 단순화할 수 있습니다. 물론 이는 일반적인 의미에서 대략적인 추정일 뿐입니다.

    4. 대규모 모델 매개변수에서 분산 교육까지

    대형 모델 매개변수의 구성과 메모리 및 GPU에 대한 요구 사항을 이해하면 엔지니어링 실무에서 분산 교육이 직면하는 문제를 깊이 이해하는 데 도움이 됩니다.

    풍부한 도구와 API를 제공하는 TensorFlow 또는 PyTorch와 같이 분산 교육용으로 설계된 프레임워크를 채택하면 분산 교육 전략의 구현 프로세스를 크게 단순화할 수 있습니다. 모델을 업데이트하기 전에 기울기 누적과 같은 기술을 사용하거나 기울기 압축과 같은 기술을 사용하여 노드 간 데이터 교환량을 줄이면 통신 비용을 효과적으로 줄일 수 있습니다. 분산 훈련을 위한 최적의 배치 크기(위에서 언급한 매개변수 b)를 결정하는 것이 중요합니다. b 값이 너무 작으면 통신 오버헤드가 증가할 수 있고, 값이 너무 크면 메모리가 부족할 수 있습니다.

    LLMOps의 중요성이 점점 더 중요해지고 있습니다. 분산 훈련을 위해 구성된 성능 지표를 정기적으로 모니터링하고 하이퍼파라미터, 파티셔닝 전략, 통신 설정을 조정하여 성능을 최적화하는 것이 훈련 효율성을 높이는 데 핵심입니다. 모델에 대한 체크포인트 메커니즘을 구현하고 실패 시 효율적인 복구를 수행하면 처음부터 시작하지 않고도 훈련 프로세스를 계속할 수 있습니다.

    즉, 대규모 모델의 훈련/추론은 본질적으로 다음과 같은 복잡한 분산 시스템 아키텍처 엔지니어링 과제입니다.

    • 통신 오버헤드: 기울기 계산 및 데이터 업데이트를 수행할 때 통신에 필요한 시간이 전반적인 가속 효과에 영향을 미칠 수 있습니다. .
    • 동기화 복잡성: 여러 시스템이 병렬로 훈련되는 경우 동기화의 복잡성을 신중하게 설계해야 합니다.
    • 내결함성 및 리소스 관리: 단일 지점 오류가 모델 교육 및 추론에 미치는 영향은 물론 CPU 및 GPU에 대한 리소스 할당 및 예약 전략.
    • ...

    그러나 실제로 대부분의 엔지니어는 특정 교육 작업에 직접 참여하지 않고 애플리케이션 구축 시 대형 모델의 매개변수를 활용하는 방법에 중점을 둡니다.

    7B? 13B? 175B? 대형 모델의 매개변수 해석Pictures

    5. 대형 모델 애플리케이션에 사용되는 매개변수

    여기에서는 주로 대형 모델을 사용하여 텍스트를 출력할 때 구성할 수 있는 세 가지 매개변수인 온도, Top-K 및 Top-P에 중점을 둡니다.

    온도 매개변수는 모델의 창의성만 제어하는 ​​스위치로 오해되는 경우가 많지만 실제로 더 깊은 역할은 확률 분포의 '부드러움'을 조정하는 것입니다. 온도 값을 더 높게 설정하면 확률 분포가 더 부드럽고 균일해지기 때문에 모델이 더 다양하고 창의적인 결과를 생성할 수 있습니다. 반대로, 온도 값이 낮을수록 분포가 더 날카로워지고 피크가 더 뚜렷해지기 때문에 훈련 데이터와 유사한 출력을 생성하는 경향이 있습니다.

    Top-K 매개변수는 각 단계에서 가장 가능성이 높은 Top-K 토큰을 출력하도록 모델을 제한하는 데 사용됩니다. 이러한 방식으로 출력에서 ​​일관되지 않거나 의미 없는 내용을 줄일 수 있습니다. 이 전략은 가능한 최고의 출력 일관성을 유지하는 동시에 어느 정도 창의적인 샘플링을 허용하는 것 사이의 균형을 만듭니다.

    Top-P는 설정된 P 값(0≤P≤1)을 기준으로 누적 확률이 P 값을 초과하는 최소 단어 집합을 출력으로 선택하는 또 다른 디코딩 방법입니다. 이 방법을 사용하면 다음 단어의 확률 분포에 따라 선택된 단어의 개수를 동적으로 늘리거나 줄일 수 있습니다. 특히, P 값이 1이면 Top-P는 모든 단어를 선택하는데, 이는 전체 분포에서 샘플링하는 것과 동일하므로 더 다양한 출력을 생성하는 반면, P 값이 0이면 Top-P는 단어만 선택합니다. 그리디 디코딩과 유사하게 가장 높은 확률을 사용하면 출력이 더욱 집중되고 일관되게 됩니다.

    이 세 가지 매개변수는 함께 작동하여 모델의 동작에 영향을 미칩니다. 예를 들어 온도=0.8, Top-K=36, Top-P=0.7로 설정하면 모델은 먼저 컨텍스트를 기반으로 전체 어휘의 완전한 비정규화 로그 확률 분포를 계산합니다. 온도=0.8은 각 로그 확률을 0.8로 나누어 정규화 전 예측에 대한 모델의 신뢰도를 효과적으로 높인다는 의미입니다. Top-K=36은 빈도 비율 로그 확률이 ​​가장 높은 36개의 마커를 선택하는 것을 의미합니다. 그런 다음 Top-P=0.7은 이 Top-K=36 집합에 필터링을 적용하여 누적 확률이 0.7에 도달할 때까지 높은 확률에서 낮은 확률로 정렬을 유지합니다. 마지막으로 이 필터링된 세트는 다시 정규화되어 후속 샘플링 프로세스에 사용됩니다.

    6. 요약

    공학 실습에서는 대형 모델의 매개변수를 이해하는 것이 의미가 있습니다. 매개변수는 대규모 모델에서 결정적인 역할을 하며 대규모 모델의 동작, 성능, 구현 비용 및 리소스 요구 사항을 정의합니다. 엔지니어링에서 대규모 모델의 매개변수를 이해한다는 것은 모델의 복잡성, 성능 및 기능 간의 관계를 파악하는 것을 의미합니다. 스토리지와 컴퓨팅의 관점에서 이러한 매개변수를 적절하게 구성하고 최적화하면 실제 애플리케이션에서 모델을 더 잘 선택하고 최적화하여 다양한 작업 요구 사항과 리소스 제약 조건에 적응할 수 있습니다.

    【참고】

    • ZeRO: 수조 매개변수 모델 훈련을 위한 메모리 최적화 ,https://arxiv.org/pdf/1910.02054v3.pdf
    • 대형 변압기 모델에서 활성화 재계산 감소,https://arxiv.org/pdf/2205.05198.pdf
    • https://timdettmers.com/2023/01/30/which-gpu-for-deep-learning/
    • https://blog.eleuther.ai/transformer-math/

위 내용은 7B? 13B? 175B? 대형 모델의 매개변수 해석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.