O AI Platform Prediction aloca nós para processar as solicitações de previsão on-line enviadas a uma versão de modelo. Ao implantar uma versão de modelo, é possível personalizar o tipo de máquina virtual que o AI Platform Prediction usa nesses nós.
Os tipos de máquina são diferentes no seguinte:
- Número de CPUs virtuais (vCPUs) por nó
- Quantidade de memória por nó
- Compatíveis com GPUs, que podem ser adicionadas a alguns tipos de máquina
- Compatibilidade com determinados recursos do AI Platform Prediction
- Preço
- Cobertura do Contrato de nível de serviço (SLA)
Ao selecionar um tipo de máquina com mais recursos de computação, é possível fornecer previsões com latência menor ou processar mais solicitações de previsão ao mesmo tempo.
Tipos de máquina disponíveis
Os tipos de máquina do Compute Engine (N1) e o tipo mls1-c1-m2
geralmente estão disponíveis para previsão on-line. O tipo de máquina mls1-c4-m2
está disponível na versão Beta.
Veja na tabela a seguir uma comparação dos tipos de máquina disponíveis:
Nome | Disponibilidade | vCPUs | Memória (GB) | Compatível com GPUs? | Compatibilidade com frameworks de ML | Tamanho máximo do modelo |
---|---|---|---|---|---|---|
mls1-c1-m2 (padrão no endpoint global) |
Disponibilidade geral | 1 | 2 | Não | TensorFlow, XGBoost, scikit-learn (incluindo pipelines com código personalizado), rotinas de previsão personalizadas | 500 MB |
mls1-c4-m2 |
Beta | 4 | 2 | Não | TensorFlow, XGBoost, scikit-learn (incluindo pipelines com código personalizado), rotinas de previsão personalizadas | 500 MB |
n1-standard-2 (padrão em endpoints regionais) |
Disponibilidade geral | 2 | 7,5 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-standard-4 |
Disponibilidade geral | 4 | 15 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-standard-8 |
Disponibilidade geral | 8 | 30 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-standard-16 |
Disponibilidade geral | 16 | 60 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-standard-32 |
Disponibilidade geral | 32 | 120 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highmem-2 |
Disponibilidade geral | 2 | 13 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highmem-4 |
Disponibilidade geral | 4 | 26 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highmem-8 |
Disponibilidade geral | 8 | 52 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highmem-16 |
Disponibilidade geral | 16 | 104 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highmem-32 |
Disponibilidade geral | 32 | 208 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highcpu-2 |
Disponibilidade geral | 2 | 1,8 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highcpu-4 |
Disponibilidade geral | 4 | 3,6 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highcpu-8 |
Disponibilidade geral | 8 | 7,2 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highcpu-16 |
Disponibilidade geral | 16 | 14,4 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highcpu-32 |
Disponibilidade geral | 32 | 28,8 | Sim | TensorFlow, XGBoost e scikit-learn | 10 GB |
Saiba mais sobre os preços de cada tipo de máquina. Leia mais sobre as especificações detalhadas dos tipos de máquina N1 do Compute Engine na documentação relacionada.
Como especificar um tipo de máquina
Você especifica um tipo de máquina ao criar uma versão de modelo. Se você não
especificar um tipo de máquina, a versão do modelo usará
n1-standard-2
por padrão quando você estiver usando um endpoint
regional e mls1-c1-m2
se você estiver usando o endpoint global.
Com as instruções a seguir, você aprende a especificar um tipo de máquina ao criar uma versão de modelo. Nelas, o tipo de máquina n1-standard-4
é usado como exemplo.
Para saber mais sobre o processo completo de criação de uma versão de modelo, leia o guia para implantar modelos.
Console do Google Cloud
Na página Criar versão, abra a lista suspensa Tipo de máquina e selecione Padrão > n1-standard-4.
gcloud
Depois de fazer upload dos artefatos do modelo para o Cloud Storage e gerar um recurso relacionado, é possível criar uma versão do modelo que usa o tipo de máquina n1-standard-4
:
gcloud ai-platform versions create VERSION_NAME \
--model MODEL_NAME \
--origin gs://model-directory-uri \
--runtime-version 2.11 \
--python-version 3.7 \
--framework ML_FRAMEWORK_NAME \
--region us-central1 \
--machine-type n1-standard-4
Python
Neste exemplo, a biblioteca de cliente das APIs do Google para Python é usada. Antes de executar o seguinte exemplo de código, é necessário configurar a autenticação.
Depois de fazer upload dos artefatos do modelo para o Cloud Storage e gerar um recurso modelo, envie uma solicitação ao método projects.models.versions.create
do modelo. É necessário especificar o campo machineType
no corpo da solicitação:
from google.api_core.client_options import ClientOptions
from googleapiclient import discovery
endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)
request_dict = {
'name': 'VERSION_NAME',
'deploymentUri': 'gs://model-directory-uri',
'runtimeVersion': '2.11',
'pythonVersion': '3.7',
'framework': 'ML_FRAMEWORK_NAME',
'machineType': 'n1-standard-4'
}
request = ml.projects().models().versions().create(
parent='projects/PROJECT_NAME/models/MODEL_NAME',
body=request_dict
)
response = request.execute()
Como usar GPUs na previsão on-line
Para algumas configurações, é possível adicionar GPUs para acelerar cada nó de previsão. Para usar GPUs, é necessário considerar vários requisitos:
- Só é possível usar GPUs com tipos de máquina do Compute Engine (N1). Os tipos de máquina legados MLS1 não são compatíveis com GPUs.
- Você só pode usar GPUs ao implantar um SavedModel do TensorFlow. Não é possível usar GPUs para modelos scikit-learn ou XGBoost.
- A disponibilidade de cada tipo de GPU varia de acordo com a região usada para o modelo. Saiba quais tipos de GPUs estão disponíveis em quais regiões.
- Só é possível usar um tipo de GPU na versão de modelo, e há limitações no número de GPUs a serem adicionadas dependendo do tipo de máquina que você está usando. A tabela a seguir descreve essas limitações.
Veja na tabela a seguir as GPUs disponíveis para previsão on-line e quantas de cada tipo é possível usar com cada tipo de máquina do Compute Engine:
Números válidos de GPUs para cada tipo de máquina | |||||
---|---|---|---|---|---|
Tipo de máquina | NVIDIA Tesla K80 | NVIDIA Tesla P4 | NVIDIA Tesla P100 | NVIDIA Tesla T4 | NVIDIA Tesla V100 |
n1-standard-2 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-standard-4 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-standard-8 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-standard-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 |
n1-standard-32 |
4, 8 | 2, 4 | 2, 4 | 2, 4 | 4, 8 |
n1-highmem-2 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highmem-4 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highmem-8 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highmem-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 |
n1-highmem-32 |
4, 8 | 2, 4 | 2, 4 | 2, 4 | 4, 8 |
n1-highcpu-2 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highcpu-4 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highcpu-8 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 |
n1-highcpu-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 |
n1-highcpu-32 |
4, 8 | 2, 4 | 2, 4 | 2, 4 | 4, 8 |
As GPUs são opcionais e geram mais custos.
Como especificar GPUs
Especifique as GPUs ao criar uma versão de modelo. O AI Platform Prediction aloca o número e o tipo de GPU que você especifica para cada nó de previsão. É possível fazer escalonamento automático (visualização) ou escalonamento manual (GA) dos nós de previsão. No entanto, o número de GPUs que cada nó usa é corrigido quando você cria a versão do modelo. A menos que você tenha um caso de uso avançado, recomendamos que configure uma GPU em cada nó de previsão. Em outras palavras, defina a contagem de aceleradores como 1.
Com as instruções a seguir, você aprende a especificar GPUs para a previsão on-line.
Basta criar uma versão de modelo que seja executada em pelo menos dois nós de previsão a qualquer momento.
Cada nó usa o tipo de máquina n1-standard-4
e uma GPU NVIDIA Tesla T4.
Os exemplos pressupõem que você já fez o upload de um SavedModel do TensorFlow para o Cloud Storage e criou um recurso de modelo em uma região compatível com GPUs.
Console do Google Cloud
Siga o guia para criar uma versão de modelo. Na página Criar versão, especifique as seguintes opções:
- Na lista suspensa Escalonamento, selecione Escalonamento manual.
- No campo Número mínimo de nós, insira
2
. - Na lista suspensa Tipo de máquina, selecione Padrão > n1-standard-4.
- Na lista suspensa Tipo de acelerador, selecione NVIDIA_TESLA_T4.
- Na lista suspensa Contagem do acelerador, selecione 1.
gcloud
Use a gcloud CLI para criar uma versão de modelo. Neste exemplo, a
versão é executada em nós de previsão n1-standard-4, cada um usando uma GPU NVIDIA
Tesla T4. O AI Platform Prediction escalona automaticamente o
número de nós de previsão a um número entre 2 e 4, dependendo do uso da GPU
a qualquer momento. O exemplo usa o endpoint regional us-central1
.
gcloud beta ai-platform versions create VERSION_NAME \
--model MODEL_NAME \
--origin gs://model-directory-uri \
--runtime-version 2.11 \
--python-version 3.7 \
--framework tensorflow \
--region us-central1 \
--machine-type n1-standard-4 \
--accelerator count=1,type=nvidia-tesla-t4 \
--min-nodes 2 \
--max-nodes 4 \
--metric-targets gpu-duty-cycle=60
O nome do acelerador é especificado em letras minúsculas com hifens entre as palavras.
Python
Neste exemplo, a biblioteca de cliente das APIs do Google para Python é usada. Antes de executar o seguinte exemplo de código, é necessário configurar a autenticação.
O exemplo usa o endpoint regional de us-central1
.
Envie uma solicitação para o método projects.models.versions.create
do modelo e especifique os campos machineType
, acceleratorConfig
e manualScaling
no corpo da solicitação:
from google.api_core.client_options import ClientOptions
from googleapiclient import discovery
endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)
request_dict = {
'name': 'VERSION_NAME',
'deploymentUri': 'gs://model-directory-uri',
'runtimeVersion': '2.11',
'pythonVersion': '3.7',
'framework': 'TENSORFLOW',
'machineType': 'n1-standard-4',
'acceleratorConfig': {
'count': 1,
'type': 'NVIDIA_TESLA_T4'
},
'autoScaling': {
'minNodes': 2,
'maxNodes': 4,
'metrics': [
{
'name': 'GPU_DUTY_CYCLE',
'target': 60
}
]
}
}
request = ml.projects().models().versions().create(
parent='projects/PROJECT_NAME/models/MODEL_NAME',
body=request_dict
)
response = request.execute()
O nome do acelerador é especificado em letras maiúsculas com sublinhados entre as palavras.
Diferenças entre os tipos de máquina
Além de fornecer diferentes quantidades de recursos de computação, os tipos de máquina também variam com relação à compatibilidade de determinados recursos do AI Platform Prediction. Confira na tabela a seguir uma visão geral das diferenças entre os tipos de máquina N1 do Compute Engine e os legados MLS1:
Tipos de máquina N1 do Compute Engine | Tipos de máquina legados MLS1 | |
---|---|---|
Regiões | Todas as regiões de endpoints regionais | Todas as regiões de endpoints globais |
Tipos de artefatos de ML |
|
|
Versões de tempo de execução | 1.11 ou superior | Todas as versões de ambiente de execução disponíveis do AI Platform |
Suporte a contêiner personalizado | Sim | Não |
Tamanho máximo do modelo | 10 GB | 500 MB |
Escalonamento automático | Nós mínimos = 1 | Nós mínimos = 0 |
Escalonamento manual | É possível atualizar o número de nós | Não é possível atualizar o número de nós após a criação da versão de modelo |
Suporte a GPUs | Sim (somente TensorFlow) | Não |
Suporte do AI Explanations | Sim (somente TensorFlow) | Não |
Suporte do VPC Service Controls | Sim | Não |
Cobertura do SLA para tipos de máquina com disponibilidade geral | Sim, em alguns casos | Sim |
Nas seções a seguir, você encontra explicações detalhadas sobre as diferenças entre os tipos de máquinas.
Disponibilidade regional
Os tipos de máquina N1 do Compute Engine estão disponíveis quando você implanta o modelo em um endpoint regional. Quando você usa um tipo de máquina do Compute Engine (N1), não é possível implantar o modelo no endpoint global.
Quando você dimensiona uma versão de modelo que usa tipos de máquina do Compute Engine (N1) para dois ou mais nós de previsão, eles são executados em várias zonas na mesma região. Isso garante disponibilidade contínua se houver uma interrupção em alguma das zonas. Saiba mais na seção sobre escalonamento deste documento.
Observe que a disponibilidade da GPU para os tipos de máquina N1 do Compute Engine também varia de acordo com a região.
Os tipos de máquina legados MLS1 estão disponíveis no endpoint global em muitas regiões. Os tipos de máquina legados MLS1 não estão disponíveis em endpoints regionais.
Compatibilidade com previsão em lote
As versões de modelo que usam o tipo de máquina mls1-c1-m2
são compatíveis com a previsão em lote. As versões de modelo que usam outros tipos de máquina não são compatíveis com a previsão em lote.
Compatibilidade com frameworks de ML
Se usar um dos tipos de máquina N1 do Compute Engine, será possível criar a versão do modelo com todos os artefatos do modelo descritos no Guia de exportação de modelos de predição, exceto dois:
- Não é possível usar um pipeline do scikit-learn com código personalizado.
- Não é possível usar uma rotina de previsão personalizada.
Para tipos de máquina legados MLS1, é possível usar qualquer tipo de artefato de modelo suportado pelo AI Platform Prediction, incluindo um pipeline scikit-learn com código personalizado ou uma rotina de previsão personalizada.
Compatibilidade com a versão do ambiente de execução
Se você usa um tipo de máquina N1 do Compute Engine, é necessário utilizar a versão de ambiente de execução 1.11 ou superior na versão de modelo.
Se você usa um tipo de máquina legado MLS1, utilize qualquer versão de ambiente de execução do AI Platform disponível.
Suporte a contêiner personalizado
Para usar um contêiner personalizado para exibir predições on-line, é preciso usar um tipo de máquina do Compute Engine (N1).
Tamanho máximo do modelo
Se você usa um tipo de máquina legado MLS1, os artefatos do modelo fornecidos ao criar uma versão de modelo precisam ter um tamanho de arquivo total de até 500 MB. O tamanho total do arquivo pode ser de até 10 GB se você usa um tipo de máquina N1 do Compute Engine.
Como gerar registros de previsões
Para os tipos de máquina N1 do Compute Engine, a geração de registros do console está no modo de visualização. Para os tipos de máquina legados (MLS1), o registro do console costuma estar disponível.
Como dimensionar os nós de previsão
Os escalonamentos automático e manual dos nós de previsão têm restrições diferentes dependendo do tipo de máquina N1 do Compute Engine ou legado MLS1.
Escalonamento automático
Se você usa um tipo de máquina N1 do Compute Engine com o escalonamento automático, a versão de modelo sempre precisará ter pelo menos um nó em execução. Em outras palavras, o campo autoScaling.minNodes
da versão assumirá 1 como padrão e não poderá ter um valor menor. Se você definir autoScaling.minNodes
como 2 ou superior, os nós de previsão serão executados em várias zonas na mesma região.
Isso garante disponibilidade contínua se houver uma interrupção em alguma das zonas.
Se você alocar mais vCPUs ou RAM do que o modelo de machine learning precisa, o escalonamento automático pode não funcionar corretamente. Isso pode causar problemas com o desempenho do modelo. Tente usar diferentes tipos de máquina para seu modelo para garantir que você não forneça muitos recursos de computação.
Se você usa um tipo de máquina legado MLS1, a versão do modelo pode ser escalonada para zero
nós quando não recebe tráfego: autoScaling.minNodes
pode ser definido como 0,
e é definido como 0 por padrão. O escalonamento para zero pode reduzir custos quando sua versão
de modelo não está recebendo solicitações de previsão. No entanto, isso também pode levar a
latência ou erros durante qualquer período em que o AI Platform Prediction aloca um
novo nó para processar solicitações após um período com zero nós. Saiba mais sobre
escalonamento para zero.
Escalonamento manual
Se você usar um tipo de máquina do Compute Engine (N1) com escalonamento manual, poderá atualizar o número de nós de previsão em execução a qualquer momento por meio do método de API projects.models.versions.patch
. Se você definir o campo manualScaling.nodes
como 2 ou superior, os nós de previsão serão executados em várias zonas na mesma região.
Isso garante disponibilidade contínua se houver uma interrupção em alguma das zonas.
Se você usa um tipo de máquina legado (MLS1) com escalonamento manual, não é possível atualizar o número de nós de previsão depois de criar a versão de modelo. Se quiser alterar o número de nós, exclua a versão e crie uma nova.
Suporte do VPC Service Controls
Se você usar o VPC Service Controls para proteger o AI Platform Prediction, não será possível criar versões que usam tipos de máquina legados (MLS1). É preciso utilizar os tipos de máquina do Compute Engine (N1).