[ad_1]
Bắt đầu từ cấp độ cao, Transformers yêu cầu hai phần thông tin cho đầu vào: phần nhúng mã thông báo và mã hóa vị trí. Việc nhúng mã thông báo là những thứ như tiktoken
nơi họ sẽ sử dụng kích thước từ vựng cố định để tạo khóa duy nhất cho mỗi mã thông báo. Thông qua đào tạo, mô hình sau đó sẽ tìm hiểu truy vấn và giá trị cho từng mã thông báo để có thể tạo mã thông báo tiếp theo thành công với thông tin đó.
Ngoài các phần nhúng, chúng tôi cũng cần thông tin vị trí để cho LLM biết mã thông báo ở đâu trong câu. Các phương trình trên cho thấy cách nhìn trừu tượng nhất để truyền thông tin vị trí. Chúng tôi có 3 hàm, 1 cho mỗi phần tử của mã thông báo và 2 vectơ nhúng từ (Xtôi và XNỞ đâu tôi Và N biểu thị các kích thước khác nhau mà mỗi vectơ có).
Một cách tiếp cận là chỉ cần tạo một vectơ mới cho mỗi mã thông báo bạn nhìn thấy để vị trí đó hoàn toàn duy nhất. Đương nhiên, sự đánh đổi ở đây là vectơ duy nhất khiến mô hình khó nhìn thấy những điểm tương đồng trong dữ liệu huấn luyện, làm giảm hiệu suất.
Cách tiếp cận thứ hai là tạo một vectơ có hệ số tương tự với các vectơ khác cho mỗi mã thông báo. Bằng cách này, chúng tôi vẫn nắm bắt được thông tin về mức độ tương tự của một tình huống với một tình huống khác biệt. Tuy nhiên, vì chúng ta có thể tạo ra sự va chạm của các vectơ này nên có thể có sự nhầm lẫn phát sinh từ phương pháp này.
Làm thế nào để chúng ta tìm thấy sự kết hợp tốt nhất của các phương pháp này?
Ngành này chủ yếu tập trung vào RoPE như một cách để tận dụng tối đa cả hai thế giới. Không đi sâu vào toán học, RoPE sử dụng các hàm hình sin để gán giá trị vị trí cho các token. Vì các hàm hình sin được thiết kế lặp lại nên có một số giá trị vị trí sẽ rất giống với các giá trị khác. Do đó, các mặt hàng tương tự nhau sẽ có một số giá trị định lượng cho thấy chúng giống nhau đến mức nào.
Như bạn có thể thấy từ phương trình trên, chúng ta có một ma trận thưa chứa đầy các hàm khác nhau xoay quanh giá trị θ được truyền vào như một cách để giữ cho tất cả các mã hóa vị trí có liên quan với nhau.
Cách chính xác những θ này có liên quan được hiển thị dưới đây:
Phần quan trọng nhất của phương trình này đối với kích thước ngữ cảnh là giá trị 10.000. Vì chúng tôi đã cố gắng tạo các bối cảnh lớn hơn với phạm vi số không vô hạn nên giá trị 10.000 đã trở thành một yếu tố hạn chế — xét cho cùng, bạn chỉ có thể tạo rất nhiều vectơ với số đó làm cơ sở.
Mặc dù bạn có thể huấn luyện một mô hình mới từ đầu bằng cách sử dụng giá trị cơ sở lớn hơn cho mã hóa vị trí của mình nhưng có một số lý do khiến mọi người nói chung không làm điều này. Đầu tiên, có một chi phí rất lớn liên quan đến việc đào tạo từ đầu. Vì hiện tại chỉ có một số tổ chức trên thế giới có đủ nguồn lực để thực hiện việc này nên gánh nặng để thực hiện việc này là rất lớn. Thứ hai, rất khó để tìm được một lượng lớn văn bản dài chất lượng cao. Vì quá trình đào tạo đòi hỏi hàng nghìn tỷ token nên việc tìm kiếm dữ liệu dài có chất lượng ở quy mô đó là một thách thức lớn.
Do đó, các nhà nghiên cứu đã đưa ra các phương pháp khác nhau để mở rộng RoPE sang thetas lớn hơn.
Phương pháp đầu tiên là Nội suy vị trí tuyến tính (PI), trong đó bạn có thể mở rộng số lượng vị trí có thể có bằng cách giảm theta đi một số giá trị λ. Phương trình bên dưới sử dụng Beta để biểu thị phương trình θ^(2/d) mà chúng ta đã sử dụng để kết nối tất cả các thetas từ trước đó.
Trong khi điều này có hiệu quả, các tác giả của bài báo lưu ý rằng có một hiệu ứng đông đúc khiến một số thông tin cuối cùng bị mất đi sau khi giảm bớt.
Phương pháp thứ hai là YaRN (Một phương pháp mở rộng RoPE khác), trong đó chúng tôi chia Kích thước RoPE thành 3 nhóm và gán hệ số tuyến tính khác nhau cho mỗi nhóm. Ý tưởng cơ bản là các mã thông báo xuất hiện thường xuyên không nên bị thay đổi (λ := 1 của chúng) và những mã thông báo xuất hiện ít hơn sẽ bị thay đổi. Từ biểu đồ bên dưới, chúng ta có thể thấy rằng điều này hoạt động tốt khi mở rộng độ dài ngữ cảnh lên tới 128k. Vấn đề đang diễn ra ở đây là việc xác định các nhóm. Các nhóm được xác định bởi mọi người và do đó có thể đưa ra những quyết định dưới mức tối ưu làm giảm hiệu suất.
Do đó, mặc dù cả YaRN và Phép chiếu tuyến tính (PI) đều hoạt động nhưng chúng vẫn có những hạn chế cản trở chúng. Lengthy RoPE tận dụng tối đa từng ý tưởng và tìm ra cách kết hợp chúng một cách thông minh.
Các nhà nghiên cứu của Lengthy RoPE nhận ra rằng để cải thiện các phương pháp trước đó, họ sẽ đưa ra hai ý tưởng chính: (1) sự phân bổ hàng hóa λ không đều, vì vậy việc tìm kiếm λ tốt hơn là giả định một câu trả lời đúng và (2) có một tập hợp con các các mã thông báo đơn giản là không nên thay đổi vị trí của chúng.
Cả hai phát hiện này đều được tìm thấy trong công thức dưới đây. Để tìm λ tối ưu, họ đã tạo ra một hàm mất mát mà họ có thể giảm thiểu. Công thức dưới đây là phiên bản được định dạng lại của RoPE với kết quả là 𝕀 và ( n/ βTôi ) đại diện cho việc chia tỷ lệ được thực hiện cho vectơ vị trí của chúng tôi. Khi họ tìm thấy tổn thất nhỏ nhất, họ chọn λ tương ứng.
Hàm bước 𝕀 là cách chúng tôi hiện thực hóa tập hợp con các mã thông báo không nên thay đổi. Bằng cách chọn giá trị 1, chúng tôi đang báo hiệu rằng mã hóa vị trí ở đó sẽ giữ nguyên. Để hạn chế việc tìm kiếm, họ chỉ xét các giá trị n-hat của {0, 1, 2, 4, 8, 12, 16, 20, 24, 28, 32, 64, 128, 256}. Giá trị của n-hat càng cao thì càng có nhiều mã thông báo giữ được mã hóa vị trí ban đầu của chúng.
Bây giờ chúng ta đã ôn lại lý thuyết, hãy xem kết quả nhé!
RoPE dài hoạt động cả khi không tinh chỉnh và có. Biểu đồ trên cho thấy hiệu suất của LongRoPE khi áp dụng cho LLaMA2–7B. Bối cảnh ban đầu cho mô hình đó là 4k. Bằng cách tìm ra λ tối ưu, họ có thể mở rộng cửa sổ ngữ cảnh lên 32k mã thông báo mà không có sự thay đổi đáng chú ý về độ phức tạp! Điều đáng kinh ngạc về điều này là việc tính toán cần thiết để thực hiện một thay đổi như thế này gần như không đáng kể so với chi phí để tinh chỉnh. Việc mở rộng gấp 8 lần mà không cần chi tiêu điện toán lớn là điều không thể tin được.
Để có được sự mở rộng lớn đòi hỏi phải có sự kết hợp giữa tinh chỉnh và tìm kiếm λ tối ưu. Các nhà nghiên cứu trong bài báo đã nhận được mức mở rộng 512 lần theo phương pháp này. Lần đầu tiên họ đưa mô hình lên kích thước 128k và 256k. Họ tinh chỉnh 400 bước trên 128k và sau đó chuyển sang sử dụng hệ số 256k cho thêm 600 bước. Vì điều này hoạt động tốt hơn là chỉ tinh chỉnh trực tiếp 256k, nên có vẻ như việc học một phân phối tổng quát hơn thay vì chỉ một trong những phân phối được chia tỷ lệ sẽ mang lại hiệu suất tốt hơn. Sau đó, họ lại tối ưu hóa để có λ tốt nhất và đạt được cửa sổ ngữ cảnh là 2048k, tăng 512 so với cửa sổ ngữ cảnh 4k ban đầu!
Một trong những khó khăn của bối cảnh lớn hơn là mất hiệu suất đối với các nhiệm vụ có bối cảnh nhỏ. Hành vi này đã từng được thấy trước đây và theo lý thuyết thì dữ liệu lúc đầu sẽ được cô đọng thành một phạm vi nhỏ hơn, dẫn đến mất một số sự chú ý.
Họ đã giải quyết vấn đề này trong mô hình cửa sổ ngữ cảnh 2048k bằng cách tìm λ lý tưởng cho độ dài ngắn hơn (trong bài báo là 4k và 8k). Trong quá trình suy luận, nếu bối cảnh được xác định là nhỏ, LLM sẽ tự động chuyển sang sử dụng λ nhỏ hơn cho dữ liệu mã hóa vị trí.
LLM rất giỏi trong việc suy luận và chúng tiếp tục làm chúng ta ngạc nhiên với những ứng dụng của chúng trong thế giới thực. Với cửa sổ ngữ cảnh lớn hơn, đặc biệt là cửa sổ ngữ cảnh có thể có được với chi phí hạn chế nhưng hiệu suất vẫn cao, chúng ta sẽ chỉ thấy các ứng dụng của họ phát triển.
Một câu hỏi thú vị là liệu tính toán mã hóa vị trí động có phải là hướng đi của tương lai hay không. Nếu bạn có thể tinh chỉnh mã hóa nhiều vị trí và đạt được hiệu suất chất lượng cho 2 λ thì có thể chúng ta có 1 mô hình có thể chuyển đổi liền mạch giữa nhiều λ tại thời điểm suy luận.
Một trong những điều tôi thấy thú vị nhất về không gian LLM là khả năng sàng lọc dữ liệu. Mặc dù Web đã thực hiện một công việc tuyệt vời trong việc dân chủ hóa quyền truy cập thông tin, nhưng thật không might, nó cũng khiến cuộc sống của chúng ta tràn ngập tiếng ồn. Có rất nhiều thứ chúng ta được xem trên mạng hầu như không gây ra hậu quả gì cho chúng ta. Với một công cụ có thể lấy ra những thông tin quan trọng từ những thông tin trần tục và thậm chí có hại, chúng ta có thể sử dụng Web một cách tối đa tiềm năng của nó.
Với các cửa sổ ngữ cảnh lớn hơn, khả năng tóm tắt và cô đọng thông tin của LLM có thể được sử dụng để đạt hiệu quả cao hơn nữa. Thậm chí có thể sẽ có lúc những bước tiến vượt bậc đến từ việc cung cấp cho LLM hai bộ thông tin dường như khác nhau và yêu cầu họ tìm ra điều gì đó mới có thể được lý giải dựa trên tiền đề của mỗi bộ.
Đây là thời điểm thú vị để xây dựng.
[ad_2]
Source link