Здравейте всички,

В това 15-то писмо за разработчици сме щастливи да предложим нова статия, която навлиза по-дълбоко в технологията зад децентрализирания облак iExec. Фокусът на това писмо ще бъде върху управлението на Graphic Processing Unit (GPU).

Въведение

В предишна статия въведохме iExec парадигмата на „споделяне на доставчик“ и се съсредоточихме върху виртуалната машина (VM), както и управлението на Docker като първи случаи на употреба. В рамките на iExec тази парадигма на споделяне на доставчик не е ограничена до приложения, но също така позволява споделяне на библиотеки.

В тази статия първо ще представим GPU и TensorFlow. След това ще покажем как нашата парадигма за споделяне на доставчици позволява да включим GPU в нашия график, така че приложенията с такова изискване да се изпълняват само от изчислителни ресурси с активиран GPU. И накрая, ще завършим със случай на използване, описващ подробно как потребителят може да регистрира GPU приложение и да изпраща задачи за него.

GPU с общо предназначение

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

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

Подобряването на производителността върви заедно с подходящи свойства за „зелена ефективност“, показващи по-добро съотношение производителност/цена от процесорите.

Новите концепции и инструменти за програмиране вече се управляват добре от софтуерни редактори и много научни библиотеки.

Наистина различни софтуери и библиотеки с решения в различни области на приложение, сред които задълбочено обучение, физически симулации или компютърно зрение, вече могат да се възползват от важните предимства на съотношението скорост/разходи.

TensorFlow за дълбоко обучение

TensorFlow е рамка за машинно обучение с отворен код, която първоначално е разработена от изследователи и инженери в изследователската организация на Google за машинен интелект.

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

Само за няколко години TensorFlow се превърна в една от първите в класа рамки с отворен код за внедряване на машинно обучение. Airbnb, Uber, Intel, Dropbox или Snapchat са всички компании, които използват TensorFlow.

В iExec ние проучваме машинни приложения и приложения за дълбоко обучение с интензивни изчислителни изисквания и използваме библиотеки като TensorFlow.

CUDA версията на TensorFlow е обещаваща опция за значително намаляване на изминалото време за симулация.

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

За да илюстрираме това, изграждаме dapp, което предлага решаване на проблеми с разпознаването на изображения с TensorFlow. Базира се на усъвършенствания урок от документацията на TensorFlow [1].

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

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

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

Следващата стъпка ще бъде да стартирате този случай на използване с iExec SDK на GPU работници.

Към стартиране на приложение на GPU работници

iExec SDK е написан, за да предложи единен работен поток, за да улесни, доколкото е възможно, разбирането на внедрените услуги и протоколи. SDK позволява да се определят изисквания за всяко приложение.

Например базирано на Docker приложение, което ще бъде внедрено в iExec, трябва да има типа на приложението Docker, както е показано по-долу (моля, вижте тази статия):

приложение: { type: 'DOCKER',

envvars: 'XWDOCKERIMAGE=ikester/blender',}

Писането на GPU-активирано dapp се състои от дефиниране на друго Docker изображение и просто въвеждане на нов параметър на приложението:

приложение: { type: 'DOCKER',

envvars: 'XWDOCKERIMAGE=nvidia/cuda',

необходими пакети: „CUDA“, }

Това е всичко за това писмо на Dev. Благодарности на Ерик Родригес, нашия експерт по GPU и HPC, както и на Олег Лодигенски, нашия технически директор. Очаквайте следващия, тъй като все още имаме вълнуващи новини, които да споделим с вас! 🚀

Ограничения

Започнахме да работим върху поддръжката на GPU с ранни тестове. Въпреки че GPU изчисленията са основната тема на версия 4 (HPC), ние се надяваме в близко бъдеще вече да имаме някои специфични рамки и приложения, работещи на избрани GPU доставчици. Това означава, че GPU няма да бъде напълно поддържан веднага, тъй като това е предизвикателна работа поради разнообразието от хардуер, библиотеки и поддръжка на VM.

Източници

[1] Конволюционни невронни мрежи от документацията на TensorFlow

[2] Изчисления с общо предназначение на графични процесори в Wikipedia

Поддържайте връзка