| --- |
| license: apache-2.0 |
| language: |
| - ru |
| - en |
| base_model: |
| - Qwen/Qwen3-8B |
| pipeline_tag: text-generation |
| library_name: transformers |
| --- |
| A-vibe это большая языковая модель, созданная Авито Тех, дочерней технологической компанией Авито, на базе открытой модели Qwen3-8B-Base. |
| Мы адаптировали Qwen3-8B-Base под русский язык и домен Авито с помощью нескольких шагов: |
| 1. Сделали свой токенизатор, оптимальный для русского и английского языка |
| 2. Подменили оригинальный токенизатор Qwen3-8B-Base на собственный токенизатор |
| 3. Обучили полученную модель на большом корпусе данных |
| 4. Провели SFT этап |
| 5. Сделали RL |
|
|
| В результате нам удалось получить модель, которая выигрывает instruct версию Qwen3-8B по многим русскоязычным бенчмаркам. |
| На SFT и RL этапе нам удалось научить модель Function Calling и улучшить ее навыки в решении математических задач. |
|
|
| ||Qwen3-8B (no_think)|A-vibe| |
| |:---|:---|:---| |
| |mmlu_ru|0,701|**0,718**| |
| |mmlu_en|0,730|**0,752**| |
| |gpqa_diamond_ru|0,318|**0,343**| |
| |gpqa_diamond_en|**0,369**|0,318| |
| |shlepa|0,454|**0,486**| |
| |baby mmlu|0,682|**0,766**| |
| |math_500_ru|0,546|**0,686**| |
| |math_500_en|**0,736**|0,714| |
| |gsm8k_en|**0,927**|0,910| |
| |DOoM|0,240|**0,280**| |
| |ru_facts|**0,724**|0,718| |
| |rublimp|0,916|**0,930**| |
| |ru_drop|0,318|**0,394**| |
| |BFCL_V3_en|**60,2%**|58,63%| |
| |BFCL_V3_ru|**50.72%**|49.00%| |
| |MERA_text|0,510|**0,618**| |
| |MERA CODE private total|0,336|**0,367**| |
| |
| |
| В токенизаторе A-vibe плотность токенизации выше, чем у Qwen3-8B поэтому число токенов в контексте и при генерации стало меньше для одинаковых примеров. |
| Кроме того, размер самой модели сократился до 7.9B при 8.2B у Qwen3-8B. За счет этого одинаковые русскоязычные примеры адаптированной моделью обрабатываются быстрее в среднем на 15-25% в сравнении с исходной Qwen3-8B |
| |
| # Quickstart |
| Ниже представлен фрагмент кода, демонстрирующий, как загрузить токенизатор и модель, а также как сгенерировать ответ. |
| ```python |
| from transformers import AutoModelForCausalLM, AutoTokenizer |
| |
| model_name = "AvitoTech/avibe" |
|
|
| model = AutoModelForCausalLM.from_pretrained( |
| model_name, |
| torch_dtype="auto", |
| device_map="auto" |
| ) |
| tokenizer = AutoTokenizer.from_pretrained(model_name) |
| |
| prompt = "Привет, подскажи рецепт борща" |
| messages = [ |
| {"role": "user", "content": prompt} |
| ] |
| text = tokenizer.apply_chat_template( |
| messages, |
| tokenize=False, |
| add_generation_prompt=True |
| ) |
| model_inputs = tokenizer([text], return_tensors="pt").to(model.device) |
| |
| generated_ids = model.generate( |
| **model_inputs, |
| max_new_tokens=1024 |
| ) |
| generated_ids = [ |
| output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids) |
| ] |
| |
| response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] |
| print(response) |
| ``` |
| |
| <details> |
| <summary> Output:</summary> |
| Вот классический рецепт борща с пошаговыми инструкциями: |
| |
| --- |
| |
| ### **Ингредиенты (на 4 порции):** |
| - **Мясо** (говядина, свинина или курица) — 300–400 г |
| - **Свекла** — 2 шт. (средние) |
| - **Капуста белокочанная** — 300 г |
| - **Морковь** — 1 шт. |
| - **Лук репчатый** — 1 шт. |
| - **Картофель** — 3–4 шт. |
| - **Помидоры свежие** (или томатная паста) — 2 шт. (или 2 ст. ложки) |
| - **Чеснок** — 2–3 зубчика |
| - **Лавровый лист** — 1–2 шт. |
| - **Перец горошком** — 3–5 шт. |
| - **Соль, сахар** — по вкусу |
| - **Растительное масло** — 2–3 ст. ложки |
| - **Уксус или лимонный сок** — 1 ст. ложка (для сохранения цвета свеклы) |
| - **Зелень** (укроп, петрушка) — для подачи |
| - **Сметана** — по желанию |
| |
| --- |
| |
| ### **Пошаговое приготовление:** |
| |
| 1. **Подготовка бульона:** |
| - Мясо промойте, нарежьте на куски и залейте 2,5–3 литрами холодной воды. |
| - Доведите до кипения, снимите пену. |
| - Добавьте лавровый лист, перец горошком и варите 1,5–2 часа на медленном огне. За 30 минут до готовности посолите. |
| |
| 2. **Овощи:** |
| - **Свеклу** натрите на крупной терке. Обжарьте на растительном масле 5–7 минут, добавьте уксус (или лимонный сок) и 2 ст. ложки воды. Тушите 10 минут. |
| - **Капусту** нашинкуйте тонкой соломкой. |
| - **Картофель** нарежьте кубиками. |
| - **Морковь** натрите, лук — мелко нарежьте. |
| - **Помидоры** натрите на терке или используйте томатную пасту. |
| |
| 3. **Сборка борща:** |
| - В кипящий бульон сначала добавьте картофель, варите 10 минут. |
| - Затем введите капусту, морковь и лук. Варите еще 10 минут. |
| - Добавьте обжаренную свеклу и помидоры (или томатную пасту). Перемешайте. |
| - За 5 минут до готовности влейте измельченный чеснок (через пресс или мелко нарезанный). |
| |
| 4. **Финальные штрихи:** |
| - Проверьте вкус, добавьте сахар (если нужно) и зелень. |
| - Снимите с огня, накройте крышкой и дайте настояться 15–20 минут. |
| |
| 5. **Подача:** |
| - Разлейте борщ по тарелкам, добавьте сметану и свежую зелень. |
| |
| --- |
| |
| ### **Советы:** |
| - Для более насыщенного вкуса можно обжарить мясо перед варкой. |
| - Если любите кислинку, добавьте 1 ст. ложку уксуса или лимонного сока в самом конце. |
| - Вегетарианский вариант: замените мясо на грибы или варите на овощном бульоне. |
| |
| Приятного аппетита! 🍲 </details> |