Всем привет,
В этом 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] Универсальные вычисления на графических процессорах в Википедии
Оставайтесь на связи
- Сайт: https://iex.ec/
- Telegram (Обсуждение): https://t.me/iexec_discussion
- Telegram (Объявления): https://t.me/iexec_announcements
- Slack: https://iexec-team.slack.com/
- Reddit: https://www.reddit.com/r/iexec/
- Twitter: https://twitter.com/iEx_ec
- Facebook: https://www.facebook.com/pg/iexecteam/
- Учебники: https://www.katacoda.com/sulliwane/