Published on

Từ GPT-3 đến LLaMA-2: Cú tát của Mark xoăn vào OpenAI

Authors
  • avatar
    Name
    Minh N. Ta
    Twitter

💡 Trong blog này, mình sẽ trình bày tóm gọn 77 trang paper của Meta về model này. LLaMA-2 là phiên bản thứ 2 của LLaMa - một mô hình ngôn ngữ lớn được tạo ra bởi Facebook AI Research. Mô hình có kiến trúc tương tự như LLaMa nhưng được bổ sung thêm dữ liệu, cải thiện chất lượng và có thêm các phương pháp tối ưu mới để đạt được hiệu suất cao hơn. Bài viết này được mình viết dưới sự tham khảo blog của anh Phạm Văn Toàn, AI Engineer Leader tại Sun* Vietnam.

Kiến trúc mô hình

Trong bài báo, nhóm tác giả không cung cấp thông tin chi tiết về cấu trúc mô hình, chỉ tiết lộ rằng mô hình tuân theo cấu trúc Transformer chuẩn và tương tự như LLaMA-1. Để hiểu rõ hơn về cấu trúc của LLaMA-2, chúng ta cần xem xét cấu trúc của mô hình LLaMa.

Cả LLaMa và LLaMA-2 đều là các Generative Pretrained Transformer dựa trên kiến trúc Transformer. Source code có thể được tham khảo tại đây. Tuy nhiên, có một số điểm khác biệt cơ bản so với cấu trúc GPT tiêu chuẩn:

  • LLaMa sử dụng RMSNorm để chuẩn hoá đầu vào cho mỗi lớp transformer thay vì đầu ra.
  • Sử dụng SwiGLU activation thay vì ReLu để cải thiện hiệu suất quá trình huấn luyện.
  • Sử dụng rotary positional embeddings (RoPE) trong các lớp mạng tương tự như trong GPT-Neo-X.

Theo bài báo của LLaMA-2, sự thay đổi duy nhất trong cấu trúc nằm ở kích thước của context length và sử dụng grouped-query attention. Việc tăng kích thước của context length giúp cho mô hình có thể xử lý nhiều thông tin hơn, đặc biệt thuận lợi cho việc xử lý các văn bản dài. Thay vì sử dụng multi-head attention như trong Transformer tiêu chuẩn, việc chuyển sang grouped-query attention với 8 key-value projection giúp tăng tốc độ huấn luyện và dễ dàng tăng độ phức tạp của mô hình cũng như tăng batch size và context length.

Trước khi đi vào việc huấn luyện mô hình, chúng ta cùng tìm hiểu qua cách thức mà các kĩ sư Meta xử lí và thu thập dữ liệu họ có được nhé.

Cách xử lí dữ liệu

Một điểm đáng chú ý của paper này đó chính là Meta đã công khai thừa nhận một yếu tố quan trọng nhất trong việc huấn luyện LLM với phương pháp RLHF đó chính là Reward Modeling. Chúng ta cũng đã biết rằng, thuật toán Reinforcement learning sẽ cần một reward function. Có nhiều bài toán rất dễ để đưa ra reward nhưng cũng có những bài toán rất khó để đưa ra nhưng việc đánh giá text sinh ra có hữu ích hay không chẳng hạn. Nó là một yếu tố hết sức định tính. Chính vì thế để thiết kế ra được một reward funciton chuẩn cho bài toán đánh giá text này, Meta đã rất hao tâm tốn sức để tạo ra được các tập dữ liệu mà có reward cao theo cách hiểu của con người. Tập dữ liệu này gọi là preference data.

Ở đây mình xin tóm tắt lại một vài điểm chính trong cách làm dữ liệu của họ như sau:

  • Thu thập các so sánh nhị phân từ người gán nhãn, có nghĩa là cho mỗi đề mục nhập, họ sẽ cung cấp hai câu trả lời tương ứng. Người gán nhãn sẽ đánh giá hai câu trả lời này và lựa chọn một trong hai. Những người gán nhãn cũng sẽ đưa ra các mức đánh giá định tính như "significantly better", "better", "slightly better", hoặc "negligibly better/unsure".

  • Việc sử dụng ưu tiên đa lượt (multi-turn preferences) đồng nghĩa với việc lựa chọn các câu trả lời từ các checkpoints khác nhau của mô hình, kết hợp với việc điều chỉnh tham số temperature để tạo ra sự đa dạng trong các câu trả lời cho một đề mục. Việc tăng cường tính đa dạng này rất có ích trong quá trình huấn luyện mô hình với RLHF trong tương lai.

  • Tập trung vào việc giải quyết hai vấn đề mà họ hy vọng LLaMA-2 sẽ đem lại, đó là sự hữu ích và an toàn, và áp dụng hai nguyên tắc hướng dẫn riêng biệt cho mỗi nhà cung cấp dữ liệu. Họ ưu tiên tính an toàn của các câu trả lời được tạo ra bởi mô hình hơn hết. Trong bài báo, các tác giả sử dụng thông tin an toàn (safety metadata) trong quá trình huấn luyện và đảm bảo rằng không có dữ liệu không an toàn nào được sử dụng trong quá trình điều chỉnh (fine-tuning). Họ không đề cập cụ thể về cách các thông tin an toàn này được tạo ra cho mục đích nào khác ngoài việc đảm bảo an toàn, cũng như không đề cập đến các loại thông tin metadata khác trong dữ liệu. Tuy nhiên, có lẽ có một số loại thông tin metadata khác như các đề mục dễ gây nhầm lẫn.

Họ tiến hành việc thu thập dữ liệu một cách liên tục theo từng lô hàng hàng tuần để đảm bảo quản lý và phân phối dữ liệu hiệu quả. Điều này có nghĩa là sau mỗi tuần, một lô dữ liệu mới sẽ được sử dụng để huấn luyện reward model và chat model, nhằm đảm bảo rằng không có sự chênh lệch đáng kể về phân phối dữ liệu. Khi reward model được cải thiện, chat model cũng sẽ được nâng cấp tương ứng để đảm bảo chất lượng.

Cách huấn luyện mô hình

Các kĩ thuật được sử dụng để huấn luyện

Đây có thể được xem như là bản chất của việc huấn luyện mô hình ngôn ngữ lớn. Như đã đề cập ở trên, điểm quan trọng nhất không phải là cấu trúc của mô hình mà là dữ liệu và phương pháp huấn luyện mô hình. Về dữ liệu, chúng ta sẽ thảo luận sau, nhưng trước tiên, mình muốn đề cập đến kỹ thuật huấn luyện và điều chỉnh mô hình ngôn ngữ (LLM) bằng kỹ thuật RLHF. Đây là yếu tố quan trọng trong quá trình huấn luyện của LLaMA-2, một phần mà mình đã nghe nhiều nhưng chưa thấy một bài báo nào giải thích cụ thể cách triển khai cho đến khi LLaMA-2 xuất hiện. Tổng quan về quá trình huấn luyện và điều chỉnh mô hình bằng RLHF có thể được tìm thấy trong hình sau.

Chúng ta có 3 bước ở trong việc training LLaMA-2, bao gồm: pre-training, supervised fine-tuning và cuối cùng là RLHF (Reinforcement Learning with Human Feedbacks).

Pre-training

Đầu tiên là giai đoạn Pretraining - quá trình huấn luyện một mô hình transformer trên một tập dữ liệu cực kỳ lớn bằng cách sử dụng các phương pháp học không giám sát tự chủ. Kỹ thuật này, được sử dụng phổ biến, giúp mô hình học từ dữ liệu bằng cách thực hiện các biến đổi trực tiếp trên dữ liệu. Ví dụ, có thể che đi một số từ trong câu để mô hình dự đoán từ bị che. Điểm quan trọng ở đây là việc sử dụng khoảng 40% dữ liệu kết hợp với các nguồn dữ liệu có sẵn và họ rất cố gắng để loại bỏ thông tin cá nhân có thể gây hại cho mô hình. Do đó, tập dữ liệu này có thể được coi là khá sạch. Tập dữ liệu này chứa khoảng 2 nghìn tỉ token. Họ huấn luyện mô hình Transformer bằng thuật toán AdamW và sử dụng lịch trình tốc độ học với 2000 bước "warmup" ban đầu.

Điều thú vị là sau khi huấn luyện với 2000 tỉ token, training loss vẫn chưa cho thấy dấu hiệu bão hòa, tức là việc bổ sung thêm dữ liệu và thời gian huấn luyện có thể tạo ra một mô hình tốt hơn. Tuy nhiên, phiên bản hiện tại của LLaMa đã vượt trội so với tất cả các mô hình mã nguồn mở khác trên các chỉ số benchmark khác nhau. Nó cũng có kết quả cạnh tranh với các mô hình LLM đóng (closed source) như ChatGPT, nhưng vẫn cách xa so với GPT-4. Điều này cũng dễ hiểu bởi không có sản phẩm nào có thể đảm bảo chất lượng, chi phí thấp (thậm chí là miễn phí) và được nhiều người sử dụng.

Supervised Fine-tuning

Tính chất lượng của dữ liệu đóng vai trò quan trọng nhất trong việc fine-tuning. Tuy nhiên, việc sử dụng hàng triệu dữ liệu SFT từ nhiều nguồn khác nhau của bên thứ ba có thể gặp phải vấn đề về đa dạng và chất lượng. Thay vào đó, tác giả tập trung vào việc sử dụng một tập nhỏ hơn nhưng chất lượng dữ liệu cao hơn từ đội ngũ làm dữ liệu của mình. Kết quả cho thấy chỉ cần khoảng 10000 mẫu dữ liệu để đạt được hiệu quả tốt. Sau khi có mô hình pre-trained, tác giả tiến hành điều chỉnh sang dữ liệu dạng chat. Họ sử dụng phương pháp instruction tuning với các dữ liệu công cộng để làm mồi cho mô hình. Quá trình điều chỉnh được thực hiện với batch size là 64 và độ dài chuỗi là 4096. Để đảm bảo rằng độ dài chuỗi của mô hình được điền đầy đủ, tất cả các câu hỏi và câu trả lời từ tập huấn luyện được ghép lại với nhau bằng một token đặc biệt để phân tách phần câu hỏi và phần câu trả lời. Quá trình back propagation chỉ được thực hiện trên các token trong phần câu trả lời. Mô hình được điều chỉnh trong 2 epochs.

RLHF

Trước hết mình muốn nói đến mục tiêu của huấn luyện LLM là để có thể alignment hay còn gọi là điều chỉnh mô hình cho phù hợp với sở thích và hành vi của con người. Để thực hiện căn chỉnh này người ta đề xuất ra kĩ thuật RLHF. Trong RLHF chúng ta cần quan tâm đến hai yếu tố:

  • Reinforcement learning: Đây là một kỹ thuật trong lĩnh vực học máy được sử dụng để huấn luyện các mô hình nhằm tối đa hóa một phần thưởng (reward) cụ thể. Trong ngữ cảnh của LLM, "phần thưởng" ở đây có thể được hiểu là phản ứng cảm xúc của con người, biểu hiện qua sự thích thú, sự kinh ngạc, sự hữu ích hoặc sự tự nhiên mà họ cảm nhận khi giao tiếp với chatbot. Tuy nhiên, một thách thức lớn trong việc áp dụng RL vào bài toán LLM là việc xác định hàm phần thưởng (reward function). Trong khi một số trường hợp như chơi trò chơi có thể dễ dàng định nghĩa được phần thưởng, thì trong trường hợp của LLM, hàm phần thưởng lại phức tạp hơn vì nó liên quan chặt chẽ đến các yếu tố cảm xúc.

  • Human Feedbacks: Đánh giá của con người về các kết quả được tạo ra bởi mô hình chính là cơ sở cho quá trình này, và những đánh giá này được quy định bằng cách lượng hoá thành các điểm cụ thể. Các điểm đánh giá này sau đó được sử dụng để huấn luyện một mô hình tính toán phần thưởng được gọi là Reward Model. Đáng chú ý là Reward Model đóng vai trò quan trọng nhất trong kỹ thuật RLHF, và Meta đã đầu tư rất nhiều nỗ lực để xây dựng một Reward Model đủ chất lượng.

Sau khi có một reward model, nó cũng là một mạng nơ ron thì người ta sử dụng các chiến lược huấn luyện RLHF phổ biến để huấn luyện là PPORejection Sampling. Trong quá trình fine-tuning, reward model sẽ được cập nhật liên tục với dữ liệu mới. RLHF giúp mô hình tiếp cận gần hơn với phân phối thực tế. Ảnh dưới mô tả sự chuyển đổi từ phân phối của mô hình được huấn luyện với Supervised Fine-tuning sang phân phối của RLHF. Phân phối RLHF hiển thị sự gần gũi hơn với con người.

Cách thức huấn luyện

Như đã đề cập ở phần trước, việc huấn luyện một reward model hiệu quả có thể được coi là yếu tố then chốt quyết định sự thành bại của kỹ thuật RLHF. Trong bài báo này, tác giả đã trình bày chi tiết về quá trình xây dựng reward model. Họ đã phát triển hai reward model riêng biệt, với các tính chất sau:

  • Sử dụng hai reward model độc lập cho hai khía cạnh khác nhau: độ an toàn (safety) và độ hữu ích (helpfulness).
  • Sử dụng scaling law để ước tính số lượng dữ liệu và tài nguyên cần thiết cho việc huấn luyện reward model.

Để làm rõ hơn về hai mô hình này, bài báo đã mô tả rằng reward model được phân chia thành hai loại, một loại tối ưu cho tính an toàn và một loại được tối ưu cho tính hữu ích. Cả hai mô hình này đều dựa trên LLaMA-2-Chat, chỉ khác biệt là thay vì sử dụng các head của mô hình ngôn ngữ (next-token prediction), chúng được thay thế bằng regression head để tạo ra đầu ra dạng scalar. Lý do cho việc sử dụng cùng một base model với Chat model được giải thích rằng reward model "biết" những gì mà chat model biết, tức là hai mô hình này chia sẻ cùng một kiến trúc nên tránh được sự mơ hồ và không tương ứng trong việc suy luận. Do đó, họ sử dụng các checkpoint gần nhất của chat model làm base cho reward model.

Một vài lưu ý

Một vài lưu ý về mặt kĩ thuật mình có note lại như sau:

  • Tổng hợp dữ liệu: Họ sử dụng các dữ liệu nguồn mở kết hợp với dữ liệu được tự gán nhãn để huấn luyện reward model. Ban đầu, chỉ có các dữ liệu nguồn mở được sử dụng, nhưng sau đó họ nhận thấy rằng các dữ liệu này không ảnh hưởng tiêu cực đến kết quả của RLHF, nên họ tiếp tục giữ lại chúng trong các quá trình huấn luyện sau này.

  • Phân chia dữ liệu: Họ giữ lại 90% dữ liệu từ mix harmlessness của Anthropic và 10% dữ liệu từ Meta, tuy nhiên họ không giải thích lý do cũng như tại sao chỉ sử dụng 10% dữ liệu từ Meta. Có thể họ giữ lại 90% dữ liệu để tạo ra một model mạnh mẽ hơn, nhưng điều này cần được xác nhận.

  • Huấn luyện: Họ chỉ huấn luyện 1 epoch mỗi lần cập nhật dữ liệu để tránh việc quá mức.

  • Đánh giá độ chính xác: Độ chính xác trung bình của reward model dao động từ 60 đến 70% theo paper, nhưng đối với các trường hợp "Significantly Better", độ chính xác tăng lên đến 90%. Điều này có thể hiểu được bởi vì các trường hợp này ít phân vân hơn và dễ lựa chọn hơn cho con người. Tuy nhiên, đối với các trường hợp mà con người cũng không chắc chắn, độ chính xác chỉ khoảng 50%, tương đương với việc lựa chọn ngẫu nhiên.

  • Huấn luyện với ranking loss: Họ sử dụng ranking loss và tham số margin để cải thiện hiệu suất học của mô hình với các mức độ khác nhau của điểm số.

Lranking=log(σ(rθ(x,yc)rθ(x,yrm(r)))\mathcal{L}_{\text{ranking}} = -\log(\sigma(r_{\theta}(x,y_{c}) - r_{\theta}(x,y_{r} - m(r)))
  • Đánh giá so sánh với GPT-4: Tác giả đã đánh giá mô hình của họ với GPT-4 bằng cách sử dụng zero-shot prompt "Choose the best answer between A and B" với A và B là hai câu trả lời tương ứng của mô hình. Kết quả cho thấy mô hình reward model của họ vượt trội hơn so với GPT-4, mặc dù chỉ được huấn luyện trên các tập dữ liệu công khai.

Biểu đồ bên dưới thể hiện mức độ tăng trưởng accuracy của mô hình reward model khi bổ sung thêm dữ liệu. Các đối tác để làm dữ liệu của họ sẽ gửi dữ liệu theo batches hàng tuần

Tham khảo

Bài viết của anh Toàn

Technical report của LLaMA-2