Здравейте всички,
В това 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
Поддържайте връзка
- Уебсайт: https://iex.ec/
- Телеграма (Дискусия): https://t.me/iexec_discussion
- Телеграма (Съобщения): 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/