tgoop.com/quant_prune_distill/438
Last Update:
Введение
Есть большие LLM, а есть не очень большие. Большие обычно работают лучше при прочих равных, но требуют большей памяти, объема вычислений и времени на шаг инференса.
Инференс LLM обыкновенно memory bound - скорость упирается во время загрузки/сгрузки весов из GDDR/HBM памяти в кэши, а не сами вычисления. То есть за один трансфер памяти потенциально можно было бы делать больше арифметических операций без существенного замедления.
При этом в большинстве случаев разница между более слабой моделью (называемой draft, т,е ‘черновой”) и некой большей (таргет) моделью невелика.
Отсюда возникает идея - генерировать много токенов один за другим более слабой моделью (Llama-3.1-8B), а затем проверять более “жирной” (Llama-3.1-405-B) с тем же словарем, (последнее требование не обязательно, но упрощает постановку). За один шаг можно “проверить” несколько токенов малой модели, и если все предсказания совпали (то есть наиболее вероятные токены у большой модели такие же, как у меньшой), — принять все, иначе - до последнего принятого токена.
Таким образом можно добиться генерации, идентичной выдаваемой большой моделью, за меньшее время. Данную идею предложили еще достаточно давно в статье Fast Inference from Transformers via Speculative Decoding еще в далеком 2022.
Но, есть существенный недостаток. На практике предсказания драфт-модели и таргет-модели расходятся очень быстро, всего через несколько токенов, поэтому слишком большого ускорения достичь не удается - обычно в районе 1.5-2x.
При этом для получения правильного ответа совершенно необязательно, чтобы предсказания каждого токена у меньшей модели совпадали с большей. Она может сказать то же самое, но другими словами, используя синонимы, например.
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/438