avibe-eagle / README.md
ElijahKamski's picture
Updated model card with language specific highliting
474a908 verified
|
raw
history blame
4.23 kB
metadata
license: apache-2.0
language:
  - ru
  - en
base_model:
  - Qwen/Qwen3-8B
pipeline_tag: text-generation

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} токенов/сек")