Vertex AI Workbench: создание модели классификации изображений с помощью трансферного обучения и исполнителя блокнотов.

1. Обзор

В этой лабораторной работе вы узнаете, как настраивать и запускать выполнение блокнотов с помощью Vertex AI Workbench.

Что вы узнаете

Вы узнаете, как:

  • Использование параметров в записной книжке
  • Настройте и запустите выполнение блокнотов из пользовательского интерфейса Vertex AI Workbench.

Общая стоимость запуска этой лаборатории в Google Cloud составляет около 2 долларов США .

2. Знакомство с Vertex AI

В этой лаборатории используются новейшие продукты искусственного интеллекта, доступные в Google Cloud. Vertex AI интегрирует предложения машинного обучения в Google Cloud в единый процесс разработки. Раньше модели, обученные с помощью AutoML, и пользовательские модели были доступны через отдельные сервисы. Новое предложение объединяет оба API в одном API, а также другие новые продукты. Вы также можете перенести существующие проекты на Vertex AI. Если у вас есть какие-либо отзывы, пожалуйста, посетите страницу поддержки .

Vertex AI включает в себя множество различных продуктов для поддержки комплексных рабочих процессов машинного обучения. Эта лабораторная работа будет посвящена Vertex AI Workbench .

Vertex AI Workbench помогает пользователям быстро создавать комплексные рабочие процессы на базе ноутбуков благодаря глубокой интеграции со службами данных (такими как Dataproc, Dataflow, BigQuery и Dataplex) и Vertex AI. Оно позволяет ученым, работающим с данными, подключаться к сервисам данных GCP, анализировать наборы данных, экспериментировать с различными методами моделирования, развертывать обученные модели в производстве и управлять MLOps на протяжении всего жизненного цикла модели.

3. Обзор вариантов использования

В этой лабораторной работе вы будете использовать трансферное обучение для обучения модели классификации изображений на наборе данных DeepWeeds из TensorFlow Datasets . Вы будете использовать TensorFlow Hub для экспериментов с векторами признаков, извлеченными из различных архитектур моделей, таких как ResNet50 , Inception и MobileNet , предварительно обученных на наборе эталонных данных ImageNet . Используя исполнитель записной книжки через пользовательский интерфейс Vertex AI Workbench, вы запустите задания в Vertex AI Training, в которых используются эти предварительно обученные модели, и переобучите последний уровень для распознавания классов из набора данных DeepWeeds.

4. Настройте свою среду

Для запуска этой лаборатории кода вам понадобится проект Google Cloud Platform с включенной оплатой. Чтобы создать проект, следуйте инструкциям здесь .

Шаг 1. Включите API Compute Engine.

Перейдите к Compute Engine и выберите «Включить» , если он еще не включен.

Шаг 2. Включите API Vertex AI.

Перейдите в раздел Vertex AI в облачной консоли и нажмите «Включить Vertex AI API» .

Панель управления Vertex AI

Шаг 3. Создайте экземпляр Vertex AI Workbench.

В разделе Vertex AI облачной консоли нажмите Workbench:

Меню вершинного AI

Включите API ноутбуков, если это еще не сделано.

Notebook_api

После включения нажмите «УПРАВЛЯЕМЫЕ НОУТБУКЫ» :

Ноутбуки_UI

Затем выберите НОВЫЙ НОУТБУК .

новый_ноутбук

Дайте записной книжке имя и нажмите «Дополнительные настройки» .

create_notebook

В разделе «Дополнительные настройки» включите выключение в режиме ожидания и установите количество минут, равное 60. Это означает, что ваш ноутбук будет автоматически отключаться, когда он не используется, поэтому вы не несете ненужных затрат.

Idle_timeout

Все остальные дополнительные настройки вы можете оставить как есть.

Далее нажмите Создать .

После создания экземпляра выберите «Открыть JupyterLab» .

open_jupyterlab

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

аутентифицировать

Vertex AI Workbench имеет уровень совместимости вычислений, который позволяет запускать ядра для TensorFlow, PySpark, R и т. д. из одного экземпляра ноутбука. После аутентификации вы сможете выбрать тип блокнота, который хотите использовать, в панели запуска.

Для этой лабораторной работы выберите ядро ​​TensorFlow 2.

tf_kernel

5. Напишите обучающий код

Набор данных DeepWeeds состоит из 17 509 изображений, на которых запечатлены восемь различных видов сорняков, произрастающих в Австралии. В этом разделе вы напишете код для предварительной обработки набора данных DeepWeeds, а также построите и обучите модель классификации изображений с использованием векторов признаков, загруженных из TensorFlow Hub.

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

Шаг 1. Загрузите и предварительно обработайте набор данных.

Сначала установите ночную версию наборов данных TensorFlow, чтобы убедиться, что мы получаем последнюю версию набора данных DeepWeeds.

!pip install tfds-nightly

Затем импортируйте необходимые библиотеки:

import tensorflow as tf
import tensorflow_datasets as tfds
import tensorflow_hub as hub

Загрузите данные из наборов данных TensorFlow и извлеките количество классов и размер набора данных.

data, info = tfds.load(name='deep_weeds', as_supervised=True, with_info=True)
NUM_CLASSES = info.features['label'].num_classes
DATASET_SIZE = info.splits['train'].num_examples

Определите функцию предварительной обработки для масштабирования данных изображения на 255.

def preprocess_data(image, label):
  image = tf.image.resize(image, (300,300))
  return tf.cast(image, tf.float32) / 255., label

В наборе данных DeepWeeds нет разделения на обучение и проверку. Он поставляется только с набором обучающих данных. В приведенном ниже коде вы будете использовать 80 % этих данных для обучения, а оставшиеся 20 % — для проверки.

# Create train/validation splits

# Shuffle dataset
dataset = data['train'].shuffle(1000)

train_split = 0.8
val_split = 0.2
train_size = int(train_split * DATASET_SIZE)
val_size = int(val_split * DATASET_SIZE)

train_data = dataset.take(train_size)
train_data  = train_data.map(preprocess_data)
train_data  = train_data.batch(64)

validation_data = dataset.skip(train_size)
validation_data  = validation_data.map(preprocess_data)
validation_data  = validation_data.batch(64)

Шаг 2: Создайте модель

Теперь, когда вы создали наборы данных для обучения и проверки, вы готовы построить свою модель. TensorFlow Hub предоставляет векторы признаков, которые представляют собой предварительно обученные модели без верхнего слоя классификации. Вы создадите экстрактор функций, обернув предварительно обученную модель hub.KerasLayer , который оборачивает SavedModel TensorFlow как слой Keras. Затем вы добавите слой классификации и создадите модель с помощью Keras Sequential API.

Сначала определите параметр feature_extractor_model , который является именем вектора объектов TensorFlow Hub, который вы будете использовать в качестве основы для своей модели.

feature_extractor_model = "inception_v3"

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

Сначала выберите ячейку и щелкните инспектор свойств на правой панели.

property_inspector

Теги – это простой способ добавить метаданные в записную книжку. Введите «параметры» в поле «Добавить тег» и нажмите Enter. Позже при настройке выполнения вы передадите разные значения, в данном случае модель TensorFlow Hub, которую вы хотите протестировать. Обратите внимание, что вам необходимо ввести слово «параметры» (а не какое-либо другое слово), поскольку именно так исполнитель записной книжки узнает, какие ячейки следует параметризовать.

add_tag

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

Создайте новую ячейку и определите tf_hub_uri , где вы будете использовать строковую интерполяцию для замены имени предварительно обученной модели, которую вы хотите использовать в качестве базовой модели для конкретного выполнения вашего блокнота. По умолчанию для feature_extractor_model установлено значение "inception_v3" , но другими допустимыми значениями являются "resnet_v2_50" или "mobilenet_v1_100_224" . Дополнительные возможности вы можете изучить в каталоге TensorFlow Hub .

tf_hub_uri = f"https://tfhub.dev/google/imagenet/{feature_extractor_model}/feature_vector/5"

Затем создайте экстрактор функций, hub.KerasLayer и передав ему tf_hub_uri , определенный выше. Установите аргумент trainable=False чтобы заморозить переменные, чтобы обучение изменяло только новый слой классификатора, который вы добавите поверх.

feature_extractor_layer = hub.KerasLayer(
    tf_hub_uri,
    trainable=False)

Чтобы завершить модель, оберните слой извлечения объектов в модель tf.keras.Sequential и добавьте полносвязный слой для классификации. Количество единиц в этой главе классификации должно быть равно количеству классов в наборе данных:

model = tf.keras.Sequential([
  feature_extractor_layer,
  tf.keras.layers.Dense(units=NUM_CLASSES)
])

Наконец, скомпилируйте и подгоните модель.

model.compile(
  optimizer=tf.keras.optimizers.Adam(),
  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
  metrics=['acc'])

model.fit(train_data, validation_data=validation_data, epochs=3)

6. Выполнить блокнот

Нажмите значок «Исполнитель» в верхней части блокнота.

исполнитель

Шаг 1. Настройте задание обучения

Дайте своему исполнению имя и предоставьте в проекте сегмент хранения.

executor_config

Установите тип машины на 4 процессора, 15 ГБ ОЗУ .

И добавьте 1 графический процессор NVIDIA .

Установите среду TensorFlow Enterprise 2.6 (GPU).

Выберите «Одноразовое выполнение».

Шаг 2. Настройте параметры

Нажмите раскрывающийся список «ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ» , чтобы установить параметр. В поле введите feature_extractor_model=resnet_v2_50 . Это переопределит inception_v3 , значение по умолчанию, которое вы установили для этого параметра в записной книжке, на resnet_v2_50 .

Advanced_options

Вы можете оставить флажок «Использовать учетную запись службы по умолчанию» .

Затем нажмите ОТПРАВИТЬ

Шаг 3: Изучите результаты

На вкладке «Выполнения» в пользовательском интерфейсе консоли вы сможете увидеть статус выполнения вашего блокнота.

выполнения_UI

Если вы щелкните имя выполнения, вы перейдете к заданию Vertex AI Training, в котором работает ваш ноутбук.

vertex_training

Когда задание будет завершено, вы сможете просмотреть блокнот с результатами, нажав ПРОСМОТРЕТЬ РЕЗУЛЬТАТ .

view_result

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

param_cells

🎉Поздравляем! 🎉

Вы узнали, как использовать Vertex AI Workbench, чтобы:

  • Использование параметров в записной книжке
  • Настройте и запустите выполнение блокнотов из пользовательского интерфейса Vertex AI Workbench.

Чтобы узнать больше о различных частях Vertex AI, ознакомьтесь с документацией .

7. Очистка

По умолчанию управляемые блокноты автоматически отключаются после 180 минут бездействия. Если вы хотите вручную завершить работу экземпляра, нажмите кнопку «Стоп» в разделе консоли Vertex AI Workbench. Если вы хотите полностью удалить блокнот, нажмите кнопку «Удалить».

удалить

Чтобы удалить сегмент хранилища, в меню навигации облачной консоли перейдите к разделу «Хранилище», выберите сегмент и нажмите «Удалить»:

Удалить хранилище