Amazon открыла исходный код компилятора NNVM
Открыт код (Apache 2.0) компилятора NNVM, генерирующего машинный код, оптимизированный для машинного обучения высокоуровневых графов.
Компилятор может генерировать код для GPU (CUDA, OpenCL, Metal), LLVM, который может компилироваться уже в машинный код архитектуры x64 и WebAssembly.
Компиляция происходит следующим образом: сначала оптимизируется граф, затем операторы компилируются в исполняемые модули для различных аппаратных бэкэндов. Потом компилируется промежуточное предствление графа. Происходит это с помощью TVM, предметно-ориентированного языка, в котором есть базовые оптимизации (многопоточность, кэширование, разбивка цикла) оптимизированные представления операторов для целевой архитектуры.
Проведение тестирования генерации кода для CPU ARM и GPU NVIDIA показало, что формируемый компилятором итоговый код превосходит по производительности фреймворк MXNet. Размер формируемого модуля зависит в основном от размера runtime TVM, который при сборке для Raspberry Pi и мобильных устройств занимает около 300 Кб.
>>> Подробности