Павел Злой

Павел Злой 

Директор ИИ-завода

11subscribers

5posts

Реставрация ruGPT3XL 1.3B

Пару дней занимаюсь попытками заставить работать модельку ai-forever/rugpt3xl, это такая классическая моделька от SberDevices на 1.3B параметров (крошка по современным меркам), на которой сберовцы обкатывали свои научные наработки.
Подробнее в научной статье "A family of pretrained transformer language models for Russian" на Google Scholar.
Да, она хоть и foundation (то есть умеет только текст продолжать, но не может выполнять инструкции или работать в режиме чата), но обучена она на корпусе русского языка и этот самый русский язык генерит очень бодро. Одной из примечательных её особенностей является тот факт, что её обучали с нуля, вторая важная особенность в том, что это архитектура представляет из себя глубокую модификацию GPT-2.
Давно я мечтал её отреставрировать, до этого трижды пытался, но все предыдущие разы нехватало знаний и опыта работы с моделями, но вот вчера собрал волю в кулак, поднял старые заметки, склонировал всё, что может понадобиться для работы и написал подробные спецификации для кодового агента.
Задача агента была в том, чтобы изучить исходники ru-gpts, исходники современной либы transformers, веса и конфиги модельки deepseek-ai/DeepSeek-Coder-V2-Lite-Instruct с примером того, как на HuggingFace можно закидывать кастомные классы моделей и веса, чтобы всё работало правильно и пути к файлам где находятся нужные исходные коды, плюс подробную информацию о том, что я хочу получить по итогу.
Моя основная цель это получить полностью рабочу модель, которую можно было бы запустить через transformers, при этом чтобы можно было её обучать, хоть через LoRA, хоть через SFT-тренеры в поставке transformers.
Спустя несколько часов пинаний и уточнений для агента удалось понять как устроены веса модели ruGPT3XL и как их можно конвертировать в формат близкий к тому что описано в классе GPT2Model, по итогу получился скрипт convert.py которым перегнал модельку в нужный формат. Запустил через generate.py тестовый пример и оказалось, что моделька вполне связный текст пишет. 
Потом я начал пробовать заюзать полученнные веса для обучения через LoRA, собрал небольшой синтетический датасетик на два десятка примеров, но были ошибки обучения, опять попинал агента, там были некоторые нюансы связанные со старыми версиями всего, начиная от питона заканчивая transformers, дал агентику документацию и по итогу обучение запустилось и прошло успешно.
Но я не остановился на достигнутом, мне захотелось развить успех и конвертировать модельку в GGUF, благодаря тому, что я потратил время на конвертацию в формат transformers удалось очень быстро реализовать патч для llama.cpp, там всего навсего python конвертер надо было прокачать. Отправил PR с наработками, уже прошёл ревью. надеюсь в одной из следующих версий мои правки попадут в релиз.
Скоро пополню мой музей классически моделей на Ollama :)
ЗЫ. Печально, что наш бигтех вместо развития своих решений типа того же ruGPT решили пойти по пути копирования и "инициализации из весов" других решений, ruGPT3 была той самой точкой бифуркации, после которой ИМХО мы свернули куда-то не туда, но это уже другая история.
Исходники скриптов конвертации: https://github.com/EvilFreelancer/rugpt3xl-convert
Веса модели: https://huggingface.co/evilfreelancer/ruGPT3XL
Subscription levels3

Observer

$1.41 per month
Для тех кому интересно просто наблюдать за проектами.

Explorer

$2.82 per month
Глубже погружается в контент и возможности.

Architect

$7.1 per month
Для тех, кто хочет оказать заметное влияние.
Go up