Исследование трансформаторов из 4 частей с использованием nanoGPT в качестве отправной точки

Не знаю, как вам, но иногда смотреть на код проще, чем читать статьи. Когда я работал над AdventureGPT, я начал с чтения исходного кода BabyAGI, реализации документа ReAct примерно в 600 строках python.

Недавно я узнал о недавней статье под названием TinyStories через эпизод 33 превосходного подкаста Cognitive Revolution. TinyStories пытается показать, что модели, обученные на миллионах (не миллиардах) параметров, могут быть эффективными с данными достаточно высокого качества. В случае с исследователями Microsoft в статье они использовали синтетические данные, сгенерированные из GPT-3.5 и GPT-4, генерация которых стоила бы около 10 тысяч долларов в розницу. Набор данных и модели доступны в авторском репозитории HuggingFace.

Я был очарован, услышав, что модель можно обучить на 30 миллионах и меньшем количестве параметров. Для справки, я запускаю все свои модели обучения и выводы на ноутбуке Lenovo Legion 5 с GTX 1660 Ti. Даже просто для вывода: большинство моделей с параметрами более 3 Б слишком велики для запуска на моей машине. Я знаю, что облачные вычислительные ресурсы доступны по цене, но я изучаю все это в свободное время и могу позволить себе только скромный счет OpenAI, который я получаю через вызовы API. Поэтому мысль о том, что есть модели, которые я могу тренировать на своем скромном железе, мгновенно загорелась.

Я начал читать статью TinyStories и вскоре понял, что они использовали ныне несуществующую модель GPT Neo для обучения моделей. Я начал копаться в коде, чтобы понять, смогу ли я его понять, и понял, что для начала мне нужно что-то еще меньшее. Для контекста: я в основном инженер-программист бэкэнда с достаточным опытом машинного обучения, чтобы не потеряться, когда слышу, как люди говорят о нейронных сетях. Я далеко не настоящий инженер по машинному обучению, и это заставило меня ввести gpt с нуля в предпочитаемую мной поисковую систему, чтобы найти более мягкое введение. Я нашел видео ниже, и все изменилось.