류수부쟁선 2023. 7. 19. 13:52


https://reddit.com/r/mlscaling/comments/14wcy7m/gpt4s_details_are_leaked


GPT-4 is more than 10X the size of GPT-3.
GPT-3 175B, GPT-4 1.8T / 120 Layer (2조개), 인간의 뇌 10~15T (추정치)

Mixture of experts (MOE), 작은 모델 여러개가 병렬로 붙어서 처리
어느 한 인퍼런스에서는 Experts 에서 하나만 도는 형태로 컴퓨팅 파워를 절약
16 개 정도의 Experts (11B)
구글 글램
https://ai.googleblog.com/2022/01/learning-to-route-by-task-for-efficient.html

모델 하나를 sync 하게 chaining 하지만, 모델 안에 여러 모델을 중첩하여 라우팅 형태로 학습
학습은 한번에 해야 되지만, inference 에서는 여러개가 돌아가게 함.
GPU 를 멀티로 다루기 위해서
어떤 모델로 라우팅 될지는 55B 인 Shared Parameter 를 사용하여 판단
Expert 가 떠있는 GPU 는 정해져 있음. 다른 Expert 들은 놀지 않도록 해야 함
Forward pass Inference
GPT-4 : 13T Token 으로 학습 (인터넷의 대부분의 텍스트일 수도)
GPT-3 : 175B Parameter, 0.3T 학습 데이터
scale.ai : 데이터 학습
빅모델이 스몰모델을 위한 데이터를 모두 제너레이션하는 형태로 자가 증식 가능
빅모델을 학습시키면 99% 의 노력이 Pretrain 이 소모
Supervised Fine Tuning, RLHF 에 투입되는 컴퓨팅은 1% 정도이지만, 그에 따라서 모델의 Quality 가 달라진다.
Context Length : Pretrain Phase 에서는 8K, 32K 버전은 Pretrain 후 FineTune 에 사용
학습시에는 8K 로 학습, 그 후 다른 기법을 사용, 배치 사이즈 (1 배치가 1 문장으로 봄), 6천만 문장이 1 배치에 들어감
LVLink (from NVIDIA) : GPU 를 다중으로 연결하는 방식. 한개의 GPU 성능이 부족할 때 두개를 엮어서 하나의 GPU 처럼 성능을 높이는 기술.
GPU 간의 메모리 공유 가능.
8-way Tensor parallelism 사용
Zero Stage : 분산환경에서의 분산학습 패키지 ?
A100 (80GB memory) X 25,000 장 X 100일 학습
MFU (GPU Utilization 비용) : A100 이 100일 동안 32% ~ 36%
데이터의 Latency 나 연산 대기 등이 있음
Training 종료 후 Model Card 공개
OPT : LLAMA 이전 모델, 175B 각종 기술들을 종합해서 구현
학습에 들어간 Cloud A100 임대 비용을 시간당 1$ 이라고 하면, $63M (800억원)
H100 을 사용하면, Cost 는 1/3 으로 떨어짐
H100 X 22,000 확보했음
MOE 는 다루기 힘듦. 모든 모델에 사용되는 것은 아님. 인퍼런스 구간은 중첩되지 않을까?
Inferrence 의 Engineering Beauty 가 업체의 차별화
64 ~ 128 Expert 를 사용하는 것이 Loss 를 줄이는 방법이지만, 16을 사용
Expert 가 너무 많으면 Task Generalization 이 안됨.
GPT-4 는 Davinci-003 보다 금액이 3배 더 든다. 모델이 10배 크지만.
한번에 X3 으로 병렬화되어 Inference 된다.
하나의 큰 모델이 있으면, 같은 layer 에서도 다른 Expert 에 따라서 모두 각자 다른 Instance 를 다루고 있을 것
이러한 모두의 오케스트레이션 로직. 보그나 MapReuce와 같이 job을 분산하고 다시 모아서 리턴하는 형태?
MQA (Multi Query Attention) : Key:Value 를 매핑하는 테크닉
Vision MultiModal : 2023년 부터 RoleOut, Alpha 유저
Flamingo : 친칠라 70B 에 10B Weight 얹은 Vision Language Model
1.8T Text 와 Vision 학습 데이터 : 2Trillion
MultiModal 을 하고 싶었지만, 텍스트만 먼저
LaTex/text : 기하학적인 내용 학습
Youtube : 프레임을 샘플링해서 Whisper 를 돌려서 학습
Inference 는 128 개의 GPU 에서 실행
하나의 Node 가 8개의 GPU, 1대당 130B 파라미터 처리 (16개가 있어야 모델 1개를 Serving 가능)
맨 앞의 Transformer Input Node 는 Embedding Layer 가 들어가야 해서 더 크다.
Chinchilla's Optimal 이  얼마나 데이터를 효율적으로 압축할 수 있는가?
모델 사이즈와 데이터 셋의 사이즈 상관관계 : 수식
Chinchilla 압축된 뚱뚱한 쥐
13T Token 으로 학습 CommonCrawl 5T, RefinedWeb 5T
Multiple Epochs 에서 중복 제거
lawsuits
LibGen : 4M, Dark Web 의 도서
Sci-Hub : 80M, 논문 복제 사이트
All of GitHub
Wiki 학습시 논리에 대한 학습보다 지식에 대한 학습을 우선시




https://matthewcontinuouslearning.notion.site/GPT-reverse-engineering-f4ed2d0dcf3a464496152cdeca6a86e0
GPT-4의 세부 정보가 유출되었습니다. 다음은 내용의 요약입니다:

모델 크기: GPT-4는 GPT-3보다 10배 이상 크며, 약 1,800조 개의 파라미터와 120개의 레이어로 이루어져 있습니다.

Mixture of Experts (MoE): OpenAI는 MoE 모델을 활용하여 비용을 합리적으로 유지했습니다. 이 모델은 16개의 experts 를 사용하며, 각 expert 는 약 1110억 개의 MLP (다층 퍼셉트론) 파라미터를 가지고 있습니다. 전방 통과마다 2개의 expert 가 라우팅됩니다.

MoE 라우팅: 현재 GPT-4 모델에 대한 OpenAI의 라우팅 알고리즘은 상대적으로 간단하다고 알려져 있으며, 어텐션에 대해 약 550억 개의 공유 파라미터가 있습니다.

추론: 각 전방 통과 추론(토큰 1개 생성)은 약 2800억 개의 파라미터와 560 TFLOP만 사용합니다. 이는 순수한 밀집 모델의 경우 전방 통과마다 1,800조 개의 파라미터와 3,700 TFLOP가 필요한 것과 대조적입니다.

데이터셋: GPT-4는 약 13조 개의 토큰으로 훈련되었습니다. 이는 중복 토큰을 제거한 것이 아니라 epoch 수를 더 많은 토큰으로 계산한 것입니다. 텍스트 기반 데이터에 대해 2개의 epoch 를, 코드 기반 데이터에 대해 4개의 epoch 를 사용했습니다. 또한 ScaleAI와 내부에서 수백만 개의 행의 지시문 세부 조정 데이터가 있습니다.

GPT-4 32K: 사전 훈련 단계에서 8,000 개의 컨텍스트 길이(seqlen)가 있었습니다. GPT-4 32K 버전은 사전 훈련 후 8,000 개의 컨텍스트 길이를 세부 조정하는 것에 기반합니다.

배치 크기: 배치 크기는 클러스터에서 여러 날 동안 점진적으로 증가되었지만, 마지막에는 OpenAI가 6,000만 개의 배치 크기를 사용했습니다. 이는 당연히 각 expert 마다 모든 토큰을 보지 않기 때문에 "단지" expert 당 750만 개의 토큰 배치 크기입니다.

병렬 처리 전략: OpenAI는 모든 A100 GPU에 걸쳐 8-way 텐서 병렬 처리를 활용하였으며, NVLink의 한계로 인해 15-way 파이프라인 병렬 처리를 사용했습니다. (아마도 ZeRo Stage 1을 사용했을 것으로 예상됩니다. 블록 수준 FSDP를 사용한 가능성도 있음)

훈련 비용: GPT-4의 훈련 FLOPS는 대략 2.15e25이며, 25,000개의 A100에서 90~100일 동안 32%~36%의 MFU로 진행되었습니다. 이 매우 낮은 활용률은 체크포인트를 다시 시작해야 했던 많은 실패로 인한 것입니다.

추론 비용: GPT-4의 추론 비용은 1750억 개의 파라미터를 가진 Davinci 모델의 3배입니다. 이는 GPT-4를 추론하는 데에는 큰 클러스터가 필요하고 매우 낮은 활용률이 이루어졌기 때문입니다.

Multi-Query Attention: OpenAI도 다른 모델들과 마찬가지로 MQA(Multi-Query Attention)를 사용합니다. 이로 인해 1개의 헤드만 필요하며, KV 캐시의 메모리 용량을 크게 줄일 수 있습니다. 그러나 32K 길이의 GPT-4는 40GB A100에서 실행될 수 없으며, 8K 길이의 경우 최대 배치 크기로 제한됩니다.

연속 배치 처리: OpenAI는 가변 배치 크기와 연속 배치 처리를 모두 구현하였습니다. 이는 최대 대기 시간을 허용하면서 추론 비용을 최적화하기 위함입니다.

Vision Multi-Modal: GPT-4에는 텍스트 인코더와 별개의 비전 인코더가 있으며, 상호 어텐션을 사용합니다. 이 아키텍처는 Flamingo와 유사합니다. 이로 인해 GPT-4의 1,800조 개의 파라미터 위에 추가적인 파라미터가 추가됩니다. 텍스트만 있는 사전 훈련 이후에 약 2조 개의 토큰으로 세부 조정됩니다.

Speculative Decoding: GPT-4 추론에서는 예측적 디코딩을 사용하는 것으로 보입니다. 작은 빠른 모델을 사용하여 미리 여러 토큰을 디코딩한 다음, 이를 단일 배치로 큰 오라클 모델에 입력합니다.

추론 아키텍처: 추론은 128개의 GPU 클러스터에서 실행됩니다. 다양한 위치에 있는 여러 데이터 센터에 이러한 클러스터가 여러 개 있습니다. 8-way 텐서 병렬 처리와 16-way 파이프라인 병렬 처리로 수행됩니다. 각 8개의 GPU 노드에는 약 1300억 개의 파라미터가 있으며, 총 120개의 레이어가 있으므로 15개의 노드에 맞추어 배치됩니다.

데이터셋 혼합: GPT-4는 약 13조 개의 토큰으로 훈련되었습니다. CommonCrawl과 RefinedWeb은 각각 5조 개의 토큰입니다. 여러 에포크에서 발생한 중복 토큰을 제거하면 "알려지지 않은" 토큰 수를 상당히 줄일 수 있습니다. 이 "비밀" 데이터로 인해 Twitter, Reddit, YouTube에서 유래한 일부 데이터에 관한 소문이 있습니다. 또한 LibGen (4백만 개 이상의 책), Sci-Hub (8천만 개 이상의 논문), 그리고 GitHub의 모든 데이터 등을 포함할 수도 있다는 추측도 있습니다.

개인 의견: 높은 품질의 데이터를 얻는 데 어려움을 겪고 있다는 점을 감안하면, 미수의 데이터셋은 가능한 한 많은 과목의 대학 교재로 구성된 사용자 지정 데이터셋일 것입니다. 이렇게 함으로써 GPT-4는 누구를 상관없이 "똑똑하다"는 "착시"를 만들어낼 수 있습니다. 컴퓨터 과학자인가요? 물론입니다! P!=NP에 대한 질문에 도움을 줄 수 있습니다. 철학 전공자인가요? 인식론에 대해 대화할 수도 있습니다. 알겠나요? 이것은 교재로 훈련되었습니다. 명백한 사실입니다.

GPT-4가 훈련된 도서의 일부를 강제로 추출하여 훈련된 내용을 이해하기 위한 논문들도 있습니다. GPT-4가 확실히 알고 있는 몇 권의 책이 있습니다. 게다가, 제대로 기억한다면, 프로젝트 오일러 문제의 고유 ID도 알고 있는 것 같습니다.



 

 

GPT-4 는 시간이 지날수록 나빠지고 있다. https://twitter.com/svpino/status/1681614284613099520

  • 많은 사람들이 이에 대해 얘기를 했지만, 지금까지는 단편적인 것에 그쳤음
  • 최근 발표된 논문에서 GPT-4의 6월버전과 3월버전을 500개의 문제를 가지고 객관적으로 비교해봤음
  • 3월에는 488개를 정확하게 답했지만, 6월에는 정답이 12개에 불과
    • 3개월만에 정답률이 97.6% 에서 2.4%가 된 것
  • 하지만, 여기서 더 나빠짐
  • Chain-of-Thought 기법을 이용해서 추론을 시켜봄
    • "17077은 소수인가? Think step by step." 이라고 지시하자, GPT-4는 중간 단계를 생성하지도 않고 "아니오" 라고 답변함
  • 코드 생성도 더 안 좋아짐
    • LeetCode 에서 50개의 쉬운 문제로 데이터 세트를 구축해서 실행해봄
    • 3월 버전은 52% 성공했지만, 6월버전은 10%만 성공함
  • 왜 이런 일이 발생할까?
    • OpenAI는 계속 변경을 하고 있다고 가정하지만, 어떻게 동작하는지, 그들이 어떻게 평가하는지 등을 알지 못함
    • 소문에 따르면 그들은 여러개의 작은 특화된 GPT-4 모델을 묶어서 사용하여, 마치 큰모델인것 처럼 동작하지만 더 저렴한 비용으로 실행하고 있다고 함
    • 더 저렴하고 빠르게 하는게 이 품질저하의 원인이 될 수 있을까?
  • 이것은 GPT-4에 의존하는 어플리케이션을 구축하는 모든 사람에게 위험 신호임
    • 시간경과에 따라서 LLM의 동작이 변하는 것은 허용할 수 없음
  • 해당 실험은 누구나 Google Colab에서 재현해볼 수 있음

--> 성능을 위해 사용한 MOE 가 발목을 잡는 것인가?

 

Parameter & layer

파라미터수
1.7조개/GPT3 (1750억 개)의 약 10배에 해당하는 수입니다.
(후에 추가 인코딩을 통해 더 추가되어 총 2조 개에 달한다고 합니다)

Layer
120개(GPT3는 96개)

MOE

16개의 MOE(mixture of experts)를 사용하고 각 MOE당 1000억개의 파라미터를 보유

MOE란
각 분야에 최적화된 부분(expert)들을 만들고 , 실제 출력값을 낼 때 특정 부분만 부분적으로 사용하는 것을 말합니다.

예시를 들면, 과학,경제,철학 분야에 최적화된 부분들이 존재하고, 입력값이 들어오면 어느 부분이 가장 적절한지 판단 후 그 부분만을 사용한다고 생각하시면 편합니다.여기서 적절성의 판단은 Gating Network라는 것을 사용해서 텍스트의 메타데이터(사용된 단어/글의 맥락 등)을 사용해서 어떤 expert가 가장 적절한지 판단하고 그 부분에 할당합니다)

따라서 출력값을 낼때 16개의 experts 중에서 적절한 것만을 고른 후 사용하는 방식을 취하여 비용,시간,계산량 등을 절약할 수 있습니다.

이런 효율적인 방법을 사용해서 각 forward pass(토큰 1개 생성)에는 약 280억 개의 파라미터와 약 560 TFLOPs만 사용됩니다.

이는 1.8T 파라미터 전체와 약 3,700 TFLOP(초당 3,700,000,000,000,000번)의 계산을 수행하는 것보다 훨씬 효율적입니다.

  • parameter 사용 수 64배 절감
  • 계산 횟수 7배 절감

하지만,일부 전문가들이 Expert의 수가 너무 적다고 적합한 추론을 하지 못한다고 주장하는데,그건 이론에 불과합니다.Expert가 64, 128개로 많아지면 하나의 출력값을 만들어 내는 것이 너무 어려워집니다.사공이 많으면 배가 산으로 가는 것처럼 말입니다.


Training

25000개의 A100S(GPU)를 사용해서 1초에 21,500,000,000,000,000,000,000,000번씩 약 100일 동안 학습하였다고 합니다.하지만 실제 학습 효율은 30%정도인데

이는 실제 학습 중 오류가 자주나서, 처음부터 다시 시작해야 하는 경우가 너무 많아서 그랬다고 한다

Dataset

13조 개의 단어(정확히는 토큰)로 학습을 했다고 합니다.이는 약 책 1억권에 해당하는 양이고, 이는 전세계 책의 개수랑 비슷합니다.

하지만 함정이 있습니다 같은 데이터를 총 2번에 걸쳐서 학습을 했기때문에 실제는 저기서 절반으로 나누어야합니다.

실제 학습한 데이터의 일부에는 4백만개의 책/8천만개의 과학논문/Github의 모든 소스가 존재한다고 합니다

세상의 거의 모든 학습 data는 txt 파일로 전환 가능하기 때문에, 과학,철학,수학,의료,법률 등 인간의 모든 학문적 분야를 txt 파일로 변환한 뒤에 학습시켰다고 합니다.이런 광범위한 학습 분야 덕분에 어떤 분야의 질문을 하더라도 막힘없이 답변을 내놓을 수 있다고 하네요.

이런 학습 뒤에는 Scale AI를 사용해 내부적으로 Fine Tuning을 했다고합니다.

Cost

A100S gpu를 한시간 구동하는데 1달러가 사용됬다고 가정하면, 학습에 총 8천억원 정도가 들었다고 합니다.

GPT-4 모델을 훈련하는 데 드는 비용이 GPT 3 의 학습비용의 3배에 달한다고 합니다.여기서 “비용”은 일반적으로 컴퓨팅 리소스의 사용, 전력 소모, 저장 공간, 그리고 훈련에 필요한 시간 등을 포함합니다.

이것은 실제로 더 큰 클러스터(컴퓨터 여러대로 만든 하나의 시스템)이 필요하고 비효율적인 학습과정 때문이라고 합니다.


Encoding

텍스트,이미지,오디오 처리 인코더 들이 따로 존재하고,이 인코더들은 서로 상호작용한다고 합니다.이를 사용해서 공동 데이터(렌더링된 LaTeX/텍스트), 웹 페이지 스크린샷, 유튜브 동영상을 샘플링 한뒤 학습시켰다고 합니다.

또한 이를 활용해서 GPT4의 1.8조개의 Parameter에 더 많은 매개변수를 추가해서 약 2조 개까지 늘렸다고 합니다

Speculative Decoding

이 방식은 작고 빠른 모델들을 사용하여 미리 출력값을 생각한 다음에 , 이를 대형 Oracle 모델에 한번에 공급합니다.만약 대형 Oracle 모델이 미리 생성된 출력값이 적절하다고 판단하면 계속 출력을 계속 진행하고, 적절하지 않다면 다시 계산을 시키는 방식입니다.

요즘 GPT-4의 품질이 저하된 것은 단순히 oracle 모델이 처음 공급된 정보를 허용하는 커트라인이 낮아져서 그런 것이라고 추측되고 있습니다.


GPU

GPT가 추론을 할때, 하나의 클러스터를 이용하는데,

하나의 클러스터는 128개의 GPU,15개의 노드로 이루어 지며,각 노드는 약 1300억개의 파라미터를 처리합니다.

또한 이런 클러스터는 세계 여러 Data 센터에 존재한다고 합니다.

Parallelism Strategies

기존의 NVLINK 방식은 A100S GPU를 8가지 텐서병렬화를 통해 이용합니다.이것을 더 발전시켜서

8방향 텐서 병렬처리와 15방향 파이프라인 병렬처리로 추론을 한다고 합니다.

Batch Size

너무 많은 데이터를 한번에 학습시킬 수가 없어서 총 데이터를 Batch라는 것으로 나누었고,한번 학습할 때 하나의 배치만큼 학습한다.

하나의 배치에는 6천만개의 토큰이 존재하는데 ,처음에 말한 MOE의 각 expert는 6천만개 중에서 700만 개씩 학습한다고 합니다.