Avibe-eagle — это реализация спекулятивного декодинга на основе алгоритма EAGLE-3 для модели Avibe. Модель создана командой Авито Тех для ускорения генерации базовой 8B модели без потери качества.
Для обучения драфт-модели мы использовали около 100 млн токенов из SFT-датасета, который использовался для обучения исходной модели avibe. Примеры были выбраны преимущественно на русском языке, с сохранением доменной и стилевой близости к основной модели.
Результаты внутренних замеров показали, что использование eagle-3 через sglang в различных сетапах (разное количество предсказываемых токенов, разные top-k и т.д) на разовых запросах дают ускорение до 2.7х, которое постепенно снижается и становится нулевым при batch_size = 64.
Модель можно запускать с использованием популярных движков vllm и sglang
Пример запуска vllm-сервера
vllm serve AvitoTech/avibe \
--host 0.0.0.0 \
--port 8000 \
--seed 42 \
--served-model-name Avibe-8B-eagle3 \
--dtype float16 \
--speculative-config '{"model": "AvitoTech/avibe-eagle", "num_speculative_tokens": 5, "method":"eagle3"}'
Пример запроса
import openai
client = openai.Client(
base_url="http://0.0.0.0:8000/v1",
api_key=None
)
messages = [
{"role": "system", "content": "Ты полезный ассистент"},
{"role": "user", "content": "Напиши рецепт борща"}
]
response = client.chat.completions.create(
model="Avibe-8B-eagle3",
messages=messages,
max_tokens=256,
temperature=0.7
)
print(response.choices[0].message.content)
import time
start = time.perf_counter()
response = client.chat.completions.create(
model="Avibe-8B",
messages=messages,
max_tokens=256,
temperature=0.7
)
elapsed = time.perf_counter() - start
tokens = response.usage.completion_tokens
print(f"\nСтатистика:")
print(f"- Токенов сгенерировано: {tokens}")
print(f"- Время: {elapsed:.2f}s")
print(f"- Скорость: {tokens/elapsed:.1f} токенов/сек")
Пример запуска sglang-сервера
python3 -m sglang.launch_server --model AvitoTech/avibe \
--served_model_name Avibe-8B-eagle3 \
--speculative-algorithm EAGLE3 \
--speculative-draft-model-path AvitoTech/avibe-eagle \
--speculative-num-steps 5 \
--speculative-eagle-topk 1 \
--dtype float16 \
--host 0.0.0.0 \
--port 8000
Пример запроса с использованем OpenAI-API точно такой же как и для vllm
import openai
client = openai.Client(
base_url="http://0.0.0.0:8000/v1",
api_key=None
)
messages = [
{"role": "system", "content": "Ты полезный ассистент"},
{"role": "user", "content": "Напиши рецепт борща"}
]
response = client.chat.completions.create(
model="Avibe-8B-eagle3",
messages=messages,
max_tokens=256,
temperature=0.7
)
print(response.choices[0].message.content)
import time
start = time.perf_counter()
response = client.chat.completions.create(
model="Avibe-8B",
messages=messages,
max_tokens=256,
temperature=0.7
)
elapsed = time.perf_counter() - start
tokens = response.usage.completion_tokens
print(f"\nСтатистика:")
print(f"- Токенов сгенерировано: {tokens}")
print(f"- Время: {elapsed:.2f}s")
print(f"- Скорость: {tokens/elapsed:.1f} токенов/сек")
- Downloads last month
- 135