Мы будем использовать передовые облачные технологии, хайповые нейронные сети, методику разработки непрерывной интеграции и непрерывной доставки (СI/CD). Время выполнения: 35-40 минутПривет! Меня зовут Вадим! В этой инструкции я хотел бы показать еще немного Serverless-технологий, а именно Google Cloud Run. В какой-то степени будет немного похоже на ИТ-гайд: как запустить первое приложение.Не беспокойтесь, если что-то будет непонятно. Возможно это прояснится дальше.Google позиционирует Сloud Кun как более новый App Engine он же GAE Flexible (тот самый appspot.com) только без persistence, отличия можно почитать здесь.Вкратце контейнер Сloud Run может быть размещен на Google Kubernetes Engine (GKE) кластерах(VM) или на полностью управляемом PaaS решении и автоматически масштабироваться до 0. За виртуальную машину вы всегда платите.Мы создадим Docker контейнер из Flask-приложения которое я написал для развертывания предварительно обученной модели с помощью Pytorch.Загрузим контейнер в репозиторий Cloud Run.Подключим триггер для непрерывной доставки.Я думаю эти шаги спокойно можно воссоздать на серверах selectel, так как они поддерживают кластеры Kubernetes.Метод который я использовал подробнее описан в Perceptual Losses for Real-Time Style Transfer and Super-Resolution.Также для полного понимания могу посоветовать последнюю лекцию Jeremy Howard из курса fastai 2018 года, если планируете использовать GAN нейросети в будущем и досконально разобраться в деталях. Я постарался сделать эту инструкцию как можно проще и короче, так что сейчас это не критично.Можно было бы в место Flask написать приложение на Starlette в асинхронном стиле, но делать этого, мы конечно, не будем. Асинхронный Python-код не всегда быстрее обычного кода, а зачастую даже медленнее.Предварительные требованияАккаунт на Github.Аккаунт Google Cloud Platform. Здесь есть один нюанс — чтобы получить 300 триальных долларов нужно привязать пустую(или нет) банковскую карту. Вы не понесете никакие затраты на прохождение этой инструкции. Позже вы можете создать виртуальную машину для обучения своих моделей. Так как Google использует TPU в своем оборудовании, они предоставляют всю линейку графических ускорителей Nvidia Tesla от K40 до V100 под Cloud платформу.ОглавлениеОглавление1. Создание проекта2. Клонируем репозиторий3. Создание и развертка контейнера4. Отчистка5. ЗаключениеСоздание проекта1. Итак, мы на главной странице GCP. Создаем новый проект, даем ему имя. Дальше я буду ссылаться на имя как project_ID.Выбираем проект.2. Выбираем справа Оплата -> Привязать платежный аккаунт.3. Выбираем справа Ресурсы -> Cloud Run, ждем пока загрузится API4. Активируем консоль Cloud Shell:5. Проверяем что наш проект привязался:gcloud config list projectКлонируем репозиторий1. Клонируем deploy ветку репозитория с кодом, на момент публикации он должен быть доступен.git clone -b deploy https://github.com/p1x31/fast-neural-transfer-style.git2. Если спросит, вводим имя аккаунта и пароль от Github который мы создали ранее.3. Заходим в папку проекта: cd fast-neural-transfer-styleСоздание и развертка контейнера0. project-ID можно проверить с помощью:echo $GOOGLE_CLOUD_PROJECT1. Собираем образ контейнера (Примерно 10 минут) и загружаем на наш внутренний gcr.io репозиторий:gcloud builds submit --tag gcr.io/PROJECT-ID/image2. Разворачиваем наш образ:gcloud run deploy --image gcr.io/PROJECT-ID/image --platform managed3. Выбираем имя сервиса и локацию сервера. Europe west-4 — Нидерланды. Все локации c GPU.4. Готово5. Выбираем справа Ресурсы -> Cloud Run. Здесь мы можем найти нашу ссылку, добавить CI/CD, посмотреть последние ошибки. Google недавно добавили 4Гб объема памяти. Все изменения Сloud Run6. Чтобы не было ошибок по памяти и наш сервис мог обрабатывать большие фотографии. Нажимаем Изменить и развернуть новую версию, выделяем 4Гб объем памяти и 2 выделенных ЦП.Мой рабочий вариант доступен по ссылке:komitetxselectel-373j5hpcvq-ez.a.run.appServingТолько jpeg/jpg файлы.ОчисткаСам сервис Cloud Run на одном проекте бесплатен, но за хранения образа могут снимать деньги. 1. Выбираем справа Хранение данных -> Storage и удаляем артефакты.Контейнер придется пересобиратьЗаключениеОтправляйте свои рабочие версии в комментарии или задавайте любые интересующие вас вопросы. Мне будет приятно.Пообщаться лично — пишите в директ инстаграм @p1x31lat3dХочу сказать спасибо организатором конкурса комитету и selectel. Это был интересный опыт написания статьи здесь. Редактор супер классный!#нейросети #разработка #selectel #selectel_инструкция
Супер! Спасибо большое за крутую лабу)) Спустя 3 года работает