Виртуальная машина в облаке google
Настраиваем VM Instance Google Cloud для задач машинного обучения
Решение тяжёлых задач машинного обучения на стационарных компьютерах дело неблагодарное и малоприятное. Представьте, что вы на домашнем ноутбуке делаете ансамбль из N нейронных сетей для изучения лесов Амазонки на ноутбуке. Сомнительное удовольствие, тем более, что сейчас есть прекрасный выбор облачных сервисов для этих целей — Amazon Web Services, Google Cloud Platform, Microsoft Azure и прочие. Некоторые даже относительно бесплатны и предоставляют видеокарты.
Мы будем настраивать VM на Google Cloud Platform с нуля. Бонусом — стартовые 300$ на год на один gmail аккаунт. Поехали.
1. Создание и настройка Virtual Machine Instances
Создаем аккаунт
С первых шагов может ввести в заблуждение тот факт, что Гугл безапелляционно квалифицирует вас как юридическое лицо без права смены статуса. Это норма с недавних пор и с этим придется смириться. Далее бесстрашно указываем платежные данные, деньги без предупреждения не снимутся, даже когда будет исчерпан бесплатный лимит.
Создаем Virtual Machine и подбираем параметры
Здесь есть несколько интересных моментов. Графические процессоры есть не во всех зонах. В европейских и западно-азиатских я не нашел, в южно-американских искать не стал, поэтому выбрал восточно-американскую зону. Там их можно хоть восемь настроить с абонентской платой 5000 долларов в час. Усредняем данные и настраиваем восемь процессоров, двадцать гигабайт оперативной памяти и один графический процессор. Всё это удовольствие будет стоить 1 доллар в час.
Операционную систему можно выбрать на любой вкус. Берем понравившийся Linux дистрибутив и выставляем галочки «разрешить траффик». Настройку сети и SSH пропускаем. Их мы настроим дальше. И, наконец, один важный момент, снимите галочку с delete boot disk when instance is deleted. Это сохранит вам нервы, когда начнете создавать имейджи под разные задачи.
2. Настройка сетевых параметров
Настройка статического IP
По умолчанию внешний IP динамический. Сделаем его статическим и жить сразу станет гораздо проще. При привязке к проекту или виртуальной машине (как раз наш случай) — это бесплатно.
Настройка брандмауэра.
Jupyter Notebook — наш главный инструмент и ему будет нужен доступ к виртуальной машине. Создаем правило со следующими параметрами:
Мы создали чистую VM и в итоге у вас должно получиться примерно так:
И самое главное — не забывайте выключать VM, когда закончили работу!
3. Установка Anaconda и дополнительных пакетов
Запускаем созданный Instance, подключаемся через SSH и для установки дистрибутива Анаконды вводим в командной строке:
В конце установки не забудьте ввести «yes», чтобы прописать переменную PATH
Ставим любимые пакеты:
И переходим к настройке Jupyter Notebook.
4. Настройка Jupyter Notebook
Вводим в командную строку (порт — который вы указали в настройках брандмауэра):
И теперь один интересный момент. Если у вас всё прошло успешно, то после старта Jupiter Server в баше вы увидите примерно это:
Если перейти по ссылке, то в браузере вывалится ошибка авторизации, что совершенно очевидно. Для этого в строке браузера надо явно указать, созданный выше внешний статический IP:
Добро пожаловать на борт!
Теперь нам осталось только настроить File Transfer между нашей локальной системой и удаленной. Без этого леса Амазонки не изучить.
5. Настройка File Transfer
У нас загрузочный диск Linux и поэтому доступны четыре способа:
Подробно можно почитать здесь и выбрать наиболее понравившийся способ. У меня на ноутбуке Windows 10, поэтому выбор не богатый. Пойдём не самым простым путём и подробно рассмотрим четвёртый способ.
Для начала необходимо сгенерировать SSH ключи. Скачиваем дистрибутив PuTTY и устанавливаем. С его помощью будем генерить ключи.
Осталось совсем немного, самая приятная часть — настроить файл-менеджер WinSCP.
В дополнительных настройках указываем private key и выставляем галочки как на скриншоте.
Дополнительно хочу заметить, что использовать один Instance не очень разумно экономически. Разные задачи требуют разных ресурсов. Можно создать двенадцать виртуалок с разными настройками процессоров, памяти и графики или работать с имейджами. Экспериментируйте и любите данные.
Облачные технологии
Создаем облачные виртуальные машины и приложения в считанные минуты
AdSense-web
29 июня 2019
Как создать виртуальный компьютер в облаке Google?
Сервис Google Compute Engine позволяет создавать и запускать виртуальные вычислительные машины в облачной платформе Google Cloud Platform. Как создать бесплатную виртуальную машину? Подойдет ли облачный сервер GCE для размещения обычного сайта в сети интернет? Можно ли использовать виртуальную машину для майнинга криптовалюты?
При загрузки интерфейса консоли Google Cloud Platform, попадаем на русифицированную стартовую страницу.
Среди популярных продуктов выбираем Compute Engine. На данный ресурс, так же есть ссылка в меню в разделе «Ресурсы». Для начала необходимо создать проект.
Сразу видим предупреждение о том, что сможем пользоваться сервисом Google Compute Engine только после того, как укажем действующий платежный аккаунт. Инструкция по ссылке «Цена», на английском.
При нажатии на кнопку «Создать», сайт перебрасывает на страницу бесплатного пробного периода Google Cloud Platform. То есть, речи о создании бесплатного экземпляра ВМ вне рамках бесплатного пробного периода, даже, и не идет.
Как видим, бесплатный доступ позволяет создавать и запускать, в том числе, веб-сайты. Платформа предоставляет 300 долларов США при регистрации, которые можно потратить в Google Cloud Platform в течение 12 месяцев.
Условия бесплатного пробного периода, как всегда на английском, но смысл таков: бесплатная пробная версия начинается, когда клиент создает платежную учетную запись в Google Cloud Console и заканчивается, когда плата за использование сервиса превышает 300 долларов США, или 12 месяцев с момента начала бесплатной пробной версии.
Ограничения во время бесплатной пробной версии: пробный период Google Compute Engine ограничен только восемью ядрами одновременного использования на одну бесплатную пробную версию. Клиент не может использовать сервис для майнинга криптовалюты. По отзывам пользователей, за майнинг, экземпляр ВМ банится в течении часа.
В любое время возможно преобразовать бесплатную пробную версию в стандартную учетную запись Google Cloud Platform, нажав кнопку «Обновить» в консоли Google Cloud. Если клиент перейдет на такую стандартную учетную запись в течение 12 месяцев с даты начала бесплатной пробной версии, все оставшиеся кредитные средства будут продолжать действовать до истечения 12 месяцев.
Верификация аккаунта банковской картой. Далее, заполнил поля личный данных, данные банковской карты (в том числе CVC-код), но после нажатия на финальную кнопку «Начать бесплатный пробный период», система предложила мне внести исправления или добавить другую карту. Подозреваю, что не получилось списать средства, так как на счете небыло и доллара.
Активировать пробный период, действительно, не удалось из-за отсутствия средств на счете.
Создание виртуальной машины в сервисе Compute Engine. Создать экземпляр ВМ решил с помощью опции «Запустить мастер», что бы запустить быструю настройку, для развертывания типового приложения, как там написано. Вместо запуска появилось руководство по созданию веб-приложения. Поэтому, просто, нажимаем на кнопку «Создать». При этом, появляется форма создания ВМ, в которой некоторые данные выбраны по умолчанию.
Обратите внимание, от региона, так же, зависит стоимость машины. В блоке конфигурации, можно выбрать тип машины, где, по умолчанию, числится ВМ n1-standard-1 с одним виртуальным процессором и 3,75 ГБ памяти.
Далее, в раскрывающейся опции можно добавить графический процессор, которого, изначально, нет в конфигурации, так как считается, что она слабовата ресурсами. Интересная опция есть ниже, для создания снимков экрана и использования функции записи. Думаю, поставить галочку на опции «Включить дисплей» не помешает, тем более, что это не делает машину дороже.
Как создать бесплатную виртуальную машину в сервисе Compute Engine? Да, читал, еще в прошлом году можно было создать бесплатную виртуальную машину f1-micro (1 ВЦП, 614 МБ памяти) в этом сервисе. На данный момент, для оплаты такого, самого простого экземпляра ВМ, будут использованы бонусные средства. То есть, назовем машину условно-бесплатной. К сожалению, документация по GCE только на английском языке.
Новые Google Compute Engine образы VM для Deep Learning
Cоавтор статьи: Mike Cheng
Google Cloud Platform теперь в своем портфолио имеет образы виртуальных машин, разработанные специально для тех, кто занимается Deep Learning. Сегодня мы поговорим о том что эти образы из себя представляют, какие преимущества они дают разработчикам и исследователям, ну и само собой о том, как создать виртуальную машину на их базе.
Лирическое отступление: на момент написания статьи продукт все еще находился в Beta, соответственно, на него не распространяются никакие SLA.
Что это за зверь такой, образы виртуальных машин для Deep Learning от Google?
Образы виртуальных машин для Deep Learning от Google это образы Debian 9, которые прямо из коробки имеют все, что необходимо для Deep Learning. На текущий момент существуют версии образов с TensorFlow, PyTorch и образы общего назначения. Каждая версия существует в редакции для только-CPU и GPU инстансов. Для того, чтобы немного лучше понять какой образ Вам нужен, я нарисовал небольшую шпаргалку:
Как показано на шпаргалке, существует 8 различных семейств образов. Как уже говорилось, все они базируются на Debian 9.
Что же именно предустановлено на образы?
Все образы имеют Python 2.7/3.5 со следующими предустановленными пакетами:
Сконфигурированный стек от Nvidia (только в GPU образах):
Список постоянно пополняется, так что следите за обновлениями на официальной странице.
А зачем собственно эти образы нужны?
Давайте предположим, что Вам нужно обучить модель нейронной сети при помощи Keras (с TensorFlow). Вам важна скорость обучения и Вы решаете использовать GPU. Для использования GPU Вам понадобится установить и настроить стек Nvidia (Nvidia driver + CUDA + CuDNN + NCCL). Мало того, что этот процесс достаточно сложный сам по себе (особенно, если Вы не системный инженер, а исследователь), так все осложняет еще и тот факт, что Вам нужно учитывать бинарные зависимости Вашей версии библиотеки TensorFlow. Например, официальный дистрибутив TensorFlow 1.9 скомпилирован с CUDA 9.0 и он не будет работать, если у Вас стек, в котором установлена CUDA 9.1 или 9.2. Настройка этого стека может быть «веселым» процессом, я думаю, с этим не поспорит никто (особенно те, кто это проделал).
Теперь предположим, что после нескольких бессонных ночей все настроено и работает. Вопрос: эта конфигурация, которую Вы смогли настроить, является ли она наиболее оптимальной для Вашего железа? Например, правда ли, что установленная CUDA 9.0 и официальный бинарный пакет TensorFlow 1.9 показывает самую быструю скорость на инстансе с процессором SkyLake и одним Volta V100 GPU?
Ответить практически нереально без выполнения тестирования с другими версиями CUDA. Чтобы ответить наверняка, нужно руками пересобрать TensorFlow в разных конфигурациях и прогнать Ваши тесты. Все это нужно проводить на том дорогом железе, на котором планируется впоследствии тренировать модель. Ну и самое последнее, все эти измерения можно выкинуть, как только новая версия TensorFlow или стека от Nvidia выйдет в свет. Можно смело утверждать, что большинство исследователей просто не будут этим заниматься и будут просто использовать стандартную сборку TensorFlow, имея не оптимальную скорость работы.
Вот тут и появляются на сцене образы Deep Learning от Google. Например, образы с TensorFlow имеют свою собственною сборку TensorFlow, которая оптимизирована под железо, которое есть на Google Cloud Engine. Они протестированы с различной конфигурацией стека Nvidia и основаны на той, которая показала самую большую производительность (спойлер: это не всегда самое новое). Ну и самое главное — почти все, что нужно для проведения исследований уже предустановленно!
Как можно создать инстанс на базе одного из образов?
Существует два варианта создать новый инстанс на базе этих образов:
Так, как я большой фанат терминала и CLI утилит, то в этой статье я расскажу именно об этом варианте. Тем более, если Вы любите UI, есть довольно неплохая документация, описывающая как создать инстанс при помощи Web UI.
Перед тем, как продолжить, установите (если еще не установили) тулзу gcloud. Опционально Вы можете использовать Google Cloud Shell, однако учтите, что функция WebPreview в Google Cloud Shell в настоящий момент не поддерживается и посему Вы не сможете там использовать Jupyter Lab или Notebook.
Следующим этапом будет выбор семейства изображений. Я позволю себе еще раз привести шпаргалку с выбором семейства изображений.
Для примера, мы предположим, что Ваш выбор пал на tf-latest-cu92, его мы и будем использовать далее по тексту.
Погодите, но что если мне нужна конкретная версия TensorFlow, а не “последняя”?
Предположим, что у нас есть проект, который требует TensorFlow 1.8, но в тоже время 1.9 уже вышел в свет и образы в семействе tf-latest уже имеют 1.9. Для такого случая у нас есть семейство изображений, которое всегда имеет определенную версию фреймворка (в нашем случае, tf-1-8-cpu и tf-1-8-cu92). Эти семейства изображений будут обновляться, но версия TensorFlow в них меняться не будет.
Так как это только Beta релиз, то сейчас мы поддерживаем только TensorFlow 1.8/1.9 и PyTorch 0.4. Мы планируем поддерживать последующее релизы, но мы не можем на текущем этапе четко ответить на вопрос как долго будут поддерживатся старые версии.
Что, если я хочу создать кластер или использовать один и тот же образ?
Действительно, может быть много случаев, когда необходимо переиспользовать один и тот же образ вновь и вновь (а не семью образов). Строго говоря, использование образов напрямую это почти всегда предпочтительный вариант. Ну, например, если Вы запускаете кластер с несколькими инстансами, не рекомендуется в таком случае указывать в Ваших скриптах напрямую семейства образов, так как если семейство будет обновлено в момент, когда скрипт работает, есть вероятность, что разные инстансы кластера будут созданы из разных образов (и могут иметь разные версии библиотек!). В таких случая предпочтительно вначале получить конкретное имя образа их семейства, а уже потом использовать конкретное имя.
Если интересует эта тема, можете посмотреть на мою статью “Как правильно использовать семейства изображений”.
Посмотреть имя последнего образа в семействе можно простой командой:
Допустим что имя конкретного образа tf-latest-cu92–1529452792, его то уже и можно использовать где угодно:
Время создать наш первый инстанс!
Чтобы создать инстанс из семейства образов, достаточно выполнить одну простую команду:
Если Вы используете инстанс с GPU, то необходимо обратить внимание на такие обстоятельства:
Вам нужно выбрать правильную зону. Если Вы создаете инстанс с определенным GPU, Вам нужно убедится, что этот тип GPU доступен в зоне, в которой Вы создаете инстанс. Вот тут можно найти соответсвие зон типам GPU. Как можно увидеть, us-west1-b единственная зона, в которой есть все 3 возможных типа GPU (K80/P100/V100).
Убедитесь, что у Вас есть достаточно квоты, чтобы создать инстанс с GPU. Даже, если Вы выбрали верный регион, это еще не значит, что у Вас есть квота на создание инстанса с GPU в этом регионе. По умолчанию квота на GPU установлена в ноль во всех регионах, так что все попытки создать инстанс с GPU провалятся. Хорошее объяснение того, как увеличить квоту можно найти вот тут.
Убедитесь, что в зоне есть достаточно GPU, чтобы удовлетворить Ваш запрос. Даже, если Вы выбрали верный регион и у Вас есть квота на GPU в этом регионе, это еще не означает, что в этой зоне есть в наличии интересующее Вас GPU. К сожалению, я не в курсе как еще можно проверить наличие GPU, кроме как попыткой создать инстанс и посмотреть что будет =)
Выберете корректное количество GPU (в зависимости от типа GPU). Дело в том, что флаг “accelerator” в нашей команде отвечает за тип и за количество GPU, которое будет доступно инстансу: т.е. “— accelerator=’type=nvidia-tesla-v100,count=8’” создаст инстанс с восемью доступными GPU Nvidia Tesla V100 (Volta). Каждый тип GPU имеет допустимый список значений числа count. Вот этот самый список для каждого типа GPU :
К сожалению, процесс установки драйвера занимает время при первой загрузки, так как ему нужно этот самый драйвер загрузить и установить (а это влечет за собой еще и перезагрузку инстанса). В общей сложности это не должно занять более 5 минут. Мы еще поговорим немного позже о том, как можно уменьшить время первой загрузки.
Подключение к инстансу по SSH
Это проще паренной репы и может быть сделано одной командой:
gcloud создаст пару ключей и автоматически загрузит их на новосозданный инстанс, а также создаст на нем Вашего пользователя. Если хочется сделать этот процесс еще более простым, то можете воспользоваться функцией которая упрощает и это:
Кстати, Вы можете найти все мои gcloud bash функции вот тут. Ну а перед тем, как мы перейдем к вопросу того, насколько эти образы быстрые, ну или что с ними можно сделать, позвольте мне уточнить о проблеме со скоростью запуска инстансов.
Как можно уменьшить время первого запуска?
Технически время самого первого запуска — никак. Но можно:
Итак, из этого списка нам уже известно, как создать новый инстанс и подключится к нему, также мы знаем, как проверить драйвера на работоспособность. Осталось лишь рассказать о том, как останавливать инстанс и создавать из него образ.
Для остановки инстанса выполните следующую команду:
А вот команда для создания образа:
Поздравляю, теперь у Вас есть свой образ с установленными Nvidia драйверами.
Как насчет Jupyter Lab?
Как только Ваш инстанс работает, следующим логичным шагом будет запустить Jupyter Lab, чтобы заняться непосредственно делом 🙂 С новыми образами это очень просто. Jupyter Lab уже запущен с момента, как был запущен инстанс. Все, что нужно сделать — это подключится к инстансу с пробрасыванием порта, на котором слушает Jupyter Lab. А это порт 8080. Это делается следующей командой:
Все готово, теперь можно просто открыть Ваш любимый браузер и зайти на http://localhost:8080
Насколько быстрее TensorFlow из образов?
Очень Важный вопрос, так как скорость тренинга модели — реальные деньги. Однако, полный ответ на этот вопрос будет длиннее всего, что уже написано в этой статье. Так что Вам придется подождать следующей статьи:)
Ну а пока я Вас побалую некоторыми числами полученными на моем маленьком личном эксперименте. Итак, скорость тренинга на ImageNet составила 6100 изображений в секунду (сеть ResNet-50). Мой личный бюджет не позволил мне закончить тренировку модели полностью, однако, при такой скорости, я предполагаю, что можно достичь 75% точности за 5 часов с небольшим.
Где получить помощь?
Если Вам нужна любая информация относительно новых образов Вы можете:
Ваша обратная связь очень важна, если Вам есть что сказать относительно образов, пожалуйста, не стесняйтесь и связывайтесь со мной любым удобным для Вас способом или оставляйте комментарий под этой статьей.
Бесплатный VPS (VDS) от Google навсегда: как получить
Бесплатный VPS (VDS) от Google Cloud навсегда — это отличный способ начать обучение с облачной платформой и тренироваться в интерфейсе системе.
Как получить бесплатный VDS/VPS от Google Cloud
Для получения полностью бесплатного сервера потребуется перейти на страницу облачной платформы:
После кликаем на «Get started for free».
Далее соглашаемся с условиями обслуживания и даем данные карты.
Важно! Система спишет 1$ с дебетовой/кредитной карты после чего сразу же вернет их.
Теперь попадаем в панель Google Cloud, где потребуется кликнуть на меню (левый-верхний угол).
Далее выбираем пункт «Compute Engine»-«Экземпляры ВМ».
Важно! В течение нескольких минут произойдет активация услуги, после чего создаем новый сервер.
Важно! При создании виртуальной машины потребуется использовать не тарифицирующиеся мощности, которые указаны ниже.
Приступаем к настройкам загрузочного диска, для чего кликаем на «Изменить».
Для полностью бесплатного использования выбираем одну из операционных систем:
В качестве размера диска используем 10/29 Гб.
После создание виртуальной машины можно начать работу при помощи удобной SSH-панели.
Параметры и ограничения
Важно! Каждому пользователю для тестирования предоставляется 365 дней и 300$, чего вполне достаточно для выполнения достаточно требовательных задач.
Важно! Машина будет работать с некоторыми ограничениями, с которыми можно ознакомиться ниже.
В итоге мы получаем полностью бесплатный навсегда VDS в облаке Google со следующими параметрами:
Также можно ознакомиться с другими способами получения бесплатного виртуального сервера, например, от Oracle или Amazon.