Создание виртуальной машины, настройка записной книжки jupyter, настройка корзины хранилища и загрузка файлов на виртуальную машину с помощью параллельных составных загрузок

Вступление

Большинство из вас, кто когда-то читал эту статью, сталкивались с препятствиями при запуске программы машинного обучения из-за нехватки оперативной памяти или дискового пространства. Я столкнулся с этой проблемой при попытке решить проблему обнаружения вредоносных программ Microsoft. Это проблема классификации нескольких классов, при которой объединенные данные обучения и тестирования достигают 35 ГБ в сжатом виде, но в распакованном виде они могут достигать 200 + ГБ. Меня это беспокоит, потому что я использую MacBook с 8 ГБ ОЗУ и 256 ГБ памяти. Итак, я нашел альтернативу переносу всего рабочего процесса машинного обучения на GCP (облачную платформу Google).

Что такое GCP?

Google Cloud Platform - это комплексные облачные сервисы, предоставляемые Google. Сервисы включают экземпляры виртуальных машин (аналогично экземплярам AWS EC2), сегменты хранилища (аналогичные сегментам s3), графические процессоры, TPU (это будет полезно, если вы создаете решения для глубокого обучения с использованием TensorFlow в качестве серверной части) и многое другое.

Часто используемые продукты облачных вычислений в GCP:

  • Compute Engine: это IAAS (инфраструктура как услуга), предлагающая виртуальные машины со встроенной средой по вашему выбору. Мы выберем виртуальную машину с глубоким обучением, потому что она включает в себя последнюю версию Tensorflow и все необходимые библиотеки Python. При создании новой виртуальной машины мы можем настроить все, от оперативной памяти, типа жесткого диска и пространства до сетевых спецификаций. О конкретных деталях создания ВМ я расскажу ниже.
  • App Engine: это PAAS (платформа как услуга), которая предлагает разработчикам программного обеспечения разрабатывать программные продукты с использованием встроенного SDK и размещать это программное обеспечение в среде, которая может масштабироваться в зависимости от требований и трафика.
  • Облачное хранилище: это платформа облачного хранилища, которая предлагает сегменты для хранения неструктурированных данных, аналогичные сегментам AWS S3.

Почему GCP?

У GCP есть много заметных преимуществ по сравнению с AWS, и я сформулирую некоторые из функций, которые считаю полезными.

  • Ssh в экземпляр виртуальной машины намного удобнее в GCP, чем в AWS; в GCP мы можем подключиться к работающему экземпляру виртуальной машины по ssh одним нажатием кнопки. В AWS мы должны сохранить файл my-key-pair.pem в putty / superPutty, чтобы создать плавный рабочий процесс.
  • Если вы создаете решения с использованием нейронных сетей, то GCP - идеальная платформа, потому что она предлагает TPU (модуль обработки тензорных данных), который был создан для ускорения и оптимизации вычислений нейронной сети.
  • «Новые клиенты также получат 300 долларов, которые они могут потратить на продукты Google Cloud Platform в течение первых 12 месяцев». - GCP

Чего здесь ожидать?

В этой статье я создам экземпляр виртуальной машины, настрою одно правило брандмауэра для доступа к записной книжке jupyter в локальном браузере, настрою сегмент хранилища, перенесу файлы с локального экземпляра на виртуальную машину, установлю локальный облачный SDK Google и параллельная составная загрузка для больших файлов

Шаги по созданию виртуальной машины для запуска записной книжки jupyter в локальном браузере:

  • Создание правила брандмауэра.
  • Создание экземпляра ВМ.
  • Измените тип внешнего IP-адреса на статический.
  • ssh в виртуальную машину
  • запустите команду jupyter

Создание правила брандмауэра

Правила брандмауэра позволяют разрешать или запрещать трафик к экземплярам виртуальной машины (ВМ) и от них в зависимости от указанной вами конфигурации. Здесь мы создаем правило брандмауэра для перенаправления портов, чтобы открыть запущенный экземпляр записной книжки jupyter в локальном браузере.

Щелкните сеть VPC, затем щелкните Правила брандмауэра, затем создайте правило брандмауэра.

На изображениях ниже вы увидите все внесенные мной изменения. Внесите эти изменения и оставьте остальные настройки по умолчанию.

Изменения :

  • Цели: выберите Все экземпляры в сети, убедившись, что это правило применяется ко всем вашим экземплярам ВМ.
  • Диапазоны исходных IP-адресов: введите 0.0.0.0/0. Поле диапазонов IP-адресов источника используется для определения источника входящего трафика по диапазонам IP-адресов. Мы используем 0.0.0.0/0, чтобы разрешить источник из любой сети.
  • Протоколы и порты: выберите TCP и введите значение порта 8888. Протоколы и порты используются для указания, к каким протоколам и портам будет применяться указанное правило брандмауэра.
  • Оставьте остальные настройки по умолчанию и нажмите «Создать».

Создание экземпляра виртуальной машины

Шаги до открытия страницы консоли относительно просты. После входа в систему и перенаправления на консоль вы попадете на страницу консоли GCP ниже:

Щелкните вычислительный механизм, а затем щелкните экземпляры виртуальных машин, затем щелкните создать экземпляр вверху.

На изображениях ниже вы увидите все внесенные мной изменения. Вы можете реализовать эти изменения и оставить остальные настройки по умолчанию.

Изменения :

  • Имя - что угодно
  • Регион - вы можете выбрать любой регион из списка, но я решил, что это us-east1-c, потому что мы можем использовать графические процессоры, а стоимость также относительно невысока. Если вы хотите добавить GPU или TPU, вы можете выбрать us-east1-c.
  • Тип машины - выбирайте ядра, оперативную память в соответствии с вашими требованиями
  • Загрузочный диск - здесь есть множество вариантов, и есть даже возможность загрузить свой собственный образ виртуальной машины. Я хочу один с глубоким обучением и TensorFlow.

  • В брандмауэре разрешите трафик HTTP, HTTPS.

  • Если вы хотите сэкономить деньги и не беспокоиться о том, что соединение редко прерывается, вы можете включить эту опцию. Если эта функция отключена, то плата будет половинной.

Наконец, после выполнения всех вышеперечисленных шагов нажмите «Создать». Вот и все. Вы создали экземпляр ВМ до использования ssh в экземпляре ВМ. Нам нужно изменить тип внешнего IP-адреса.

Изменить внешний IP-адрес

Щелкните сеть VPC, а затем щелкните Внешний IP-адрес.

Измените тип IP-адреса на Статический, если он был установлен на Эфемерный, который используется экземпляром виртуальной машины, который вы создали выше.

Теперь вы можете подключиться к экземпляру виртуальной машины по ssh.

Если вы выполнили все шаги, упомянутые ранее, вы можете запустить экземпляр виртуальной машины по ssh. Если она не запущена, выберите виртуальную машину и нажмите кнопку Пуск выше. Терминал для экземпляра виртуальной машины откроется в новом окне.

Команда для запуска записной книжки jupyter:

jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser &

Затем откройте новое окно в локальном браузере и скопируйте внешний IP-адрес: 8888. Я удалил свой внешний IP-адрес из соображений конфиденциальности. Он впервые запросит токен, затем скопирует и вставит его из терминала. Вы можете открыть блокнот jupyter в любом браузере, используя external_IP: 8888. Итак, если вы выберете, теперь вы также можете открыть блокнот jupyter на своем iPad.

Передача файлов

Передача файлов довольно проста. Вам нужно нажать на значок настроек в правом верхнем углу на странице терминала, а затем выбрать Загрузить файл. После этого вы можете просмотреть любой файл в локальной системе и загрузить его в экземпляр виртуальной машины.

После выбора файла это окно появится в правом нижнем углу, и вы также можете увидеть здесь место загрузки файла.

Параллельные композитные загрузки

У упомянутого выше метода есть обратная сторона. Загрузка больших файлов займет довольно много времени. Для загрузки больших файлов мы будем использовать функцию под названием параллельная составная загрузка.

Требования к параллельной композитной загрузке:

  • Установка Google SDK на локальном компьютере (macOS): выполните следующие команды на своем локальном устройстве.
1) get the Google SDK : curl https://sdk.cloud.google.com | bash
2) Restart your shell: exec -l $SHELL
3) Initialize gcloud environment: gcloud init
  • Создание корзины в облачном хранилище Google

1) Click on Browser in Storage tab as shown in image beside.
2) Click on create a bucket on top.
3)Name the bucket (save it in notepad, we will use it later).
4)Leave all the setting as default.
5) If you want to check the cost, you can do that using montly cost estimate.
  • Я загружаю файл в корзину с помощью параллельной составной загрузки. Файл может быть разбит не более чем на 32 части, пока не будет достигнут этот предел, переменная «parallel_composite_upload_threshold» будет определять максимальный размер каждого компонента. Если файлы в противном случае слишком большие, компоненты могут быть настолько большими, что их поместится в 32 части. Выполните следующие команды на своем локальном компьютере.
1) Uploading file into bucket : gsutil -o GSUtil:parallel_composite_upload_threshold=150M cp local_path_of_file gs://bucket-name-saved-before
2) Example output for 18Gb file : It took around 40 mins
gowtams-MacBook-Air:data gowtamvamsi$ gsutil -o GSUtil:parallel_composite_upload_threshold=150M cp train.7z gs://transfer_bucket_gv_1
Copying file://train.7z [Content-Type=application/x-7z-compressed]...
Catching up md5 for file://train.7z...0.0 B/s
Catching up md5 for file://train.7z...
Catching up md5 for file://train.7z...2 MiB/s
Catching up md5 for file://train.7z...
| [1 files][ 17.5 GiB/ 17.5 GiB]      0.0 B/s
Operation completed over 1 objects/17.5 GiB.
  • Я загружаю файл на экземпляр виртуальной машины из облачного хранилища Google. Выполните приведенную ниже команду на своем экземпляре виртуальной машины.
1) Downloading file into VM instance from bucket:
gsutil cp -r gs://bucket-name-saved-before/fileName vmpath/
2) Example output for 18Gb file : It took around 6 mins
Copying gs://transfer_bucket_gv_1/train.7z...
\ [0 files][  17.5 GiB/ 17.5 GiB]   71.2 MiB/s

Когда я попытался напрямую загрузить файл train.7z размером 17,5 ГБ, на завершение 8% загрузки ушло 8 часов. Итак, я остановил его и вместо этого использовал параллельную составную загрузку.

Спасибо, что нашли драгоценное время, чтобы прочитать эту статью, надеюсь, что эта статья поможет вам оптимизировать рабочий процесс машинного обучения. Мы высоко ценим обратную связь. Приятного чтения.

Пейте кофе и продолжайте учиться