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» .
Шаг 3. Создайте экземпляр Vertex AI Workbench.
В разделе Vertex AI облачной консоли нажмите Workbench:
Включите API ноутбуков, если это еще не сделано.
После включения нажмите «УПРАВЛЯЕМЫЕ НОУТБУКЫ» :
Затем выберите НОВЫЙ НОУТБУК .
Дайте записной книжке имя и нажмите «Дополнительные настройки» .
В разделе «Дополнительные настройки» включите выключение в режиме ожидания и установите количество минут, равное 60. Это означает, что ваш ноутбук будет автоматически отключаться, когда он не используется, поэтому вы не несете ненужных затрат.
Все остальные дополнительные настройки вы можете оставить как есть.
Далее нажмите Создать .
После создания экземпляра выберите «Открыть JupyterLab» .
При первом использовании нового экземпляра вам будет предложено пройти аутентификацию.
Vertex AI Workbench имеет уровень совместимости вычислений, который позволяет запускать ядра для TensorFlow, PySpark, R и т. д. из одного экземпляра ноутбука. После аутентификации вы сможете выбрать тип блокнота, который хотите использовать, в панели запуска.
Для этой лабораторной работы выберите ядро TensorFlow 2.
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
во время выполнения.
Сначала выберите ячейку и щелкните инспектор свойств на правой панели.
Теги – это простой способ добавить метаданные в записную книжку. Введите «параметры» в поле «Добавить тег» и нажмите Enter. Позже при настройке выполнения вы передадите разные значения, в данном случае модель TensorFlow Hub, которую вы хотите протестировать. Обратите внимание, что вам необходимо ввести слово «параметры» (а не какое-либо другое слово), поскольку именно так исполнитель записной книжки узнает, какие ячейки следует параметризовать.
Вы можете закрыть инспектор свойств, снова щелкнув значок двойной шестеренки.
Создайте новую ячейку и определите 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. Настройте задание обучения
Дайте своему исполнению имя и предоставьте в проекте сегмент хранения.
Установите тип машины на 4 процессора, 15 ГБ ОЗУ .
И добавьте 1 графический процессор NVIDIA .
Установите среду TensorFlow Enterprise 2.6 (GPU).
Выберите «Одноразовое выполнение».
Шаг 2. Настройте параметры
Нажмите раскрывающийся список «ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ» , чтобы установить параметр. В поле введите feature_extractor_model=resnet_v2_50
. Это переопределит inception_v3
, значение по умолчанию, которое вы установили для этого параметра в записной книжке, на resnet_v2_50
.
Вы можете оставить флажок «Использовать учетную запись службы по умолчанию» .
Затем нажмите ОТПРАВИТЬ
Шаг 3: Изучите результаты
На вкладке «Выполнения» в пользовательском интерфейсе консоли вы сможете увидеть статус выполнения вашего блокнота.
Если вы щелкните имя выполнения, вы перейдете к заданию Vertex AI Training, в котором работает ваш ноутбук.
Когда задание будет завершено, вы сможете просмотреть блокнот с результатами, нажав ПРОСМОТРЕТЬ РЕЗУЛЬТАТ .
В выходной записной книжке вы увидите, что значение feature_extractor_model
было перезаписано значением, которое вы передали во время выполнения.
🎉Поздравляем! 🎉
Вы узнали, как использовать Vertex AI Workbench, чтобы:
- Использование параметров в записной книжке
- Настройте и запустите выполнение блокнотов из пользовательского интерфейса Vertex AI Workbench.
Чтобы узнать больше о различных частях Vertex AI, ознакомьтесь с документацией .
7. Очистка
По умолчанию управляемые блокноты автоматически отключаются после 180 минут бездействия. Если вы хотите вручную завершить работу экземпляра, нажмите кнопку «Стоп» в разделе консоли Vertex AI Workbench. Если вы хотите полностью удалить блокнот, нажмите кнопку «Удалить».
Чтобы удалить сегмент хранилища, в меню навигации облачной консоли перейдите к разделу «Хранилище», выберите сегмент и нажмите «Удалить»: