[ad_1]
Giải mã suy đoán được giới thiệu như một cách để tăng tốc suy luận cho LLM. Bạn thấy đấy, LLM là tự hồi quy, nghĩa là chúng ta lấy mã thông báo đầu ra mà chúng ta vừa dự đoán và sử dụng nó để giúp dự đoán mã thông báo tiếp theo mà chúng ta muốn. Thông thường, chúng ta dự đoán một mã thông báo tại một thời điểm (hoặc một mã thông báo cho mỗi lần truyền tiếp theo của mạng nơ-ron). Tuy nhiên, vì mẫu chú ý cho mã thông báo tiếp theo rất giống với mẫu chú ý từ mã thông báo trước đó, nên chúng ta đang lặp lại hầu hết các phép tính giống nhau và không thu được nhiều thông tin mới.
Giải mã suy đoán có nghĩa là thay vì thực hiện một lần chuyển tiếp cho một mã thông báo, sau một lần chuyển tiếp, chúng ta cố gắng tìm càng nhiều mã thông báo càng tốt. Nhìn chung, có ba bước cho việc này:
(1) Tạo ra các ứng viên
(2) Xử lý các ứng viên
(3) Chấp nhận một số ứng viên
Medusa là một loại giải mã suy đoán, do đó các bước của nó được ánh xạ trực tiếp vào các bước này. Medusa thêm các đầu giải mã vào lớp cuối cùng của mô hình như là cách triển khai (1) của nó. Sự chú ý của cây là cách nó xử lý các ứng viên cho (2). Cuối cùng, Medusa sử dụng lấy mẫu từ chối hoặc một lược đồ chấp nhận thông thường để thực hiện (3). Chúng ta hãy xem xét từng bước này một cách chi tiết.
Đầu giải mã lấy biểu diễn bên trong của trạng thái ẩn được tạo ra bởi một lần chuyển tiếp của mô hình và sau đó tạo ra các xác suất tương ứng với các mã thông báo khác nhau trong từ vựng. Về bản chất, nó chuyển đổi những thứ mà mô hình đã học thành các xác suất sẽ xác định mã thông báo tiếp theo là gì.
Medusa điều chỉnh kiến trúc của một Transformer thông thường bằng cách thêm nhiều đầu giải mã vào lớp ẩn cuối cùng của mô hình. Bằng cách đó, nó có thể dự đoán nhiều hơn một mã thông báo khi được truyền đi. Mỗi đầu bổ sung mà chúng ta thêm vào sẽ dự đoán thêm một mã thông báo. Vì vậy, nếu bạn có 3 đầu Medusa, bạn đang dự đoán mã thông báo đầu tiên từ lần truyền đi, và sau đó là 3 mã thông báo nữa với các đầu Medusa. Trong bài báo, các tác giả khuyến nghị sử dụng 5, vì họ thấy điều này mang lại sự cân bằng tốt nhất giữa tốc độ và chất lượng.
Để thực hiện được điều này, các tác giả của bài báo đã đề xuất đầu giải mã cho Medusa như sau:
Phương trình này cung cấp cho chúng ta xác suất của token t từ tôi-th head. Chúng ta bắt đầu bằng cách sử dụng trọng lượng mà chúng ta tìm thấy thông qua việc huấn luyện đầu Medusa, W1, và nhân chúng với trạng thái nội bộ của chúng ta để lấy mã thông báo t. Chúng tôi sử dụng SiLU
chức năng kích hoạt để chỉ truyền thông tin có chọn lọc(SiLU = x * sigmoid(x)
). Chúng tôi thêm vào trạng thái nội bộ này lần thứ hai như một phần của kết nối bỏ qua, cho phép mô hình hoạt động hiệu quả hơn bằng cách không bị mất thông tin trong quá trình kích hoạt tuyến tính của SiLU
. Sau đó, chúng tôi nhân tổng số đó với bộ tạ thứ hai mà chúng tôi đã tập luyện cho phần đầu, W2và chạy sản phẩm đó qua một softmax
để có được xác suất của chúng ta.
Những đầu Medusa đầu tiên cung cấp cho mô hình các xác suất mà chúng nên cân nhắc dựa trên đường đi về phía trước, nhưng những đầu Medusa tiếp theo cần phải tìm ra mã thông báo nào chúng nên chọn dựa trên những gì những đầu Medusa trước đó đã chọn.
Tất nhiên, càng nhiều lựa chọn thì đầu Medusa càng sớm được đưa ra (siêu tham số trượt tuyết), càng nhiều lựa chọn mà người đứng đầu tương lai cần cân nhắc. Ví dụ, khi chúng ta chỉ cân nhắc hai ứng viên hàng đầu từ người đứng đầu 1 (s1=2) và ba ứng viên hàng đầu từ người đứng đầu 2 (s2=3), chúng ta sẽ có 6 tình huống khác nhau cần tính toán.
Do sự mở rộng này, chúng tôi muốn tạo và xác minh các ứng viên này đồng thời nhất có thể.
Ma trận trên cho thấy cách chúng ta có thể chạy tất cả các phép tính này trong cùng một đợt thông qua sự chú ý của cây. Không giống như sự chú ý tự thân theo nguyên nhân thông thường, chỉ các mã thông báo từ cùng một sự tiếp diễn mới được coi là có liên quan đến mẫu chú ý. Như ma trận minh họa với không gian hạn chế này, chúng ta có thể đưa tất cả các ứng viên của mình vào một đợt và chạy sự chú ý trên chúng đồng thời.
Thách thức ở đây là mỗi dự đoán chỉ cần xem xét các token ứng viên sẽ nằm ngay sau nó. Nói cách khác, nếu chúng ta chọn “It” từ đầu 1 và chúng ta đang đánh giá token nào sẽ đến tiếp theo, chúng ta không muốn có mẫu chú ý cho “I” được sử dụng cho các token.
Các tác giả tránh loại can thiệp này bằng cách sử dụng mặt nạ để tránh truyền dữ liệu về các mã thông báo không liên quan vào phép tính chú ý. Bằng cách sử dụng mặt nạ này, họ có thể sử dụng bộ nhớ hiệu quả trong khi tính toán mẫu chú ý và sau đó sử dụng thông tin đó trong đầu giải mã để tạo ra các ứng viên mã thông báo tiếp theo.
Trong khi ma trận trên cho thấy chúng ta xem xét mọi dự đoán đều giống nhau, nếu chúng ta có xác suất cho mỗi dự đoán, chúng ta có thể xử lý chúng theo cách khác nhau dựa trên khả năng chúng là lựa chọn tốt nhất. Cây bên dưới trực quan hóa điều đó.
[ad_2]
Source link