Nhân one-hot và tra bảng cho cùng một kết quả

Nhân one-hot và tra bảng cho cùng một kết quả A workflow diagram generated by Archify. 01 / Cách viết trong công thức 02 / Cách thực thi thật trong framework 03 / Vì sao không ai nhân one-hot thật Vector one-hot · dài V, đúng một số 1 · Cách viết trong công thức Vector one-hot dài V, đúng một số 1 Nhân với E · (1 × V) · (V × d) · Cách viết trong công thức Nhân với E (1 × V) · (V × d) Còn lại một hàng · mọi hàng khác nhân 0 · Cách viết trong công thức Còn lại một hàng mọi hàng khác nhân 0 Gather theo chỉ mục · E[id], không nhân gì cả · Cách thực thi thật trong framework Gather theo chỉ mục E[id], không nhân gì cả Vector d chiều · cùng giá trị, khác chi phí · Cách thực thi thật trong framework · thứ model nhận Vector d chiều cùng giá trị, khác chi phí thứ model nhận One-hot tốn V số · V có thể là 128.000 · Vì sao không ai nhân one-hot thật One-hot tốn V số V có thể là 128.000 Gather tốn d số · chỉ đọc đúng một hàng · Vì sao không ai nhân one-hot thật Gather tốn d số chỉ đọc đúng một hàng phải dựng vector V phần tử bỏ qua toàn bộ phép nhân phép nhân ma trận kết quả thu gọn đúng bằng phép tra trả về hàng thứ id Legend Agent logic Context / trace Cloud service External system

Hai cách viết, một kết quả

  • • Nhân one-hot với E chỉ chọn ra đúng hàng ứng với số 1
  • • Vì vậy công thức và cài đặt không mâu thuẫn nhau
  • • Embedding layer là một phép chọn hàng, không phải phép biến đổi

Nhưng chi phí lệch nhau rất xa

  • • One-hot cần V số cho mỗi token, với V thường trên 100.000
  • • Gather chỉ chạm d số, với d thường vài nghìn
  • • Ở độ dài 8.192 token, khác biệt đó là hàng tỷ phép tính vô ích

Hệ quả quan trọng nằm ở gradient

  • • Chỉ những hàng thật sự được tra mới nhận gradient
  • • Token không xuất hiện trong batch thì vector của nó không đổi
  • • Đây là lý do token hiếm học chậm hơn hẳn token phổ biến