LINUX.ORG.RU

Amazon открыла исходный код компилятора NNVM

 , nnvm, , tvm


1

1

Открыт код (Apache 2.0) компилятора NNVM, генерирующего машинный код, оптимизированный для машинного обучения высокоуровневых графов.

Компилятор может генерировать код для GPU (CUDA, OpenCL, Metal), LLVM, который может компилироваться уже в машинный код архитектуры x86_64 и WebAssembly.

Компиляция происходит следующим образом: сначала оптимизируется граф, затем операторы компилируются в исполняемые модули для различных аппаратных бэкэндов. Потом компилируется промежуточное предствление графа. Происходит это с помощью TVM, предметно-ориентированного языка, в котором есть базовые оптимизации (многопоточность, кэширование, разбивка цикла) оптимизированные представления операторов для целевой архитектуры.

Проведение тестирования генерации кода для CPU ARM и GPU NVIDIA показало, что формируемый компилятором итоговый код превосходит по производительности фреймворк MXNet. Размер формируемого модуля зависит в основном от размера runtime TVM, который при сборке для Raspberry Pi и мобильных устройств занимает около 300 Кб.

>>> Подробности



Проверено: jollheef ()
Последнее исправление: CYB3R (всего исправлений: 2)

Кому и зачем может понадобится запускать TVM на мобиле? Или тем более на малине?

morse ★★★★★
()
Ответ на: комментарий от ult

Почитал в доках и вижу, что можно в питоне использовать. Это хорошо.

Какова область применения для простых смертных в домашних условиях сабжа? Что я могу с ним сделать? Мне интересно. Я просто занимался кое для чего нейронками. И не могу понять будет ли это полезно мне.

ult
()

Компилятор может генерировать код для GPU (CUDA, OpenCL, Metal), LLVM

не распарсил. что значит «код для GPU, LLVM»? LLVM и так умеет компилить код под AMDGPU. или имеется ввиду что оно автоматом генерит из простыни вычислительные ядра? или оно пишет IR код для LLVM с какими-то твиками?

и при чем тут малина, если выше написано что код собирается под x86_64 и wasm? и при чем тут тогда gpu?

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

Полагаю, он компилирует из «нодов, весов и связей» LLVM/гпушный код.

anonymous
()
Ответ на: комментарий от upcFrost

или имеется ввиду что оно автоматом генерит из простыни вычислительные ядра?

Имеется в виду GLSL/OpenCL/SPIR-V, ессно. В юзерспейсе другое и не работает жеж.

anonymous
()
Ответ на: комментарий от anonymous

OpenCL и LLVM это, скажем так, немного разные вещи. как можно «генерировать код для OpenCL и LLVM» остается загадкой

upcFrost ★★★★★
()
Ответ на: комментарий от morse

Вообще, много кому :) Если речь идет про инференс.

yoghurt ★★★★★
()
Ответ на: комментарий от upcFrost

Даже если не ходить по ссылке и не смотреть на картинку, мне кажется, из текста новости понятно что компилятор может генерировать код для OpenML ИЛИ LLVM, это разные бэкенды.

be_nt_all ★★
()

Открыт код (Apache 2.0) компилятора NNVM, генерирующего машинный код, оптимизированный для машинного обучения высокоуровневых графов.

Есть компилятор, генерирующий код для машинного обучения низкоуровневых простолюдинов?

anonymous
()

описание выглядит как описание любого скриптового языка хоть пхп хоть sql, где зачемто дампят байткод, интерпретируют байткод в бинарник

...зачем

на тойже Raspberry Pi есть *SQL и но-sql исходники которые работают точно также и ничуть не медленнее, и не требуют «компиляции», а интерпретируют код по мере поступления...привет 90-е

слив тупикового проекта(компилятор графов... может решение квадратного уравнения тоже компилировать, на всякий случай)
или дефолтный пиар очередного привкуса АйАй на фоне умных слов...

testersup889
()
Ответ на: комментарий от anonymous

Есть компилятор, генерирующий код для машинного обучения низкоуровневых простолюдинов?

вот она целевая аудитрия 2017 года

описание выглядит рофельно-значет каеф юзаем всем селом и рофлим

testersup889
()
Ответ на: комментарий от upcFrost

я так понимаю, они текст-в-текст компилируют. на входе своё ололо в виде текста. на выходе текст в opencl или куде.

i36_zubov
()
Ответ на: комментарий от anonymous

Microsoft
Oracle

Где в данном топике они упоминаются? К clang не имеет отношения ни одна из этих компаний, потому в его коде используется исключительно следующее: x86_64, // X86-64: amd64, x86_64.

CYB3R ★★★★★
()
Последнее исправление: CYB3R (всего исправлений: 1)

Проведение тестирования генерации кода для CPU ARM и GPU NVIDIA показало, что формируемый компилятором итоговый код превосходит по производительности фреймворк MXNet. Размер формируемого модуля зависит в основном от размера runtime TVM, который при сборке для Raspberry Pi и мобильных устройств занимает около 300 Кб.

Неплохо...

AnonymousTORCoward
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.