UAG: методика ускорения генерации LLM с любыми моделями в качестве ассистента
UAG: методика ускорения генерации LLM с любыми моделями в качестве ассистента.
В использовании LLM всегда хочется увеличения скорости генерации без ущерба для качества. Есть метод ассистированной генерации, который зарекомендовал себя как один из компромиссных решений. Однако традиционные техники его применения требуют, чтобы целевая и вспомогательная LLM использовали один и тот же токенизатор, что ограничивает выбор моделей и возможность ощутимого ускорения.
Intel Labs и Hugging Face разработали метод универсальной ассистированной генерации (UAG) , который позволяет использовать любую модель в качестве ассистента, независимо от ее токенизатора. Метод открывает новые возможности для ускорения практически любой LLM, даже тех, для которых не существует специализированных маленьких версий для инференса ассистированной генерации.
UAG основан на принципе двустороннего преобразования токенизаторов. После того как модель-ассистент генерирует последовательность токенов, эти токены конвертируются в текст, который затем токенизируется с помощью токенизатора целевой модели. После проверки целевой моделью, токены целевой модели преобразуются обратно в формат токенов модели-ассистента. Для повышения точности перекодирования используется контекстное окно, состоящее из группы предшествующих токенов.
Чтобы оценить UAG, были проведены тесты с различными комбинациями целевых LLMи моделей-ассистентов. Результаты показали, что UAG дает ускорение декодирования по сравнению с генерацией без ассистента. Например, скорость генерации кода с помощью CodeLlama-13b увеличилась в 1.9 раза при использовании tiny_starcoder_py в качестве модели-ассистента.
В будущем планируется расширить функциональность UAG, добавив поддержку алгоритма спекулятивной выборки, что позволит еще больше увеличить скорость генерации.
UAG интегрирован в релиз Huggingface Transformers
Для использования UAG нужно передать tokenizer и assistant_tokenizer в generate() :
from transformers import AutoModelForCausalLM, AutoTokenizer
prompt = “Alice and Bob“
checkpoint = “google/gemma-2-9b“
assistant_checkpoint = “double7/vicuna-68m“
assistant_tokenizer = (assistant_checkpoint)
tokenizer = (checkpoint)
inputs = tokenizer(prompt, return_tensors=“pt“)
model = (checkpoint)
assistant_model = (assistant_checkpoint)
outputs = (**inputs, assistant_model=assistant_model, tokenizer=tokenizer, assistant_tokenizer=assistant_tokenizer)
(outputs, skip_special_tokens=True)
Статья на HF
1 view
17
5
6 hours ago 00:00:16 1
UAG: методика ускорения генерации LLM с любыми моделями в качестве ассистента