Pretrain-версия большой языковой модели YandexGPT 5 Lite на 8B параметров с длиной контекста 32k токенов. Обучение модели проходило в два этапа.
На первом этапе модель обучалась преимущественно на русскоязычных и англоязычных текстах общим объёмом 15T токенов с длиной контекста до 8k токенов. Состав датасета: 60% — веб-страницы, 15% — код, 10% — математика, остальное — другие специфичные данные, в том числе сгенерированная с помощью наших моделей синтетика и датасеты наших сервисов, например Яндекс Переводчика и база фактов Поиска.
На втором этапе, который мы назвали Powerup, модель обучалась на высококачественных данных объёмом 320B токенов. Состав Powerup-датасета: 25% — веб-страницы, 19% — математика, 18% — код, 18% — образовательные данные, остальное — синтетика, датасеты сервисов и прочие качественные тексты. На этом этапе мы увеличили длину контекста до 32k токенов.
Кроме того, наш токенизатор хорошо оптимизирован для русского языка. Например, 32k токенов нашей модели в среднем соответствует 48k токенам Qwen-2.5.
В своей категории модель достигает паритета с мировыми SOTA по ряду ключевых бенчмарков для pretrain-моделей, а по многим другим — превосходит их:
Таблица бенчмарков
* по данным репорта разработчиков модели.
BBH — 3-shot, HUMAN_EVAL и MPBB — 0-shot, все остальные бенчмарки — 5-shot.
Все замеры мы производили в HF transformers.
Как использовать
Модель можно запустить через HF Transformers:
python
1from transformers import AutoModelForCausalLM, AutoTokenizer
234MODEL_NAME ="yandex/YandexGPT-5-Lite-8B-pretrain"56tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, legacy=False)7model = AutoModelForCausalLM.from_pretrained(8 MODEL_NAME,9 device_map="cuda",10 torch_dtype="auto",11)1213input_text ="Кто сказал тебе, что нет на свете настоящей,"14input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")1516outputs = model.generate(**input_ids, max_new_tokens=18)17print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Или через vLLM:
python
1from vllm import LLM, SamplingParams
234MODEL_NAME ="yandex/YandexGPT-5-Lite-8B-pretrain"56sampling_params = SamplingParams(7 temperature=0.3,8 max_tokens=18,9)1011llm = LLM(12 MODEL_NAME,13 tensor_parallel_size=1,14)15input_texts =["Кто сказал тебе, что нет на свете настоящей,"]16outputs = llm.generate(input_texts, use_tqdm=False, sampling_params=sampling_params)1718for i inrange(len(input_texts)):19print(input_texts[i]+ outputs[i].outputs[0].text)
Для полного соответствия токенизации мы рекомендуем пользоваться оригинальным sentencepiece:
У нашей модели llama-like архитектура, это означает, что она совместима с большинством существующих фреймворков по дообучению LLM. Приведем короткий пример, как можно обучить нашу модель в torchtune:
Изменяем конфиг, адаптируем его под нашу модель и задачу. Например, такой вариант подойдет для lora обучения на открытом инстракт датасете alpaca-cleaned.
Запускаем обучение:
tune run lora_finetune_single_device --config training_config.yaml
Подробности можно найти в официальной документации torchtune.