Развертывание моделей машинного обучения на микроконтроллерах и встроенных системах с низким энергопотреблением по сути является упражнением в учете ресурсов. В отличие от серверных сред, где вычислительные возможности ограничены стоимостью или расчетной тепловой мощностью, периферийные устройства работают...
Развертывание моделей машинного обучения на микроконтроллерах и встроенных системах с низким энергопотреблением по сути является упражнением в учете ресурсов. В отличие от серверных сред, где вычислительные возможности ограничены стоимостью или расчетной тепловой мощностью, периферийные устройства работают под жесткими физическими стенами. Микроконтроллер ARM Cortex-M4 или Cortex-M7 часто предлагает менее 1 МБ SRAM и несколько мегабайт энергонезависимой флэш-памяти. Даже встроенные платформы Linux, такие как Raspberry Pi Zero или платы NXP i.MX начального уровня, сталкиваются с жесткими ограничениями пропускной способности памяти и жесткими ограничениями мощности.
Чтобы обеспечить надежную работу глубоких нейронных сетей при таких ограничениях, мы полагаемся на методы сжатия моделей — в первую очередь квантование и сокращение. Однако эти методы приводят к нелинейному компромиссу между точностью, объемом флэш-памяти, использованием памяти во время выполнения и операционной задержкой.
Иерархия памяти в микроконтроллерах
При оптимизации модели для встроенного оборудования важно различать статическое хранилище и динамическую память.
Флэш-память хранит статические параметры модели (веса, смещения) и скомпилированный программный код. Операции чтения из флэш-памяти выполняются относительно быстро, но запись во время вывода не является опцией.