From f75352aaae992bf0ef4a7f58dcd68bce8cfd9ae9 Mon Sep 17 00:00:00 2001 From: Rajesh Thallam Date: Mon, 16 Aug 2021 09:44:37 -0700 Subject: [PATCH] [community-content] PyTorch on Google Cloud Vertex AI - Blog related notebook and scripts (#23) * pytorch on vertex: initial commit * pytorch on vertex: reorg dir structure with new repo changes * pytorch on vertex: add cleanup script and update README files * pytorch on vertex: remove references to bucket names * PyTorch on Vertex: Updated with linter suggested changes * PyTorch on Vertex: dry-run and set resource names consistent with app name * PyTorch on Vertex: update CODEOWNERS * Pytorch on Vertex: Reorganized directory structure --- .../README.md | 20 + .../custom_container/Dockerfile | 20 + .../custom_container/README.md | 66 + .../custom_container/scripts/train-cloud.sh | 72 + .../custom_container/trainer | 1 + .../images/bert-model-fine-tuning.png | Bin 0 -> 29126 bytes .../images/custom-training-on-vertex-ai.png | Bin 0 -> 81033 bytes ...h-custom-containers-on-vertex-training.png | Bin 0 -> 54836 bytes ...tex-predictions-with-custom-containers.png | Bin 0 -> 79028 bytes ...h-custom-containers-on-vertex-training.png | Bin 0 -> 43570 bytes ...prebuilt-containers-on-vertex-training.png | Bin 0 -> 34153 bytes ...-training-monitor-custom-job-container.png | Bin 0 -> 64360 bytes .../vertex-training-monitor-custom-job.png | Bin 0 -> 71997 bytes ...raining-monitor-hptuning-job-container.png | Bin 0 -> 96386 bytes .../predictor/Dockerfile | 27 + .../predictor/custom_text_handler.py | 91 + .../predictor/index_to_name.json | 5 + .../python_package/README.md | 58 + .../python_package/scripts/train-cloud.sh | 62 + .../python_package/setup.py | 24 + .../python_package/trainer/__init__.py | 0 .../python_package/trainer/experiment.py | 134 + .../python_package/trainer/metadata.py | 31 + .../python_package/trainer/model.py | 31 + .../python_package/trainer/task.py | 104 + .../python_package/trainer/utils.py | 99 + ...fication-vertex-ai-train-tune-deploy.ipynb | 4012 +++++++++++++++++ docs/CODEOWNERS | 1 + 28 files changed, 4858 insertions(+) create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/README.md create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/Dockerfile create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/README.md create mode 100755 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/scripts/train-cloud.sh create mode 120000 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/trainer create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/bert-model-fine-tuning.png create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/custom-training-on-vertex-ai.png create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/hp-tuning-with-custom-containers-on-vertex-training.png create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/serve-pytorch-model-on-vertex-predictions-with-custom-containers.png create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/training-with-custom-containers-on-vertex-training.png create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/training-with-prebuilt-containers-on-vertex-training.png create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/vertex-training-monitor-custom-job-container.png create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/vertex-training-monitor-custom-job.png create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/vertex-training-monitor-hptuning-job-container.png create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/Dockerfile create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/custom_text_handler.py create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/index_to_name.json create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/README.md create mode 100755 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/scripts/train-cloud.sh create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/setup.py create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/__init__.py create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/experiment.py create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/metadata.py create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/model.py create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/task.py create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/utils.py create mode 100644 community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/README.md b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/README.md new file mode 100644 index 000000000..025845d8e --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/README.md @@ -0,0 +1,20 @@ +# PyTorch on Google Cloud: Text Classification + +In the PyTorch on Google Cloud series of blog posts, we aim to share how to build, train and deploy PyTorch models at scale and how to create reproducible machine learning pipelines on Google Cloud with [Vertex AI](https://cloud.google.com/vertex-ai). + +This tutorial on text classification shows how to train a PyTorch based text classification model by fine tuning a pre-trained Huggingface Transformers model and deploy the model on [Vertex AI](https://cloud.google.com/vertex-ai/docs/start/client-libraries#python) using Vertex SDK and [`gcloud ai`](https://cloud.google.com/sdk/gcloud/reference/beta/ai). + +## Notebooks + +|

Notebook

|

Description

| +| :-------- | :------- | +| [pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb](./pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb) | Notebook to show training, hyper-parameter tuning and deploying a PyTorch model on Vertex AI | + +## Folders + + +|

Folder Name

|

Description

| +| :-------- | :------- | +| [`python_package`](./python_package) | Folder with scripts to train and tune the text classification model using PyTorch and Hugging Face Transformers. In the [notebook](./pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb), this folder is used for submitting a training job on Vertex AI using pre-built PyTorch containers. | +| [`custom_container`](./custom_container) | Folder with reference to training scripts in [`python_package`](./python_package)folder including a `Dockerfile` to build a custom container. In the [notebook](./pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb), this folder is used for submitting a training job and hyper-parameter tuning job on Vertex AI using custom containers. | +| [`predictor`](./predictor) | Folder with TorchServe prediction handler and Dockerfile to build a custom container with TorchServe. In the [notebook](./pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb), this folder is used for deploying a PyTorch model on Vertex AI using custom containers by running [TorchServe HTTP server](https://pytorch.org/serve/) | \ No newline at end of file diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/Dockerfile b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/Dockerfile new file mode 100644 index 000000000..5ef6d92c8 --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/Dockerfile @@ -0,0 +1,20 @@ + +# Use pytorch GPU base image +FROM gcr.io/cloud-aiplatform/training/pytorch-gpu.1-7 + +# set working directory +WORKDIR /app + +# Install required packages +RUN pip install google-cloud-storage transformers datasets tqdm cloudml-hypertune + +# Copies the trainer code to the docker image. +COPY ./trainer/__init__.py /app/trainer/__init__.py +COPY ./trainer/experiment.py /app/trainer/experiment.py +COPY ./trainer/utils.py /app/trainer/utils.py +COPY ./trainer/metadata.py /app/trainer/metadata.py +COPY ./trainer/model.py /app/trainer/model.py +COPY ./trainer/task.py /app/trainer/task.py + +# Set up the entry point to invoke the trainer. +ENTRYPOINT ["python", "-m", "trainer.task"] diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/README.md b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/README.md new file mode 100644 index 000000000..a8383104e --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/README.md @@ -0,0 +1,66 @@ +# PyTorch Custom Containers GPU Template + +## Overview + +The directory provides code to fine tune a transformer model ([BERT-base](https://huggingface.co/bert-base-cased)) from Huggingface Transformers Library for sentiment analysis task. [BERT](https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html) (Bidirectional Encoder Representations from Transformers) is a transformers model pre-trained on a large corpus of unlabeled text in a self-supervised fashion. In this sample, we use [IMDB sentiment classification dataset](https://huggingface.co/datasets/imdb) for the task. We show you packaging a PyTorch training model to submit it to Vertex AI using pre-built PyTorch containers and handling Python dependencies using [Vertex Training custom containers](https://cloud.google.com/vertex-ai/docs/training/create-custom-container?hl=hr). + +## Prerequisites + +* Setup your project by following the instructions from [documentation](https://cloud.google.com/vertex-ai/docs/start/cloud-environment) +* [Setup docker with Cloud Container Registry](https://cloud.google.com/container-registry/docs/pushing-and-pulling) +* Change the directory to this sample and run + +`Note:` These instructions are used for local testing. When you submit a training job, no code will be executed on your local machine. + + +## Directory Structure + +* `trainer` directory: all Python modules to train the model. +* `scripts` directory: command-line scripts to train the model on Vertex AI. +* `setup.py`: `setup.py` scripts specifies Python dependencies required for the training job. Vertex Training uses pip to install the package on the training instances allocated for the job. + +### Trainer Modules +| File Name | Purpose | +| :-------- | :------ | +| [metadata.py](trainer/metadata.py) | Defines: metadata for classification task such as predefined model dataset name, target labels. | +| [utils.py](trainer/utils.py) | Includes: utility functions such as data input functions to read data, save model to GCS bucket. | +| [model.py](trainer/model.py) | Includes: function to create model with a sequence classification head from a pretrained model. | +| [experiment.py](trainer/experiment.py) | Runs the model training and evaluation experiment, and exports the final model. | +| [task.py](trainer/task.py) | Includes: 1) Initialize and parse task arguments (hyper parameters), and 2) Entry point to the trainer. | + +### Scripts + +* [train-cloud.sh](scripts/train-cloud.sh) This script builds your Docker image locally, pushes the image to Container Registry and submits a custom container training job to Vertex AI. + +Please read the [documentation](https://cloud.google.com/vertex-ai/docs/training/containers-overview?hl=hr) on Vertex Training with Custom Containers for more details. + +## How to run + +Once the prerequisites are satisfied, you may: + +1. For local testing, run (refer [notebook](../pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb) for instructions): + ``` + CUSTOM_TRAIN_IMAGE_URI='gcr.io/{PROJECT_ID}/pytorch_gpu_train_{APP_NAME}' + cd ./custom_container/ && docker build -f Dockerfile -t $CUSTOM_TRAIN_IMAGE_URI ../python_package + docker run --gpus all -it --rm $CUSTOM_TRAIN_IMAGE_URI + ``` +2. For cloud testing, run: + ``` + source ./scripts/train-cloud.sh + ``` + +## Run on GPU +The provided trainer code runs on a GPU if one is available including data loading and model creation. + +To run the trainer code on a different GPU configuration or latest PyTorch pre-built container image, make the following changes to the trainer script. +* Update the PyTorch image URI to one of [PyTorch pre-built containers](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers#available_container_images) +* Update the [`worker-pool-spec`](https://cloud.google.com/vertex-ai/docs/training/configure-compute?hl=hr) in the gcloud command that includes a GPU + +Then, run the script to submit a Custom Job on Vertex Training job: +``` +source ./scripts/train-cloud.sh +``` + +### Versions +This script uses the pre-built PyTorch containers for PyTorch 1.7. +* `us-docker.pkg.dev/vertex-ai/training/pytorch-gpu.1-7:latest` diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/scripts/train-cloud.sh b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/scripts/train-cloud.sh new file mode 100755 index 000000000..486ea2630 --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/scripts/train-cloud.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# Copyright 2019 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +# This script performs cloud training for a PyTorch model. + +echo "Submitting PyTorch model training job to Vertex AI" + +# PROJECT_ID: Change to your project id +PROJECT_ID=$(gcloud config list --format 'value(core.project)') + +# BUCKET_NAME: Change to your bucket name. +BUCKET_NAME="[your-bucket-name]" # <-- CHANGE TO YOUR BUCKET NAME +BUCKET_NAME=cloud-ai-platform-2f444b6a-a742-444b-b91a-c7519f51bd77 + +# JOB_NAME: the name of your job running on AI Platform. +JOB_PREFIX="finetuned-bert-classifier-pytorch-cstm-cntr-" +JOB_NAME=${JOB_PREFIX}-$(date +%Y%m%d%H%M%S)-custom-job + +# This can be a GCS location to a zipped and uploaded package +PACKAGE_PATH=./trainer + +# REGION: select a region from https://cloud.google.com/vertex-ai/docs/general/locations#available_regions +# or use the default '`us-central1`'. The region is where the job will be run. +REGION="us-central1" + +# JOB_DIR: Where to store prepared package and upload output model. +JOB_DIR=gs://${BUCKET_NAME}/${JOB_PREFIX}/models/${JOB_NAME} + +# IMAGE_REPO_NAME: set a local repo name to distinquish our image +IMAGE_REPO_NAME=pytorch_gpu_train_finetuned-bert-classifier + +# IMAGE_TAG: an easily identifiable tag for your docker image +IMAGE_TAG=latest + +# IMAGE_URI: the complete URI location for Cloud Container Registry +CUSTOM_TRAIN_IMAGE_URI=gcr.io/${PROJECT_ID}/${IMAGE_REPO_NAME}:${IMAGE_TAG} + +# Build the docker image +docker build --no-cache -f Dockerfile -t $CUSTOM_TRAIN_IMAGE_URI ../python_package + +# Deploy the docker image to Cloud Container Registry +docker push ${CUSTOM_TRAIN_IMAGE_URI} + +# Submit Custom Job to Vertex AI +gcloud beta ai custom-jobs create \ + --display-name=${JOB_NAME} \ + --region ${REGION} \ + --worker-pool-spec=replica-count=1,machine-type='n1-standard-8',accelerator-type='NVIDIA_TESLA_V100',accelerator-count=1,container-image-uri=${CUSTOM_TRAIN_IMAGE_URI} \ + --args="--model-name","finetuned-bert-classifier","--job-dir",$JOB_DIR + +echo "After the job is completed successfully, model files will be saved at $JOB_DIR/" + +# uncomment following lines to monitor the job progress by streaming logs + +# Stream the logs from the job +# gcloud ai custom-jobs stream-logs $(gcloud ai custom-jobs list --region=$REGION --filter="displayName:"$JOB_NAME --format="get(name)") + +# # Verify the model was exported +# echo "Verify the model was exported:" +# gsutil ls ${JOB_DIR}/ \ No newline at end of file diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/trainer b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/trainer new file mode 120000 index 000000000..954d5e224 --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/custom_container/trainer @@ -0,0 +1 @@ +../python_package/trainer \ No newline at end of file diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/bert-model-fine-tuning.png b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/bert-model-fine-tuning.png new file mode 100644 index 0000000000000000000000000000000000000000..0547e0f344dda44c0923a5c281fb8a4a1f3f21e3 GIT binary patch literal 29126 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 literal 0 HcmV?d00001 diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/custom-training-on-vertex-ai.png b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/custom-training-on-vertex-ai.png new file mode 100644 index 0000000000000000000000000000000000000000..11296359260e27003399f266cf7ff3da5858a5a9 GIT binary patch literal 81033 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 z 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 KOmIf-3I7iWvNL=D literal 0 HcmV?d00001 diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/training-with-prebuilt-containers-on-vertex-training.png b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/training-with-prebuilt-containers-on-vertex-training.png new file mode 100644 index 0000000000000000000000000000000000000000..bc866d93b32b8b4fc8d3c0c589355cf3a64f7ad6 GIT binary patch literal 34153 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 p|Fhit=a9fr@6yz%iXy6DE_=5S;`SO3A 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

m^n-#?vpdyKy37opC$Wn1if8x?jf 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 Yi-!`zw!r5M3;a@+SAS4^-#Fm^0q%`LzyJUM literal 0 HcmV?d00001 diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/Dockerfile b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/Dockerfile new file mode 100644 index 000000000..a831130a5 --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/Dockerfile @@ -0,0 +1,27 @@ + +FROM pytorch/torchserve:latest-cpu + +# install dependencies +RUN pip3 install transformers + +# copy model artifacts, custom handler and other dependencies +COPY ./custom_text_handler.py /home/model-server/ +COPY ./index_to_name.json /home/model-server/ +COPY ./model/finetuned-bert-classifier/ /home/model-server/ + +# create torchserve configuration file +USER root +RUN printf "\nservice_envelope=json" >> /home/model-server/config.properties +RUN printf "\ninference_address=http://0.0.0.0:7080" >> /home/model-server/config.properties +RUN printf "\nmanagement_address=http://0.0.0.0:7081" >> /home/model-server/config.properties +USER model-server + +# expose health and prediction listener ports from the image +EXPOSE 7080 +EXPOSE 7081 + +# create model archive file packaging model artifacts and dependencies +RUN torch-model-archiver -f --model-name=finetuned-bert-classifier --version=1.0 --serialized-file=/home/model-server/pytorch_model.bin --handler=/home/model-server/custom_text_handler.py --extra-files "/home/model-server/config.json,/home/model-server/tokenizer.json,/home/model-server/training_args.bin,/home/model-server/tokenizer_config.json,/home/model-server/special_tokens_map.json,/home/model-server/vocab.txt,/home/model-server/index_to_name.json" --export-path=/home/model-server/model-store + +# run Torchserve HTTP serve to respond to prediction requests +CMD ["torchserve", "--start", "--ts-config=/home/model-server/config.properties", "--models", "finetuned-bert-classifier=finetuned-bert-classifier.mar", "--model-store", "/home/model-server/model-store"] diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/custom_text_handler.py b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/custom_text_handler.py new file mode 100644 index 000000000..78e73be7a --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/custom_text_handler.py @@ -0,0 +1,91 @@ + +import os +import json +import logging + +import torch +from transformers import AutoModelForSequenceClassification, AutoTokenizer +from ts.torch_handler.base_handler import BaseHandler + +logger = logging.getLogger(__name__) + + +class TransformersClassifierHandler(BaseHandler): + """ + The handler takes an input string and returns the classification text + based on the serialized transformers checkpoint. + """ + def __init__(self): + super(TransformersClassifierHandler, self).__init__() + self.initialized = False + + def initialize(self, ctx): + """ Loads the model.pt file and initialized the model object. + Instantiates Tokenizer for preprocessor to use + Loads labels to name mapping file for post-processing inference response + """ + self.manifest = ctx.manifest + + properties = ctx.system_properties + model_dir = properties.get("model_dir") + self.device = torch.device("cuda:" + str(properties.get("gpu_id")) if torch.cuda.is_available() else "cpu") + + # Read model serialize/pt file + serialized_file = self.manifest["model"]["serializedFile"] + model_pt_path = os.path.join(model_dir, serialized_file) + if not os.path.isfile(model_pt_path): + raise RuntimeError("Missing the model.pt or pytorch_model.bin file") + + # Load model + self.model = AutoModelForSequenceClassification.from_pretrained(model_dir) + self.model.to(self.device) + self.model.eval() + logger.debug('Transformer model from path {0} loaded successfully'.format(model_dir)) + + # Ensure to use the same tokenizer used during training + self.tokenizer = AutoTokenizer.from_pretrained('bert-base-cased') + + # Read the mapping file, index to object name + mapping_file_path = os.path.join(model_dir, "index_to_name.json") + + if os.path.isfile(mapping_file_path): + with open(mapping_file_path) as f: + self.mapping = json.load(f) + else: + logger.warning('Missing the index_to_name.json file. Inference output will not include class name.') + + self.initialized = True + + def preprocess(self, data): + """ Preprocessing input request by tokenizing + Extend with your own preprocessing steps as needed + """ + text = data[0].get("data") + if text is None: + text = data[0].get("body") + sentences = text.decode('utf-8') + logger.info("Received text: '%s'", sentences) + + # Tokenize the texts + tokenizer_args = ((sentences,)) + inputs = self.tokenizer(*tokenizer_args, + padding='max_length', + max_length=128, + truncation=True, + return_tensors = "pt") + return inputs + + def inference(self, inputs): + """ Predict the class of a text using a trained transformer model. + """ + prediction = self.model(inputs['input_ids'].to(self.device))[0].argmax().item() + + if self.mapping: + prediction = self.mapping[str(prediction)] + + logger.info("Model predicted: '%s'", prediction) + return [prediction] + + def postprocess(self, inference_output): + return inference_output + diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/index_to_name.json b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/index_to_name.json new file mode 100644 index 000000000..89b1004b2 --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/predictor/index_to_name.json @@ -0,0 +1,5 @@ + +{ + "0": "Negative", + "1": "Positive" +} diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/README.md b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/README.md new file mode 100644 index 000000000..2f61215d5 --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/README.md @@ -0,0 +1,58 @@ +# PyTorch - Python Package Training + +## Overview + +The directory provides code to fine tune a transformer model ([BERT-base](https://huggingface.co/bert-base-cased)) from Huggingface Transformers Library for sentiment analysis task. [BERT](https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html) (Bidirectional Encoder Representations from Transformers) is a transformers model pre-trained on a large corpus of unlabeled text in a self-supervised fashion. In this sample, we use [IMDB sentiment classification dataset](https://huggingface.co/datasets/imdb) for the task. We show you packaging a PyTorch training model to submit it to Vertex AI using pre-built PyTorch containers and handling Python dependencies through Python build scripts (`setup.py`). + +## Prerequisites +* Setup your project by following the instructions from [documentation](https://cloud.google.com/vertex-ai/docs/start/cloud-environment) +* Change directories to this sample. + +## Directory Structure + +* `trainer` directory: all Python modules to train the model. +* `scripts` directory: command-line scripts to train the model on Vertex AI. +* `setup.py`: `setup.py` scripts specifies Python dependencies required for the training job. Vertex Training uses pip to install the package on the training instances allocated for the job. + +### Trainer Modules +| File Name | Purpose | +| :-------- | :------ | +| [metadata.py](trainer/metadata.py) | Defines: metadata for classification task such as predefined model dataset name, target labels. | +| [utils.py](trainer/utils.py) | Includes: utility functions such as data input functions to read data, save model to GCS bucket. | +| [model.py](trainer/model.py) | Includes: function to create model with a sequence classification head from a pretrained model. | +| [experiment.py](trainer/experiment.py) | Runs the model training and evaluation experiment, and exports the final model. | +| [task.py](trainer/task.py) | Includes: 1) Initialize and parse task arguments (hyper parameters), and 2) Entry point to the trainer. | + +### Scripts + +* [train-cloud.sh](scripts/train-cloud.sh) This script submits a training job to Vertex AI + +## How to run +For local testing, run: +``` +!cd python_package && python -m trainer.task +``` + +For cloud training, once the prerequisites are satisfied, update the +`BUCKET_NAME` environment variable in `scripts/train-cloud.sh`. You may then +run the following script to submit an AI Platform Training job: +``` +source ./python_package/scripts/train-cloud.sh +``` + +## Run on GPU +The provided trainer code runs on a GPU if one is available including data loading and model creation. + +To run the trainer code on a different GPU configuration or latest PyTorch pre-built container image, make the following changes to the trainer script. +* Update the PyTorch image URI to one of [PyTorch pre-built containers](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers#available_container_images) +* Update the [`worker-pool-spec`](https://cloud.google.com/vertex-ai/docs/training/configure-compute?hl=hr) in the gcloud command that includes a GPU + +Then, run the script to submit a Custom Job on Vertex Training job: +``` +source ./scripts/train-cloud.sh +``` + +### Versions +This script uses the pre-built PyTorch containers for PyTorch 1.7. +* `us-docker.pkg.dev/vertex-ai/training/pytorch-gpu.1-7:latest` + diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/scripts/train-cloud.sh b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/scripts/train-cloud.sh new file mode 100755 index 000000000..3f0fc199d --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/scripts/train-cloud.sh @@ -0,0 +1,62 @@ +#!/bin/bash +# Copyright 2019 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +# This script performs cloud training for a PyTorch model. + +echo "Submitting Custom Job to Vertex AI to train PyTorch model" + +# BUCKET_NAME: Change to your bucket name +BUCKET_NAME="[your-bucket-name]" # <-- CHANGE TO YOUR BUCKET NAME +BUCKET_NAME="cloud-ai-platform-2f444b6a-a742-444b-b91a-c7519f51bd77" + +# The PyTorch image provided by Vertex AI Training. +IMAGE_URI="us-docker.pkg.dev/vertex-ai/training/pytorch-gpu.1-7:latest" + +# JOB_NAME: the name of your job running on Vertex AI. +JOB_PREFIX="finetuned-bert-classifier-pytorch-pkg-ar-" +JOB_NAME=${JOB_PREFIX}-$(date +%Y%m%d%H%M%S)-custom-job + +# REGION: select a region from https://cloud.google.com/vertex-ai/docs/general/locations#available_regions +# or use the default '`us-central1`'. The region is where the job will be run. +REGION="us-central1" + +# JOB_DIR: Where to store prepared package and upload output model. +JOB_DIR=gs://${BUCKET_NAME}/${JOB_PREFIX}/model/${JOB_NAME} + +# validate bucket name +if [ "${BUCKET_NAME}" = "[your-bucket-name]" ] +then + echo "[ERROR] INVALID VALUE: Please update the variable BUCKET_NAME with valid Cloud Storage bucket name. Exiting the script..." + exit 1 +fi + +# Submit Custom Job to Vertex AI +gcloud beta ai custom-jobs create \ + --display-name=${JOB_NAME} \ + --region ${REGION} \ + --python-package-uris=${PACKAGE_PATH} \ + --worker-pool-spec=replica-count=1,machine-type='n1-standard-8',accelerator-type='NVIDIA_TESLA_V100',accelerator-count=1,executor-image-uri=${IMAGE_URI},python-module='trainer.task',local-package-path="../python_package/" \ + --args="--model-name","finetuned-bert-classifier","--job-dir",$JOB_DIR + +echo "After the job is completed successfully, model files will be saved at $JOB_DIR/" + +# uncomment following lines to monitor the job progress by streaming logs + +# Stream the logs from the job +# gcloud ai custom-jobs stream-logs $(gcloud ai custom-jobs list --region=$REGION --filter="displayName:"$JOB_NAME --format="get(name)") + +# # Verify the model was exported +# echo "Verify the model was exported:" +# gsutil ls ${JOB_DIR}/ diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/setup.py b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/setup.py new file mode 100644 index 000000000..cffe4878f --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/setup.py @@ -0,0 +1,24 @@ + +from setuptools import find_packages +from setuptools import setup +import setuptools + +from distutils.command.build import build as _build +import subprocess + + +REQUIRED_PACKAGES = [ + 'transformers', + 'datasets', + 'tqdm', + 'cloudml-hypertune' +] + +setup( + name='trainer', + version='0.1', + install_requires=REQUIRED_PACKAGES, + packages=find_packages(), + include_package_data=True, + description='Vertex AI | Training | PyTorch | Text Classification | Python Package' +) diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/__init__.py b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/experiment.py b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/experiment.py new file mode 100644 index 000000000..f20061c2b --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/experiment.py @@ -0,0 +1,134 @@ +# Copyright 2019 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the \"License\"); +# you may not use this file except in compliance with the License.\n", +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an \"AS IS\" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import numpy as np +import hypertune + +from transformers import ( + AutoTokenizer, + EvalPrediction, + Trainer, + TrainingArguments, + default_data_collator, + TrainerCallback +) + +from trainer import model, metadata, utils + + +class HPTuneCallback(TrainerCallback): + """ + A custom callback class that reports a metric to hypertuner + at the end of each epoch. + """ + + def __init__(self, metric_tag, metric_value): + super(HPTuneCallback, self).__init__() + self.metric_tag = metric_tag + self.metric_value = metric_value + self.hpt = hypertune.HyperTune() + + def on_evaluate(self, args, state, control, **kwargs): + print(f"HP metric {self.metric_tag}={kwargs['metrics'][self.metric_value]}") + self.hpt.report_hyperparameter_tuning_metric( + hyperparameter_metric_tag=self.metric_tag, + metric_value=kwargs['metrics'][self.metric_value], + global_step=state.epoch) + + +def compute_metrics(p: EvalPrediction): + preds = p.predictions[0] if isinstance(p.predictions, tuple) else p.predictions + preds = np.argmax(preds, axis=1) + return {"accuracy": (preds == p.label_ids).astype(np.float32).mean().item()} + + +def train(args, model, train_dataset, test_dataset): + """Create the training loop to load pretrained model and tokenizer and + start the training process + + Args: + args: read arguments from the runner to set training hyperparameters + model: The neural network that you are training + train_dataset: The training dataset + test_dataset: The test dataset for evaluation + """ + + # initialize the tokenizer + tokenizer = AutoTokenizer.from_pretrained( + metadata.PRETRAINED_MODEL_NAME, + use_fast=True, + ) + + # set training arguments + training_args = TrainingArguments( + evaluation_strategy="epoch", + learning_rate=args.learning_rate, + per_device_train_batch_size=args.batch_size, + per_device_eval_batch_size=args.batch_size, + num_train_epochs=args.num_epochs, + weight_decay=args.weight_decay, + output_dir=os.path.join("/tmp", args.model_name) + ) + + # initialize our Trainer + trainer = Trainer( + model, + training_args, + train_dataset=train_dataset, + eval_dataset=test_dataset, + data_collator=default_data_collator, + tokenizer=tokenizer, + compute_metrics=compute_metrics + ) + + # add hyperparameter tuning callback to report metrics when enabled + if args.hp_tune == "y": + trainer.add_callback(HPTuneCallback("accuracy", "eval_accuracy")) + + # training + trainer.train() + + return trainer + + +def run(args): + """Load the data, train, evaluate, and export the model for serving and + evaluating. + + Args: + args: experiment parameters. + """ + # Open our dataset + train_dataset, test_dataset = utils.load_data(args) + + label_list = train_dataset.unique("label") + num_labels = len(label_list) + + # Create the model, loss function, and optimizer + text_classifier = model.create(num_labels=num_labels) + + # Train / Test the model + trainer = train(args, text_classifier, train_dataset, test_dataset) + + # Export the trained model + trainer.save_model(os.path.join("/tmp", args.model_name)) + + # Save the model to GCS + if args.job_dir: + utils.save_model(args) + else: + print(f"Saved model files at {os.path.join('/tmp', args.model_name)}") + print(f"To save model files in GCS bucket, please specify job_dir starting with gs://") + diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/metadata.py b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/metadata.py new file mode 100644 index 000000000..9a6b1dfe2 --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/metadata.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +# Copyright 2019 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Task type can be either 'classification', 'regression', or 'custom'. +# This is based on the target feature in the dataset. +TASK_TYPE = 'classification' + +# Dataset name +DATASET_NAME = 'imdb' + +# pre-trained model name +PRETRAINED_MODEL_NAME = 'bert-base-cased' + +# List of the class values (labels) in a classification dataset. +TARGET_LABELS = {1:1, 0:0, -1:0} + + +# maximum sequence length +MAX_SEQ_LENGTH = 128 \ No newline at end of file diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/model.py b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/model.py new file mode 100644 index 000000000..31575a3f3 --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/model.py @@ -0,0 +1,31 @@ +# Copyright 2019 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the \"License\"); +# you may not use this file except in compliance with the License.\n", +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an \"AS IS\" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from transformers import AutoModelForSequenceClassification +from trainer import metadata + +def create(num_labels): + """create the model by loading a pretrained model or define your + own + + Args: + num_labels: number of target labels + """ + # Create the model, loss function, and optimizer + model = AutoModelForSequenceClassification.from_pretrained( + metadata.PRETRAINED_MODEL_NAME, + num_labels=num_labels + ) + + return model diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/task.py b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/task.py new file mode 100644 index 000000000..272447128 --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/task.py @@ -0,0 +1,104 @@ +# Copyright 2019 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the \"License\"); +# you may not use this file except in compliance with the License.\n", +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an \"AS IS\" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import os + +from trainer import experiment + + +def get_args(): + """Define the task arguments with the default values. + + Returns: + experiment parameters + """ + args_parser = argparse.ArgumentParser() + + + # Experiment arguments + args_parser.add_argument( + '--batch-size', + help='Batch size for each training and evaluation step.', + type=int, + default=16) + args_parser.add_argument( + '--num-epochs', + help="""\ + Maximum number of training data epochs on which to train. + If both --train-size and --num-epochs are specified, + --train-steps will be: (train-size/train-batch-size) * num-epochs.\ + """, + default=1, + type=int, + ) + args_parser.add_argument( + '--seed', + help='Random seed (default: 42)', + type=int, + default=42, + ) + + # Estimator arguments + args_parser.add_argument( + '--learning-rate', + help='Learning rate value for the optimizers.', + default=2e-5, + type=float) + args_parser.add_argument( + '--weight-decay', + help=""" + The factor by which the learning rate should decay by the end of the + training. + + decayed_learning_rate = + learning_rate * decay_rate ^ (global_step / decay_steps) + + If set to 0 (default), then no decay will occur. + If set to 0.5, then the learning rate should reach 0.5 of its original + value at the end of the training. + Note that decay_steps is set to train_steps. + """, + default=0.01, + type=float) + + # Enable hyperparameter + args_parser.add_argument( + '--hp-tune', + default="n", + help='Enable hyperparameter tuning. Valida values are: "y" - enable, "n" - disable') + + # Saved model arguments + args_parser.add_argument( + '--job-dir', + default=os.getenv('AIP_MODEL_DIR'), + help='GCS location to export models') + args_parser.add_argument( + '--model-name', + default="finetuned-bert-classifier", + help='The name of your saved model') + + return args_parser.parse_args() + + +def main(): + """Setup / Start the experiment + """ + args = get_args() + print(args) + experiment.run(args) + + +if __name__ == '__main__': + main() diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/utils.py b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/utils.py new file mode 100644 index 000000000..29687f243 --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/python_package/trainer/utils.py @@ -0,0 +1,99 @@ +# Copyright 2019 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the \"License\"); +# you may not use this file except in compliance with the License.\n", +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an \"AS IS\" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import datetime + +from google.cloud import storage + +from transformers import AutoTokenizer +from datasets import load_dataset, load_metric, ReadInstruction +from trainer import metadata + + +def preprocess_function(examples): + tokenizer = AutoTokenizer.from_pretrained( + metadata.PRETRAINED_MODEL_NAME, + use_fast=True, + ) + + # Tokenize the texts + tokenizer_args = ( + (examples['text'],) + ) + result = tokenizer(*tokenizer_args, + padding='max_length', + max_length=metadata.MAX_SEQ_LENGTH, + truncation=True) + + # TEMP: We can extract this automatically but Unique method of the dataset + # is not reporting the label -1 which shows up in the pre-processing + # Hence the additional -1 term in the dictionary + label_to_id = metadata.TARGET_LABELS + + # Map labels to IDs (not necessary for GLUE tasks) + if label_to_id is not None and "label" in examples: + result["label"] = [label_to_id[l] for l in examples["label"]] + + return result + + +def load_data(args): + """Loads the data into two different data loaders. (Train, Test) + + Args: + args: arguments passed to the python script + """ + # Dataset loading repeated here to make this cell idempotent + # Since we are over-writing datasets variable + dataset = load_dataset(metadata.DATASET_NAME) + + dataset = dataset.map(preprocess_function, + batched=True, + load_from_cache_file=True) + + train_dataset, test_dataset = dataset["train"], dataset["test"] + + return train_dataset, test_dataset + + +def save_model(args): + """Saves the model to Google Cloud Storage or local file system + + Args: + args: contains name for saved model. + """ + scheme = 'gs://' + if args.job_dir.startswith(scheme): + job_dir = args.job_dir.split("/") + bucket_name = job_dir[2] + object_prefix = "/".join(job_dir[3:]).rstrip("/") + + if object_prefix: + model_path = '{}/{}'.format(object_prefix, args.model_name) + else: + model_path = '{}'.format(args.model_name) + + bucket = storage.Client().bucket(bucket_name) + local_path = os.path.join("/tmp", args.model_name) + files = [f for f in os.listdir(local_path) if os.path.isfile(os.path.join(local_path, f))] + for file in files: + local_file = os.path.join(local_path, file) + blob = bucket.blob("/".join([model_path, file])) + blob.upload_from_filename(local_file) + print(f"Saved model files in gs://{bucket_name}/{model_path}") + else: + print(f"Saved model files at {os.path.join('/tmp', args.model_name)}") + print(f"To save model files in GCS bucket, please specify job_dir starting with gs://") + diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb new file mode 100644 index 000000000..87aa3fa66 --- /dev/null +++ b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb @@ -0,0 +1,4012 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "46d6c164544f" + }, + "outputs": [], + "source": [ + "# Copyright 2020 Google LLC\n", + "#\n", + "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", + "# you may not use this file except in compliance with the License.\n", + "# You may obtain a copy of the License at\n", + "#\n", + "# https://www.apache.org/licenses/LICENSE-2.0\n", + "#\n", + "# Unless required by applicable law or agreed to in writing, software\n", + "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", + "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", + "# See the License for the specific language governing permissions and\n", + "# limitations under the License." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rEJBSTyZIrIb" + }, + "source": [ + "# Training, Tuning and Deploying a PyTorch Text Classification Model on [Vertex AI](https://cloud.google.com/vertex-ai)\n", + "## Fine-tuning pre-trained [BERT](https://huggingface.co/bert-base-cased) model for sentiment classification task " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "X4cRE8IbIrIV" + }, + "source": [ + "# Overview\n", + "\n", + "This example is inspired from Token-Classification [notebook](https://github.com/huggingface/notebooks/blob/master/examples/token_classification.ipynb) and [run_glue.py](https://github.com/huggingface/transformers/blob/v2.5.0/examples/run_glue.py). \n", + "We will be fine-tuning **`bert-base-cased`** (pre-trained) model for sentiment classification task.\n", + "You can find the details about this model at [Hugging Face Hub](https://huggingface.co/bert-base-cased).\n", + "\n", + "For more notebooks with the state of the art PyTorch/Tensorflow/JAX, you can explore [Hugging FaceNotebooks](https://huggingface.co/transformers/notebooks.html).\n", + "\n", + "### Dataset\n", + "\n", + "We will be using [IMDB movie review dataset](https://huggingface.co/datasets/imdb) from [Hugging Face Datasets](https://huggingface.co/datasets).\n", + "\n", + "### Objective\n", + "\n", + "How to **Build, Train, Tune and Deploy PyTorch models on [Vertex AI](https://cloud.google.com/vertex-ai)** and emphasize first class support for training and deploying PyTorch models on Vertex AI. \n", + "\n", + "### Table of Contents\n", + "\n", + "This notebook covers following sections:\n", + "\n", + "- [Creating Notebooks instance](#Creating-Notebooks-instance-on-Google-Cloud)\n", + "- [Training](#Training)\n", + " - [Run Training Locally in the Notebook](#Training-locally-in-the-notebook)\n", + " - [Run Training Job on Vertex AI](#Training-on-Vertex-AI)\n", + " - [Training with pre-built container](#Run-Custom-Job-on-Vertex-Training-with-a-pre-built-container)\n", + " - [Training with custom container](#Run-Custom-Job-on-Vertex-Training-with-custom-container)\n", + "- [Tuning](#Hyperparameter-Tuning) \n", + " - [Run Hyperparameter Tuning job on Vertex AI](#Run-Hyperparameter-Tuning-Job-on-Vertex-AI)\n", + "- [Deploying](#Deploying)\n", + " - [Deploying model on Vertex Predictions with custom container](#Deploying-model-on-Vertex-Predictions-with-custom-container)\n", + "\n", + "### Costs \n", + "\n", + "This tutorial uses billable components of Google Cloud Platform (GCP):\n", + "\n", + "* [Notebooks](https://cloud.google.com/notebooks)\n", + "* [Vertex Training](https://cloud.google.com/vertex-ai/docs/training/custom-training)\n", + "* [Vertex Predictions](https://cloud.google.com/vertex-ai/docs/predictions/getting-predictions)\n", + "* [Cloud Storage](https://cloud.google.com/storage)\n", + "* [Container Registry](https://cloud.google.com/container-registry)\n", + "* [Cloud Build](https://cloud.google.com/build) *[Optional]*\n", + "\n", + "Learn about [Vertex AI Pricing](https://cloud.google.com/vertex-ai/pricing), [Cloud Storage Pricing](https://cloud.google.com/storage/pricing) and [Cloud Build Pricing](https://cloud.google.com/build/pricing), and use the [Pricing Calculator](https://cloud.google.com/products/calculator/) to generate a cost estimate based on your projected usage." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cda8ab8b7a04" + }, + "source": [ + "## Creating Notebooks instance on Google Cloud\n", + "\n", + "This notebook assumes you are working with [PyTorch 1.9 DLVM](https://cloud.google.com/ai-platform/notebooks/docs/images) development environment with GPU runtime. You can create a Notebook instance using [Google Cloud Console](https://cloud.google.com/notebooks/docs/create-new) or [`gcloud` command](https://cloud.google.com/sdk/gcloud/reference/notebooks/instances/create).\n", + "\n", + "```\n", + "gcloud notebooks instances create example-instance \\\n", + " --vm-image-project=deeplearning-platform-release \\\n", + " --vm-image-family=pytorch-1-9-cu110-notebooks \\\n", + " --machine-type=n1-standard-4 \\\n", + " --location=us-central1-a \\\n", + " --boot-disk-size=100 \\\n", + " --accelerator-core-count=1 \\\n", + " --accelerator-type=NVIDIA_TESLA_V100 \\\n", + " --install-gpu-driver \\\n", + " --network=default\n", + "```\n", + "***\n", + "**NOTE:** You must have GPU quota before you can create instances with GPUs. Check the [quotas](https://console.cloud.google.com/iam-admin/quotas) page to ensure that you have enough GPUs available in your project. If GPUs are not listed on the quotas page or you require additional GPU quota, [request a quota increase](https://cloud.google.com/compute/quotas#requesting_additional_quota). Free Trial accounts do not receive GPU quota by default.\n", + "***" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5178273783dd" + }, + "source": [ + "### Set up your local development environment\n", + "\n", + "**If you are using Colab or Google Cloud Notebooks**, your environment already meets\n", + "all the requirements to run this notebook. You can skip this step." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1a1ead2cb5e3" + }, + "source": [ + "**Otherwise**, make sure your environment meets this notebook's requirements.\n", + "You need the following:\n", + "\n", + "* The Google Cloud SDK\n", + "* Git\n", + "* Python 3\n", + "* virtualenv\n", + "* Jupyter notebook running in a virtual environment with Python 3\n", + "\n", + "The Google Cloud guide to [Setting up a Python development\n", + "environment](https://cloud.google.com/python/setup) and the [Jupyter\n", + "installation guide](https://jupyter.org/install) provide detailed instructions\n", + "for meeting these requirements. The following steps provide a condensed set of\n", + "instructions:\n", + "\n", + "1. [Install and initialize the Cloud SDK.](https://cloud.google.com/sdk/docs/)\n", + "1. [Install Python 3.](https://cloud.google.com/python/setup#installing_python)\n", + "1. [Install virtualenv](https://cloud.google.com/python/setup#installing_and_using_virtualenv) and create a virtual environment that uses Python 3. Activate the virtual environment.\n", + "1. To install Jupyter, run `pip3 install jupyter` on the command-line in a terminal shell.\n", + "1. To launch Jupyter, run `jupyter notebook` on the command-line in a terminal shell.\n", + "1. Open this notebook in the Jupyter Notebook Dashboard." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9a864c22307c" + }, + "source": [ + "### Install additional packages\n", + "\n", + "Python dependencies required for this notebook are [Transformers](https://pypi.org/project/transformers/), [Datasets](https://pypi.org/project/datasets/) and [hypertune](https://github.com/GoogleCloudPlatform/cloudml-hypertune) will be installed in the Notebooks instance itself." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1fd00fa70a2a" + }, + "outputs": [], + "source": [ + "import os\n", + "\n", + "# The Google Cloud Notebook product has specific requirements\n", + "IS_GOOGLE_CLOUD_NOTEBOOK = os.path.exists(\"/opt/deeplearning/metadata/env_version\")\n", + "\n", + "# Google Cloud Notebook requires dependencies to be installed with '--user'\n", + "USER_FLAG = \"\"\n", + "if IS_GOOGLE_CLOUD_NOTEBOOK:\n", + " USER_FLAG = \"--user\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2974254ea6be" + }, + "outputs": [], + "source": [ + "!pip -q install {USER_FLAG} --upgrade transformers\n", + "!pip -q install {USER_FLAG} --upgrade datasets\n", + "!pip -q install {USER_FLAG} --upgrade tqdm\n", + "!pip -q install {USER_FLAG} --upgrade cloudml-hypertune" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e0c1dcadc2c8" + }, + "source": [ + "We will be using [Vertex SDK for Python](https://cloud.google.com/vertex-ai/docs/start/client-libraries#python) to interact with Vertex AI services. The high-level `aiplatform` library is designed to simplify common data science workflows by using wrapper classes and opinionated defaults. \n", + "\n", + "#### Install Vertex SDK for Python" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ab3fb1551abe" + }, + "outputs": [], + "source": [ + "!pip -q install {USER_FLAG} --upgrade google-cloud-aiplatform" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f361541eff05" + }, + "source": [ + "### Restart the Kernel\n", + "\n", + "After you install the additional packages, you need to restart the notebook kernel so it can find the packages." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2d77a223d63d" + }, + "outputs": [], + "source": [ + "# Automatically restart kernel after installs\n", + "import os\n", + "\n", + "if not os.getenv(\"IS_TESTING\"):\n", + " # Automatically restart kernel after installs\n", + " import IPython\n", + "\n", + " app = IPython.Application.instance()\n", + " app.kernel.do_shutdown(True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9bebb3b46278" + }, + "source": [ + "## Before you begin\n", + "\n", + "### Select a GPU runtime\n", + "\n", + "**Make sure you're running this notebook in a GPU runtime if you have that option. In Colab, select \"Runtime --> Change runtime type > GPU\"**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e1e4d8f0c294" + }, + "source": [ + "### Set up your Google Cloud project\n", + "\n", + "**The following steps are required, regardless of your notebook environment.**\n", + "\n", + "1. [Select or create a Google Cloud project](https://console.cloud.google.com/cloud-resource-manager). When you first create an account, you get a $300 free credit towards your compute/storage costs.\n", + "1. [Make sure that billing is enabled for your project](https://cloud.google.com/billing/docs/how-to/modify-project).\n", + "1. Enable following APIs in your project required for running the tutorial\n", + " - [Vertex AI API](https://console.cloud.google.com/flows/enableapi?apiid=aiplatform.googleapis.com)\n", + " - [Cloud Storage API](https://console.cloud.google.com/flows/enableapi?apiid=storage.googleapis.com)\n", + " - [Container Registry API](https://console.cloud.google.com/flows/enableapi?apiid=containerregistry.googleapis.com)\n", + " - [Cloud Build API](https://console.cloud.google.com/flows/enableapi?apiid=cloudbuild.googleapis.com)\n", + "1. If you are running this notebook locally, you will need to install the [Cloud SDK](https://cloud.google.com/sdk).\n", + "1. Enter your project ID in the cell below. Then run the cell to make sure the Cloud SDK uses the right project for all the commands in this notebook.\n", + "\n", + "**Note**: Jupyter runs lines prefixed with `!` as shell commands, and it interpolates Python variables prefixed with `$` into these commands." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "36a4450b7c2e" + }, + "source": [ + "#### Set your project ID\n", + "\n", + "**If you don't know your project ID**, you may be able to get your project ID using `gcloud` or `google.auth`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "019e546007a3" + }, + "outputs": [], + "source": [ + "PROJECT_ID = \"[your-project-id]\" # <---CHANGE THIS TO YOUR PROJECT\n", + "\n", + "import os\n", + "\n", + "# Get your Google Cloud project ID using google.auth\n", + "if not os.getenv(\"IS_TESTING\"):\n", + " import google.auth\n", + "\n", + " _, PROJECT_ID = google.auth.default()\n", + " print(\"Project ID: \", PROJECT_ID)\n", + "\n", + "# validate PROJECT_ID\n", + "if PROJECT_ID == \"\" or PROJECT_ID is None or PROJECT_ID == \"[your-project-id]\":\n", + " print(\n", + " f\"Please set your project id before proceeding to next step. Currently it's set as {PROJECT_ID}\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0c9906f72b18" + }, + "source": [ + "#### Timestamp\n", + "\n", + "If you are in a live tutorial session, you might be using a shared test account or project. To avoid name collisions between users on resources created, you create a timestamp for each instance session, and append it onto the name of resources you create in this tutorial." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "e90182316f63" + }, + "outputs": [], + "source": [ + "from datetime import datetime\n", + "\n", + "\n", + "def get_timestamp():\n", + " return datetime.now().strftime(\"%Y%m%d%H%M%S\")\n", + "\n", + "\n", + "TIMESTAMP = get_timestamp()\n", + "print(f\"TIMESTAMP = {TIMESTAMP}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4d96aec55eba" + }, + "source": [ + "### Authenticate your Google Cloud account\n", + "\n", + "---\n", + "\n", + "**If you are using Google Cloud Notebooks**, your environment is already authenticated. Skip this step.\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "82f63fb3401f" + }, + "source": [ + "**If you are using Colab**, run the cell below and follow the instructions\n", + "when prompted to authenticate your account via oAuth.\n", + "\n", + "**Otherwise**, follow these steps:\n", + "\n", + "1. In the Cloud Console, go to the [**Create service account key** page](https://console.cloud.google.com/apis/credentials/serviceaccountkey).\n", + "2. Click **Create service account**.\n", + "3. In the **Service account name** field, enter a name, and click **Create**.\n", + "4. In the **Grant this service account access to project** section, click the **Role** drop-down list. Type \"Vertex AI\" into the filter box, and select **Vertex AI Administrator**. Type \"Storage Object Admin\" into the filter box, and select **Storage Object Admin**.\n", + "5. Click *Create*. A JSON file that contains your key downloads to your local environment.\n", + "6. Enter the path to your service account key as the `GOOGLE_APPLICATION_CREDENTIALS` variable in the cell below and run the cell." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "535223fa4b84" + }, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "\n", + "# If you are running this notebook in Colab, run this cell and follow the\n", + "# instructions to authenticate your GCP account. This provides access to your\n", + "# Cloud Storage bucket and lets you submit training jobs and prediction\n", + "# requests.\n", + "\n", + "# The Google Cloud Notebook product has specific requirements\n", + "IS_GOOGLE_CLOUD_NOTEBOOK = os.path.exists(\"/opt/deeplearning/metadata/env_version\")\n", + "\n", + "# If on Google Cloud Notebooks, then don't execute this code\n", + "if not IS_GOOGLE_CLOUD_NOTEBOOK:\n", + " if \"google.colab\" in sys.modules:\n", + " from google.colab import auth as google_auth\n", + "\n", + " google_auth.authenticate_user()\n", + "\n", + " # If you are running this notebook locally, replace the string below with the\n", + " # path to your service account key and run this cell to authenticate your GCP\n", + " # account.\n", + " elif not os.getenv(\"IS_TESTING\"):\n", + " %env GOOGLE_APPLICATION_CREDENTIALS ''" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "35094e21d888" + }, + "source": [ + "### Create a Cloud Storage bucket\n", + "\n", + "**The following steps are required, regardless of your notebook environment.**\n", + "\n", + "When you submit a training job using the Cloud SDK, you upload a Python package containing your training code to a Cloud Storage bucket. Vertex AI runs the code from this package. In this tutorial, Vertex AI also saves the trained model that results from your job in the same bucket. Using this model artifact, you can then create Vertex AI model and endpoint resources in order to serve online predictions.\n", + "\n", + "Set the name of your Cloud Storage bucket below. It must be unique across all Cloud Storage buckets.\n", + "\n", + "You may also change the `REGION` variable, which is used for operations throughout the rest of this notebook. Make sure to [choose a region where Vertex AI services are available](https://cloud.google.com/vertex-ai/docs/general/locations#available_regions). You may not use a Multi-Regional Storage bucket for training with Vertex AI." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "e07102312039" + }, + "outputs": [], + "source": [ + "BUCKET_NAME = \"gs://[your-bucket-name]\" # <---CHANGE THIS TO YOUR BUCKET\n", + "REGION = \"us-central1\" # @param {type:\"string\"}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "13b11a8299d6" + }, + "outputs": [], + "source": [ + "if BUCKET_NAME == \"\" or BUCKET_NAME is None or BUCKET_NAME == \"gs://[your-bucket-name]\":\n", + " BUCKET_NAME = f\"gs://{PROJECT_ID}aip-{get_timestamp()}\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4908f26b84be" + }, + "outputs": [], + "source": [ + "print(f\"PROJECT_ID = {PROJECT_ID}\")\n", + "print(f\"BUCKET_NAME = {BUCKET_NAME}\")\n", + "print(f\"REGION = {REGION}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6a3aae29644f" + }, + "source": [ + "---\n", + "\n", + "**Only if your bucket doesn't already exist**: Run the following cell to create your Cloud Storage bucket.\n", + "\n", + "---" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "25f9882bab87" + }, + "outputs": [], + "source": [ + "! gsutil mb -l $REGION $BUCKET_NAME" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2586e4ed72ad" + }, + "source": [ + "Finally, validate access to your Cloud Storage bucket by examining its contents:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "315724257beb" + }, + "outputs": [], + "source": [ + "! gsutil ls -al $BUCKET_NAME" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "276e063f41eb" + }, + "source": [ + "### Import libraries and define constants" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "e894d41223e3" + }, + "outputs": [], + "source": [ + "import base64\n", + "import json\n", + "import os\n", + "import random\n", + "import sys\n", + "\n", + "import google.auth\n", + "from google.cloud import aiplatform\n", + "from google.cloud.aiplatform import gapic as aip\n", + "from google.cloud.aiplatform import hyperparameter_tuning as hpt\n", + "from google.protobuf.json_format import MessageToDict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8330d87de404" + }, + "outputs": [], + "source": [ + "from IPython.display import HTML, display" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "f656723ac8ed" + }, + "outputs": [], + "source": [ + "import datasets\n", + "import numpy as np\n", + "import pandas as pd\n", + "import torch\n", + "import transformers\n", + "from datasets import ClassLabel, Sequence, load_dataset\n", + "from transformers import (AutoModelForSequenceClassification, AutoTokenizer,\n", + " EvalPrediction, Trainer, TrainingArguments,\n", + " default_data_collator)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "29b773f66d1b" + }, + "outputs": [], + "source": [ + "print(f\"Notebook runtime: {'GPU' if torch.cuda.is_available() else 'CPU'}\")\n", + "print(f\"PyTorch version : {torch.__version__}\")\n", + "print(f\"Transformers version : {datasets.__version__}\")\n", + "print(f\"Datasets version : {transformers.__version__}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "9805f4ffaa4d" + }, + "outputs": [], + "source": [ + "APP_NAME = \"finetuned-bert-classifier\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4c7643572342" + }, + "outputs": [], + "source": [ + "os.environ[\"TOKENIZERS_PARALLELISM\"] = \"false\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b3d8c26c6c98" + }, + "source": [ + "# Training\n", + "\n", + "In this section, we will train a PyTorch model by fine-tuning pre-trained model from [Hugging Face Transformers](https://github.com/huggingface/transformers). We will train the model locally first and then on [Vertex AI training service](https://cloud.google.com/vertex-ai/docs/training/custom-training)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9ba110a456ac" + }, + "source": [ + "## Training locally in the notebook" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "whPRbBNbIrIl" + }, + "source": [ + "### Loading the dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "W7QYTpxXIrIl" + }, + "source": [ + "For this example we will use [IMDB movie review dataset](https://huggingface.co/datasets/imdb) from [Hugging Face Datasets](https://huggingface.co/datasets/) for sentiment classification task. We use the [Hugging Face Datasets](https://github.com/huggingface/datasets) library to download the data. This can be easily done with the function `load_dataset`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "IreSlFmlIrIm" + }, + "outputs": [], + "source": [ + "datasets = load_dataset(\"imdb\")\n", + "datasets" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RzfPtOMoIrIu" + }, + "source": [ + "The `datasets` object itself is [`DatasetDict`](https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasetdict), which contains one key for the training, validation and test set." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "GWiVUF0jIrIv" + }, + "outputs": [], + "source": [ + "print(\n", + " \"Total # of rows in training dataset {} and size {:5.2f} MB\".format(\n", + " datasets[\"train\"].shape[0], datasets[\"train\"].size_in_bytes / (1024 * 1024)\n", + " )\n", + ")\n", + "print(\n", + " \"Total # of rows in test dataset {} and size {:5.2f} MB\".format(\n", + " datasets[\"test\"].shape[0], datasets[\"test\"].size_in_bytes / (1024 * 1024)\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "u3EtYfeHIrIz" + }, + "source": [ + "To access an actual element, you need to select a split first, then give an index:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "X6HrpprwIrIz" + }, + "outputs": [], + "source": [ + "datasets[\"train\"][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dQPMGfEFLhFd" + }, + "source": [ + "Using the `unique` method to extract label list. This will allow us to experiment with other datasets without hard-coding labels." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "TYw3eIHfLhFd" + }, + "outputs": [], + "source": [ + "label_list = datasets[\"train\"].unique(\"label\")\n", + "label_list" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WHUmphG3IrI3" + }, + "source": [ + "To get a sense of what the data looks like, the following function will show some examples picked randomly in the dataset (automatically decoding the labels in passing)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "i3j8APAoIrI3" + }, + "outputs": [], + "source": [ + "def show_random_elements(dataset, num_examples=2):\n", + " assert num_examples <= len(\n", + " dataset\n", + " ), \"Can't pick more elements than there are in the dataset.\"\n", + " picks = []\n", + " for _ in range(num_examples):\n", + " pick = random.randint(0, len(dataset) - 1)\n", + " while pick in picks:\n", + " pick = random.randint(0, len(dataset) - 1)\n", + " picks.append(pick)\n", + "\n", + " df = pd.DataFrame(dataset[picks])\n", + " for column, typ in dataset.features.items():\n", + " if isinstance(typ, ClassLabel):\n", + " df[column] = df[column].transform(lambda i: typ.names[i])\n", + " elif isinstance(typ, Sequence) and isinstance(typ.feature, ClassLabel):\n", + " df[column] = df[column].transform(\n", + " lambda x: [typ.feature.names[i] for i in x]\n", + " )\n", + " display(HTML(df.to_html()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "SZy5tRB_IrI7" + }, + "outputs": [], + "source": [ + "show_random_elements(datasets[\"train\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "n9qywopnIrJH" + }, + "source": [ + "### Preprocessing the data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YVx71GdAIrJH" + }, + "source": [ + "Before we can feed those texts to our model, we need to preprocess them. This is done by a pre-trained Hugging Face Transformers [`Tokenizer` class](https://huggingface.co/transformers/main_classes/tokenizer.html) which tokenizes the inputs (including converting the tokens to their corresponding IDs in the pre-trained vocabulary) and put it in a format the model expects, as well as generate the other inputs that model requires.\n", + "\n", + "To do all of this, we instantiate our tokenizer with the `AutoTokenizer.from_pretrained` method, which ensures:\n", + "\n", + "- we get a tokenizer that corresponds to the model architecture we want to use,\n", + "- we download the vocabulary used when pre-training this specific checkpoint.\n", + "\n", + "That vocabulary will be cached, so it's not downloaded again the next time we run the cell." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "178b1743fd36" + }, + "outputs": [], + "source": [ + "batch_size = 16\n", + "max_seq_length = 128\n", + "model_name_or_path = \"bert-base-cased\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "eXNLu_-nIrJI" + }, + "outputs": [], + "source": [ + "tokenizer = AutoTokenizer.from_pretrained(\n", + " model_name_or_path,\n", + " use_fast=True,\n", + ")\n", + "# 'use_fast' ensure that we use fast tokenizers (backed by Rust) from the 🤗 Tokenizers library." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "muc7yghlLhFf" + }, + "source": [ + "You can check type of models available with a fast tokenizer on the [big table of models](https://huggingface.co/transformers/index.html#bigtable)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rowT4iCLIrJK" + }, + "source": [ + "You can directly call this tokenizer on one sentence:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "a5hBlsrHIrJL" + }, + "outputs": [], + "source": [ + "tokenizer(\"Hello, this is one sentence!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qeT4rxOGLhFf" + }, + "source": [ + "Depending on the model you selected, you will see different keys in the dictionary returned by the cell above. They don't matter much for what we're doing here (just know they are required by the model we will instantiate later), you can learn more about them in [this tutorial](https://huggingface.co/transformers/preprocessing.html) if you're interested.\n", + "\n", + "**NOTE:** If, as is the case here, your inputs have already been split into words, you should pass the list of words to your tokenizer with the argument `is_split_into_words=True`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "MPunumj-LhFg" + }, + "outputs": [], + "source": [ + "example = datasets[\"train\"][4]\n", + "print(example)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "e3-m0sGHLhFg" + }, + "outputs": [], + "source": [ + "tokenizer(\n", + " [\"Hello\", \",\", \"this\", \"is\", \"one\", \"sentence\", \"split\", \"into\", \"words\", \".\"],\n", + " is_split_into_words=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "G73hFICnLhFg" + }, + "source": [ + "Note that transformers are often pre-trained with sub-word tokenizers, meaning that even if your inputs have been split into words already, each of those words could be split again by the tokenizer. Let's look at an example of that:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "d8c6f3c11353" + }, + "outputs": [], + "source": [ + "# Dataset loading repeated here to make this cell idempotent\n", + "# Since we are over-writing datasets variable\n", + "datasets = load_dataset(\"imdb\")\n", + "\n", + "# Mapping labels to ids\n", + "# NOTE: We can extract this automatically but the `Unique` method of the datasets\n", + "# is not reporting the label -1 which shows up in the pre-processing.\n", + "# Hence the additional -1 term in the dictionary\n", + "label_to_id = {1: 1, 0: 0, -1: 0}\n", + "\n", + "\n", + "def preprocess_function(examples):\n", + " \"\"\"\n", + " Tokenize the input example texts\n", + " NOTE: The same preprocessing step(s) will be applied\n", + " at the time of inference as well.\n", + " \"\"\"\n", + " args = (examples[\"text\"],)\n", + " result = tokenizer(\n", + " *args, padding=\"max_length\", max_length=max_seq_length, truncation=True\n", + " )\n", + "\n", + " # Map labels to IDs (not necessary for GLUE tasks)\n", + " if label_to_id is not None and \"label\" in examples:\n", + " result[\"label\"] = [label_to_id[example] for example in examples[\"label\"]]\n", + "\n", + " return result\n", + "\n", + "\n", + "# apply preprocessing function to input examples\n", + "datasets = datasets.map(preprocess_function, batched=True, load_from_cache_file=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "545PP3o8IrJV" + }, + "source": [ + "### Fine-tuning the model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "FBiW8UpKIrJW" + }, + "source": [ + "Now that our data is ready, we can download the pre-trained model and fine-tune it.\n", + "\n", + "---\n", + "\n", + "***Fine Tuning*** *involves taking a model that has already been trained for a given task and then tweaking the model for another similar task. Specifically, the tweaking involves replicating all the layers in the pre-trained model including weights and parameters, except the output layer. Then adding a new output classifier layer that predicts labels for the current task. The final step is to train the output layer from scratch, while the parameters of all layers from the pre-trained model are frozen. This allows learning from the pre-trained representations and \"fine-tuning\" the higher-order feature representations more relevant for the concrete task, such as analyzing sentiments in this case.* \n", + "\n", + "*For the scenario in the notebook analyzing sentiments, the pre-trained BERT model already encodes a lot of information about the language as the model was trained on a large corpus of English data in a self-supervised fashion. Now we only need to slightly tune them using their outputs as features for the sentiment classification task. This means quicker development iteration on a much smaller dataset, instead of training a specific Natural Language Processing (NLP) model with a larger training dataset.*\n", + "\n", + "\n", + "![BERT fine-tuning](./images/bert-model-fine-tuning.png)\n", + "\n", + "---\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4d032e91d6c3" + }, + "source": [ + "Since all our tasks are about token classification, we use the `AutoModelForSequenceClassification` class. Like with the tokenizer, the `from_pretrained` method will download and cache the model for us. The only thing we have to specify is the number of labels for our problem (which we can get from the features, as seen before):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "TlqNaB8jIrJW" + }, + "outputs": [], + "source": [ + "model = AutoModelForSequenceClassification.from_pretrained(\n", + " model_name_or_path, num_labels=len(label_list)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CczA5lJlIrJX" + }, + "source": [ + "**NOTE:** The warning is telling us we are throwing away some weights (the `vocab_transform` and `vocab_layer_norm` layers) and randomly initializing some other (the `pre_classifier` and `classifier` layers). This is absolutely normal in this case, because we are removing the head used to pre-train the model on a masked language modeling objective and replacing it with a new head for which we don't have pre-trained weights, so the library warns us we should fine-tune this model before using it for inference, which is exactly what we are going to do." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_N8urzhyIrJY" + }, + "source": [ + "To instantiate a `Trainer`, we will need to define three more things. The most important is the [`TrainingArguments`](https://huggingface.co/transformers/main_classes/trainer.html#transformers.TrainingArguments), which is a class that contains all the attributes to customize the training. It requires one folder name, which will be used to save the checkpoints of the model, and all other arguments are optional:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Bliy8zgjIrJY" + }, + "outputs": [], + "source": [ + "args = TrainingArguments(\n", + " evaluation_strategy=\"epoch\",\n", + " learning_rate=2e-5,\n", + " per_device_train_batch_size=batch_size,\n", + " per_device_eval_batch_size=batch_size,\n", + " num_train_epochs=1,\n", + " weight_decay=0.01,\n", + " output_dir=\"/tmp/cls\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "km3pGVdTIrJc" + }, + "source": [ + "Here we set the evaluation to be done at the end of each epoch, tweak the learning rate, use the `batch_size` defined at the top of the notebook and customize the number of epochs for training, as well as the weight decay." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "AqynGv2DLhFk" + }, + "source": [ + "The last thing to define for our `Trainer` is how to compute the metrics from the predictions. You can define your custom compute_metrics function. It takes an `EvalPrediction` object (a namedtuple with a predictions and label_ids field) and has to return a dictionary string to float." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "V233MNZgLhFk" + }, + "outputs": [], + "source": [ + "def compute_metrics(p: EvalPrediction):\n", + " preds = p.predictions[0] if isinstance(p.predictions, tuple) else p.predictions\n", + " preds = np.argmax(preds, axis=1)\n", + " return {\"accuracy\": (preds == p.label_ids).astype(np.float32).mean().item()}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "aehFUe14LhFl" + }, + "source": [ + "Now we create the `Trainer` object and we are almost ready to train." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "imY1oC3SIrJf" + }, + "outputs": [], + "source": [ + "trainer = Trainer(\n", + " model,\n", + " args,\n", + " train_dataset=datasets[\"train\"],\n", + " eval_dataset=datasets[\"test\"],\n", + " data_collator=default_data_collator,\n", + " tokenizer=tokenizer,\n", + " compute_metrics=compute_metrics,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2b4255e2209f" + }, + "source": [ + "You can add callbacks to the `trainer` object to customize the behavior of the training loop such as early stopping, reporting metrics at the end of evaluation phase or taking any decisions. In the hyperparameter tuning section of this notebook, we add a callback to `trainer` for automating hyperparameter tuning process." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CdzABDVcIrJg" + }, + "source": [ + "We can now fine-tune our model by just calling the `train` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "wZHmdWPELhFl" + }, + "outputs": [], + "source": [ + "trainer.train()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4d3fcb41541c" + }, + "outputs": [], + "source": [ + "saved_model_local_path = \"./models\"\n", + "!mkdir ./models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "aac64fb35302" + }, + "outputs": [], + "source": [ + "trainer.save_model(saved_model_local_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CKASz-2vIrJi" + }, + "source": [ + "The `evaluate` method allows you to evaluate again on the evaluation dataset or on another dataset:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "UOUcBkX8IrJi" + }, + "outputs": [], + "source": [ + "history = trainer.evaluate()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "d890a62c57c6" + }, + "outputs": [], + "source": [ + "history" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gX97-EH5LhFm" + }, + "source": [ + "To get the other metrics computed such as precision, recall or F1 score for each category, we can apply the same function as before on the result of the `predict` method." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5cae4fdf26f2" + }, + "source": [ + "### Run predictions locally with sample examples\n", + "\n", + "Using the trained model, we can predict the sentiment label for an input text after applying the preprocessing function that was used during the training. We will run the predictions locally in the notebook and later show how you can deploy the model to an endpoint using [TorchServe](https://pytorch.org/serve/) on Vertex Predictions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "21ab30d5518c" + }, + "outputs": [], + "source": [ + "model_name_or_path = \"bert-base-cased\"\n", + "label_text = {0: \"Negative\", 1: \"Positive\"}\n", + "saved_model_path = saved_model_local_path\n", + "\n", + "\n", + "def predict(input_text, saved_model_path):\n", + " # initialize tokenizer\n", + " tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, use_fast=True)\n", + "\n", + " # preprocess and encode input text\n", + " tokenizer_args = (input_text,)\n", + " predict_input = tokenizer(\n", + " *tokenizer_args,\n", + " padding=\"max_length\",\n", + " max_length=128,\n", + " truncation=True,\n", + " return_tensors=\"pt\",\n", + " )\n", + "\n", + " # load trained model\n", + " loaded_model = AutoModelForSequenceClassification.from_pretrained(saved_model_path)\n", + "\n", + " # get predictions\n", + " output = loaded_model(predict_input[\"input_ids\"])\n", + "\n", + " # return labels\n", + " label_id = torch.argmax(*output.to_tuple(), dim=1)\n", + "\n", + " print(f\"Review text: {input_text}\")\n", + " print(f\"Sentiment : {label_text[label_id.item()]}\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "e594d72fa8e4" + }, + "outputs": [], + "source": [ + "# example #1\n", + "review_text = (\n", + " \"\"\"Jaw dropping visual affects and action! One of the best I have seen to date.\"\"\"\n", + ")\n", + "predict_input = predict(review_text, saved_model_path)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "dd393f0d38c1" + }, + "outputs": [], + "source": [ + "# example #2\n", + "review_text = \"\"\"Take away the CGI and the A-list cast and you end up with film with less punch.\"\"\"\n", + "predict_input = predict(review_text, saved_model_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "46a8d95366ee" + }, + "source": [ + "## Training on Vertex AI" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e97e8af2376c" + }, + "source": [ + "You can do local experimentation on your Notebooks instance. However, for larger datasets or models often a vertically scaled compute or horizontally distributed training is required. The most effective way to perform this task is to leverage [Vertex AI custom training service](https://cloud.google.com/vertex-ai/docs/training/custom-training) for following reasons:\n", + "\n", + "- **Automatically provision and de-provision resources**: Training job on Vertex AI will automatically provision computing resources, performs the training task and ensures deletion of compute resources once the training job is finished.\n", + "- **Reusability and portability**: You can package training code with its parameters and dependencies into a container and create a portable component. This container can then be run with different scenarios such as hyperparameter tuning, different data sources and more.\n", + "- **Training at scale**: You can run a [distributed training job](https://cloud.google.com/vertex-ai/docs/training/distributed-training) with AI allowing you to train models in a cluster across multiple nodes in parallel and resulting in faster training time. \n", + "- **Logging and Monitoring**: The training service logs messages from the job to [Cloud Logging](https://cloud.google.com/logging/docs) and can be monitored while the job is running.\n", + "\n", + "In this part of the notebook, we show how to scale the training job with Vertex AI by packaging the code and create a training pipeline to orchestrate a training job. There are three steps to run a training job using [Vertex AI custom training service](https://cloud.google.com/vertex-ai/docs/training/custom-training):\n", + "\n", + "- **STEP 1**: Determine training code structure - Packaging as a Python source distribution or as a custom container image\n", + "- **STEP 2**: Chose a custom training method - custom job, hyperparameter training job or training pipeline\n", + "- **STEP 3**: Run the training job\n", + "\n", + "![custom-training-on-vertex-ai](./images/custom-training-on-vertex-ai.png)\n", + "\n", + "#### Custom training methods\n", + "\n", + "There are three types of Vertex AI resources you can create to train custom models on Vertex AI:\n", + "\n", + "- **[Custom jobs](https://cloud.google.com/vertex-ai/docs/training/create-custom-job):** With a custom job you configure the settings to run your training code on Vertex AI such as worker pool specs - machine types, accelerators, Python training spec or custom container spec. \n", + "- **[Hyperparameter tuning jobs](https://cloud.google.com/vertex-ai/docs/training/using-hyperparameter-tuning):** Hyperparameter tuning jobs automate tuning of hyperparameters of your model based on the criteria you configure such as goal/metric to optimize, hyperparameters values and number of trials to run.\n", + "- **[Training pipelines](https://cloud.google.com/vertex-ai/docs/training/create-training-pipeline):** Orchestrates custom training jobs or hyperparameter tuning jobs with additional steps after the training job is successfully completed.\n", + "\n", + "Please refer to the [documentation](https://cloud.google.com/vertex-ai/docs/training/custom-training-methods) for further details.\n", + "\n", + "In this notebook, we will cover Custom Jobs and Hyperparameter tuning jobs." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "585ba542aa40" + }, + "source": [ + "### Packaging the training application\n", + "\n", + "Before running the training job on Vertex AI, the training application code and any dependencies must be packaged and uploaded to Cloud Storage bucket or Container Registry or Artifact Registry that your Google Cloud project can access. This sections shows how to package and stage your application in the cloud.\n", + "\n", + "There are two ways to package your application and dependencies and train on Vertex AI:\n", + "\n", + "1. [Create a Python source distribution](https://cloud.google.com/vertex-ai/docs/training/create-python-pre-built-container) with the training code and dependencies to use with a [pre-built containers](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers) on Vertex AI\n", + "2. Use [custom containers](https://cloud.google.com/ai-platform/training/docs/custom-containers-training) to package dependencies using Docker containers\n", + "\n", + "**This notebook shows both packaging options to run a custom training job on Vertex AI.**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4b8b5333b577" + }, + "source": [ + "#### Recommended Training Application Structure\n", + "\n", + "You can structure your training application in any way you like. However, the [following structure](https://cloud.google.com/vertex-ai/docs/training/create-python-pre-built-container#structure) is commonly used in Vertex AI samples, and having your project's organization be similar to the samples can make it easier for you to follow the samples.\n", + "\n", + "We have two directories `python_package` and `custom_container` showing both the packaging approaches. `README.md` files inside each directory has details on the directory structure and instructions on how to run application locally and on the cloud.\n", + "\n", + "```\n", + ".\n", + "├── custom_container\n", + "│ ├── Dockerfile\n", + "│ ├── README.md\n", + "│ ├── scripts\n", + "│ │ └── train-cloud.sh\n", + "│ └── trainer -> ../python_package/trainer/\n", + "├── python_package\n", + "│ ├── README.md\n", + "│ ├── scripts\n", + "│ │ └── train-cloud.sh\n", + "│ ├── setup.py\n", + "│ └── trainer\n", + "│ ├── __init__.py\n", + "│ ├── experiment.py\n", + "│ ├── metadata.py\n", + "│ ├── model.py\n", + "│ ├── task.py\n", + "│ └── utils.py\n", + "└── pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb --> This notebook\n", + "```\n", + "\n", + "1. Main project directory contains your `setup.py` file or `Dockerfile` with the dependencies. \n", + "2. Use a subdirectory named `trainer` to store your main application module and `scripts` to submit training jobs locally or cloud\n", + "3. Inside `trainer` directory:\n", + " - `task.py` - Main application module 1) initializes and parse task arguments (hyper parameters), and 2) entry point to the trainer\n", + " - `model.py` - Includes function to create model with a sequence classification head from a pre-trained model.\n", + " - `experiment.py` - Runs the model training and evaluation experiment, and exports the final model.\n", + " - `metadata.py` - Defines metadata for classification task such as predefined model dataset name, target labels\n", + " - `utils.py` - Includes utility functions such as data input functions to read data, save model to GCS bucket" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f7466d414a0e" + }, + "source": [ + "### Run Custom Job on Vertex Training with a pre-built container" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1a675e6ee9dc" + }, + "source": [ + "Vertex AI provides Docker container images that can be run as [pre-built containers](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers#available_container_images) for custom training. These containers include common dependencies used in training code based on the Machine Learning framework and framework version.\n", + "\n", + "In this notebook, we are using Hugging Face Datasets and fine tuning a transformer model from Hugging Face Transformers Library for sentiment analysis task using PyTorch. We will use [pre-built container for PyTorch](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers#pytorch) and package the training application code by adding standard Python dependencies - `transformers`, `datasets` and `tqdm` - in the `setup.py` file. \n", + "\n", + "![Training with Prebuilt Containers on Vertex Training](./images/training-with-prebuilt-containers-on-vertex-training.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9481da82c2ca" + }, + "source": [ + "Initialize the variables to define pre-built container image, location of training application and training module." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "100eac26f547" + }, + "outputs": [], + "source": [ + "PRE_BUILT_TRAINING_CONTAINER_IMAGE_URI = (\n", + " \"us-docker.pkg.dev/vertex-ai/training/pytorch-gpu.1-7:latest\"\n", + ")\n", + "\n", + "PYTHON_PACKAGE_APPLICATION_DIR = \"python_package\"\n", + "\n", + "source_package_file_name = f\"{PYTHON_PACKAGE_APPLICATION_DIR}/dist/trainer-0.1.tar.gz\"\n", + "python_package_gcs_uri = (\n", + " f\"{BUCKET_NAME}/pytorch-on-gcp/{APP_NAME}/train/python_package/trainer-0.1.tar.gz\"\n", + ")\n", + "python_module_name = \"trainer.task\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2bdb8c21d0d5" + }, + "source": [ + "Following is the `setup.py` file for the training application. The `find_packages()` function inside `setup.py` includes the `trainer` directory in the package as it contains `__init__.py` which tells [Python Setuptools](https://setuptools.readthedocs.io/en/latest/) to include all subdirectories of the parent directory as dependencies. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "9dcb9b353ff3" + }, + "outputs": [], + "source": [ + "%%writefile ./{PYTHON_PACKAGE_APPLICATION_DIR}/setup.py\n", + "\n", + "from setuptools import find_packages\n", + "from setuptools import setup\n", + "import setuptools\n", + "\n", + "from distutils.command.build import build as _build\n", + "import subprocess\n", + "\n", + "\n", + "REQUIRED_PACKAGES = [\n", + " 'transformers',\n", + " 'datasets',\n", + " 'tqdm',\n", + " 'cloudml-hypertune'\n", + "]\n", + "\n", + "setup(\n", + " name='trainer',\n", + " version='0.1',\n", + " install_requires=REQUIRED_PACKAGES,\n", + " packages=find_packages(),\n", + " include_package_data=True,\n", + " description='Vertex AI | Training | PyTorch | Text Classification | Python Package'\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a90b5019436d" + }, + "source": [ + "Run the following command to create a source distribution, dist/trainer-0.1.tar.gz:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "9fe9d30e9806" + }, + "outputs": [], + "source": [ + "!cd {PYTHON_PACKAGE_APPLICATION_DIR} && python3 setup.py sdist --formats=gztar" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7b769681d231" + }, + "source": [ + "Now upload the source distribution with training application to Cloud Storage bucket" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "a3492f5366aa" + }, + "outputs": [], + "source": [ + "!gsutil cp {source_package_file_name} {python_package_gcs_uri}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1e4a3c5a11a1" + }, + "source": [ + "Validate the source distribution exists on Cloud Storage bucket" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "29fd8224d9cb" + }, + "outputs": [], + "source": [ + "!gsutil ls -l {python_package_gcs_uri}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "daf738249701" + }, + "source": [ + "#### *[Optional]* **Run custom training job locally** " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dae35b9f526e" + }, + "source": [ + "Before submitting the job to cloud, you can run the training job locally by calling the `trainer.task` module directly" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "9defbf6fd074" + }, + "outputs": [], + "source": [ + "!cd {PYTHON_PACKAGE_APPLICATION_DIR} && python -m trainer.task" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4a1a4281ff7f" + }, + "source": [ + "#### **Run custom training job on Vertex AI**\n", + "\n", + "We use [Vertex SDK for Python](https://cloud.google.com/vertex-ai/docs/start/client-libraries#client_libraries) to create and submit training job to the Vertex training service." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5d2957ef04fd" + }, + "source": [ + "##### **Initialize the Vertex SDK for Python**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "c4a578b55943" + }, + "outputs": [], + "source": [ + "aiplatform.init(project=PROJECT_ID, staging_bucket=BUCKET_NAME)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6b0fed34b728" + }, + "source": [ + "##### **Configure and submit Custom Job to Vertex Training service**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8f24d5bdc31d" + }, + "source": [ + "Configure a [Custom Job](https://cloud.google.com/vertex-ai/docs/training/create-custom-job) with the [pre-built container](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers) image for PyTorch and training code packaged as Python source distribution. \n", + "\n", + "**NOTE:** When using Vertex SDK for Python for submitting a training job, it creates a [Training Pipeline](https://cloud.google.com/vertex-ai/docs/training/create-training-pipeline) which launches the Custom Job on Vertex Training service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "daababed95ac" + }, + "outputs": [], + "source": [ + "print(f\"APP_NAME={APP_NAME}\")\n", + "print(\n", + " f\"PRE_BUILT_TRAINING_CONTAINER_IMAGE_URI={PRE_BUILT_TRAINING_CONTAINER_IMAGE_URI}\"\n", + ")\n", + "print(f\"python_package_gcs_uri={python_package_gcs_uri}\")\n", + "print(f\"python_module_name={python_module_name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1f7cff892eb8" + }, + "outputs": [], + "source": [ + "JOB_NAME = f\"{APP_NAME}-pytorch-pkg-ar-{get_timestamp()}\"\n", + "print(f\"JOB_NAME={JOB_NAME}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "e7f68fec44ed" + }, + "outputs": [], + "source": [ + "job = aiplatform.CustomPythonPackageTrainingJob(\n", + " display_name=f\"{JOB_NAME}\",\n", + " python_package_gcs_uri=python_package_gcs_uri,\n", + " python_module_name=python_module_name,\n", + " container_uri=PRE_BUILT_TRAINING_CONTAINER_IMAGE_URI,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "aaeb607c356e" + }, + "outputs": [], + "source": [ + "training_args = [\"--num-epochs\", \"2\", \"--model-name\", \"finetuned-bert-classifier\"]\n", + "\n", + "model = job.run(\n", + " replica_count=1,\n", + " machine_type=\"n1-standard-8\",\n", + " accelerator_type=\"NVIDIA_TESLA_V100\",\n", + " accelerator_count=1,\n", + " args=training_args,\n", + " sync=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bff8906cce7b" + }, + "source": [ + "##### **Monitoring progress of the Custom Job**\n", + "\n", + "You can monitor the custom job launched from Cloud Console following the link [here](https://console.cloud.google.com/vertex-ai/training/training-pipelines/) or use gcloud CLI command [`gcloud beta ai custom-jobs stream-logs`](https://cloud.google.com/sdk/gcloud/reference/beta/ai/custom-jobs/stream-logs)\n", + "\n", + "![Monitor custom job progress in Vertex Training](./images/vertex-training-monitor-custom-job.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "760ab4b88042" + }, + "source": [ + "Validate the model artifacts written to GCS by the training code after the job completes successfully" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "39570bd8def9" + }, + "outputs": [], + "source": [ + "job_response = MessageToDict(job._gca_resource._pb)\n", + "gcs_model_artifacts_uri = job_response[\"trainingTaskInputs\"][\"baseOutputDirectory\"][\n", + " \"outputUriPrefix\"\n", + "]\n", + "print(f\"Model artifacts are available at {gcs_model_artifacts_uri}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "09eaae731189" + }, + "outputs": [], + "source": [ + "!gsutil ls -lr $gcs_model_artifacts_uri/" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "813e2b1e6185" + }, + "source": [ + "##### ***[Optional]*** **Submit custom job using gcloud CLI using Python source distribution**\n", + "You can submit the training job to Vertex AI training service using [`gcloud beta ai custom-jobs create`](https://cloud.google.com/sdk/gcloud/reference/beta/ai/custom-jobs/create). `gcloud` command stages your training application on GCS bucket and submits the training job.\n", + "\n", + "\n", + "```\n", + "gcloud beta ai custom-jobs create \\\n", + " --display-name=${JOB_NAME} \\\n", + " --region ${REGION} \\\n", + " --python-package-uris=${PACKAGE_PATH} \\\n", + " --worker-pool-spec=replica-count=1,machine-type='n1-standard-8',accelerator-type='NVIDIA_TESLA_V100',accelerator-count=1,executor-image-uri=${IMAGE_URI},python-module='trainer.task',local-package-path=\"../python_package/\" \\\n", + " --args=\"--model-name\",\"finetuned-bert-classifier\",\"--job-dir\",$JOB_DIR\n", + "```\n", + "\n", + "- `worker-pool-spec` parameter defines the worker pool configuration used by the custom job. Following are the fields within `worker-pool-spec`:\n", + " - Set the `executor-image-uri` to `us-docker.pkg.dev/vertex-ai/training/pytorch-gpu.1-7:latest` for training on pre-built PyTorch v1.7 image for GPU\n", + " - Set the `local-package-path` to the path to the training code\n", + " - Set the `python-module` to the `trainer.task` which is the main module to start your application\n", + " - Set the `accelerator-type` and `machine-type` to set the compute type to run the application\n", + " \n", + "Refer [documentation](https://cloud.google.com/sdk/gcloud/reference/beta/ai/custom-jobs/create#--args) for further details.\n", + "\n", + "The script at `./python_package/scripts/train-cloud.sh` contains the `gcloud` commands to launch the custom job and monitor the logs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "d974c52416b8" + }, + "outputs": [], + "source": [ + "!cd python_package && ./scripts/train-cloud.sh" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "edafdf2321d5" + }, + "source": [ + "In addition to Cloud Console, you can monitor job progress by streaming logs using [gcloud CLI](https://cloud.google.com/sdk/gcloud/reference/beta/ai/custom-jobs/stream-logs) by passing the job id:\n", + "\n", + "\n", + "```\n", + "gcloud ai custom-jobs stream-logs --region=$REGION\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "06eb6c334000" + }, + "source": [ + "You can validate the model artifacts written to GCS by the training code by running the following command:\n", + "\n", + "```\n", + "!gsutil ls -l $JOB_DIR/\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "c170d386492b" + }, + "source": [ + "### Run Custom Job on Vertex Training with custom container" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "035227b6e581" + }, + "source": [ + "To create a [training job with custom container](https://cloud.google.com/vertex-ai/docs/training/create-custom-container?hl=hr), you define a `Dockerfile` to install or add the dependencies required for the training job. Then, you build and test your Docker image locally to verify, push the image to Container Registry and submit a Custom Job to Vertex Training service.\n", + "\n", + "![Training with custom containers on Vertex AI](./images/training-with-custom-containers-on-vertex-training.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "95ea5367dc42" + }, + "source": [ + "#### **Build your container using Dockerfile with Training Code and Dependencies**\n", + "\n", + "In the previous section, we wrapped the training application code and dependencies as Python source distribution. An alternate way to package the training application and dependencies is to [create a custom container](https://cloud.google.com/vertex-ai/docs/training/create-custom-container?hl=hr) using Dockerfile. We create a Dockerfile with a [pre-built PyTorch container image provided by Vertex AI](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers#available_container_images) as the base image, install the dependencies - `transformers`, `datasets` , `tqdm` and `cloudml-hypertune` and copy the training application code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "59cf98db5792" + }, + "outputs": [], + "source": [ + "%%writefile ./custom_container/Dockerfile\n", + "\n", + "# Use pytorch GPU base image\n", + "FROM gcr.io/cloud-aiplatform/training/pytorch-gpu.1-7\n", + "\n", + "# set working directory\n", + "WORKDIR /app\n", + "\n", + "# Install required packages\n", + "RUN pip install google-cloud-storage transformers datasets tqdm cloudml-hypertune\n", + "\n", + "# Copies the trainer code to the docker image.\n", + "COPY ./trainer/__init__.py /app/trainer/__init__.py\n", + "COPY ./trainer/experiment.py /app/trainer/experiment.py\n", + "COPY ./trainer/utils.py /app/trainer/utils.py\n", + "COPY ./trainer/metadata.py /app/trainer/metadata.py\n", + "COPY ./trainer/model.py /app/trainer/model.py\n", + "COPY ./trainer/task.py /app/trainer/task.py\n", + "\n", + "# Set up the entry point to invoke the trainer.\n", + "ENTRYPOINT [\"python\", \"-m\", \"trainer.task\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1f8d15e545e7" + }, + "source": [ + "Build the image and tag the Container Registry path (gcr.io) that you will push to." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "03442268f05d" + }, + "outputs": [], + "source": [ + "CUSTOM_TRAIN_IMAGE_URI = f\"gcr.io/{PROJECT_ID}/pytorch_gpu_train_{APP_NAME}\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "99d59a1f072c" + }, + "outputs": [], + "source": [ + "!cd ./custom_container/ && docker build -f Dockerfile -t $CUSTOM_TRAIN_IMAGE_URI ../python_package" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "169b86d50c45" + }, + "source": [ + "#### *[Optional]* **Run Training Job Locally with Custom Container**\n", + "\n", + "Run the container locally in detached mode to test. When running with machine with GPUs, you can use `--gpus all` command line flag." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1361941a46d9" + }, + "outputs": [], + "source": [ + "!docker run --gpus all -it --rm $CUSTOM_TRAIN_IMAGE_URI" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1873a991a40f" + }, + "source": [ + "#### **Run custom training job on Vertex AI with Custom Container**\n", + "\n", + "Before submitting the training job to Vertex AI, push the custom container image to Google Cloud Container Registry and then submit the training job to Vertex AI. \n", + "\n", + "**NOTE:** *[Container Registry](https://cloud.google.com/container-registry) is a central repository to store, manage, and secure your Docker container images.*" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "d5e11e1319b6" + }, + "source": [ + "##### **Push the container to Container Registry**\n", + "\n", + "Push your container image with training application code and dependencies to your Container Registry. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "11fbe35013f9" + }, + "outputs": [], + "source": [ + "!docker push $CUSTOM_TRAIN_IMAGE_URI" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0d157a91a792" + }, + "source": [ + "Validate the custom container image in Container Registry" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "a23a4c447117" + }, + "outputs": [], + "source": [ + "!gcloud container images describe $CUSTOM_TRAIN_IMAGE_URI" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a23e5e34bea9" + }, + "source": [ + "##### **Initialize the Vertex SDK for Python**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "52f180952ca0" + }, + "outputs": [], + "source": [ + "aiplatform.init(project=PROJECT_ID, staging_bucket=BUCKET_NAME)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "abf1fa4085cb" + }, + "source": [ + "##### **Configure and submit Custom Job to Vertex Training service**\n", + "\n", + "Configure a [Custom Job](https://cloud.google.com/vertex-ai/docs/training/create-custom-job) with the [custom container](https://cloud.google.com/vertex-ai/docs/training/create-custom-container) image with training code and other dependencies\n", + "\n", + "**NOTE:** When using Vertex SDK for Python for submitting a training job, it creates a [Training Pipeline](https://cloud.google.com/vertex-ai/docs/training/create-training-pipeline) which launches the Custom Job to train on Vertex Training." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "e5e048cc0500" + }, + "outputs": [], + "source": [ + "JOB_NAME = f\"{APP_NAME}-pytorch-cstm-cntr-{get_timestamp()}\"\n", + "\n", + "print(f\"APP_NAME={APP_NAME}\")\n", + "print(f\"CUSTOM_TRAIN_IMAGE_URI={CUSTOM_TRAIN_IMAGE_URI}\")\n", + "print(f\"JOB_NAME={JOB_NAME}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6946d8ad77f6" + }, + "outputs": [], + "source": [ + "# configure the job with container image spec\n", + "job = aiplatform.CustomContainerTrainingJob(\n", + " display_name=f\"{JOB_NAME}\", container_uri=f\"{CUSTOM_TRAIN_IMAGE_URI}\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "b7a24d15e8e9" + }, + "outputs": [], + "source": [ + "# define training code arguments\n", + "training_args = [\"--num-epochs\", \"2\", \"--model-name\", \"finetuned-bert-classifier\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "7459d3261450" + }, + "outputs": [], + "source": [ + "# submit the custom job to Vertex training service\n", + "model = job.run(\n", + " replica_count=1,\n", + " machine_type=\"n1-standard-8\",\n", + " accelerator_type=\"NVIDIA_TESLA_V100\",\n", + " accelerator_count=1,\n", + " args=training_args,\n", + " sync=False,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "d694283ad14c" + }, + "source": [ + "##### **Monitoring progress of the Custom Job**\n", + "\n", + "You can monitor the custom job launched from Cloud Console following the link [here](https://console.cloud.google.com/vertex-ai/training/training-pipelines/) or use gcloud CLI command [`gcloud beta ai custom-jobs stream-logs`](https://cloud.google.com/sdk/gcloud/reference/beta/ai/custom-jobs/stream-logs)\n", + "\n", + "![Monitor custom job progress in Vertex Training](./images/vertex-training-monitor-custom-job-container.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "17d146293583" + }, + "source": [ + "##### ***[Optional]*** **Submit Custom Job using gcloud CLI using custom container**\n", + "You can submit the training job to Vertex AI training service using [`gcloud beta ai custom-jobs create`](https://cloud.google.com/sdk/gcloud/reference/beta/ai/custom-jobs/create) with custom container spec. `gcloud` command submits the training job and launches worker pool with the custom container image specified.\n", + "\n", + "\n", + "```\n", + "gcloud beta ai custom-jobs create \\\n", + " --display-name=${JOB_NAME} \\\n", + " --region ${REGION} \\\n", + " --worker-pool-spec=replica-count=1,machine-type='n1-standard-8',accelerator-type='NVIDIA_TESLA_V100',accelerator-count=1,container-image-uri=${CUSTOM_TRAIN_IMAGE_URI} \\\n", + " --args=\"--model-name\",\"finetuned-bert-classifier\",\"--job-dir\",$JOB_DIR\n", + "```\n", + "\n", + "- `worker-pool-spec` parameter defines the worker pool configuration used by the custom job. Following are the fields within `worker-pool-spec`:\n", + " - Set the `container-image-uri` to the custom container image pushed to Google Cloud Container Registry for training\n", + " - Set the `accelerator-type` and `machine-type` to set the compute type to run the application\n", + " \n", + "Refer [documentation](https://cloud.google.com/sdk/gcloud/reference/beta/ai/custom-jobs/create#--args) for further details.\n", + "\n", + "The script at `./custom_container/scripts/train-cloud.sh` contains the `gcloud` commands to launch the custom job and monitor the logs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "45c0f675d26a" + }, + "outputs": [], + "source": [ + "!cd custom_container && ./scripts/train-cloud.sh" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "69d723da4f80" + }, + "source": [ + "In addition to Cloud Console, you can monitor job progress by streaming logs using [gcloud CLI](https://cloud.google.com/sdk/gcloud/reference/beta/ai/custom-jobs/stream-logs) by passing the job id:\n", + "\n", + "\n", + "```\n", + "gcloud ai custom-jobs stream-logs --region=$REGION\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cffb0f2e5d4a" + }, + "source": [ + "You can validate the model artifacts written to GCS by the training code by running the following command:\n", + "\n", + "```\n", + "!gsutil ls -l $JOB_DIR/\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "409c7472fd4f" + }, + "source": [ + "## Hyperparameter Tuning" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ba6122f929e3" + }, + "source": [ + "The training application code for fine-tuning a transformer model for sentiment analysis task uses hyperparameters such as learning rate and weight decay. These hyperparameters control the behavior of the training algorithm and can have a significant effect on the performance of the resulting model. This part of the notebook show how you can automate tuning these hyperparameters with Vertex Training service.\n", + "\n", + "We submit a [Hyperparameter Tuning job](https://cloud.google.com/vertex-ai/docs/training/hyperparameter-tuning-overview) to Vertex Training service by packaging the training application code and dependencies in a Docker container and push the container to Google Container Registry, similar to running a Custom Job on Vertex AI with Custom Container.\n", + "\n", + "![Hyperparameter Tuning with Custom Containers on Vertex Training](./images/hp-tuning-with-custom-containers-on-vertex-training.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e1570be63a7c" + }, + "source": [ + "### How hyperparameter tuning works in Vertex AI?\n", + "\n", + "Following are the high level steps involved in running a Hyperparameter Tuning job on Vertex Training service:\n", + "\n", + "- You define the hyperparameters to tune the model along with the metric (or goal) to optimize\n", + "- Vertex AI runs multiple trials of your training application with the hyperparameters and limits you specified - maximum number of trials to run and number of parallel trials. \n", + "- Vertex AI keeps track of the results from each trial and makes adjustments for subsequent trials. This requires your training application to report the metrics to Vertex AI using the Python package [`cloudml-hypertune`](https://github.com/GoogleCloudPlatform/cloudml-hypertune). \n", + "- When the job is finished, get the summary of all the trials with the most effective configuration of values based on the criteria you configured\n", + "\n", + "Refer to the [Vertex AI documentation](https://cloud.google.com/vertex-ai/docs/training/hyperparameter-tuning-overview) to understand how to configure and select hyperparameters for tuning, configure tuning strategy and how Vertex AI optimizes the hyperparameter tuning jobs. The default tuning strategy uses results of previous trials to inform the assignment of values in subsequent trials. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "d4dc37f4aab3" + }, + "source": [ + "### Changes to training application code for hyperparameter tuning\n", + "\n", + "There are few [requirements](https://cloud.google.com/vertex-ai/docs/training/hyperparameter-tuning-overview#the_flow_of_hyperparameter_values) to follow specific to hyperparameter tuning in Vertex AI:\n", + "\n", + "1. To pass the hyperparameter values to training code, you mist define a command-line argument in the main training module for each tuned hyperparameter. Use the value passed in those arguments to set the corresponding hyperparameter in the training application's code\n", + "1. You must pass metrics from the training application to Vertex AI to evaluate the effectiveness of a trial. You can use [`cloudml-hypertune` Python package](https://github.com/GoogleCloudPlatform/cloudml-hypertune) to report metrics." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4b0331ad2e11" + }, + "source": [ + "Previously, in the training application code to fine-tune the transformer model for sentiment analysis task, we instantiated [`Trainer`](https://huggingface.co/transformers/main_classes/trainer.html) with hyperparameters passed as training arguments (`training_args`). \n", + "\n", + "```\n", + " # Estimator arguments\n", + " args_parser.add_argument(\n", + " '--learning-rate',\n", + " help='Learning rate value for the optimizers.',\n", + " default=2e-5,\n", + " type=float)\n", + " args_parser.add_argument(\n", + " '--weight-decay',\n", + " help=\"\"\"\n", + " The factor by which the learning rate should decay by the end of the\n", + " training.\n", + "\n", + " decayed_learning_rate =\n", + " learning_rate * decay_rate ^ (global_step / decay_steps)\n", + "\n", + " If set to 0 (default), then no decay will occur.\n", + " If set to 0.5, then the learning rate should reach 0.5 of its original\n", + " value at the end of the training.\n", + " Note that decay_steps is set to train_steps.\n", + " \"\"\",\n", + " default=0.01,\n", + " type=float)\n", + "\n", + " # Enable hyperparameter\n", + " args_parser.add_argument(\n", + " '--hp-tune',\n", + " default=\"n\",\n", + " help='Enable hyperparameter tuning. Valida values are: \"y\" - enable, \"n\" - disable')\n", + "\n", + "```\n", + "\n", + "\n", + "These hyperparameters are passed as command line arguments to the training module `trainer.task` which are then passed to the `training_args`. Refer to `./python_package/trainer` module for training application code.\n", + "\n", + "```\n", + " # set training arguments\n", + " training_args = TrainingArguments(\n", + " evaluation_strategy=\"epoch\",\n", + " learning_rate=args.learning_rate,\n", + " per_device_train_batch_size=args.batch_size,\n", + " per_device_eval_batch_size=args.batch_size,\n", + " num_train_epochs=args.num_epochs,\n", + " weight_decay=args.weight_decay,\n", + " output_dir=os.path.join(\"/tmp\", args.model_name)\n", + " )\n", + " \n", + " # initialize our Trainer\n", + " trainer = Trainer(\n", + " model,\n", + " training_args,\n", + " train_dataset=train_dataset,\n", + " eval_dataset=test_dataset,\n", + " data_collator=default_data_collator,\n", + " tokenizer=tokenizer,\n", + " compute_metrics=compute_metrics\n", + " )\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "16fb8c85a170" + }, + "source": [ + "To report metrics to Vertex AI when hyperparameter tuning is enabled, we call [`cloudml-hypertune` Python package](https://github.com/GoogleCloudPlatform/cloudml-hypertune) after the evaluation phase which is added as a [callback](https://huggingface.co/transformers/main_classes/callback.html#transformers.trainer_callback.TrainerCallback) to the `trainer`. The `trainer` objects passes the metrics computed by the last evaluation phase to the callback which will be reported by `hypertune` library to Vertex AI for evaluating trials.\n", + "\n", + "```\n", + "# add hyperparameter tuning callback to report metrics when enabled\n", + "if args.hp_tune == \"y\":\n", + " trainer.add_callback(HPTuneCallback(\"accuracy\", \"eval_accuracy\"))\n", + "\n", + "class HPTuneCallback(TrainerCallback):\n", + " \"\"\"\n", + " A custom callback class that reports a metric to hypertuner\n", + " at the end of each epoch.\n", + " \"\"\"\n", + " \n", + " def __init__(self, metric_tag, metric_value):\n", + " super(HPTuneCallback, self).__init__()\n", + " self.metric_tag = metric_tag\n", + " self.metric_value = metric_value\n", + " self.hpt = hypertune.HyperTune()\n", + " \n", + " def on_evaluate(self, args, state, control, **kwargs):\n", + " print(f\"HP metric {self.metric_tag}={kwargs['metrics'][self.metric_value]}\")\n", + " self.hpt.report_hyperparameter_tuning_metric(\n", + " hyperparameter_metric_tag=self.metric_tag,\n", + " metric_value=kwargs['metrics'][self.metric_value],\n", + " global_step=state.epoch)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a9d284f3599d" + }, + "source": [ + "### Run Hyperparameter Tuning Job on Vertex AI\n", + "\n", + "Before submitting the hyperparameter tuning job to Vertex AI, push the custom container image with training application to Google Cloud Container Registry and then submit the job to Vertex AI. We will be using the same image used for running Custom Job on Vertex Training service." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0ab9c7321d2f" + }, + "source": [ + "Validate the custom container image in Container Registry" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "54c11399e7a9" + }, + "outputs": [], + "source": [ + "!gcloud container images describe $CUSTOM_TRAIN_IMAGE_URI" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f60fab07d67c" + }, + "source": [ + "##### **Initialize the Vertex SDK for Python**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "7f914ea43ac0" + }, + "outputs": [], + "source": [ + "aiplatform.init(project=PROJECT_ID, staging_bucket=BUCKET_NAME)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6652aa63ddff" + }, + "source": [ + "##### **Configure and submit Hyperparameter Tuning Job to Vertex Training service**\n", + "\n", + "Configure a [Hyperparameter Tuning Job](https://cloud.google.com/vertex-ai/docs/training/using-hyperparameter-tuning) with the [custom container](https://cloud.google.com/vertex-ai/docs/training/create-custom-container) image with training code and other dependencies.\n", + "\n", + "When configuring and submitting a Hyperparameter Tuning job, you need to attach a Custom Job definition with worker pool specs defining machine type, accelerators and URI for container image representing the custom container." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "93da68249c07" + }, + "outputs": [], + "source": [ + "JOB_NAME = f\"{APP_NAME}-pytorch-hptune-{get_timestamp()}\"\n", + "\n", + "print(f\"APP_NAME={APP_NAME}\")\n", + "print(f\"CUSTOM_TRAIN_IMAGE_URI={CUSTOM_TRAIN_IMAGE_URI}\")\n", + "print(f\"JOB_NAME={JOB_NAME}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9d46db3a8b23" + }, + "source": [ + "Define the training arguments with `hp-tune` argument set to `y` so that training application code can report metrics to Vertex" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "30b206352f6e" + }, + "outputs": [], + "source": [ + "training_args = [\n", + " \"--num-epochs\",\n", + " \"2\",\n", + " \"--model-name\",\n", + " \"finetuned-bert-classifier\",\n", + " \"--hp-tune\",\n", + " \"y\",\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0e84606af6ab" + }, + "source": [ + "Create a **`CustomJob`** with worker pool specs to define machine types, accelerators and customer container spec with the training application code" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0456de4efb46" + }, + "outputs": [], + "source": [ + "# The spec of the worker pools including machine type and Docker image\n", + "worker_pool_specs = [\n", + " {\n", + " \"machine_spec\": {\n", + " \"machine_type\": \"n1-standard-8\",\n", + " \"accelerator_type\": \"NVIDIA_TESLA_V100\",\n", + " \"accelerator_count\": 1,\n", + " },\n", + " \"replica_count\": 1,\n", + " \"container_spec\": {\"image_uri\": CUSTOM_TRAIN_IMAGE_URI, \"args\": training_args},\n", + " }\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1339a33f3c3c" + }, + "outputs": [], + "source": [ + "custom_job = aiplatform.CustomJob(\n", + " display_name=JOB_NAME, worker_pool_specs=worker_pool_specs\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "269d6ffa999f" + }, + "source": [ + "Define the `parameter_spec` as a Python dictionary object with the search space i.e. parameters to search and optimize. They key is the hyperparameter name passed as command line argument to the training code and value is the parameter specification. The spec requires to specify the hyperparameter data type as an instance of a parameter value specification. \n", + "\n", + "Refer to the [documentation](https://cloud.google.com/vertex-ai/docs/training/hyperparameter-tuning-overview#hyperparameters) on selecting the hyperparaneter to tune and how to define parameter specification." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4210677c7ec7" + }, + "outputs": [], + "source": [ + "# Dictionary representing parameters to optimize.\n", + "# The dictionary key is the parameter_id, which is passed into your training\n", + "# job as a command line argument,\n", + "# And the dictionary value is the parameter specification of the metric.\n", + "parameter_spec = {\n", + " \"learning-rate\": hpt.DoubleParameterSpec(min=1e-6, max=0.001, scale=\"log\"),\n", + " \"weight-decay\": hpt.DiscreteParameterSpec(\n", + " values=[0.0001, 0.001, 0.01, 0.1], scale=None\n", + " ),\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e29058ada6d4" + }, + "source": [ + "Define the `metric_spec` with name and goal of metric to optimize. The goal specifies whether you want to tune your model to maximize or minimize the value of this metric." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6d50f78b1303" + }, + "outputs": [], + "source": [ + "# Dictionary representing metrics to optimize.\n", + "# The dictionary key is the metric_id, which is reported by your training job,\n", + "# And the dictionary value is the optimization goal of the metric.\n", + "metric_spec = {\"accuracy\": \"maximize\"}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3c5215ca590c" + }, + "source": [ + "Configure and submit a Hyperparameter Tuning Job with the Custom Job, metric spec, parameter spec and trial limits.\n", + "\n", + "- **`max_trial_count`**: Maximum # of Trials run by the service. We recommend to start with a smaller value to understand the impact of the hyperparameters chosen before scaling up.\n", + "- **`parallel_trial_count`**: Number of Trials to run in parallel. We recommend to start with a smaller value as Vertex AI uses results from the previous trials to inform the assignment of values in subsequent trials. Large # of parallel trials mean these trials start without having the benefit of the results of any trials still running.\n", + "- **`search_algorithm`**: Search algorithm specified for the Study. If you do not specify an algorithm, Vertex AI by default applies Bayesian optimization to arrive at the optimal solution to search over the parameter space. \n", + "\n", + "Refer to the [documentation](https://cloud.google.com/vertex-ai/docs/training/using-hyperparameter-tuning#configuration) to understand the hyperparameter training job configuration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8d8088bfa3ad" + }, + "outputs": [], + "source": [ + "hp_job = aiplatform.HyperparameterTuningJob(\n", + " display_name=JOB_NAME,\n", + " custom_job=custom_job,\n", + " metric_spec=metric_spec,\n", + " parameter_spec=parameter_spec,\n", + " max_trial_count=5,\n", + " parallel_trial_count=2,\n", + " search_algorithm=None,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "d4f07757c0a4" + }, + "outputs": [], + "source": [ + "model = hp_job.run(sync=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "d07c7cb26ad8" + }, + "source": [ + "##### **Monitoring progress of the Custom Job**\n", + "\n", + "You can monitor the hyperparameter tuning job launched from Cloud Console following the link [here](https://console.cloud.google.com/vertex-ai/training/hyperparameter-tuning-jobs/) or use gcloud CLI command [`gcloud beta ai custom-jobs stream-logs`](https://cloud.google.com/sdk/gcloud/reference/beta/ai/custom-jobs/stream-logs)\n", + "\n", + "![Monitor hyperparameter tuning job progress in Vertex Training](./images/vertex-training-monitor-hptuning-job-container.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ba934b434f03" + }, + "source": [ + "After the job is finished, you can view and format the results of the hyperparameter tuning Trials (run by Vertex Training service) as a Pandas dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "9b5abf9ca2d7" + }, + "outputs": [], + "source": [ + "def get_trials_as_df(trials):\n", + " results = []\n", + " for trial in trials:\n", + " row = {}\n", + " t = MessageToDict(trial._pb)\n", + " # print(t)\n", + " row[\"Trial ID\"], row[\"Status\"], row[\"Start time\"], row[\"End time\"] = (\n", + " t[\"id\"],\n", + " t[\"state\"],\n", + " t[\"startTime\"],\n", + " t.get(\"endTime\", None),\n", + " )\n", + "\n", + " for param in t[\"parameters\"]:\n", + " row[param[\"parameterId\"]] = param[\"value\"]\n", + "\n", + " if t[\"state\"] == \"SUCCEEDED\":\n", + " row[\"Training step\"] = t[\"finalMeasurement\"][\"stepCount\"]\n", + " for metric in t[\"finalMeasurement\"][\"metrics\"]:\n", + " row[metric[\"metricId\"]] = metric[\"value\"]\n", + " results.append(row)\n", + "\n", + " _df = pd.DataFrame(results)\n", + " return _df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "972f23712ce4" + }, + "outputs": [], + "source": [ + "df_trials = get_trials_as_df(hp_job.trials)\n", + "df_trials" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5dbccb2b7d32" + }, + "source": [ + "Now from the results of Trials, you can pick the best performing Trial to deploy to Vertex Predictions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "c32f8a0a9c76" + }, + "outputs": [], + "source": [ + "# get trial id of the best run from the Trials\n", + "best_trial_id = df_trials.loc[df_trials[\"accuracy\"].idxmax()][\"Trial ID\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8057eebb32e9" + }, + "outputs": [], + "source": [ + "# get base output directory where artifacts are saved\n", + "base_output_dir = MessageToDict(hp_job._gca_resource._pb)[\"trialJobSpec\"][\n", + " \"baseOutputDirectory\"\n", + "][\"outputUriPrefix\"]\n", + "\n", + "# get the model artifacts of the best trial id\n", + "best_model_artifact_uri = f\"{base_output_dir}/{best_trial_id}\"\n", + "\n", + "print(\n", + " f\"Model artifacts from the Hyperparameter Tuning Job with bbest trial id {best_trial_id} are located at {best_model_artifact_uri}\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "c120990dfa7e" + }, + "source": [ + "You can validate the model artifacts written to GCS by the training code by running the following command:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "fbac4a0c28a5" + }, + "outputs": [], + "source": [ + "!gsutil ls -r $best_model_artifact_uri/" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2b43f9a01162" + }, + "source": [ + "##### ***[Optional]*** **Submit hyperparameter tuning job using gcloud CLI**\n", + "You can submit the hyperparameter tuning job to Vertex AI training service using [`gcloud beta ai hp-tuning-jobs create`](https://cloud.google.com/sdk/gcloud/reference/beta/ai/hp-tuning-jobs/create). `gcloud` command submits the hyperparameter tuning job and launches multiple trials with worker pool based on custom container image specified and number of trials and the criteria set. The command requires hyperparameter tuning job configuration provided as configuration file in YAML format with job name.\n", + "\n", + "The following cell shows how to submit a hyperparameter tuning job on Vertex AI using `gcloud` CLI: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "39a793062138" + }, + "outputs": [], + "source": [ + "%%bash -s $BUCKET_NAME $APP_NAME\n", + "\n", + "# ========================================================\n", + "# set job parameters\n", + "# ========================================================\n", + "# PROJECT_ID: Change to your project id\n", + "PROJECT_ID=$(gcloud config list --format 'value(core.project)')\n", + " \n", + "# set job display name\n", + "JOB_PREFIX=\"finetuned-bert-classifier\"\n", + "JOB_NAME=${JOB_PREFIX}-pytorch-hptune-$(date +%Y%m%d%H%M%S)\n", + "echo \"Launching hyperparameter tuning job with display name as \"$JOB_NAME\n", + "\n", + "# BUCKET_NAME: Change to your bucket name\n", + "BUCKET_NAME=$1 # <-- CHANGE TO YOUR BUCKET NAME\n", + "\n", + "# APP_NAME: get application name\n", + "APP_NAME=$2\n", + "\n", + "# JOB_DIR: Where to store prepared package and upload output model.\n", + "JOB_DIR=${BUCKET_NAME}/${JOB_PREFIX}/model/${JOB_NAME}\n", + "\n", + "# custom container image URI\n", + "CUSTOM_TRAIN_IMAGE_URI=f'gcr.io/'${PROJECT_ID}'/pytorch_gpu_train_'${APP_NAME}\n", + "\n", + "# ========================================================\n", + "# create hyperparameter tuning configuration file\n", + "# ========================================================\n", + "cat << EOF > ./python_package/hptuning_job.yaml\n", + "\n", + "studySpec:\n", + " metrics:\n", + " - metricId: accuracy\n", + " goal: MAXIMIZE\n", + " parameters:\n", + " - parameterId: learning-rate\n", + " scaleType: UNIT_LOG_SCALE\n", + " doubleValueSpec:\n", + " minValue: 0.000001\n", + " maxValue: 0.001\n", + " - parameterId: weight-decay\n", + " scaleType: SCALE_TYPE_UNSPECIFIED\n", + " discreteValueSpec:\n", + " values: [\n", + " 0.0001, \n", + " 0.001, \n", + " 0.01, \n", + " 0.1\n", + " ]\n", + " measurementSelectionType: BEST_MEASUREMENT\n", + "trialJobSpec:\n", + " workerPoolSpecs:\n", + " - machineSpec:\n", + " machineType: n1-standard-8\n", + " acceleratorType: NVIDIA_TESLA_V100\n", + " acceleratorCount: 1 \n", + " replicaCount: 1\n", + " containerSpec:\n", + " imageUri: $CUSTOM_TRAIN_IMAGE_URI\n", + " args: [\"--num-epochs\", \"2\", \"--model-name\", \"finetuned-bert-classifier\", \"--hp-tune\", \"y\"]\n", + " baseOutputDirectory: \n", + " outputUriPrefix: $JOB_DIR/\n", + "EOF\n", + "\n", + "# ========================================================\n", + "# submit hyperparameter tuning job\n", + "# ========================================================\n", + "gcloud beta ai hp-tuning-jobs create \\\n", + " --config ./python_package/hptuning_job.yaml \\\n", + " --display-name $JOB_NAME \\\n", + " --algorithm algorithm-unspecified \\\n", + " --max-trial-count 5 \\\n", + " --parallel-trial-count 2 \\\n", + " --region=us-central1" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a4685723ceaf" + }, + "source": [ + "## Deploying\n", + "\n", + "Deploying a PyTorch model on [Vertex Predictions](https://cloud.google.com/vertex-ai/docs/predictions/getting-predictions) requires to use a custom container that serves online predictions. You will deploy a container running [PyTorch's TorchServe](https://pytorch.org/serve/) tool in order to serve predictions from a fine-tuned transformer model from Hugging Face Transformers for sentiment analysis task. You can then use Vertex Predictions to classify sentiment of input texts. \n", + "\n", + "### Deploying model on Vertex Predictions with custom container\n", + "\n", + "To use a custom container to serve predictions from a PyTorch model, you must provide Vertex AI with a Docker container image that runs an HTTP server, such as TorchServe in this case. Please refer to [documentation](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements) that describes the container image requirements to be compatible with Vertex Predictions.\n", + "\n", + "![Serving with Custom Containers on Vertex Predictions](./images/serve-pytorch-model-on-vertex-predictions-with-custom-containers.png)\n", + "\n", + "Essentially, to deploy a PyTorch model on Vertex Predictions following are the steps:\n", + "\n", + "1. Package the trained model artifacts including [default](https://pytorch.org/serve/#default-handlers) or [custom](https://pytorch.org/serve/custom_service.html) handlers by creating an archive file using [Torch model archiver](https://github.com/pytorch/serve/tree/master/model-archiver)\n", + "2. Build a [custom container](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements) compatible with Vertex Predictions to serve the model using Torchserve\n", + "3. Upload the model with custom container image to serve predictions as a Vertex Model resource\n", + "4. Create a Vertex Endpoint and [deploy the model](https://cloud.google.com/vertex-ai/docs/predictions/deploy-model-api) resource" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4c931da77e57" + }, + "source": [ + "#### **Create a custom model handler to handle prediction requests**\n", + "\n", + "When predicting sentiments of the input text with the fine-tuned transformer model, it requires pre-processing of the input text and post-processing by adding name (positive/negative) to the target label (1/0) along with probability (or confidence). We create a custom handler script that is packaged with the model artifacts and TorchServe executes the code when it runs. \n", + "\n", + "Custom handler script does the following:\n", + "\n", + "- Pre-process input text before sending it to the model for inference\n", + "- Customize how the model is invoked for inference\n", + "- Post-process output from the model before sending back a response\n", + "\n", + "Please refer to the [TorchServe documentation](https://pytorch.org/serve/custom_service.html) for defining a custom handler." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5ceb881740d6" + }, + "outputs": [], + "source": [ + "%%writefile predictor/custom_text_handler.py\n", + "\n", + "import os\n", + "import json\n", + "import logging\n", + "\n", + "import torch\n", + "from transformers import AutoModelForSequenceClassification, AutoTokenizer\n", + "from ts.torch_handler.base_handler import BaseHandler\n", + "\n", + "logger = logging.getLogger(__name__)\n", + "\n", + "\n", + "class TransformersClassifierHandler(BaseHandler):\n", + " \"\"\"\n", + " The handler takes an input string and returns the classification text \n", + " based on the serialized transformers checkpoint.\n", + " \"\"\"\n", + " def __init__(self):\n", + " super(TransformersClassifierHandler, self).__init__()\n", + " self.initialized = False\n", + "\n", + " def initialize(self, ctx):\n", + " \"\"\" Loads the model.pt file and initialized the model object.\n", + " Instantiates Tokenizer for preprocessor to use\n", + " Loads labels to name mapping file for post-processing inference response\n", + " \"\"\"\n", + " self.manifest = ctx.manifest\n", + "\n", + " properties = ctx.system_properties\n", + " model_dir = properties.get(\"model_dir\")\n", + " self.device = torch.device(\"cuda:\" + str(properties.get(\"gpu_id\")) if torch.cuda.is_available() else \"cpu\")\n", + "\n", + " # Read model serialize/pt file\n", + " serialized_file = self.manifest[\"model\"][\"serializedFile\"]\n", + " model_pt_path = os.path.join(model_dir, serialized_file)\n", + " if not os.path.isfile(model_pt_path):\n", + " raise RuntimeError(\"Missing the model.pt or pytorch_model.bin file\")\n", + " \n", + " # Load model\n", + " self.model = AutoModelForSequenceClassification.from_pretrained(model_dir)\n", + " self.model.to(self.device)\n", + " self.model.eval()\n", + " logger.debug('Transformer model from path {0} loaded successfully'.format(model_dir))\n", + " \n", + " # Ensure to use the same tokenizer used during training\n", + " self.tokenizer = AutoTokenizer.from_pretrained('bert-base-cased')\n", + "\n", + " # Read the mapping file, index to object name\n", + " mapping_file_path = os.path.join(model_dir, \"index_to_name.json\")\n", + "\n", + " if os.path.isfile(mapping_file_path):\n", + " with open(mapping_file_path) as f:\n", + " self.mapping = json.load(f)\n", + " else:\n", + " logger.warning('Missing the index_to_name.json file. Inference output will not include class name.')\n", + "\n", + " self.initialized = True\n", + "\n", + " def preprocess(self, data):\n", + " \"\"\" Preprocessing input request by tokenizing\n", + " Extend with your own preprocessing steps as needed\n", + " \"\"\"\n", + " text = data[0].get(\"data\")\n", + " if text is None:\n", + " text = data[0].get(\"body\")\n", + " sentences = text.decode('utf-8')\n", + " logger.info(\"Received text: '%s'\", sentences)\n", + "\n", + " # Tokenize the texts\n", + " tokenizer_args = ((sentences,))\n", + " inputs = self.tokenizer(*tokenizer_args,\n", + " padding='max_length',\n", + " max_length=128,\n", + " truncation=True,\n", + " return_tensors = \"pt\")\n", + " return inputs\n", + "\n", + " def inference(self, inputs):\n", + " \"\"\" Predict the class of a text using a trained transformer model.\n", + " \"\"\"\n", + " prediction = self.model(inputs['input_ids'].to(self.device))[0].argmax().item()\n", + "\n", + " if self.mapping:\n", + " prediction = self.mapping[str(prediction)]\n", + "\n", + " logger.info(\"Model predicted: '%s'\", prediction)\n", + " return [prediction]\n", + "\n", + " def postprocess(self, inference_output):\n", + " return inference_output\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f32fe0d49feb" + }, + "source": [ + "##### **Generate target label to name file** *[Optional]*\n", + "\n", + "In the custom handler, we refer to a mapping file between target labels and their meaningful names that will be used to format the prediction response. Here we are mapping target label \"0\" as \"Negative\" and \"1\" as \"Positive\". " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "1be04c0f8960" + }, + "outputs": [], + "source": [ + "%%writefile ./predictor/index_to_name.json\n", + "\n", + "{\n", + " \"0\": \"Negative\", \n", + " \"1\": \"Positive\"\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "d3feca8d40a3" + }, + "source": [ + "#### **Create custom container image to serve predictions**\n", + "\n", + "We will use Cloud Build to create the custom container image with following build steps:\n", + "\n", + "##### **Download model artifacts**\n", + "\n", + "Download model artifacts that were saved as part of the training (or hyperparameter tuning) job from Cloud Storage to local directory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6966da1a55a5" + }, + "outputs": [], + "source": [ + "GCS_MODEL_ARTIFACTS_URI = best_model_artifact_uri" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "560170b3b7d9" + }, + "source": [ + "Validate model artifact files in the Cloud Storage bucket" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "216c2d276daa" + }, + "outputs": [], + "source": [ + "!gsutil ls -r $GCS_MODEL_ARTIFACTS_URI/model/" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a112fd084cf4" + }, + "source": [ + "Copy files from Cloud Storage to local directory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "82e7e1a28c92" + }, + "outputs": [], + "source": [ + "!gsutil -m cp -r $GCS_MODEL_ARTIFACTS_URI/model/ ./predictor/" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0302ecd8df0c" + }, + "outputs": [], + "source": [ + "!ls -ltrR ./predictor/model" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0b44d55f7be1" + }, + "source": [ + "##### **Build the container image**\n", + "\n", + "Create a Dockerfile with TorchServe as base image:\n", + "\n", + " - **`RUN`**: Installs dependencies such as `transformers`\n", + " - **`COPY`**: Add model artifacts to `/home/model-server/` directory of the container image\n", + " - **`COPY`**: Add custom handler script to `/home/model-server/` directory of the container image\n", + " - **`RUN`**: Create `/home/model-server/config.properties` to define the serving configuration (health and prediction listener ports)\n", + " - **`RUN`**: Run [Torch model archiver](https://pytorch.org/serve/model-archiver.html) to create a model archive file from the files copied into the image `/home/model-server/`. The model archive is saved in the `/home/model-server/model-store/` with name same as `.mar`\n", + " - **`CMD`**: Launch Torchserve HTTP server referencing the configuration properties and enables serving for the model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "54acc94e5949" + }, + "outputs": [], + "source": [ + "%%bash -s $APP_NAME\n", + "\n", + "APP_NAME=$1\n", + "\n", + "cat << EOF > ./predictor/Dockerfile\n", + "\n", + "FROM pytorch/torchserve:latest-cpu\n", + "\n", + "# install dependencies\n", + "RUN pip3 install transformers\n", + "\n", + "# copy model artifacts, custom handler and other dependencies\n", + "COPY ./custom_text_handler.py /home/model-server/\n", + "COPY ./index_to_name.json /home/model-server/\n", + "COPY ./model/$APP_NAME/ /home/model-server/\n", + "\n", + "# create torchserve configuration file\n", + "USER root\n", + "RUN printf \"\\nservice_envelope=json\" >> /home/model-server/config.properties\n", + "RUN printf \"\\ninference_address=http://0.0.0.0:7080\" >> /home/model-server/config.properties\n", + "RUN printf \"\\nmanagement_address=http://0.0.0.0:7081\" >> /home/model-server/config.properties\n", + "USER model-server\n", + "\n", + "# expose health and prediction listener ports from the image\n", + "EXPOSE 7080\n", + "EXPOSE 7081\n", + "\n", + "# create model archive file packaging model artifacts and dependencies\n", + "RUN torch-model-archiver -f \\\n", + " --model-name=$APP_NAME \\\n", + " --version=1.0 \\\n", + " --serialized-file=/home/model-server/pytorch_model.bin \\\n", + " --handler=/home/model-server/custom_text_handler.py \\\n", + " --extra-files \"/home/model-server/config.json,/home/model-server/tokenizer.json,/home/model-server/training_args.bin,/home/model-server/tokenizer_config.json,/home/model-server/special_tokens_map.json,/home/model-server/vocab.txt,/home/model-server/index_to_name.json\" \\\n", + " --export-path=/home/model-server/model-store\n", + "\n", + "# run Torchserve HTTP serve to respond to prediction requests\n", + "CMD [\"torchserve\", \\\n", + " \"--start\", \\\n", + " \"--ts-config=/home/model-server/config.properties\", \\\n", + " \"--models\", \\\n", + " \"$APP_NAME=$APP_NAME.mar\", \\\n", + " \"--model-store\", \\\n", + " \"/home/model-server/model-store\"]\n", + "EOF\n", + "\n", + "echo \"Writing ./predictor/Dockerfile\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e8878a9e37fe" + }, + "source": [ + "Build the docker image tagged with Container Registry (gcr.io) path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "d2d6b9a4857c" + }, + "outputs": [], + "source": [ + "CUSTOM_PREDICTOR_IMAGE_URI = f\"gcr.io/{PROJECT_ID}/pytorch_predict_{APP_NAME}\"\n", + "print(f\"CUSTOM_PREDICTOR_IMAGE_URI = {CUSTOM_PREDICTOR_IMAGE_URI}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8ac17dec3371" + }, + "outputs": [], + "source": [ + "!docker build \\\n", + " --tag=$CUSTOM_PREDICTOR_IMAGE_URI \\\n", + " ./predictor" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5e13aeb92678" + }, + "source": [ + "#### **Run the container locally** ***[Optional]***\n", + "\n", + "Before push the container image to Container Registry to use it with Vertex Predictions, you can run it as a container in your local environment to verify that the server works as expected" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eaf5bb210eb9" + }, + "source": [ + "1. To run the container image as a container locally, run the following command:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5b848c5fec2f" + }, + "outputs": [], + "source": [ + "!docker stop local_bert_classifier\n", + "!docker run -t -d --rm -p 7080:7080 --name=local_bert_classifier $CUSTOM_PREDICTOR_IMAGE_URI\n", + "!sleep 20" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "a63999a79fea" + }, + "source": [ + "2. To send the container's server a health check, run the following command:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6499006af599" + }, + "outputs": [], + "source": [ + "!curl http://localhost:7080/ping" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2a45d57cf5ba" + }, + "source": [ + "If successful, the server returns the following response:\n", + "\n", + "```\n", + "{\n", + " \"status\": \"Healthy\"\n", + "}\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6413202bfeb8" + }, + "source": [ + "3. To send the container's server a prediction request, run the following commands:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "246d76732fcb" + }, + "outputs": [], + "source": [ + "%%bash -s $APP_NAME\n", + "\n", + "APP_NAME=$1\n", + "\n", + "cat > ./predictor/instances.json <\"\n", + " }\n", + " }\n", + "]\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "646e9dfe8add" + }, + "source": [ + "Define sample texts to test predictions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "edc4658b2df1" + }, + "outputs": [], + "source": [ + "test_instances = [\n", + " b\"Jaw dropping visual affects and action! One of the best I have seen to date.\",\n", + " b\"Take away the CGI and the A-list cast and you end up with film with less punch.\",\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "52303da7c048" + }, + "source": [ + "##### **Sending an online prediction request**\n", + "\n", + "Format input text string and call prediction endpoint with formatted input request and get the response" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "a5808801dbcb" + }, + "outputs": [], + "source": [ + "print(\"=\" * 100)\n", + "for instance in test_instances:\n", + " print(f\"Input text: \\n\\t{instance.decode('utf-8')}\\n\")\n", + " b64_encoded = base64.b64encode(instance)\n", + " test_instance = [{\"data\": {\"b64\": f\"{str(b64_encoded.decode('utf-8'))}\"}}]\n", + " print(f\"Formatted input: \\n{json.dumps(test_instance, indent=4)}\\n\")\n", + " prediction = endpoint.predict(instances=test_instance)\n", + " print(f\"Prediction response: \\n\\t{prediction}\")\n", + " print(\"=\" * 100)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "21664e69720a" + }, + "source": [ + "##### ***[Optional]*** **Make prediction requests using gcloud CLI**\n", + "You can also call the Vertex Endpoint to make predictions using [`gcloud beta ai endpoints predict`](https://cloud.google.com/sdk/gcloud/reference/beta/ai/endpoints/predict). \n", + "\n", + "The following cell shows how to make a prediction request to Vertex Endpoints using `gcloud` CLI: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "7bb062d3e7a8" + }, + "outputs": [], + "source": [ + "endpoint_display_name = f\"{APP_NAME}-endpoint\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "950c04742e87" + }, + "outputs": [], + "source": [ + "%%bash -s $REGION $endpoint_display_name\n", + "\n", + "REGION=$1\n", + "endpoint_display_name=$2\n", + "\n", + "# get endpoint id\n", + "echo \"REGION = ${REGION}\"\n", + "echo \"ENDPOINT DISPLAY NAME = ${endpoint_display_name}\"\n", + "endpoint_id=$(gcloud beta ai endpoints list --region ${REGION} --filter \"display_name=${endpoint_display_name}\" --format \"value(ENDPOINT_ID)\")\n", + "echo \"ENDPOINT_ID = ${endpoint_id}\"\n", + "\n", + "# call prediction endpoint\n", + "input_text=\"Take away the CGI and the A-list cast and you end up with film with less punch.\"\n", + "echo \"INPUT TEXT = ${input_text}\"\n", + "\n", + "prediction=$(\n", + "echo \"\"\"\n", + "{ \n", + " \"instances\": [\n", + " { \n", + " \"data\": {\n", + " \"b64\": \"$(echo ${input_text} | base64 --wrap=0)\"\n", + " }\n", + " }\n", + " ]\n", + "}\n", + "\"\"\" | gcloud beta ai endpoints predict ${endpoint_id} --region=$REGION --json-request -)\n", + "\n", + "echo \"PREDICTION RESPONSE = ${prediction}\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e636b52e5913" + }, + "source": [ + "## Cleaning up \n", + "\n", + "### Cleaning up training and deployment resources\n", + "\n", + "To clean up all Google Cloud resources used in this notebook, you can [delete the Google Cloud project](https://cloud.google.com/resource-manager/docs/creating-managing-projects#shutting_down_projects) you used for the tutorial.\n", + "\n", + "Otherwise, you can delete the individual resources you created in this tutorial:\n", + "\n", + "- Training Jobs\n", + "- Model\n", + "- Endpoint\n", + "- Cloud Storage Bucket\n", + "- Container Images\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7b89f5a348d1" + }, + "source": [ + "Set flags for the resource type to be deleted" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "26ee41d02418" + }, + "outputs": [], + "source": [ + "delete_custom_job = True\n", + "delete_hp_tuning_job = True\n", + "delete_endpoint = True\n", + "delete_model = True\n", + "delete_bucket = True\n", + "delete_image = True" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fa19a6540bd2" + }, + "source": [ + "Define clients for jobs, models and endpoints" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "7f5f8dbd8cb6" + }, + "outputs": [], + "source": [ + "# API Endpoint\n", + "API_ENDPOINT = \"{}-aiplatform.googleapis.com\".format(REGION)\n", + "\n", + "# Vertex AI location root path for your dataset, model and endpoint resources\n", + "PARENT = f\"projects/{PROJECT_ID}/locations/{REGION}\"\n", + "\n", + "client_options = {\"api_endpoint\": API_ENDPOINT}\n", + "\n", + "# Initialize Vertex SDK\n", + "aiplatform.init(project=PROJECT_ID, staging_bucket=BUCKET_NAME)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6e41b7b75ef6" + }, + "outputs": [], + "source": [ + "# functions to create client\n", + "def create_job_client():\n", + " client = aip.JobServiceClient(client_options=client_options)\n", + " return client\n", + "\n", + "\n", + "def create_model_client():\n", + " client = aip.ModelServiceClient(client_options=client_options)\n", + " return client\n", + "\n", + "\n", + "def create_endpoint_client():\n", + " client = aip.EndpointServiceClient(client_options=client_options)\n", + " return client\n", + "\n", + "\n", + "clients = {}\n", + "clients[\"job\"] = create_job_client()\n", + "clients[\"model\"] = create_model_client()\n", + "clients[\"endpoint\"] = create_endpoint_client()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "c41b12064678" + }, + "source": [ + "Define functions to list the jobs, models and endpoints starting with `APP_NAME` defined earlier in the notebook" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "c9a450d8eea2" + }, + "outputs": [], + "source": [ + "def list_custom_jobs():\n", + " client = clients[\"job\"]\n", + " jobs = []\n", + " response = client.list_custom_jobs(parent=PARENT)\n", + " for row in response:\n", + " _row = MessageToDict(row._pb)\n", + " if _row[\"displayName\"].startswith(APP_NAME):\n", + " jobs.append((_row[\"name\"], _row[\"displayName\"]))\n", + " return jobs\n", + "\n", + "\n", + "def list_hp_tuning_jobs():\n", + " client = clients[\"job\"]\n", + " jobs = []\n", + " response = client.list_hyperparameter_tuning_jobs(parent=PARENT)\n", + " for row in response:\n", + " _row = MessageToDict(row._pb)\n", + " if _row[\"displayName\"].startswith(APP_NAME):\n", + " jobs.append((_row[\"name\"], _row[\"displayName\"]))\n", + " return jobs\n", + "\n", + "\n", + "def list_models():\n", + " client = clients[\"model\"]\n", + " models = []\n", + " response = client.list_models(parent=PARENT)\n", + " for row in response:\n", + " _row = MessageToDict(row._pb)\n", + " if _row[\"displayName\"].startswith(APP_NAME):\n", + " models.append((_row[\"name\"], _row[\"displayName\"]))\n", + " return models\n", + "\n", + "\n", + "def list_endpoints():\n", + " client = clients[\"endpoint\"]\n", + " endpoints = []\n", + " response = client.list_endpoints(parent=PARENT)\n", + " for row in response:\n", + " _row = MessageToDict(row._pb)\n", + " if _row[\"displayName\"].startswith(APP_NAME):\n", + " print(_row)\n", + " endpoints.append((_row[\"name\"], _row[\"displayName\"]))\n", + " return endpoints" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1281b5fe9222" + }, + "source": [ + "#### **Deleting custom training jobs**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "944b5ec4694c" + }, + "outputs": [], + "source": [ + "# Delete the custom training using the Vertex AI fully qualified identifier for the custom training\n", + "try:\n", + " if delete_custom_job:\n", + " custom_jobs = list_custom_jobs()\n", + " for job_id, job_name in custom_jobs:\n", + " print(f\"Deleting job {job_id} [{job_name}]\")\n", + " clients[\"job\"].delete_custom_job(name=job_id)\n", + "except Exception as e:\n", + " print(e)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dd76a52356ec" + }, + "source": [ + "#### **Deleting hyperparameter tuning jobs**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "b65e57c07b43" + }, + "outputs": [], + "source": [ + "# Delete the hyperparameter tuning jobs using the Vertex AI fully qualified identifier for the hyperparameter tuning job\n", + "try:\n", + " if delete_hp_tuning_job:\n", + " hp_tuning_jobs = list_hp_tuning_jobs()\n", + " for job_id, job_name in hp_tuning_jobs:\n", + " print(f\"Deleting job {job_id} [{job_name}]\")\n", + " clients[\"job\"].delete_hyperparameter_tuning_job(name=job_id)\n", + "except Exception as e:\n", + " print(e)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dc21008bb215" + }, + "source": [ + "#### **Undeploy models and Delete endpoints**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "51684df7dc6b" + }, + "outputs": [], + "source": [ + "# Delete the endpoint using the Vertex AI fully qualified identifier for the endpoint\n", + "try:\n", + " if delete_endpoint:\n", + " endpoints = list_endpoints()\n", + " for endpoint_id, endpoint_name in endpoints:\n", + " endpoint = aiplatform.Endpoint(endpoint_id)\n", + " # undeploy models from the endpoint\n", + " print(f\"Undeploying all deployed models from the endpoint {endpoint_name}\")\n", + " endpoint.undeploy_all(sync=True)\n", + " # deleting endpoint\n", + " print(f\"Deleting endpoint {endpoint_id} [{endpoint_name}]\")\n", + " clients[\"endpoint\"].delete_endpoint(name=endpoint_id)\n", + "except Exception as e:\n", + " print(e)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4a6719f8f8a2" + }, + "source": [ + "#### **Deleting models**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "087a5322f387" + }, + "outputs": [], + "source": [ + "# Delete the model using the Vertex AI fully qualified identifier for the model\n", + "try:\n", + " models = list_models()\n", + " for model_id, model_name in models:\n", + " print(f\"Deleting model {model_id} [{model_name}]\")\n", + " clients[\"model\"].delete_model(name=model_id)\n", + "except Exception as e:\n", + " print(e)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "938a7cd172ab" + }, + "source": [ + "#### **Delete contents from the staging bucket**\n", + "\n", + "---\n", + "\n", + "***NOTE: Everything in this Cloud Storage bucket will be DELETED. Please run it with caution.***\n", + "\n", + "---" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "a50bd867c02d" + }, + "outputs": [], + "source": [ + "if delete_bucket and \"BUCKET_NAME\" in globals():\n", + " print(f\"Deleting all contents from the bucket {BUCKET_NAME}\")\n", + "\n", + " shell_output=! gsutil du -as $BUCKET_NAME\n", + " print(\n", + " f\"Size of the bucket {BUCKET_NAME} before deleting = {shell_output[0].split()[0]} bytes\"\n", + " )\n", + "\n", + " # uncomment below line to delete contents of the bucket\n", + " # ! gsutil rm -r $BUCKET_NAME\n", + "\n", + " shell_output=! gsutil du -as $BUCKET_NAME\n", + " if float(shell_output[0].split()[0]) > 0:\n", + " print(\n", + " \"PLEASE UNCOMMENT LINE TO DELETE BUCKET. CONTENT FROM THE BUCKET NOT DELETED\"\n", + " )\n", + "\n", + " print(\n", + " f\"Size of the bucket {BUCKET_NAME} after deleting = {shell_output[0].split()[0]} bytes\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "afd19ee7efa7" + }, + "source": [ + "#### **Delete images from Container Registry**\n", + "\n", + "Deletes all the container images created in this tutorial with prefix defined by variable `APP_NAME` from the registry. All associated tags are also deleted." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "d45ec639148b" + }, + "outputs": [], + "source": [ + "gcr_images = !gcloud container images list --repository=gcr.io/$PROJECT_ID --filter=\"name~\"$APP_NAME\n", + "\n", + "if delete_image:\n", + " for image in gcr_images:\n", + " if image != \"NAME\": # skip header line\n", + " print(f\"Deleting image {image} including all tags\")\n", + " !gcloud container images delete $image --force-delete-tags --quiet" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3541e1629c02" + }, + "source": [ + "### Cleaning up Notebook Environment\n", + "\n", + "After you are done experimenting, you can either [STOP](https://cloud.google.com/ai-platform/notebooks/docs/shut-down) or DELETE the AI Notebook instance to prevent any charges. If you want to save your work, you can choose to stop the instance instead.\n", + "\n", + "```\n", + "# Stopping Notebook instance\n", + "gcloud notebooks instances stop example-instance --location=us-central1-a\n", + "\n", + "\n", + "# Deleting Notebook instance\n", + "gcloud notebooks instances delete example-instance --location=us-central1-a\n", + "```" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [ + "n9qywopnIrJH", + "545PP3o8IrJV", + "7k8ge1L1IrJk" + ], + "name": "pytorch-text-classification-vertex-ai-train-tune-deploy.ipynb", + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS index 62d3b11fa..20e28adb7 100644 --- a/docs/CODEOWNERS +++ b/docs/CODEOWNERS @@ -16,6 +16,7 @@ # Community Content /community-content @morgandu /community-content/tf_agents_bandits_movie_recommendation_with_kfp_and_vertex_sdk @yinghsienwu +/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud @RajeshThallam @ultrons

B0mY<%L^d=Rp~CJWuqZSw@JQLqWIAdpI$ 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 literal 0 HcmV?d00001 diff --git a/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/training-with-custom-containers-on-vertex-training.png b/community-content/pytorch_text_classification_using_vertex_sdk_and_gcloud/images/training-with-custom-containers-on-vertex-training.png new file mode 100644 index 0000000000000000000000000000000000000000..94d8e09be5d3b3868739663376e7d41c4bf2534b GIT binary patch literal 43570 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%0Db4LC6NN7W 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