MindSpore на Huawei: нов конкурент за TensorFlow и PyTorch?

Съдържание:

MindSpore на Huawei: нов конкурент за TensorFlow и PyTorch?
MindSpore на Huawei: нов конкурент за TensorFlow и PyTorch?

Видео: MindSpore на Huawei: нов конкурент за TensorFlow и PyTorch?

Видео: MindSpore на Huawei: нов конкурент за TensorFlow и PyTorch?
Видео: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, Ноември
Anonim

Huawei обяви, че неговият междинен софтуер за дълбоко обучение MindSpore в стил TensorFlow и PyTorch вече е с отворен код. Разберете в тази статия най-важните му характеристики.

MindSpore от Huawei
MindSpore от Huawei

Huawei току-що обяви, че неговата рамка MindSpore за разработване на AI приложения става с отворен код и е достъпна за GiHub и Gitee. MindSpore е друга Deep Learning рамка за обучение на модели на невронни мрежи, подобна на TensorFlow или PyTorch, предназначена за използване от Edge до Cloud, която поддържа както графични процесори, така и очевидно процесори Huawei Ascend.

Миналия август, когато Huawei обяви официалното стартиране на своя процесор Ascend, MindSpore беше представен за първи път, заявявайки, че „в типична тренировъчна сесия, базирана на ResNet-50, комбинацията от Ascend 910 и MindSpore е около два пъти по-бърза. Когато обучаваме AI модели спрямо други основни учебни карти с помощта на TensorFlow Вярно е, че през последните години се появиха много рамки и може би MindSpore не е нищо повече от една група, която дори може дистанционно да се конкурира с TensorFlow (подкрепена от Google) и PyTorch (поддържана от Facebook).

Системна Архитектура

Уебсайтът на MindSpore описва, че инфраструктурата се състои от три основни слоя: интерфейсен израз, графичен механизъм и време за изпълнение. Следващата фигура показва визуална диаграма:

Изображение
Изображение

Първото ниво на MindSpore предлага Python API за програмисти. Тъй като езиковата лингвистика в нашата общност е де факто Python, а в противен случай MindSpore иска да се конкурира с PyTorch и TensorFlow. С този API програмистите могат да манипулират модели (обучение, извод и т.н.) и да обработват данни. Това първо ниво включва и поддръжка за междинно представяне на кода (MindSpore IR), на която ще се основават много оптимизации, които могат да се извършват в паралелизация и автоматично диференциране (GHLO).

По-долу е слоят Graph Engine, който предоставя необходимата функционалност за създаване и изпълнение на автоматично диференциране на графиката за изпълнение. С MindSpore те избраха модел за автоматична диференциация, различен от PyTorch (който генерира динамична графика за изпълнение) или TensorFlow (въпреки че първоначално беше избрана опцията за създаване на по-ефективен график за статично изпълнение, сега тя предлага и опция за динамична графика на изпълнение и позволява статична версия на графиката с помощта на декоратора @ tf.function на нейния API на ниско ниво).

Изборът на MindSpore е да преобразува изходния код във формат на междинен код (MindSpore IR), за да се възползва от двата модела (за повече информация вижте раздела „Автоматично разделяне“на уебсайта на MindSpore).

Последният слой се състои от всички библиотеки и среда за изпълнение, необходими за поддържане на различните хардуерни архитектури, в които кодът ще бъде обработен. Най-вероятно това ще бъде бекенд, много подобен на други рамки, може би с функции на Huawei, като библиотеки като HCCL (библиотека за колективна комуникация на Huawei), еквивалентна на NVIDIA NCCL (библиотека за колективна комуникация NVIDIA).

Подкрепа за визуализация на обучение

Според урока по MindSpore, въпреки че е било невъзможно да ги инсталирате и използвате, те имат MindInsight за създаване на визуализации, които донякъде напомнят на TensorBoard, TensorFlow. Разгледайте някои екранни снимки, които те показват на уебсайта си:

Изображение
Изображение
Изображение
Изображение

Според ръководството в момента MindSpore използва механизъм за обратно извикване (напомнящ как се прави с Keras), за да записва (в лог файл) в процеса на обучение на всички тези параметри на модела и хиперпараметри, които искаме, както и график на изчисленията, когато компилирането на невронна мрежа в междинен код е завършено.

Паралелизъм

В своя урок те говорят за два режима на паралелизиране (DATA_PARALLEL и AUTO_PARALLEL) и предоставят примерен код, който обучава ResNet-50 с набор от данни CIFAR за процесор Ascend 910 (който не успях да тествам). DATA_PARALLEL се отнася до стратегия, известна като паралелизъм на данните, която се състои от разделяне на данните за обучение на множество подмножества, всеки от които работи на една и съща реплика на модела, но в различни обработващи единици. Поддържа се поддръжка на Graph Engine за паралелизиране на кода и по-специално за паралелизъм AUTO_PARALLEL.

Режимът AUTO_PARALLEL автоматично оптимизира паралелизацията чрез комбиниране на стратегията за паралелизиране на данните (обсъдена по-горе) със стратегията за паралелизация на модела, при която моделът е разделен на различни части и всяка част се изпълнява паралелно в различни блокове за обработка. Този автоматичен режим избира стратегията за паралелизиране, която предлага най-добрите предимства, за които можете да прочетете в раздела Автоматичен паралел на уебсайта MindSpore (въпреки че те не описват как се правят оценки и решения). Ще трябва да изчакаме, за да отделим време на техническия екип да разшири документацията и да разбере повече подробности за стратегията за автоматично паралелизиране. Но е ясно, че тази стратегия за автоматично паралелизиране е от решаващо значение и именно тук те трябва и могат да се конкурират с TensorFlow или PyTorch, получавайки значително по-добра производителност, използвайки процесори на Huawei.

Планирана пътна карта и как да допринесете

Очевидно трябва да се свърши много работа и към този момент те насочиха идеите, които имат предвид през следващата година в обширната пътна карта, представена на тази страница, но те твърдят, че приоритетите ще бъдат коригирани според потребителя.

Обратна връзка. В момента можем да намерим тези основни линии:

  1. Поддръжка за повече модели (чакащи класически модели, GAN, RNN, Трансформатори, модели за усилено обучение, вероятностно програмиране, AutoML и др.).
  2. Разширете API и библиотеките, за да подобрите използваемостта и опитността при програмиране (повече оператори, повече оптимизатори, повече функции за загуби и т.н.)
  3. Цялостна поддръжка на процесор Huawei Ascend и оптимизиране на производителността (оптимизация на компилация, подобряване на използването на ресурси и др.)
  4. Еволюция на софтуерния стек и изпълнение на оптимизации на изчислителни графики (подобряване на междинното IR представяне, добавяне на допълнителни възможности за оптимизация и др.).
  5. Поддръжка за повече езици за програмиране (не само Python).
  6. Подобрено разпределено обучение с оптимизиране на автоматично планиране, разпределение на данни и др.
  7. Подобрете инструмента MindInsight, за да улесните програмиста да „отстранява грешки“и да подобри настройката на хиперпараметрите по време на учебния процес.
  8. Напредък в предоставянето на функционалност за извод на устройства в Edge (защита, поддръжка за неплатформени модели чрез ONNX и др.)

На страницата на общността можете да видите, че MindSpore има партньори извън Huawei и Китай, като Университета в Единбург, Имперския колеж в Лондон, Университета в Мюнстер (Германия) или Университета Париж-Саклай. Те казват, че ще следват модел на отворено управление и ще поканят цялата общност да даде своя принос както за кода, така и за документацията.

Заключение

След бърз пръв поглед изглежда, че правилните решения за проектиране и внедряване (като едновременност и автоматична диференциация) могат да добавят място за подобрения и оптимизации, които постигат по-добра производителност от рамките, които искат да надминат. Но предстои още много работа за улавяне на PyTorch и TensorFlow и преди всичко изграждане на общност, не само! Въпреки това, всички вече знаем, че с подкрепата на една голяма компания в сектора като Huawei, всичко е възможно или беше очевидно преди три години, когато излезе първата версия на PyTorch (Facebook), че тя може да бъде близо до петата на TensorFlow (Google)?

Препоръчано: