Энтузиаст запустил генеративный ИИ на 20-летнем PowerBook G4
Любитель винтажных вычислений решил запустить большую языковую модель (LLM), Llama2 на Apple PowerBook G4 2005 года. Компьютер оснащён процессором 1,5 ГГц, 1 Гб оперативной памяти и имеет ограниченное 32-битное адресное пространство.
Энтузиаст разработал проект ullm. В основе проекта лежит Llama2.c от Андрея Карпати, минималистичная реализация LLM на чистом C.
Разработчик начал с нескольких базовых улучшений кода и добавил оболочки для системных функций, таких как файловый ввод-вывод и выделение памяти.
Для работы на PowerPC:
добавили обёртки для системных функций;
устранили зависимости от exit;
реализовали поддержку big-endian (в отличие от little-endian в современных системах);
улучшили обработку ошибок и выделение памяти.
Затем он организовал код в библиотеку с открытым API, который отображается в заголовке. Это позволяет проводить модульное тестирование, чтобы гарантировать, что дальнейший рефакторинг не нарушит функциональность вывода.
Полученный API чрезвычайно прост в тестировании и на его основе легко создавать инструменты интерфейса командной строки.
Энтузиаст работал с моделью TinyStories, которая не требует специализированного аппаратного ускорения. Он провёл тестирование с вариантом модели 15M, а затем переключился на самую точную из доступных 110M.
На сервере с процессором Intel Xeon inference вывод шёл со скоростью 6.91 токенов в секунду. На PowerBook G4 — 0.77 токена/секунду. Таким образом, вывод работал примерно в девять раз медленнее, чем на ПК с современным процессором. Основной узкий момент — матричные операции, которые занимают большую часть времени при генерации текста.
Чтобы ускорить выполнение, автор переписал критическую функцию с использованием SIMD-инструкций AltiVec, доступных в процессорах PowerPC.
Читать на habr.com