У меня есть куча машин с графическими процессорами (которыми владеют я и мои друзья), которые в основном используются для игр и машинного обучения.Вместо того, чтобы использовать каждую машину независимо, я подумал, что было бы лучше использовать их в качестве распределенной системы (например, проводить распределенное обучение моделям машинного обучения), чтобы сократить время обучения.У меня нет опыта в разработке приложений (оставленных облачных приложений), но я подумал, что было бы интересно создать клиент-серверное приложение, в котором:
на клиентской стороне (например, я и мои друзья) могут получить доступ к системе и посмотреть, какие машины доступны для работы.Если на машине установлен неработающий графический процессор, он должен быть доступен для работы, в противном случае (например, кто-то работает или играет) машина не должна быть доступна.Клиент может выбрать группу доступных машин, а затем запустить на них виртуальную машину (с кодом для запуска и всеми необходимыми данными).
на внутренней стороне,выбранные серверы получают виртуальную машину и выполняют код внутри нее распределенным способом (например, Tensorflow позволяет распределенное обучение).
На мой взгляд, использование виртуальных машин совершенно необходимо, посколькусоображения конфиденциальности / безопасности.Я в основном впускаю своих друзей в мою систему, и они тоже.Я хочу, чтобы клиенты не связывались с сервером.На всех машинах есть Ubuntu, кроме той, которая использует Windows.Поэтому я должен сначала реализовать это в Ubuntu.
Сказав это, я понятия не имею, с чего начать все это реализовывать.Помимо выбора языка (я более склонен к Java или Python, но я бы рассмотрел любой другой вариант), каковы основные шаги, которые я должен предпринять?Я знаю, что это, вероятно, обычное клиент-серверное приложение, но, как я уже сказал, у меня нет опыта разработки приложений.Спасибо