0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Hiểu Về Kích Thước Cửa Sổ Ngữ Cảnh Trong Mô Hình LLM

Đăng vào 5 tháng trước

• 7 phút đọc

Giới Thiệu

Trong thời đại công nghệ hiện nay, kích thước cửa sổ ngữ cảnh (context window size) trong các mô hình ngôn ngữ lớn (LLMs) đang trở thành một chỉ số quan trọng và được nhiều người quan tâm. Dù có nhiều yếu tố khác ảnh hưởng đến độ chính xác, chi phí hay độ trễ, nhưng kích thước cửa sổ ngữ cảnh lại trở thành một tiêu chí để các nhà phát triển tự hào. Bài viết này sẽ giúp bạn hiểu rõ hơn về ý nghĩa của kích thước cửa sổ ngữ cảnh, lý do tại sao nó lại quan trọng và những thách thức trong việc mở rộng nó.

Cửa Sổ Ngữ Cảnh Là Gì?

Cửa sổ ngữ cảnh là lượng văn bản đầu vào tối đa mà một mô hình LLM có thể xử lý trong một lần. Nếu bạn đang sử dụng ChatGPT, kích thước cửa sổ ngữ cảnh chính là độ dài của câu hỏi hoặc hướng dẫn mà bạn đặt ra.

Mô hình LLM không xử lý ký tự thô mà xử lý các token, do đó kích thước ngữ cảnh được đo bằng số lượng token. Khoảng 1 token tương đương với 2 đến 4 ký tự trong tiếng Anh (mặc dù điều này có thể thay đổi tùy theo tokenizer). Dưới đây là bảng so sánh kích thước cửa sổ ngữ cảnh của một số mô hình phổ biến:

Mô Hình Kích Thước Cửa Sổ
GPT-3.5 4K
GPT-4 8K
GPT-4-32K 32K
LLaMA 2 4K
Gemini 32K
Gemini 1.5 1M

Tại Sao Kích Thước Lớn Hơn Lại Tốt Hơn

Hãy tưởng tượng bạn đang xây dựng một công cụ tóm tắt tài liệu sử dụng LLM. Bạn có thể sử dụng một câu lệnh như sau:

Bạn là một công cụ tóm tắt. Tóm tắt tài liệu sau đây một cách trung thực, không thêm thông tin bên ngoài và giữ nguyên ngôn ngữ gốc.

(văn bản gốc)

Vấn đề đặt ra là: bạn thực sự có thể đưa bao nhiêu nội dung của tài liệu vào trong câu lệnh?

  • Một câu chuyện ngắn có khoảng 100K token (ví dụ như Harry Potter và Hòn Đá Phù Thủy).
  • Bộ ba Chúa Tể Những Chiếc Nhẫn? Khoảng 750K token.
  • Thêm thẻ HTML hoặc siêu dữ liệu PDF, kích thước đầu vào còn tăng lên nữa.

Nếu tính đến đầu vào đa phương tiện: các LLM hiện đại cũng chấp nhận hình ảnh, âm thanh, thậm chí video. Google tuyên bố rằng cửa sổ 1 triệu token của Gemini 1.5 có thể chứa một giờ video hoặc 11 giờ âm thanh trong một lần.

Nói cách khác: kích thước cửa sổ càng lớn, bạn càng có thể xử lý các tác vụ phong phú và phức tạp hơn.

Tại Sao Việc Mở Rộng Kích Thước Cửa Sổ Lại Khó Khăn

Nếu ai cũng muốn có cửa sổ lớn hơn, tại sao không phải tất cả các mô hình đều hỗ trợ điều đó? Thực tế là việc này không đơn giản như việc bật một công tắc.

Từ đây, chúng ta sẽ đi sâu vào cách hoạt động của Transformer—vì vậy một chút kiến thức nền tảng là hữu ích. Nếu bạn mới làm quen với Transformers, tôi khuyên bạn nên tham khảo bài viết này hoặc một trong nhiều bài viết giải thích xuất sắc về Transformer có sẵn trực tuyến trước khi tiếp tục.

1. Không Phải Vấn Đề Về Tham Số

Kích thước mô hình (kích thước nhúng, số lượng lớp, đầu vào, v.v.) không thiết lập trực tiếp kích thước cửa sổ ngữ cảnh. Kiến trúc của Transformer có thể, lý thuyết mà nói, xử lý các đầu vào dài vô hạn.

Nhưng trong thực tế, các mô hình chỉ được huấn luyện với một độ dài đầu vào nhất định. Chẳng hạn, GPT-3.5 được "đảm bảo" hoạt động tốt với 4K token. Tất nhiên, bạn có thể cho nó 8K token—nhưng hiệu suất sẽ giảm. Đó là lý do tại sao các API áp dụng giới hạn nghiêm ngặt: không phải vì mô hình không thể chạy lâu hơn, mà vì các nhà cung cấp không muốn bạn thấy những đầu ra kém chất lượng.

2. Dữ Liệu Huấn Luyện

Nếu bạn chỉ bao giờ đọc những câu chuyện ngắn 10 trang, bạn có thể trở thành một nhà viết truyện ngắn xuất sắc. Nhưng nếu yêu cầu bạn viết một bộ tiểu thuyết 10 tập? Bạn có thể sẽ gặp khó khăn.

Các LLM cũng tương tự. Để xử lý các đầu vào dài, chúng cần được huấn luyện trên các chuỗi dài. Nhưng dữ liệu dài chất lượng cao thì khó tìm. Chỉ đơn giản là nối các đoạn ngắn lại với nhau sẽ không đủ—bạn sẽ kết thúc với tiếng ồn, không phải là cấu trúc dài thực sự.

3. Chi Phí Tính Toán

Transformers sử dụng cơ chế chú ý với độ phức tạp bậc hai: gấp đôi độ dài đầu vào khiến tính toán chậm đi khoảng 4 lần.

  • Thời gian huấn luyện gấp đôi (6 tháng → 12 tháng).
  • Độ trễ suy diễn gấp đôi (3 giây → 6 giây).
  • Chi phí phục vụ tăng lên, do đó giá API cũng tăng theo.

Đó là lý do bạn thấy nhiều đổi mới như FlashAttention, Multi-Query Attention (MQA), và Grouped Query Attention (GQA)—chúng làm cho các ngữ cảnh dài khả thi về mặt tính toán.

4. Mã Hóa Vị Trí

Transformers cần biết không chỉ cái gì là token, mà còn ở đâu chúng nằm. Các mô hình sớm sử dụng mã hóa vị trí tuyệt đối (token #1 luôn có vector A, token #2 luôn có vector B, v.v.).

Vấn đề là? Nếu bạn chỉ được huấn luyện đến 4,096 token, mô hình chưa bao giờ thấy token #8,192 trông như thế nào. Nó tạo ra một vector vị trí—nhưng đó là điều chưa quen thuộc, vì vậy chất lượng giảm sút.

Hai giải pháp thông minh đã xuất hiện:

ALiBi (Chú Ý với Độ Nghiêng Tuyến Tính)

Thay vì mã hóa các vị trí tuyệt đối, ALiBi mã hóa khoảng cách tương đối giữa các token. Dù “bạn” và “đã chơi” là token #2 và #3 hay #402 và #403 cũng không quan trọng—mô hình chỉ cần học rằng chúng nằm cạnh nhau.

Điều này giúp các mô hình mạnh mẽ hơn với các đầu vào dài. Vấn đề là: bạn cần huấn luyện với ALiBi từ đầu.

Nội Suy Tình Vị Trí

Đối với các mô hình hiện có, có một mẹo: ép thêm nhiều vị trí vào cùng một không gian mã hóa. Một mô hình 4 vị trí với chỉ số [0,1,2,3] có thể được nội suy thành [0,0.5,1,1.5,2,2.5,3,3.5].

Nó không mạnh mẽ như ALiBi, nhưng cho phép bạn mở rộng cửa sổ ngữ cảnh mà không cần huấn luyện lại từ đầu.

Cuộc Đua Kích Thước Ngữ Cảnh

Tại sao các phòng thí nghiệm vẫn tiếp tục thúc đẩy giới hạn ngữ cảnh?

  • Nhu cầu từ người dùng: các trường hợp sử dụng nghiêm túc (tài liệu dài, đầu vào đa phương tiện) cần cửa sổ dài hơn.
  • Tăng cường hiệu suất: việc cung cấp nhiều đầu vào cho mô hình thường làm cho nó thông minh hơn.
  • Tiếp thị: “1 triệu token!” nghe có vẻ ấn tượng trên một slide ra mắt.

Tất nhiên, việc cung cấp các cửa sổ khổng lồ là tốn kém. Đó là lý do tại sao các nhà cung cấp phân tầng API của họ: một ngữ cảnh 4K là rẻ, nhưng một ngữ cảnh 128K hoặc 1M có chi phí cao hơn nhiều.

Kết Luận

Kích thước cửa sổ ngữ cảnh không chỉ là một con số ngẫu nhiên trong thông số kỹ thuật của một mô hình—nó ẩn chứa rất nhiều thỏa hiệp kỹ thuật sâu sắc về dữ liệu, tính toán và kiến trúc.

Lần tới khi bạn thấy một bản phát hành LLM hào nhoáng tuyên bố “Giờ đây với 1 triệu token!”, bạn sẽ biết điều gì đứng sau tuyên bố đó: hàng tháng trời thu thập dữ liệu, huấn luyện tốn kém và những mẹo toán học thông minh để giữ cho mọi thứ chạy đủ nhanh để có thể sử dụng được.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào