| --- |
| license: apache-2.0 |
| language: |
| - ru |
| - en |
| base_model: |
| - Qwen/Qwen3-8B |
| pipeline_tag: text-generation |
| tags: |
| - Eagle |
| --- |
| |
| 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} токенов/сек") |
| ``` |