|
|
--- |
|
|
license: apache-2.0 |
|
|
language: |
|
|
- ru |
|
|
- en |
|
|
base_model: |
|
|
- Qwen/Qwen3-8B |
|
|
pipeline_tag: text-generation |
|
|
--- |
|
|
|
|
|
Avibe-eagle — это реализация спекулятивного декодинга на основе алгоритма EAGLE-3 для модели [Avibe](https://huggingface.co/AvitoTech/avibe). |
|
|
Модель создана командой Авито Тех для ускорения генерации базовой 8B модели без потери качества. |
|
|
|
|
|
Для обучения драфт-модели мы использовали около 100 млн токенов из SFT-датасета, который использовался для обучения исходной модели avibe. Примеры были выбраны преимущественно на русском языке, с сохранением доменной и стилевой близости к основной модели. |
|
|
|
|
|
Результаты внутренних замеров показали, что использование eagle-3 через sglang в различных сетапах (разное количество предсказываемых токенов, разные top-k и т.д) на разовых запросах дают ускорение до 2.7х, которое постепенно снижается и становится нулевым при batch_size = 64. |
|
|
|
|
|
Модель можно запускать с использованием популярных движков vllm и sglang |
|
|
|
|
|
### Пример запуска vllm-сервера |
|
|
|
|
|
```sh |
|
|
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"}' |
|
|
``` |
|
|
|
|
|
Пример запроса |
|
|
|
|
|
```py |
|
|
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-сервера |
|
|
|
|
|
```sh |
|
|
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 |
|
|
|
|
|
```py |
|
|
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} токенов/сек") |
|
|
``` |
|
|
|