Andrej рассказывает, что он начинал делать одну из своих лекций с PyTorch, и модель обучалась с использованием torch.compile (для ускорения за счёт оптимизаций). Но почему-то после этого он не мог её запускать для тестирования, не мог получить результаты — и видел разные ошибки. Тогда ему в голову пришла чудная идея — «я сделаю всё сам, перепишу всё с нуля на C».
После первого подхода и публикации кода в репозиторий прилетели программисты со всего интернета, начали переписывать модель на CUDA (для запуска на GPU),внедрять оптимизации — и по итогу код тренировки на одном сервере с 8 GPU был на 19% быстрее PyTorch и экономил 29% памяти. Но вся библиотека была заточена ровно на одну архитектуру и в относительно ограниченном сценарии — например, не поддерживалась распределённая тренировка (на нескольких серверах) и формат данных FP8. Сейчас это добавляют энтузиасты, плюс скоро появится поддержка не только GPT-2, но и LLAMA-3.1.
Сама имплементация должна была стать частью урока, где Andrej по шагам проходится по всем частям модели и стека тренировки, ведь там всё в одном файле и с минимумом абстракций. Относительно легко для постепенного погружения. Правда с добавлением всего, что связано с CUDA, порог входа поднялся (Karpathy кстати рекомендует вот этот блогпост для вката в программирования на CUDA).
По сути, вся LLM.C — это выборка узкой части функционала из всего того множества, что предлагают современные фреймворки, и экстремальная оптимаизация под один кейс. За счёт этого и получается быть эффективнее, избавившись от ненужного, лишнего. Под конец Andrej поднимает вопрос: «а что если LLM в ближайшем будущем станут такими оптимизторами всех приложений и программ? Для каждой будет написана более эффективная версия с учётом конкретной специфики и сценариев использования».
Меня давно терзал схожий вопрос — на сколько % можно будет ускорить Linux, если все программисты откажутся от дальнейшего развития и новых фичей и сосредоточатся на переписывании чуть ли не с нуля, но уже со знанием целевой картины. Это ж могло бы сэкономить миллиарды долларов во всем мире!
Картинка: Andrej начал проект будучи в отпуске на Мальдивах, лежа в бунгало или около него. Cracked. А как вы проводите отпуск?
Пост 22.09.2024 14:07