Mở đầu
Training language models to follow instructions with human feedback (InstructGPT PPO-ptx 2022)
Làm LMs to hơn không có nghĩa nó sẽ tốt hơn
-> Aligning language model (sắp xếp ngôn ngữ) với user intent (ý định người dùng) trên 1 loạt các task bằng fine-tuning với human feedback
Thông qua API, ta thu thập 1 dataset of rankings of model outputs mà dùng reinforcement learning để fine-tuning GPT-3 bằng supervised learning. Ta gọi models kết quả là InstructGPT.
Do nâng cấp từ GPT-3 nên còn gọi là GPT-3.5 series
Còn tên gọi khác là Reinforcement Learning from Human Feedback (RLHF)
Trong đánh giá về prompt distribution, 1.3B parameter InstructGPT được ưa thích hơn 175B parameter GPT-3. Ngoài ra InstructGPT models cho thấy việc cải thiện tính trung thực và giảm toxic output. Mặc dù còn mắc những lỗi cơ bản, nhưng là 1 hướng đầy hứa hẹn
Large LMs có thể được "prompted" để biểu diễn 1 tập các NLP tasks, bằng cách cho 1 vài ví dụ của task như input (few-shot FS). Dù vậy, sẽ sảy ra vấn đề thiếu chính xác, thiên vị, toxic hoặc không theo khuôn mẫu (gọi chung là misaligned (bị lệch)). Những điều này đặc biệt quan trọng, đặc biệt với những model phát triển theo dạng ứng dụng.
OpenAI đã đạt được tiến bộ trong aligning LMs bằng cách training với nhu cầu người dùng (user's intention). Việc này bao gồm cả những explicit intention (ý định rõ ràng) như theo cấu trúc hướng dẫn và cả implicit intention (ý định tiềm ẩn) như trung thực, không thiên vị. Vì vậy, để ứng dúng được, tâ cần đặt ra một vài tiêu chí (critera): - hữu ích (giúp người dùng giải quyết công việc của họ)
- trung thực (không bịa đặt thông tin hoặc đánh lừa người dùng)
- vô hại (không làm tổn hại tâm lí hoặc xã hội)
Ta tập trung vào việc dùng Reinforcement learning RLHF để fine-tune GPT-3 theo 1 loạt các hướng dẫn bằng văn bản - Ta sử dụng human preferences như reward, ta thu thập dataset dạng các hành vi mong muốn cho đầu ra và một số labeler-writter prompts (lời nhắc người dán nhãn viết), sử dụng điều này làm cơ sở supervised learning của our models. - Ta lại thu thập dataset về human-labeled để so sánh outputs giữa our models trong tập API prompts lớn hơn
- Ta train 1 reward model (RM) trong tập dataset này để predict model output được ưa chuộng nhất
- Cuối cùng, ta dùng RM như 1 reward function và fine-tuning supervised learning baseline để maximize reward dựa vào PPO algorithm
Các mô hình kết quả được gọi là InstructGPT
Tổng cộng có 3 model (size 1.3B, 6B, 175B parameter), sau nhiều thửu nghiệm ta có những nhận xét sau:
- Outputs của InstructGPT được ưa thích hơn GPT-3: 1.3B được ưa thích hơn 175B, hầu như kiến trúc giống nhau, chỉ khác ở human-data. Kể cả khi cso thêm few-shot prompts vào GPT-3 thì InstructGPT vẫn được ưa chuộng hơn
=> InstructGPT tuân theo các ràng buộc rõ ràng trong hướng dẫn một cách đáng tin cậy hơn
- Cải thiện về độ trung thực: test với TruthfulQA benchmark, InstuctGPT được đánh giá trung thực và có câu trả lời nhiều thông tin gấp đôi GPT-3. Với "closed-domain" tasks, với output không chứa thông tin không có trong input (summarize hoặc QA), InstructGPT tạo nên thông tin không có trong đầu vào chỉ bằng 1 nửa GPT-3 (21% so với 41%)
- Cải thiện nhỏ về toxic, nhưng không bias: test với RealToxicityPrompts dataset, InstructGPT có 25% ít toxic hơn GPT-3
- Minimize hiệu suất regression trên public NLP dataset bằng cách chỉnh sửa RLHF fine-tuning precodure. Đây cũng là ví dụ cho "alignment tax", chọn chi phí hiệu suất thấp. Còn có thể giảm thêm performance regression bằng cách mixing PPO updates với updates tăng log likelihood của pretraining distribution (PPO-ptx)
- Model tổng quát theo sở thích chủa những người gán nhãn đã không tham gia training data. Điều này để kiểm tra tính tổng quát. MẶc dù vậy, vẫn cần thêm đẻ mở rộng cho các tập thể rộng hơn trong hành vi mong muốn
- Public NLP datasets không phản ánh cách our LM được dùng.
- InstructGPT cho thấy tiềm năng phối hợp HLHF fine-tuning distribution. InstructGPT có khả năng trả lời code. Ngược lại, GPT-3 cũng có thể, nhưng cần cân thận hơn và thường không theo hướng dẫn. Kết quả này rất thú vị, vì có thể khái quát hóa khái niệm "following instructions". Cho nên giữ lại 1 ít alignment với cả các task không giám sát trực tiếp
- InstructGPT vẫn hay mắc các lỗi cơ bản
Related word
Việc làm của chúng ta cps thể được coi là áp dụng trực tiếp RLHF vào aligning language models trong phân phối các language tasks
Câu hỏi là ý nghĩa việc căn chỉnh cho LMs? Vậy ta cần nghiên cứu các liên kết, simple baselines và thuộc tính tỉ lệ của chúng
Traning LMs to follow instructions: cross-task generalization, tức LMs được fine-tuned trên nhiều loại public NLP dataset (có prefixed instruction) và được đánh giá tại 1 tập NLP tasks khác nhau. Đã có nhiều thử nghiệm được làm, nhưng 1 phát hiện nhất quán là fine-tuning LMS trên 1 loạt NLP tasks, với instructions, cải thiện hiệu suất downstream với held-out tasks, cả trong zero-shot 0S và few-shot FS.
Evaluating the harms of language models: mục tiêu là sửa behavior để giảm tác hại trong ứng dụng (output sai, rò rỉ dữ liệu riêng tư, được sử dụng với mụ đích xấu). Cũng như có nhưng thách thức mới trong các domain cụ thể (hệ thống hộp thoại). Vậy ta cần 1 tiêu chuẩn chung
Modifying the behavior of LM to mitigate harms: Chúng ta có rất nhiều cách:
- Fine-tune LMs trong 1 small, value-targeted dataset (QnA task);
- Filter pretraining dataset bằng cách bỏ documents mà khả năng cao (high conditional likelihood) tạo ra trigger phrase (LMs generate less harmful text, nhưng giảm nhẹ hiệu suất)
- Dùng nhiều cách như data filtering, blocking words hoặc n-gram trong khi generation, safety-specific control tokens, và human-in-theloop data collection
- Giảm bias trong word embedding regularizationj, data augmentation và null space projection để làm lại phân phối, các hàm mục tiêu và phân tích nhân quả (causal mediation analysis)
- Dùng 1 language models thứ 2
Methods and experimental details
High-level methodology Bắt đầu với 1 pretrained LM, 1 phân phối các prompts để tạo các outputs phù hợp và 1 nhóm trained human labelers. Ta làm theo 3 bước:
- Collect demonstration data, and train a supervised policy: cung cấp minh họa behavior mong muốn vằng prompt distribution. Sau đó fine-tune pretrained GPT-3 model trên data này bằng supervised learning
- Collect comparison data, and train a reward model RM: tập hợp 1 bộ dataset về so sánh các model outputs, để labelers chọn cái nòa họ thích hơn. Sau đó train 1 reward model để predict human-preferred output
- Optimize a policy against the reward model using PPO: dùng output của RM làm scalar reward. Fine-tune supervised policy để optimize reward bằng PPO algorithm
Bước 2 và 3 có thể được lặp lại liên tục với việc cải thiện RM. Thực tế, hầu hết so sánh đến từ supervised policies, một số đến từ PPO policies
Dataset
Prompt dataset chủ yếu là các lời nhắc đến OpenAI API, cụ thể là những dữ liệu người dùng từ các phiên bản cũ của InstructGPT models (đã được thông báo cho biết trước). Loại bỏ các prompts trùng lặp bằng cách check prefix có chung nhau đoạn dài không, và limit số prompts là 200/user ID. Đồng thời tạo train,validation, test splits based cho user ID, vậy validation và test không chứa data từ users có data ở training set. Để tránh việc model học chi tiết khách hàng quá, ta lọc prompts nhận dạng cá nhân trong training split.
Đối với model InstructGPT đầu tiên, ta yêu cầu labelers tự điền prompts. Bởi vì ta cần 1 initial source cho instruction-like prompts, loại prompts này không được dùng cho các model sau. Có 3 loại prompts:
- Plain: task tùy ý, trong khi vẫn đảm bảo sự đa dạng
- Few-shot: có 1 instruction, với multiple query/response pairs cho instruction
- User-based: ta có nhiều use-case, yêu cầu labelers gán prompt cho các case này
Từ các prompts đó, ta tạo 3 datasets khác nhau cho fine-tuning:
- SFT dataset, labeler demonstrations dùng để train SFT models (13k training prompts)
- RM dataset, với ranking cảu output để train RMs (33k training prompts)
- PPO dataset, không có human labels, để làm input của RLHF fine-tuning (31k training prompts)
Models
Supervised fine-tuning (SFT): fine-tune GPT-3 1.3B, train với 16 epochs, cosine learning rate decay, residual dropout 0.2. model SFT cuối được chọn dựa vào RM score trên validation set. Ta thấy rằng SFT models overfit on validation loss sau 1 epoch, dù vậy, training nhiều epochs hơn vẫn giúp RM score và human preference ratings, mặc dù overfitting
Reward modeling (RM) bắt đầu từ SFT model với việc bỏ layer unembedding cuối, ta train 1 model để làm prompts và respone, output là 1 scalar reward (6B RMs là đủ). RM được trained trên dataset về so sánh giữa 2 model outputs từ cùng input. Ta dùng cross-entropy loss, với comparisons là labels - sự khác biệt trong reward đại diện cho tỉ lệ 1 phản hồi được ưa thích hơn
Để speed up, ta đặt K thuộc [4,9] responses để ranking. Vậy có 2CK so sánh cho mỗi prompts. Từ việc so sánh sự tương quan các label task, ta thấy rằng chỉ suffle comparisons vào 1 dataset thì chỉ làm reward model overfit sau 1 epoch. Thay vì thế, train 2CK comparisons từ mỗi prompt như 1 single batch. Loss function sẽ là:Cuối cùng, do RM loss là shift-invariant trong reward nên có thể normalize reward model bằng 1 bias, do đó mean score trước khi làm RL là 0
Reinforcement learning (RL): ta fine-tuned SFT model bằng PPO trong our enviroment (biểu diễn random customer prompt và tìm 1 response cho prompt. Input prompt và response, tính reward bằng RM và kết thúc. Ngoài ra, ta thêm per-token KL để phạt mỗi lần SFT model có 1 token giảm over-optimization RM. Value function được tạo bởi RM được gọi là "PPO"
Ta cũng thử nghiệm mixing các pretraining gradients vào PPO gradient, để cải thiện performance regression trên public NLP datasets. Gọi là "PPO-ptx". Vậy ta maximize combined objective function tại RL training:Baselines: so sánh PPO với SFT models và GPT-3. Ta cũng so sánh GPT-3 với few-shot
prefix "prompt" đến 1 instruction-following (GPT-3 -prompted). Prefix này được chuẩn bị cho
user-specified instruction. Ta cũng so sánh InstructGPT với fine-tuning 175B GPT-3 trên FLAN và T0 datasets. Ta fine-tune chúng với cỡ 1 triệu examples tương ứng và chọn checkpoint có highest reward model score trên validation set
Evaluation
Ta định nghĩa "aligned" với model:
- Mục đích chính là models hành động theo ý định người dùng. Thực tế hơn, là sử dụng 1 khung tiêu chí như: hữu ích, trung thực và vô hại
- Để hữu ích: cần theo instructions, đồng thời infer intention từ 1 few-shot prompt hoặc 1 inter pretable pattern như "Q: {question}\nA:". Khi prompt mơ hồ, không rõ ràng thì dựa vào labeler preference ratings. Tuy nhiên, do labelers không phải người tạo prompts, nên có khác biệt
- Để trung thực: định nghĩa "trung thực" khá là mơ hồ, nên chỉ có thể so sánh đầu ra thực thế, khi suy luận niềm tin (infer its belief) trong model là big black box. Thay vào đó ta dùng 2 dữ kiện để đánh giá:
+ Đánh giá xu hướng tạo information về tiệm cận domain tasks (hallucinations)
+ Dùng TruthfulQA dataset, nhưng chỉ nắm bắt được 1 phần nhỏ
- Để vô hại: định nghĩa "vô hại" cũng mơ hồ. Nó tùy thuộc vào ảnh hưởng và cách dùng outputs trong thực tế. Việc cố gắng hướng model theo 1 tiêu chí "vô hại" nào đó sẽ khiến mất tổng quát cũng như hoạt động không tốt với 1 cách dùng đòi hỏi 1 tiêu chí "vô hại" khác. Do đó, ta sử dụng 1 bộ các specific proxy cụ thể nhằm kiểm tra behavior có thể gây hại không: labelers đánh giá output có inappropriate trong context của 1 customer assistant không? Đồng thời đánh giá qua các dataset để đo sự thiên vị (bias) và toxicity
Vậy ta chia các đánh giá đinh lượng theo 2 hướng:
- Evaluation on API distribution: sô liệu chính dựa trên human ratings trên tập prompts từu cùng source với training distribution. Ta chỉ chọn prompts của customers à chưa trainig. Dù vậy, chúng có thể là nhược điể của GPT-3 baselines. Do đó, cũng cần prompts submitted cho GPT-3 models, thường không theo "instruction following", nhưng cũng được thiết kế riêng cho GPT-3. Trong cả 2 trường hợp, mỗi model có thể tính toán tần suất outputs được ưu tiên cho 1 baseline policy (chọn 175B SFT model làm baseline vì hiệu suất gần middle nhất). Ngoài ra, yêu cầu labelers ddnahs giá trên 1-7 Likert scale và thu thập metadata cho mỗi model output
- Evaluation on public NLP datasets: ta đánh giá trên 2 loại public dataset: theo tiêu chí "aligned"; và theo zero-shot performance trên traditional NLP tasks. Đồng thời samples từ models trên tất cả sampling-based NLP tasks
Results
- Labelers thích InstructGPT output hơn GPT-3 output - Our Models khái quát theo sở thích "held-out" labelers mà không tham gia training data. Tức held-out labelers có ranking tương tự training worker
- Public NLP datasets không phải ánh cách LMs được dùng
- InstructGPT được đánh giá trung thực hơn GPT-3
- InstructGPT có cải thiện 1 tí về độc hại so với GPT-3, nhưng không bias
- Ta có thể minimize performance regression trên public NLP datasets bằng tinh chỉnh RLHF fine-tuning procedure
- InstructGPT models cho thấy sự khái quát hóa tiềm năng cho instruction outside của RLHF fine-tuning distribution
- InstructGPT vẫn gặp lỗi cơ bản
Hướng đi tiềm năng:
- aligning superhuman AI systems lấy RLHF làm core (khó cho humans để evaluate directly đánh giá trực tiếp):
+ Chi phí increasing model alignment khiêm tốn so với pre-training
+ InstructGPT khái quát "flollowing instructions" để cài đặt mà ta không supervise nó (cho non-English language tasks)
+ Giảm thiểu hầu hết suy giảm hiệu suất (performance degradations) bởi fine-tuning
+ aligment techniques trong thực tế
- aligning đến ai? -> cá nhân hóa hay xây dựng quy chuẩn chung nhất?
- Hạn chế:
+ ngoài RLHF còn nhiều thuật toán cần xem xét
+ Comparisons không phải 1 cách hữu hiệu -> human-computer interaction problem
+ Nếu giảm alignment tax bằng kết hợp pre-training data vào RLHF fine-tuning không hoàn toàn giảm performance regressions, có thể dẫn đến behaviors không mong muốn
+ Nguyên tắc công bằng nhận được sự chứng thực mặc dù sự khác biệt rộng rãi trong niềm tin đạo đức của con người



ChatGPT 2022
Về cơ bản ChatGPT là một phiên bản nâng cấp của InstructGPT, điểm nâng cấp ở đây chính là data collection setup. ChatGPT đã thu thập dữ liệu đối thoại (tạo initial model bằng supervised fine-tuning SFT) bằng cách yêu cầu labelers cùng lúc tạo ra các câu yêu cầu (prompts) và các phản hồi respones dựa trên các chủ đề được chỉ định trước (both sides user-AI assistant). Các trainers (labelers) được truy cập vào model-written suggestions để giúp compose respones. Quá trình huấn luyện diễn ra bắt đầu ở Bước 1 tương tự như ở InstructGPT bằng cách mixing cả new dataset với dataset của InstructGPT mà ta đã đưa hết về dialogue format
Về reward model RM, ta thu tập comparison data, từ 2 hay nhiều model response ranked. Chọn randomly 1 model-written message, lấy mẫu 1 số thay thế và labelers ranking chúng (fine-tune bằng Proximal Policy Optimization PPO) Vẫn có một vài hạn chế:
- Luôn tồn tại xác suất not "aligned"
- Cần sự can thiệp của con người trong training nhiều, dẫn đến tăng chi phí, thậm chí tiềm ẩn nguy cơ bias
Tóm tắt các GPTs cơ bản Efficient Training of Language Models to Fill in the Middle (FIM 2022 GPT-3 2022)
Q: các attention cũ dùng masked 1 chiều để tránh việc 1 token lấy tỉ trọng chính nóbert thay bằng attention 2 chiều nhưng mask input, t5 cũng tiếp thu và phát triển cái này. Gpt lại dùng lại masked 1 chiều. Vậy ý tưởng nào tốt hơn?
A: bart tốt nhất cover nhiều biến thể, bert tốt cho hạn chế tài nguyên, gpt là hack (dùng ok). Với LLM thì GPT là lựa chọn hàng đầu, vì mô hình đơn giản (giảm lượng tính toán) + khả năng sinh
GPT convert bài toán con thành chuỗi left to right token (a.k.a prompt engineering), để fill in the middle (BERT là fill in mask) nó bẻ text từ prefix + middle + suffix thành prefix + suffix + middle hoặc suffix + prefix + middle. Và thế là GPT có thể predict middle given prefix & suffix. A clever hack. Điều hấp dẫn là trộn đc nhiều cách bẻ dữ liệu trong huấn luyện mà không làm giảm hiệu năng mô hình. Ta thấy rằng các autoregressive (AR) language models có thể tự học cách điền từ vào văn bản sau khi ta áp dụng straightforward transformation đến dataset (đơn giản là chuyển 1 phần văn bản từ middle về end). Trong khi data augmentations này được chứng minh rằng không gây hại cho khả năng left-to-right generative (sinh tạo) ban đầu. Đề suất rằng autoregressive LMs tương lai lấy Fill-in-the-middle FIM làm mặc định. Để làm được điều này, ta chạy 1 chuỗi các phép cắt bỏ trên key hyperparameters (data transformation frequency, structure of the transformation, method of selecting the infill span). Chúng ta sử dụng các phương pháp này để tạo 1 cài đặt mạnh mẽ và phương pháp tốt nhất để train FIM modelsTa so sánh với 1 vài loại transformer-based LMs khác: - encoder-only: BERT (masked language modeling objective)
- encoder-decoder: BART, T5 (span prediction objective)
- decoder-based: GPT series (left-to-right next token prediction objective)
Ta thấy rằng hiện tại, decoder-based có sự nổi tiếng áp đảo trong largest scale (Large LMs) (GPT-3,
Codex, LaMDA, GLaM, PaLM, Gopher, Jurassic-1, Chinchilla, LLaMa) do tính vượt trội về open-ended text generation, in-context learning (using few-shot priming), pre-training computational eficiency và scale-ups. Các models này cũng đơn giản hóa architecturally và nhìn chung hiệu quả hơn mà không cần task specific fine-tuning, làm chúng hấp dẫn hơn để suy luận và triển khai
Tại sao lại cần FIM?
Ta thấy rằng tất cả model calsses bị giới hạn với infilling (khi model được giao task generating text tại 1 vị trí cụ thể chỉ định bởi prompt), trong khi điều chỉnh cả prefix và suffix. Left-to-right models chỉ có thể điều chỉnh prefix. Còn encoder-only và encoder-decoder models có khả năng điều chỉnh suffix, nhưng lengths của infill region ngắn hơn nhiều thực tế. Điều này thật đáng tiếc vì việc infilling trong tự nhiên phát sinh trong ngữ cảnh có cả trước và sau point of generation Key transformation dataset: ta chia documents thành 3 tập 1 cách random và di chuyển tập middle về end: document -> (prefix, middle, suffix) -> (prefix, suffix, middle)
Sau đó ta concatenate 3 tập lại bằng sentinel tokens
Với sự quan tâm ngày càng tăng về LLMs, mà rất tốn kém để train và có 1 cải thiện đáng kể. Nhìn chung, khi thêm 1 objective hoặc capability (khả năng), ta tin rằng câu hỏi quan trọng (most critical question) là ảnh hưởng đến những khả năng hiện có và trade-off trong tính toánTa chứng minh rằng FIM transformed data không ảnh hưởng khả năng left-to-right learning khi learning fill-in-the-middle. Ta gọi là FIM-for-free property:
- FIM-for-free property: ta so sánh 8 models, có và không có FIM, và cho thấy kết quả không làm mất left-to-right capability trong pre-training (thử với cả code và language)
- Best practices for FIM in pre-training: Ta làm rõ tác dụng của nhiều hyperparameters đến training FIM models bằng cách cắt bỏ toàn diện. Đặc biệt, ta chú ý FIM rate (probability FIM transformation được dùng), different variants của FIM transformation và lựa chọn middle span
- Finetuning inefficiency: 1 alternative training FIM models from scratch là finetuning LMs đã có. Ta chỉ ra rằng finetuning với FIM là không có hiệu quả tính toán. Khi FIM có thể learned for free trong pretraining, learning FIM trong finetuning lại yêu cầu nhiều tính toán hơn để có performance nhưu pretraining
- New infilling benchmarks: để nghiên cứu khả năng tổng quát hóa, ta cần đánh giá chính xác free-form generated samples. Ta tập trung vào code, nơi ta có thể dùng unit tests để đánh giá long FIM samples. Thực tế, ta dùng single-line và multi-line infilling benchmark bằng cách bỏ non-empty lines khỏi solutions chính tắc. Dù vậy, line-based không nắm bắt được tất cả trường hợp sử dụng FIM, ta tạo 2 benchmarks mới là random span infilling và random span infilling light
- Need for sampling evaluations: ta thấy rằng việc thay đổi nhiều hyperparameters trong FIM training thường dẫn đến khác biệt không đáng kể trong test losses nhưng khác biệt lớn trong sampling-based benchmarks.Không chỉ sampling benchmarks gần hơn thực tế, mà còn tăng tỉ lệ missed. Đây là 1 phát hiện quan trọng để mở rộng trên test losses, mà ta thấy cần phải bổ dung bằng đánh giá khác
Evaluation
Ta dùng cả AR và FIM evaluation benchmak để phân tích (tức cả AR loss tức cross-entropy loss trong normal left-to-right data và FIM loss trong 100% FIM transformed data). Tất cả test losses đều tính bằng nats per token unit. Trong tất cả sampling-based benchmarks, ta dùng nucleus sampling, với nucleus parameter 0.95
- Autoregressive evaluation: DROP và QuAC few-shot prompting. Với code, ta dùng rates trên HumanEval
- Infilling evaluation: P(middle | prefix,suffix) cho FIM và P(middle | prefix) cho AR models. Ta tập trung vào code với free-form generation với 1 hoặc vài token generations chung trong cloze-style natural language benchmarks. Ưu thế của làm việc với code là có test suites kể cả với long smaples từ open-ended generation. Thêm nữa ta tạo new benchmark là random span infiling, với mỗi HumanEval problem, ta tạo infilling tasks bằng chách chọn middle span từ canonical solution uniformly at random
FIM training and inference
Ta implement FIM bằng random transformation applied cho dataset với 2 loại khác nhau: document level và context level. Sự khác biệt là chỗ FIM transformation diễn ra ở giai đoạn nào của data loading pipeline. Sự lựa chọn này là tự nhiên khi 1 long document có thể chia thành nhiều contexts hoặc 1 context có thể chứa nhiều document nhỏ
Với doc-level FIM:
- Với một vài probability p (FIM rate) (thường dùng p =0.5), ta cắt mỗi document thành 3 phần: prefix, middle, suffix.
- Ta split uniformly at random,tức mỗi phần là 1/3 full document trong kì vọng. Sau đó encode mỗi sections 1 cách riêng biệt và thêm sentinel tokens (<PRE>, <MID>, <SUF>) tại đầu mỗi section.
-Sau đó concatenate tất cả lại: - Sau đó các documnets khác nhau concatenate bằng <EOT> và đưa vào model khi training Ta giữ loss của cả 3 sections để FIM training không giảm autoregressive learning signal. Thí nghiệm sơ bộ cho thấy điều này quan trọng để có FIM-for-free property, thuộc tính này không thay đổi việc sentinels có masked không, tuy nhiên, quan trọng là phải train trên <EOT> tokens vì nó signals 1 successful join to the suffix
Cho inference, ta encode prefix, suffix và prompt the model với:Ta tiếp tục sampling từ model đến khi nó sinh <EOT> token, tức thông báo đã nối prefix và suffix. Nếu không sinh 1 <EOT> token với lí do đã phân bố token budget hợp lí, đó là sign rằng model khó nối prefix và suffix, và resulting samples thương tệ, điều này làm procedure của EOT aware best-of-n sampling SPM Model
Tức đổi chỗ prefix và suffix. Mục đích cải thiện key-value caching khi inference. Lí do là việc thêm tokens vào prefix không còn làm mất hiệu lực keys và values được tính trong suffix section (tính ưu việt này của SPM không phổ biến, tùy vào ứng dụng). Đặc biệt, trong SPM mode, những thay đổi nhỏ ở suffix làm mấ hiệu lực cache cho prefix (nhưng thực tế thay đổi ở suffix hiếm hơn). Ngoài ra, bên cạch caching advantages, SPM còn 1 ít lợi thế so với PSM trong infilling benchmarks. Thực tế, ta dùng 50% probability PSM mode và 50% probability SPM mode, vậy model có thể xử lí cả 2. Nói cách khác, mỗi mode kế thừa 1 nửa total FIM rate p. Ta so sánh joint training và pure training cả 2 loại.
MẶc dù ý tưởng SPM mode đơn giản, nhưng có 1 vài tinh tế về bị trí sentiel tokens mà đặc biệt quan trọng trong training jointly SPM và PSM
Contex-level FIM: Với long documents, document-level dễ bị phân tán (fragmented) DIM data (toàn bộ prefix hoặc suffix có thế bị cắt khỏi context khi chunking). Để giải quyết, ta dùng FIM sau chunking step. 1 context slice cũng có thể có nhiều documents được nối bằng <EOT>. Vậy ta tách dựa trên <EOT>, biến 1 vài documents thành FIM examples với probability cho bởi FIM rate, và nối examples lại bằng <EOT>. Kết quả phụ thuộc context length, kĩ thuật này tăng hiệu xuất document-levevl FIM và áp dụng context-level FIM trong tất cả main FIM runs
Pretraining results
=> FIM-for-free property
joint FIM pretraining không dẫn đến bất kì sự xuống cấp nào trong AR benchmarks cả trong hiệu xuất của natural language và code
FIM rate: liệu FIM rate có ảnh hưởng FIM-for-free? Và Liệu FIM rate cao hơn có khả năng FIM mạnh hơn?Nếu như nhau (trừ 100%), vậy tại sao lại chọn FIM rate 0.5 thay vì FIM rate khác? Thật ra là kết quả không khác bao nhiêu
SPM, PSM và joint SPM+PSM training
=> SPM có 1 chút tốt hơn PSMContext-level và document-level FIM
context-level FIM cho thấy sự cải thiện đáng kể và nhất quán so với document-level FIM tại mọi scale.Nhưng mức cải thiện gần như không đáng kể là 0.001 nats/token. Chứng thực rằng đánh giá độ phức tạp không phải lúc nào cũng có lợi ích trong hiệu suất sampling Ngoài ra, document-level FIM có thể fragmented (phân mảnh) với missing prefix and/or suffix từ chunking step của data loading pipeline
Middle span selection
Ta đã chọn dựa vào uniform at random khi split prefix, middle, suffix xảy ra tại character-level. Tại sao?
Ta thử với 3 cách, split by lines, tokens và characters (token ở đây tương ứng 1 word bằng byte-pair-encoding BPE vocabulary)
token-level không hoạt động tốt tại random spans vì không được trained cho trường hợp token bị chia thành 2 phần. Line-level thì quá tệ tại random span Discussion
Pretraing vs finetuning: Việc FIM transform không ảnh hưởng left-to-right learning, nếu biểu diễn theo masked attention thì là:FIM loss, AR loss and the difficulty of FIM task: do FIM không tạo thêm 1 cost trong AR capability, ta có thể nói FIM là 1 easy task. Tuy nhiên, có nhưng trường hợp FIM khó hơn nhiều normal left-to-right. Thực tế, việc tiếp tục text theo bình thường dễ hơn tiếp tục với điều kiện kết thúc bằng 1 suffix cụ thể. Việc này đòi hỏi cần có 1 suy luận kết nối hợp lí: bắt đầu tạo bằng cách match với prefix, rồi dừng tạo đúng lúc (stop the generation at the right time) để nối với suffix (đánh dấu bằng <EOT>). Nên có thể lấy <EOT> xem việc tạo có thành công khôngCó thể thấy tịa ví dụ 2, fail tại procedure <EOT> "go to and". Dù vậy, cắt mẫu (trimming the sample) đến last paragraph or line thường là cách hiệu quả để cải thiện sample quality trong AR sampling, nhưng không ích gì trong FIM Trung bình:tất cả models trong hình là FIM models nên không đề cập. Thay vào đó đề cập đến test loss.
Context-level vs document-level FIM and FIM rate: ta cần settings khi mọi documents trong training dataset dài hơn nhiều context size. Tức khi dùng document-level FIM, có khả năng model không thấy prefix, middle và suffix xuất hiện trong cùng context sau chunking. Do đó, cần FIM format mà cả 3 xuất hiện trong cùng context -> giảm FIM rate Việc giảm FIM rate cũng là lí do chính có stronger performance of context-level FIM
Related work
Masked language modeling gần với text infilling:
- BERT masked tokens randomly
- T5 2019, SpanBERT, BART 2020 chạy liên tục masked tokens
Nhưng do tập trung vào representation learning nên span length ngắn hơn 1 câu hoặc thậm chí 1 line of code (DOBF 2021 train BERT trên code, HTLM 2021 train BART trên HTML data)
Text infilling còn có thể coi là case dặc biệt của autoregressive language modeling ARLM:
- XLNet 2019 chỉnh attention mask trong standard transformer để có thể token generation trong any user-specified order
- Insertion Transformer 2018, KERMIT 2019 và InDIGO 2019 cho phép model predict vị trí cho next token trước khi predicting token.
- Blank Language models 2020 generate text bằng chọn 1 blank và thay nó bằng 1 token (có khả năng nhiều blank)
Text infilling có thể biểu diễn trong GAN 2018 nhưng cần REINFORCE để deal với discreteness of text (văn bản rời rạc). Text infilling cũng có thể done với gradient search 2019, khi toeken được infilled data được optimized với gradient descent và collapsed với nearest neighbor
Nhìn chung có 2 hướng là model và data
Recommended FIM hyperparameters: FIM rate 50-90%. FIM90 tức FIM rate 90% Future directions:
- Smarter span selection
- Steerable generation: ví dụ dùng RLHF
- Further examination of FIM-for-free property
- Multiple infilling slots: single-shot models, multi-slot infilling
- Improving natural language FIM performance: FIM models có xu hướng tốt trong code hơn trong language. Cần cải thiện performance trong natural language
- Role of bidirectionality and attention: có khả năng mở rộng ra encoder-only và encoder-decoder hay không?
Appendix
Architecture and datasets
GPT-3 series thì learning rates x2
context size = 2048 (GPT-3 size)
100B tokens irrespective
Details of SPM encoding
Có 2 loại, lí do không sử dụng loại 1 là nó làm khác former giữa PSM và SPM. Chi tiết hơn, ở loại 2, SPM data xuất hiện tự nhiên như 1 phần của PSM training, vi khi chia tài liệu random, có khi prefix trống. Đó cũng là lí do pure PSM chạy tốt với SPM mode. Dù vậy loại 1 vẫn có ưu điểm riêng, là tốt hơn trong xữ lí subtokens ở cuối prefix. Do vậy, việc lựa chọn biến thể nào phụ thuộc việc ứng dụng. Khi đào tạo pure SPM mode, nó có thể tốt hơn
Dù sao, nhấn mạnh vào joint training PSM và SPM để tối đa hóa việc trao đổi nên ta chọn loại 2
Limitations:
- Difficult prompts: model có thể tạo 1 middle section rất dài nhưng context size là limited nên có thể fail to join. Hoặc đôi khi khó nghĩ khi prompt có khoảng cách ngữ nghĩa lớn
- Deciding when to stop: model được train để predict <EOT> token, nhưng <EOT> dễ bị ảnh hưởng bởi các thành phần khác nên đôi khi nhỏ hơn tưởng tượng, "the terminal symbol can simply be missed due to sampling". Cho nên có thể tự sinh ending mà bỏ qua suffix - Repetition: khi fail to generate <EOT>, có khả năng model repeat lại prompt, kể cả large models cũng có thể bịMitigations (giảm nhẹ)
Như GPT-3, performance phụ thuoocj vào chất lượng prompts -> prompt engineering (ví dụ như cho biết độ dài middle span). Hoặc 1 ý tưởng hay là đánh số các phần. Sự mơ hoog của model nên được thêm vào đầu suffix như 1 phần examples mới Nói chung, model có thể miss sampling <EOT> token, cho nên a có thể generating multiple samples và ranking bằng likelihood hoặc other heuristics of interest (EOT-aware best-of-n sampling)
Nhận xét
Đăng nhận xét