Всем привет,

В этом 15-м письме разработчиков мы рады предложить новую статью, в которой более подробно рассматриваются технологии, лежащие в основе децентрализованного облака iExec. В этом письме основное внимание будет уделено управлению Графическим процессором (GPU).

Вступление

В предыдущей статье мы представили парадигму iExec «общего доступа к поставщику» и сосредоточились на виртуальных машинах (VM), а также на управлении Docker в качестве первых вариантов использования. Внутри iExec эта парадигма совместного использования поставщика не ограничивается приложениями, но также позволяет совместно использовать библиотеки.

В этой статье мы сначала познакомимся с GPU и TensorFlow. Позже мы покажем, как наша парадигма совместного использования провайдера позволяет включать GPU в наше планирование, чтобы приложения с таким требованием выполнялись только с помощью вычислительных ресурсов с поддержкой GPU. В заключение мы рассмотрим вариант использования, в котором подробно описывается, как пользователь может зарегистрировать приложение GPU и отправить для него задания.

Универсальный графический процессор

Использование графического процессора (GPU) вместе с процессором ускоряет разработку приложений и приложений искусственного интеллекта.

Представленная в последнее десятилетие технология GPU теперь широко используется на всех платформах, от суперкомпьютеров до персональных компьютеров, для вычислений общего назначения (GPGPU) [2].

Повышение производительности сопровождается подходящими характеристиками «зеленой эффективности», демонстрируя лучшее соотношение производительность / стоимость, чем у ЦП.

Новые концепции и инструменты программирования теперь хорошо управляются редакторами программного обеспечения и многими научными библиотеками.

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

TensorFlow для глубокого обучения

TensorFlow - это среда машинного обучения с открытым исходным кодом, которая изначально была разработана исследователями и инженерами исследовательской организации Google Machine Intelligence.

Система предназначена для облегчения и демократизации исследований в области машинного обучения и передачи возможностей глубокого обучения в руки многих разработчиков.

Всего за несколько лет TensorFlow стал одним из первых в своем классе фреймворков с открытым исходным кодом для реализации машинного обучения. Airbnb, Uber, Intel, Dropbox или Snapchat - все компании, использующие TensorFlow.

В iExec мы изучаем приложения машинного и глубокого обучения с высокими вычислительными требованиями и с использованием таких библиотек, как TensorFlow.

Версия TensorFlow на CUDA - многообещающий вариант для значительного сокращения затраченного времени моделирования.

Распознавание изображений на графических процессорах NVIDIA CUDA

Чтобы проиллюстрировать это, мы создаем децентрализованное приложение, которое предлагает решать проблемы распознавания изображений с помощью TensorFlow. Он основан на расширенном руководстве документации TensorFlow [1].

Наше dapp предназначено для работы на iExec при поддержке графических процессоров NVIDIA CUDA для ускорения моделирования. Цель этого руководства - построить сверточную нейронную сеть (CNN) для распознавания изображений.

Модель, используемая в этом руководстве по CIFAR-10, представляет собой многослойную архитектуру, состоящую из чередующихся сверток и нелинейностей.

Обучение нейронной сети требует больших вычислительных ресурсов для создания точной модели, поэтому необходимо обучать ее одновременно на нескольких графических процессорах.

Следующим шагом будет запуск этого варианта использования с iExec SDK на рабочих процессах GPU.

На пути к запуску приложения на GPU-воркерах

IExec SDK написан, чтобы предложить единый рабочий процесс, чтобы максимально упростить понимание реализованных сервисов и протоколов. SDK позволяет указать требования для любого dapp.

Например, приложение на основе Docker для развертывания на iExec должно иметь тип приложения Docker, как показано ниже (см. Эту статью):

app: {type: ‘DOCKER’,

envvars: ‘XWDOCKERIMAGE = ikester / blender’,}

Написание dapp с поддержкой графического процессора состоит из определения другого образа Docker и простого введения нового параметра приложения:

app: {type: ‘DOCKER’,

envvars: ‘XWDOCKERIMAGE = nvidia / cuda’,

необходимые пакеты: ‘CUDA’,}

Это все для этого письма от разработчиков. Благодарим Эрика Родригеса, нашего эксперта по GPU и HPC, а также Олега Лодыгенского, нашего технического директора. Следите за обновлениями, потому что у нас еще есть интересные новости, которыми мы можем с вами поделиться! 🚀

Лимиты

Мы начали работу над поддержкой графического процессора с ранних тестов. Хотя вычисления на графических процессорах являются основной темой версии 4 (HPC), мы надеемся, что в ближайшем будущем уже появятся некоторые конкретные платформы и приложения, работающие на выбранных поставщиках графических процессоров. Это означает, что GPU не будет полностью поддерживаться сразу, так как это сложная работа из-за разнообразия оборудования, библиотек и поддержки виртуальных машин.

Источники

[1] Сверточные нейронные сети из документации TensorFlow

[2] Универсальные вычисления на графических процессорах в Википедии

Оставайтесь на связи