Can we solve LLM tasks in tens of milliseconds on a Mac mini M4 with 16 GB?
I set out to prune experts from an MoE model. I ended up with a different architecture: a shared core and neural skill packages.
Here's why—and what I'm building.
#ModularAI#LocalAI
ModularAI has big ambitions—and a lot of work already done. This is well beyond an idea on paper.
I'll share the research, what works, and what I've had to rework. Working demos are coming soon.
#ModularAI#BuildInPublic
Can we solve LLM tasks in tens of milliseconds on a Mac mini M4 with 16 GB?
I set out to prune experts from an MoE model. I ended up with a different architecture: a shared core and neural skill packages.
Here's why—and what I'm building.
#ModularAI#LocalAI
ModularAI's goal: solve practical tasks in tens or hundreds of milliseconds on a Mac mini M4 with 16 GB.
So AI can run right inside a backend request: call it, get a result, keep going. A regular part of a microservices architecture.
#Microservices#dotnet
В другой задаче независимый проверяющий улучшил итоговые решения: 39 правильных из 48 вместо 29. Без совместного обучения двух моделей.
Проверяющий тогда ещё сам перечитывал документ. Следующей задачей стало сохранить этот эффект без лишней обработки.
После очередных попыток обучить понимание самому попробовал готовый маленький QA-читатель. MiniLM дал 41 правильный ответ из 42 на тогдашнем наборе.
Стало интереснее брать уже существующую компетенцию и разбираться, как сохранить её в моей схеме.
#BuildInPublic
Механически разрезал ту же модель — получил уже 12 из 42.
Веса те же, а вычисление изменилось: раньше вопрос и документ взаимодействовали во всех слоях.
После адаптации многое восстановилось, но исходная цельная модель ещё оставалась лучше. Перенос оказался отдельной задачей.
Пришлось строже проверять и взаимодействие. Два блока могут вызываться подряд, а второй прекрасно отвечать без первого.
Начал менять только результат первого навыка и смотреть на второй. Хотел проверить именно передачу полезной информации, а не красивую схему вызовов.
Следующая проверка была уже не про меню. Хотелось понять, сможет ли другой разработчик добавить навык по публичному контракту, без знания моего стенда.
Так началась работа над SDK: что нужно отдать человеку, чтобы независимая разработка была реальной.
#BuildInPublic
Сделал 30 небольших демонстрационных навыков для питания и IT-поддержки. Упаковка и подключение работали.
Но меня это перестало устраивать. Тридцать классификаторов — ещё не тридцать законченных компетенций, из которых хочется собирать полезное приложение.
Один навык пришлось переобучить под общее представление. Другие оставил без изменения весов.
После этого источник проходил ядро один раз, а навыки работали дальше без повторного прохода. Все 191 старый контрольный ответ читателя сохранились.
Здесь вылезла одна из самых важных проблем. Два навыка уже работали последовательно: результат первого влиял на второй.
Но каждому требовалось своё представление источника. Ядро приходилось запускать дважды.
Модулей стало больше, общих вычислений — пока нет.
#BuildInPublic
На готовой памяти цепочка занимала около 105 мс. С подготовкой источника — уже 601 мс.
Просто упаковать две головы в плагины оказалось недостаточно. Надо было заранее договориться, какую общую память они читают и что именно в ней получают.
Пробовал связи между ингредиентами и граф. Сделал контроль с перемешанными связями — он оказался слишком близко к правильному графу по результату.
После этого разделил задачи: что обычно бывает в блюде, что написано именно здесь и что из этого можно утверждать гостю.
Маленькие навыки уже удавалось добавлять, не меняя ядро и старые блоки. Сам навык мог считаться меньше миллисекунды.
А потом получалось 97–98% на обучающих примерах и около 65% на новых.
Механика подключалась гораздо лучше, чем обобщались знания.
#BuildInPublic
С кулинарными знаниями дошёл до корпуса в 2,23 млн рецептов. Обучал и на большой части этого объёма.
Но больше рецептов не исправляло всё подряд: мешали ограниченный словарь ингредиентов, разные названия одного продукта и сама постановка обучения.