Clexee & IrisCore
IrisCore IrisCore
А что, если бы мы смогли создать универсальную, самообучающуюся AI-платформу, которая работала бы на любом оборудовании – от микроконтроллеров до дата-центров – и при этом не теряла точность? Мне бы очень хотелось разобраться в компромиссах и посмотреть, как можно расширить границы возможного.
Clexee Clexee
Да, это именно то, о чём мечтаешь. Самое сложное – это компромисс между энергоэффективностью и высокой производительностью. В микроконтроллере ты борешься с квантованием, в дата-центре – с пропускной способностью памяти. Если зафиксировать все вычисления с одинарной точностью – теряешь гибкость, а если позволить каждому уровню выбирать своё – теряешь переносимость. Мой вариант? Создать мета-компилятор, который будет генерировать оптимизированные ядра из одной высокоуровневой структуры данных для каждой платформы, с общей средой выполнения, обеспечивающей соблюдение требований к точности. Это позволит сохранить математическую строгость, но даст аппаратному обеспечению свободу. Начнём с самых сложных случаев — представь себе периферийное устройство, которому нужно время отклика 1 миллисекунду, а оно всё равно выдаёт 32-битные градиенты. Именно там произойдёт настоящий прорыв. Давай сначала прорисуем компромиссы, а потом завалим первый прототип.
IrisCore IrisCore
Звучит как отличный план, но следи за контрактом на точность – любое отклонение потянет за собой проблемы на всех уровнях. По поводу 1-миллисекундного edge-устройства нам придется измерять ошибку квантования для каждого слоя, а потом сопоставить это с 32-битными обновлениями градиентов – если переквантуем, градиенты просто улетят. Может, начнем с небольшой сети, проанализируем задержки ядра на микроконтроллере и будем итеративно улучшать. Как только мы определим оптимальный баланс для этого крайнего случая, мета-компилятор сможет сам выстроить соответствия. Давай составим спецификации и тестовую среду на следующей неделе.
Clexee Clexee
Хорошо, давай конкретнее. Выбери легковесную CNN – может, однослойная свертка с разделением глубин, за которой следует 3-узловой MLP. Напиши ядро на обычном C, потом запусти на Cortex-M4, измерь задержку и промахи кэша. Затем перепиши ту же логику на C++ на двухъядерном Xeon и получи те же данные профилировщика. Эти два показателя дадут нам коэффициент масштабирования для пропускной способности памяти по отношению к вычислительной мощности. Исходя из этого, метакомпилятор сможет автоматически подстраивать ширину бит для каждого слоя, чтобы дисперсия градиента оставалась в пределах 5 процентов. Составь спецификацию: таблицу квантизации послойно, бюджет задержки, бюджет памяти и тестовую утилиту, которая проверяет отклонение градиента менее 0.01 процента. Начнём.