Содержание статьи
Нейросеть YaLM 100B на практике. Инструкция как запустить и примеры
Скачиваем чекпоинты (основную информацию обучения модели)
Лайфхак. Скачать чекпоинты, установить докер и собрать контейнер можно на дешёвом сервере с одной видеокартой. По времени это будет одинаково, поэтому можно чуть сэкономить. После сборки на дешёвом сервере удаляем его, а боевой сервер создаём с использованием диска от дешёвого сервера. Тогда вы не переплатите время за ожидание сборки и выкачивания чекпоинтов.
По цене мне это обошлось порядка 9 тысяч рублей за аренду серверов разной мощности от тренировок и от подготовки до генерации. Особым разочарованием стало то, что нельзя моментально всё сгенерировать. Очень долго запускается и текст генерирует не так быстро, как хотелось бы, учитывая стоимость сервера в час.
В интернете очень много вопросов как запустить yalm или даже попробовать онлайн, но ответов на это нет. Я был из числа пользователей, которые задавались этими вопросами. И взялся разобраться. Так как мне очень нужен был способ генерировать тексты для финансовых роботов. Чтобы они могли прогнозировать не только значения, но и комментировать это текстом, базируясь на финансовых сводках. По сути будет то же самое, что делают финансовые аналитики, только с применением искусственного интеллекта.
Сейчас в Балабобе используется облегченная версия YaLM 100B на 3 миллиарда параметров. Другие модели из семейства YaLM мы используем в более 20 проектах: нейросеть помогает Алисе лучше поддерживать беседу с пользователем, а Поиску — генерировать карточки для быстрых ответов. Также с помощью YaLM можно сгенерировать рекламное объявление или описание сайта.
Внутри Балабобы — разработанная в 2021 году первая версия языковой модели YaLM (Yet another Language Model). Как и многие другие большие языковые модели от ведущих мировых компаний (BERT, GPT, LaMDA), она создана на архитектуре Transformer. У такой модели ровно одна задача — генерировать каждое последующее слово в предложении. Чтобы текст получился связным и грамматически правильным, во время обучения модель оценивает каждое предсказанное слово: например, решает может ли после «Мама мыла…» идти слово «бегать» или слово «раму».
Чтобы написанные Балабобой тексты были не только грамматически правильными, но и лексически разнообразными, мы использовали терабайты текстов. Нейросеть YaLM обучена на части индексируемых Яндексом страниц рунета, включая не только Википедию, новостные статьи и книги, но и открытые записи пользователей социальных сетей и форумов. Чтобы не перегружать модель, из выборки вычистили повторяющиеся, незаконченные и неестественные тексты.
2 Видеокарты
Zero offload CPU более реален. Правда для этого нужно иметь в запасе 200+ Gb CPU RAM, что тоже не дёшево. А один текст будет генерироваться порядка 20-40 минут, так как пока не удалось распараллелить на две видеокарты. Как можете увидеть на скриншоте ниже, в генерации была задействована только одна видеокарта, и то только на четвёртую часть по памяти. Ещё предстоит разобраться почему не задействованы все 24 Гб, из-за настроек или потому что CPU RAM не успевает загружать и выгружать большее количество данных для обработки видеокартой.
В конце июня Яндекс выложил в открытый доступ нейросеть на 100 миллиардов параметров под названием YaLM 100B. Это крупнейшая GPT-подобная нейросеть в свободном доступе. Рассказывается о том как обучали, показали лучшие примеры и на что способна нейронка. Но так ли хороша она на практике и применима в домашних условиях? Об этом статья умалчивает, более того её не так-то просто запустить и проверить, так как требуется примерно 200 Gb GPU RAM.
Нужно добавить deepspeed zero offload в конфиг. Для тех кто знает о чём речь будет очень просто это сделать. Для остальных это совсем не тривиальная задача. Важно знать, что offload может быть или в CPU RAM, или на NVMe. Про NVMe на данный момент можно забыть, т.к. обрабатывается очень большой объём данных и диск с этим не справляется.
Когда сборка закончится MegatronML предложит ввести контекст для генерации текста. Будьте осторожны при вводе. При определённом стечение обстоятельств возникает ошибка, программа вылетает и нужно начинать сборку заново. Поэтому лучше пользоваться примерами, которые берут текст из файла.
Запоминать все правила языка и подбирать подходящие слова Балабобе помогают заложенные внутри языковой модели YaLM параметры, которые меняются в зависимости от того, правильно или неправильно предсказывается слово. Сравнить их можно с маленькими рычажками, каждый из которых нужно повернуть в разные стороны, чтобы запустить механизм. В семействе языковых моделей YaLM таких рычажков — от 1 до 100 миллиардов.
Я, конечно, ещё попробую найти оптимальные пути запуска. Но пока для себя сделал выводы, что YaLM 100b слишком дорого / слишком медленно для моих задач. За эти же деньги люди напишут намного больше и намного качественнее. Но, думаю, это временно, будем наблюдать.