--- license: other license_name: yandexgpt-5-lite-8b-pretrain license_link: LICENSE language: - ru - en --- # YandexGPT-5-Lite-Pretrain Pretrain-версия большой языковой модели YandexGPT 5 Lite на 8B параметров с длиной контекста 32k токенов. Обучение модели проходило в два этапа. На первом этапе модель обучалась преимущественно на русскоязычных и англоязычных текстах общим объёмом 15T токенов с длиной контекста до 8k токенов. Состав датасета: 60% — веб-страницы, 15% — код, 10% — математика, остальное — другие специфичные данные, в том числе сгенерированная с помощью наших моделей синтетика и датасеты наших сервисов, например Яндекс Переводчика и база фактов Поиска. На втором этапе, который мы назвали Powerup, модель обучалась на высококачественных данных объёмом 320B токенов. Состав Powerup-датасета: 25% — веб-страницы, 19% — математика, 18% — код, 18% — образовательные данные, остальное — синтетика, датасеты сервисов и прочие качественные тексты. На этом этапе мы увеличили длину контекста до 32k токенов. Кроме того, наш токенизатор хорошо оптимизирован для русского языка. Например, 32k токенов нашей модели в среднем соответствует 48k токенам Qwen-2.5. Более подробно — в нашей [статье на Хабре](https://habr.com/ru/companies/yandex/articles/885218/). Задавайте вопросы в discussions. ## Бенчмарки В своей категории модель достигает паритета с мировыми SOTA по ряду ключевых бенчмарков для pretrain-моделей, а по многим другим — превосходит их: Таблица бенчмарков \* по данным репорта разработчиков модели.
BBH — 3-shot, HUMAN_EVAL и MPBB — 0-shot, все остальные бенчмарки — 5-shot.
Все замеры мы производили в HF transformers. ## Как использовать Модель можно запустить через HF Transformers: ```python from transformers import AutoModelForCausalLM, AutoTokenizer MODEL_NAME = "yandex/YandexGPT-5-Lite-8B-pretrain" tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, legacy=False) model = AutoModelForCausalLM.from_pretrained( MODEL_NAME, device_map="cuda", torch_dtype="auto", ) input_text = "Кто сказал тебе, что нет на свете настоящей," input_ids = tokenizer(input_text, return_tensors="pt").to("cuda") outputs = model.generate(**input_ids, max_new_tokens=18) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` Или через vLLM: ```python from vllm import LLM, SamplingParams MODEL_NAME = "yandex/YandexGPT-5-Lite-8B-pretrain" sampling_params = SamplingParams( temperature=0.3, max_tokens=18, ) llm = LLM( MODEL_NAME, tensor_parallel_size=1, ) input_texts = ["Кто сказал тебе, что нет на свете настоящей,"] outputs = llm.generate(input_texts, use_tqdm=False, sampling_params=sampling_params) for i in range(len(input_texts)): print(input_texts[i] + outputs[i].outputs[0].text) ``` Для полного соответствия токенизации мы рекомендуем пользоваться оригинальным [sentencepiece](https://github.com/google/sentencepiece): ```python import sentencepiece as spm import torch # git clone https://huggingface.co/yandex/YandexGPT-5-Lite-8B-pretrain tokenizer = spm.SentencePieceProcessor( model_file="/tokenizer.model" ) input_ids = tokenizer.encode(input_text, add_bos=True) input_ids = torch.Tensor([input_ids]).to(model.device).to(torch.long) outputs = model.generate( input_ids=input_ids, attention_mask=torch.ones_like(input_ids), max_new_tokens=18 ) print(tokenizer.decode(outputs[0].tolist())) ``` ## Как дообучить под свои задачи У нашей модели llama-like архитектура, это означает, что она совместима с большинством существующих фреймворков по дообучению LLM. Приведем короткий пример, как можно обучить нашу модель в torchtune: Скачиваем репозиторий: ```bash tune download yandex/YandexGPT-5-Lite-8B-pretrain \ --output-dir YandexGPT-5-Lite-8B-pretrain ``` Смотрим список конфигов и копируем подходящий под задачу: ```bash tune ls tune cp llama3_1/8B_lora training_config.yaml ``` Изменяем конфиг, адаптируем его под нашу модель и задачу. Например, [такой](https://huggingface.co/yandex/YandexGPT-5-Lite-8B-pretrain/discussions/1#67bc4e6472499ce2ba3659a7) вариант подойдет для lora обучения на открытом инстракт датасете `alpaca-cleaned`. Запускаем обучение: ```bash tune run lora_finetune_single_device --config training_config.yaml ``` Подробности можно найти в официальной [документации](https://pytorch.org/torchtune/stable/overview.html) torchtune.