27. GPT-Neo 2022, GPT-NeoX 2022

GPT-Neo 2022

Cũng thuộc họ GPT, là unidirectional language models và được finetuning xuống downstream task. Ta tìm hiểu về GPT-neo 1.3 billion model như 1 ví dụ về việc finetuning các dạng LLM về downstream task

Neo là tên 1 nhân vật trong "The Matrix" có khả năng học nhanh

Commonsense reasoning (lí luận thông thường) có vai trò trung tâm trong việc hiểu neural language. Hiện tại các huge pretrained models được đào tạo từ các downstream tasks, và các phương pháp phổ biến là instructive fine-tuningchain-of-though prompting, số lượng parameter từ hàng triệu đến vài tỉ, performance đi theo quy luật tỉ lệ nghiêm ngặt (strict scalling laws), các larger models thì nhiều sample hiệu quả hơn nhưng cũng dễ overfitting. Khái quát hóa/sinh (Generalization) được coi là khả năng khai thác kinh nghiệm trước đây để cảm giác về các tình huống mới, vì vậy có thể có thêm kĩ năng mới (new skills)) qua learning, cho phép 1 lớp rộng hơn của generalization. Nó mô tả sự khác biệt về kiến thức và đặc trưng cho tỉ lệ thông tin trước và space các  tình huống có thể xảy ra trong tương lai (xác suất xảy ra)

Ta bàn qua 6 tasks: hella swag, story cloze, cose, winograde, cosmo và piqa

Motivation

    - Những mô hình rộng có thể dễ dàng nội suy trong weight space và capture các quan hệ thành phần. Vì vậy, tạo ra được văn bản gắn kết và hợp lí khi được điều chỉnh phù hợp qua nhiều epochs. Tương tự, memory constitutes (cấu tạo trí nhớ) cũng là 1 phần quan trọng của trí thông minh, kết hợp khả năng của model để ngoại suy và rút ra thông tin hữu ích từ training data và kiến thức thế giới

    - Sự thống kê các mẫu hiện diện ngầm trong pretrained text corpus được biết đến là để cung cấp 1 vài ưu điểm bẩm sinh và kinh nghiệm, và là 1 lời giải thích hợp lí cho performance trên few-shot FS learning methods (vẫn cần nghiên cứu thêm)

    - Generalization là sự nhạy cảm với các phép loại suy trừu tượng (tìm Fundamental function) và do đó đòi hỏi một loạt các bước lập luận trung gian cho complex downstream task -> Intelligence đòi hỏi thích nghi với các tình huống mới bằng cách chuyển past experience thành future skill. Về vấn đề này, từ lâu neural networks đã được biết là hoạt động tốt như function approximators (excellent performance) trên các smooth continuous data bằng gradient descent methods

    - Kết quả thực nghiệm cho thấy model tận dụng feature presentations trong unsupervised pretraining đạt hiệu suất tốt hơn trong downstream tasks so với random initialized model. Việc này phụ thuộc khả năng của LLMs nhanh chóng thích ứng mỗi task chỉ sau vài epochs của fine-tuning process

1 cách để test là fine-tuning với limited dataset constraints qua simple commonsense reasonging tasks, đòi hỏi nhận diện mẫu mới và do đó thích nghi nhanh chóng với given task -> understand model behavior

Dataset

Khả năng commonsense reasoning phần lớn phụ thuộc dataset quality và yêu cầu suy luận trừu tượng mức độ cao (sentence completion, story generation, multiple choice). Ta concatenate context, question và answer thành k different example

Ví dụ câu "The corner table in a restaurant ordered a beer. The waiter served them the drink" thì "them" nói đến "people" tại "corner table" nhưng đây là khó cho model để hiểu như thế

- Winogrande: Winograd Schema Challenge, tăng task complexity. Predict word hoặc participant (đại từ/thành phần) chỉ noun nào trong sentence

- Cose: multiple-choice question-answering. Chọn đáp án đúng từ 5 answer choices

- Piqa: Physical Interaction Question Answering. Miêu tả object được xây dựng, sử dụng và vận hành thế nào, đòi hỏi lí luận vật lí (physical reasoning) để chọn đúng

- StoryCloze: chọn 1 ending hợp lí cho 1 long story (về daily life), dạng multiple-choice question với 2 answer choices -> Đánh giá quan hệ nhân quả và thời gian giữa các thực thể khác nhau trong ngữ cảnh

- HellaSwag: higher quality của SWAG. Chọn best ending cho story (từ 4 choices)

- CosmosQA: reading comprehension task (4 answer choice) -> tính logic (why? how? ...)

Training Procedure

Ta downstream về small và mid-sized classification task. Ta sẽ quan tâm 2 thứ: accuracy và cross-entropy

Model

GPT-neo là transformer-based decoder-only autoregressive language model (giống GPT-3). Self-attention cho phép xử lí long-term.

    - 24 layer decoder-only transformer (768-D states, 16 attention heads) -> n_dim = 48 (n_dim * n_head = d_states)

    - position-wise feed-forward layers (2048-D inner states)

    - next token prediction bởi attention mask

    - maximize likelihood ( k là context window)

    - Stochastic gradient descent
    - Recommend train cho TPU với JAX framework
Supervised target task: input token -> final transformer block's activation
                + contextual representation - dense classifier -> model predictions
Theo kinh nghiệm, ta dùng GPT-Neo 1.3B để so với BERT-large model
Finetuning details
    - Adafactor + batch size 16 (2/device), không gradient clipping
    - 3 epochs, fixed random seed
    - dropout: 0.2 regularization
    - BPR tokenization (vocab size 50257)
    - learning rate 2e-5 to 3e-7, batch size 16
    - Adafactor optimization scheme với maximum learning rate 2e-5
    - Dùng maximum length of input thay vì fixed 512
    - Linear learning rate decay schedule với warm-up over 0.1% training, value annealed 3e-7
Results
Ta test train với số steps bằng nhau
Robustness test: test khả năng học novel symbolic manipulations (kí tự mới). Tức test với 4 main tasks: add, subtract, swap và replace individual text tokens
    - Addition: 2 sentences có thêm các words, các words này tương đồng nữa nghĩa, yêu cầu cho ra cùng 1 answer choice "good day->pleasant and a bright

day"
    - Subtraction: 2 câu trái nghĩa, yêu cầu output good predictions ’increase volume, decrease volume’
    - Swap: 2 câu có noun(name) đổi chỗ nhau, yêu cầu right choices bằng xác định roles mỗi noun  ’Harry->Hermione'
    - Replace: 2 câu thay word tokens (1 hoặc nhiều), output right choice dựa vào context 'knife->gun'

GPT-NeoX 20B 2022
20 billion parameter autoregressive language model trained on Pile (dataset của GPT-neo) -> Open-Source Autoregressive Language Model
Ta thấy hiệu suất của các LLMs có thể dự đoán được theo quy luật lũy thừa với số lương tham số, trong khi những chi tiết kiến trúc (architectural details) như width/depth ratio có tác động tối thiểu đến hiệu suất phạm vi rộng -> 1 hệ quả là nghiên cứu tập trung vào quy mô như các dense models 500B parameters
Ta làm 1 open-source model để mở ra hướng nghiên cứu kĩ hơn về cách hoạt động của model thay vì chỉ có API.
Model Design and Implementation
GPT-NeoX-20B là 1 powerful few-shot learner, có architecture theo GPT-3 baseline với 1 chút sửa đổi: 20B parameter với 19.9B là "non-embedding" parameters mà được phân tích là số thích hợp cho scaling laws analysis, có 44 layers (hidden dimension size 6144 D states, 64 heads -> n_dim=96)
Model Architect

Rotary Positional Embeddings

Ta dùng rotary embeddings 2021 thay cho learned positional embeddings trong GPT

Rotary embeddings là 1 form của static relative positional embeddings. Ngắn gọn là nó twist (xoắn) embedding space mà attention của 1 token vị trí m đến vị trí n phụ thuộc tuyến tính vào m-n. Tức là standard multihead attention equation:

thay vì 
Với xm, xn là (batched) embeddings của token vị trí m, n và WTq, Wk là query và key weights ứng với:
(Lưu thông tin vị trí dựa vào tính duy nhất của giá trị phép quay vector với module chia đều)
Parallel Attention + FF Layers
Ta tính Attention và Feed-Forward FF layers song song và tổng lại kết quả
Do lỗi khi code, thay vì tính 
Thì ta đã tính 
Dù vậy, do đã đi quá xa để training lại. Tuy nhiên kinh nghiệm cho thấy không khác biệt về hiệu suất
=> Tính chặt chẽ của các large model? Các thành phần có thể được thay thế mà không làm đổi kết quả 
Initialization
Cho Feed-Forward output layers trước residuals, ta dùng initialization scheme introduced, 2/ (L*sqrt(d)). Việc này ngăn activations phát triển với depth và width ngày càng tăng, tử số 2 là cho việc paralled và  feed-forward layers được tổ chức song song.Với tất cả các lớp khác, ta dùng small init scheme, sqrt(2/(d+4d))
All Dense Layers
Trong khi GPT-3 dùng dense và sparse layers, thay vào đó, ta dùng opt cho độc quyền sử dụng dense layers đẻ giảm implementation complexity
Software Libraries
Pytorch v1.10.0
CUDA 11.1
NCCL 2.10.3
Hardware
8 x A100 40G GPUs, 2 HS2R swithches - 16 links
Trong khi cho đến nay không có công trình có hệ thống nào tập trung prompted pretraining, ta thấy rằng StackExchange formulation component của Pile ảnh hưởng lớn việc tạo mã
Tokenization
Ở GPT-NeoX-20B, ta dùng BPE-based tokenizer similar với vocabulary size 50257, với 3 thay đổi chính:
    - Train với Pile, tạo tokenizer chung
    - GPT-2 xử lí tokenizer khi bắt đầu 1 string như 1 non-space-delimited token, còn GPT-NeoX-20B áp dụng consistent space delimitation regardless (k/c từ là 1 khoảng trắng, k/c câu là 2 khoảng trắng, đoạn là 3 ...) -> giải quyết việc không nhất quán về prefix space với 1 tokenization input
    - Tokenizer của ta chưa tokens cho nhiều space tokens lặp lại (tất cả <=24 space liên tục đưa về 1 token) -> Giảm số tokens
Data Duplication
2 năm trở lại,  tiêu chuẩn thực tiễn khi training ARLMs trở thành chỉ train cho 1 epoch 
Điều quan trọng cần lưu ý là kể cả không có cải thiện loss hay task evaluations thì vẫn có những lí do thuyết phục để deduplicate training data. Đặc biệt, systematic analysis cho thấy những lợi ích đáng kể về giảm rò rỉ training data
Performance Evaluations
Tasks Evaluated
Ta chia thành 3 loại task chính:
    - natural language tasks -> a diverse collection of standard language
model evaluation datasets
    - Advanced Knowledge-Based Tasks -> 5S performance vs 5S GPT-3
    - Mathematical Tasks -> MATH test dataset 0S và 5S
Discussion
Limitations
    - Optimal Training: Hyperparameter tuning là 1 process đắt đỏ, và thường không khả thi cho quy mô nhiều tỉ parameter models. Do đó, ta chọn hyperparameters dựa trên mixture của các thí nghiệm quy mô nhỏ hơn và nội suy lại các parameters phù hợp với model size. Tuy nhiên phương pháp này quá giả định theo feature-based và gần như chắc chắn không còn tối ưu nữa (có khả năng chưa bao giờ như vậy)
    - Lack of Coding Evaluations: có rất nhiều cải tiến cho coding task đã được đưa ra. Tuy nhiên, chưa hề được tối ưu difficulty và cost của coding benchmarks đã có, vậy không có khả năng đánh giá code :v
    - Data duplication: việc thiếu dataset deduplication có thể tác động downstream performance. Tuy nhiên việc deduplicacting data có thể ảnh huwonggr lớn đến perplexity. Vậy thật khó để nói nên bỏ không? bỏ bao nhiêu?

Nhận xét