1. Visão geral
Neste laboratório, você vai aprender a configurar e iniciar execuções de notebooks com o Vertex AI Workbench.
Conteúdo do laboratório
Você vai aprender a:
- Usar parâmetros em um notebook
- Configurar e iniciar execuções de notebook na interface do Vertex AI Workbench
O custo total da execução deste laboratório no Google Cloud é de aproximadamente US$ 2.
2. Introdução à Vertex AI
Este laboratório usa a mais nova oferta de produtos de IA disponível no Google Cloud. A Vertex AI integra as ofertas de ML do Google Cloud em uma experiência de desenvolvimento intuitiva. Anteriormente, modelos treinados com o AutoML e modelos personalizados eram acessíveis por serviços separados. A nova oferta combina ambos em uma única API, com outros novos produtos. Você também pode migrar projetos existentes para a Vertex AI. Se você tiver algum feedback, consulte a página de suporte.
A Vertex AI inclui vários produtos diferentes para dar suporte a fluxos de trabalho integrais de ML. Este laboratório vai se concentrar no Vertex AI Workbench.
Com o Vertex AI Workbench, os usuários criam de modo rápido fluxos de trabalho completos com notebooks, por meio da integração entre serviços de dados (como Dataproc, Dataflow, BigQuery e Dataplex) e a Vertex AI. Com ele, cientistas de dados podem se conectar a serviços de dados do GCP, analisar conjuntos de dados, testar diferentes técnicas de modelagem, implantar modelos treinados na produção e gerenciar MLOps durante o ciclo de vida do modelo.
3. Visão geral do caso de uso
Neste laboratório, você vai usar o aprendizado por transferência para treinar um modelo de classificação de imagens no conjunto de dados do DeepWeeds, disponível nos conjuntos de dados do TensorFlow. Você vai usar o TensorFlow Hub para testar vetores de recursos extraídos de diferentes arquiteturas de modelo, como ResNet50, Inception e MobileNet, todos pré-treinados no conjunto de dados de comparação do ImageNet. Ao usar o executor de notebooks pela interface do Vertex AI Workbench, você vai iniciar jobs no Vertex AI Training que usam esses modelos pré-treinados e treinar novamente a última camada para reconhecer as classes do conjunto de dados DeepWeeds.
4. Configurar o ambiente
Para executar este codelab, você vai precisar de um projeto do Google Cloud Platform com o faturamento ativado. Para criar um projeto, siga estas instruções.
Etapa 1: ativar a API Compute Engine
Acesse o Compute Engine e selecione Ativar, caso essa opção ainda não esteja ativada.
Etapa 2: ativar a API Vertex AI
Navegue até a seção "Vertex AI" do Console do Cloud e clique em Ativar API Vertex AI.
Etapa 3: criar uma instância do Vertex AI Workbench
Na seção Vertex AI do Console do Cloud, clique em "Workbench":
Ative a API Notebooks, se ela ainda não tiver sido ativada.
Após a ativação, clique em NOTEBOOK GERENCIADO:
Em seguida, selecione NOVO NOTEBOOK.
Dê um nome ao notebook e clique em Configurações avançadas.
Em "Configurações avançadas", ative o encerramento inativo e defina o número de minutos como 60. Isso significa que o notebook será desligado automaticamente quando não estiver sendo usado.
Você pode manter as outras configurações avançadas como estão.
Em seguida, clique em Criar.
Quando a instância tiver sido criada, selecione Abrir o JupyterLab.
Na primeira vez que usar uma nova instância, você vai receber uma solicitação de autenticação.
O Vertex AI Workbench tem uma camada de compatibilidade de computação que permite iniciar kernels para TensorFlow, PySpark, R etc., tudo em uma única instância de notebook. Após a autenticação, você poderá selecionar na tela de início o tipo de notebook que quer usar.
Para este laboratório, selecione o kernel do TensorFlow 2.
5. Escrever o código de treinamento
O conjunto de dados DeepWeeds consiste em 17.509 imagens que capturam oito espécies diferentes de ervas daninhas nativas da Austrália. Nesta seção, você vai escrever o código para pré-processar o conjunto de dados DeepWeeds e criar e treinar um modelo de classificação de imagens usando vetores de recursos transferidos do TensorFlow Hub.
Você vai precisar copiar os snippets de código abaixo nas células do seu notebook. A execução das células é opcional.
Etapa 1: fazer o download e o pré-processamento do conjunto de dados
Primeiro instale a versão noturna dos conjuntos de dados do TensorFlow para garantir que estamos capturando a versão mais recente do conjunto de dados do DeepWeeds.
!pip install tfds-nightly
Em seguida, importe as bibliotecas necessárias:
import tensorflow as tf
import tensorflow_datasets as tfds
import tensorflow_hub as hub
Faça o download dos dados dos Datasets do TensorFlow e extraia o número de classes e o tamanho do conjunto de dados.
data, info = tfds.load(name='deep_weeds', as_supervised=True, with_info=True)
NUM_CLASSES = info.features['label'].num_classes
DATASET_SIZE = info.splits['train'].num_examples
Defina uma função de pré-processamento para dimensionar os dados da imagem em 255.
def preprocess_data(image, label):
image = tf.image.resize(image, (300,300))
return tf.cast(image, tf.float32) / 255., label
O conjunto de dados do DeepWeeds não vem com divisões de treinamento/validação. Ele vem apenas com um conjunto de dados de treinamento. No código abaixo, você vai usar 80% desses dados para treinamento e os 20% restantes para validação.
# Create train/validation splits
# Shuffle dataset
dataset = data['train'].shuffle(1000)
train_split = 0.8
val_split = 0.2
train_size = int(train_split * DATASET_SIZE)
val_size = int(val_split * DATASET_SIZE)
train_data = dataset.take(train_size)
train_data = train_data.map(preprocess_data)
train_data = train_data.batch(64)
validation_data = dataset.skip(train_size)
validation_data = validation_data.map(preprocess_data)
validation_data = validation_data.batch(64)
Etapa 2: criar modelo
Agora que você criou conjuntos de dados de treinamento e validação, está tudo pronto para criar o modelo. O TensorFlow Hub fornece vetores de recursos, que são modelos pré-treinados sem a camada de classificação superior. Você vai criar um extrator de recursos envolvendo o modelo pré-treinado com hub.KerasLayer
, que envolve um TensorFlow SavedModel como uma camada Keras. Depois você vai adicionar uma camada de classificação e criar um modelo com a API Keras Sequential.
Primeiro, defina o parâmetro feature_extractor_model
, que é o nome do vetor de recurso do TensorFlow Hub que você vai usar como base para o modelo.
feature_extractor_model = "inception_v3"
Em seguida, você vai transformar essa célula em uma célula de parâmetro, o que vai permitir transmitir um valor para feature_extractor_model
no momento da execução.
Primeiro, selecione a célula e clique no inspetor de propriedades no painel à direita.
As tags são uma forma simples de adicionar metadados ao seu notebook. Digite "parâmetros" na caixa "Adicionar tag" e pressione Enter. Mais tarde, ao configurar a execução, você vai transmitir os diferentes valores, neste caso o modelo do TensorFlow Hub, que você quer testar. Você deve digitar a palavra "parâmetros" (e nenhuma outra palavra), porque é assim que o executor do notebook sabe quais células parametrizar.
Para fechar o Inspetor de propriedades, clique novamente no ícone de engrenagem dupla.
Crie uma célula nova e defina tf_hub_uri
, em que você vai usar a interpolação de strings para substituir o nome do modelo pré-treinado que você quer usar como o modelo base para uma execução específica do seu notebook. Por padrão, você definiu feature_extractor_model
como "inception_v3"
, mas outros valores válidos são "resnet_v2_50"
ou "mobilenet_v1_100_224"
. Confira outras opções no catálogo do TensorFlow Hub.
tf_hub_uri = f"https://tfhub.dev/google/imagenet/{feature_extractor_model}/feature_vector/5"
Em seguida, crie o extrator de recursos usando hub.KerasLayer
e transmitindo o tf_hub_uri
definido acima. Defina o argumento trainable=False
para congelar as variáveis para que o treinamento modifique apenas a nova camada do classificador que você vai adicionar.
feature_extractor_layer = hub.KerasLayer(
tf_hub_uri,
trainable=False)
Para concluir o modelo, envolva a camada de extrator de recursos em um modelo tf.keras.Sequential
e adicione uma camada totalmente conectada para classificação. O número de unidades nessa cabeçalho de classificação precisa ser igual ao número de classes no conjunto de dados:
model = tf.keras.Sequential([
feature_extractor_layer,
tf.keras.layers.Dense(units=NUM_CLASSES)
])
Por fim, compile e ajuste o modelo.
model.compile(
optimizer=tf.keras.optimizers.Adam(),
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['acc'])
model.fit(train_data, validation_data=validation_data, epochs=3)
6. Executar notebook
Clique no ícone Executor na parte de cima do notebook.
Etapa 1: configurar job de treinamento
Dê um nome à execução e forneça um bucket de armazenamento no projeto.
Defina o tipo de máquina como 4 CPUs, 15 GB de RAM.
E adicione 1 GPU NVIDIA.
Defina o ambiente como TensorFlow Enterprise 2.6 (GPU).
Escolha "Execução única".
Etapa 2: configurar parâmetros
Clique no menu suspenso OPÇÕES AVANÇADAS para definir o parâmetro. Na caixa, digite feature_extractor_model=resnet_v2_50
. Isso vai substituir inception_v3
, o valor padrão definido para esse parâmetro no notebook, por resnet_v2_50
.
Deixe a caixa Usar conta de serviço padrão marcada.
Em seguida, clique em ENVIAR.
Etapa 3: analisar os resultados
Na guia "Executions" na interface do console, você vai poder conferir o status da execução do notebook.
Se você clicar no nome da execução, vai acessar o job do Vertex AI Training em que seu notebook está em execução.
Quando o job for concluído, você poderá acessar o notebook de saída clicando em VIEW RESULT.
No notebook de saída, você vai ver que o valor de feature_extractor_model
foi substituído pelo valor transmitido no momento da execução.
Parabéns! 🎉
Você aprendeu a usar o Vertex AI Workbench para:
- Usar parâmetros em um notebook
- Configurar e iniciar execuções de notebooks na interface do Vertex AI Workbench
Para saber mais sobre partes diferentes da Vertex AI, acesse a documentação.
7. Limpeza
Por padrão, os notebooks gerenciados são encerrados automaticamente após 180 minutos de inatividade. Para encerrar a instância manualmente, clique no botão "Parar" na seção "Vertex AI Workbench" do console. Se quiser excluir o notebook completamente, clique no botão "Excluir".
Para excluir o bucket do Storage, use o menu de navegação do console do Cloud, acesse o Storage, selecione o bucket e clique em "Excluir":