Почему не кэшировать матрицу запросов (Q)?
Краткое содержание
Краткая версия Почему мы кэшируем матрицы K(ключ) и V(значение), но не матрицу Q(запрос)? Полная версия Приведенный ниже набор данных представляет собой упрощенный пример 2-мерных векторов встраивания: TokenEmbedding Vector quick[0.27 0.78] lazy[0.38 0.58] brown[0.50 0.83] jumps[0.20 0.53] over[0.46 0.59] the[0.45 0.55] fox[0.19 0.69] dog[0.51 0.47] Значит, входные токены «quickbrownfox» будут представлены их векторами встраивания в матрице X(вход): X ╭ ╮ │0.45 0.55│ ;the │0.27 0.78│ ;quick │0.50 0.83│ ;brown │0.19 0.69│ ;fox ╰ ╯ И у нас есть простой набор игрушечных весов Wq,Wk,Wv матриц. Наши векторы встраивания являются 2-мерными. Это требует от весовых матриц наличия 2 строк; но они могут иметь произвольно определенное количество столбцов; мы выбираем 3 столбца. Вот наши игрушечные весовые матрицы: Wq(query)╭ ╮ │0.6 -0.4 0.1│ │0.3 0.9 -0.2│ ╰ ╯ Wk(key)╭ ╮ │ 0.5 0.2 -0.3│ │-0.1 0.8 0.4│ ╰ ╯ Wv(value)╭ ╮ │0.7 -0.3 -0.2│ │0.4
Полный текст статьи пока не загружен.