Como configurar o AI Platform Pipelines

O AI Platform Pipelines permite orquestrar seus fluxos de trabalho de machine learning (ML) como pipelines reutilizáveis e reproduzíveis. Salvamentos do AI Platform Pipelines a dificuldade de configurar o Kubeflow Pipelines (em inglês) com o TensorFlow Extended no Google Kubernetes Engine.

Neste guia, descrevemos várias opções para implantar o AI Platform Pipelines no GKE. É possível implantar o Kubeflow Pipelines em um cluster atual do GKE ou criar um novo cluster do GKE. Se você quiser reutilizar um cluster existente do GKE, verifique se ele atende os seguintes requisitos:

  • Seu cluster precisa ter pelo menos três nós. Cada nó precisa ter pelo menos duas CPUs e quatro GB de memória disponíveis.
  • O escopo de acesso do cluster precisa conceder acesso total a todas as APIs do Cloud ou o cluster precisa usar uma conta de serviço personalizada.
  • O cluster ainda não pode ter o Kubeflow Pipelines instalado.

Selecione a melhor opção de implantação para sua situação:

Antes de começar

Antes de seguir este guia, verifique se o projeto do Google Cloud está configurado corretamente e se você tem permissões suficientes para implantar do AI Platform Pipelines.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Use as instruções a seguir para verificar se você recebeu os papéis necessários para implantar o AI Platform Pipelines.
    1. Abra uma sessão do Cloud Shell.

      Abra o Cloud Shell

      O Cloud Shell é aberto em um frame na parte inferior do Console do Google Cloud.

    2. É necessário ter os papéis de Visualizador (roles/viewer) e de administrador do Kubernetes Engine (roles/container.admin) no projeto ou outros papéis com as mesmas permissões, como Proprietário (roles/owner) no projeto, para implantar o AI Platform Pipelines. Execute o comando a seguir no Cloud Shell para listar os principais com os papéis de Visualizador e Administrador do Kubernetes Engine.

      gcloud projects get-iam-policy PROJECT_ID \
        --flatten="bindings[].members" --format="table(bindings.role, bindings.members)" \
        --filter="bindings.role:roles/container.admin OR bindings.role:roles/viewer"

      Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

      Use a saída desse comando para verificar se sua conta tem os papéis de Visualizador e Administrador do Kubernetes Engine.

    3. Se você quiser conceder acesso granular ao cluster, também precisará ter o papel de Administrador da conta de serviço (roles/iam.serviceAccountAdmin) no projeto ou outros papéis com as mesmas permissões, como o Editor. (roles/editor) ou Proprietário (roles/owner) no projeto. Execute o seguinte comando no Cloud Shell para listar os principais que têm o papel "Administrador da conta de serviço".

      gcloud projects get-iam-policy PROJECT_ID \
        --flatten="bindings[].members" --format="table(bindings.role, bindings.members)" \
        --filter="bindings.role:roles/iam.serviceAccountAdmin"

      Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

      Use a saída desse comando para verificar se sua conta tem o papel "Administrador da conta de serviço".

    4. Se você não recebeu os papéis necessários, entre em contato com o administrador do projeto do Google Cloud para receber mais ajuda.

      Saiba mais sobre como conceder papéis de gerenciamento de identidade e acesso.

Implantar o AI Platform Pipelines com acesso total ao Google Cloud

O AI Platform Pipelines facilita a configuração e o uso do Kubeflow Pipelines criando um cluster do GKE para você e implantando o Kubeflow Pipelines no cluster. Quando o AI Platform Pipelines cria um cluster do GKE, ele usa a conta de serviço padrão do Compute Engine. Para conceder ao cluster acesso total aos recursos e às APIs do Google Cloud que você ativou no projeto, é possível conceder ao cluster o escopo de acesso https://www.googleapis.com/auth/cloud-platform. Conceder acesso dessa maneira permite que os pipelines de ML executados no cluster acessem APIs do Google Cloud, como o AI Platform Training e o AI Platform Prediction. Embora esse processo facilite a configuração do AI Platform Pipelines, ele pode conceder aos desenvolvedores de pipeline acesso excessivo aos recursos e às APIs do Google Cloud.

Use as instruções a seguir para implantar o AI Platform Pipelines com acesso total aos recursos e às APIs do Google Cloud.

  1. Abra o AI Platform Pipelines no console do Google Cloud.

    Acesse o AI Platform Pipelines

  2. Na barra de ferramentas dos AI Platform Pipelines, clique em Nova instância. Os pipelines do Kubeflow serão abertos no Google Cloud Marketplace.

  3. Clique em Configurar. O formulário Implantar o Kubeflow Pipelines (em inglês) será aberto.

  4. Clique em Criar um novo cluster, se o link for exibido. Caso não for, vá para a próxima etapa.

  5. Selecione a Zona de cluster em que seu cluster deve estar localizado. Para ajuda sobre como decidir qual zona usar, leia as práticas recomendadas para seleção de região.

  6. Marque Permitir acesso às seguintes APIs do Cloud para conceder acesso aos recursos do Google Cloud aos aplicativos executados no cluster do GKE. Ao marcar essa caixa, você concede ao cluster acesso ao escopo de acesso https://www.googleapis.com/auth/cloud-platform. Esse escopo de acesso dá acesso total aos recursos do Google Cloud ativados no projeto. Conceder ao cluster acesso aos recursos do Google Cloud dessa maneira economiza o esforço de criar e gerenciar uma conta de serviço ou de criar um secret do Kubernetes.

  7. Clique em Criar cluster. Esta etapa pode levar alguns minutos.

  8. Os namespaces são usados para gerenciar recursos em clusters grandes do GKE. Se você não planeja utilizar namespaces no cluster, selecione padrão na lista suspensa Namespace.

    Se você planeja usar namespaces no cluster do GKE, crie um namespace usando a lista suspensa Namespace. Para criar um namespace:

    1. Selecione Criar um namespace na lista suspensa Namespace. A caixa Novo nome do namespace é exibida.
    2. Digite o nome do namespace em Novo nome do namespace.

    Para saber mais sobre namespaces, leia uma postagem do blog sobre como organizar o Kubernetes com namespaces (em inglês).

  9. Na caixa Nome da instância do app, insira um nome para a instância do Kubeflow Pipelines.

  10. O armazenamento gerenciado permite armazenar os metadados e artefatos do pipeline de ML por meio do Cloud SQL e do Cloud Storage, em vez de armazená-los em discos permanentes do Compute Engine. O uso de serviços gerenciados para armazenar os artefatos e metadados do pipeline facilita o backup e a restauração dos dados do cluster. Para implantar o Kubeflow Pipelines com armazenamento gerenciado, selecione Usar armazenamento gerenciado e forneça as seguintes informações:

    • Bucket do Cloud Storage para armazenamento de artefatos: com o armazenamento gerenciado, o Kubeflow Pipelines armazena artefatos de pipeline em um bucket do Cloud Storage. Especifique o nome do bucket em que você quer que o Kubeflow Pipelines armazene artefatos. Se o bucket especificado não existir, o implantador do Kubeflow Pipelines criará automaticamente um bucket para você na região us-central1.

      Saiba mais sobre como criar um novo bucket.

    • Nome da conexão da instância do Cloud SQL: com o armazenamento gerenciado, o Kubeflow Pipelines armazena metadados do pipeline em um banco de dados MySQL no Cloud SQL. Especifique o nome da conexão para sua instância do MySQL do Cloud SQL.

      Saiba mais sobre como configurar a instância do Cloud SQL.

    • Nome de usuário do banco de dados: especifique o nome de usuário do banco de dados que será usado pelo Kubeflow Pipelines ao se conectar à instância do MySQL. No momento, o usuário do banco de dados precisa ter privilégios ALL do MySQL para implantar o Kubeflow Pipelines com armazenamento gerenciado. Se você deixar esse campo em branco, o valor padrão será raiz.

      Saiba mais sobre usuários do MySQL.

    • Senha do banco de dados: especifique a senha do banco de dados que será usada pelo Kubeflow Pipelines ao se conectar à instância do MySQL. Se você deixar esse campo em branco, o Kubeflow Pipelines se conectará ao banco de dados sem fornecer uma senha, o que causa falhas quando o nome de usuário especificado exige senha.

    • Prefixo do nome do banco de dados: especifique o prefixo do nome do banco de dados. O valor do prefixo precisa começar com uma letra e conter apenas letras minúsculas, números e sublinhados.

      Durante o processo de implantação, o Kubeflow Pipelines cria dois bancos de dados: "DATABASE_NAME_PREFIX_pipeline" e "DATABASE_NAME_PREFIX_metadata". Se houver bancos de dados com esses nomes na instância do MySQL, o Kubeflow Pipelines reutilizará os bancos de dados existentes. Se esse valor não for especificado, o Nome da instância do app será usado como prefixo do nome do banco de dados.

  11. Clique em Implantar. Essa etapa pode levar alguns minutos.

  12. Para acessar o painel de pipelines, abra o AI Platform Pipelines no console do Google Cloud.

    Acesse o AI Platform Pipelines

    Em seguida, clique em Abrir painel de pipelines para a instância do AI Platform Pipelines.

Implantar o AI Platform Pipelines com acesso granular ao Google Cloud

Os pipelines de ML acessam os recursos do Google Cloud usando a conta de serviço e o escopo de acesso do pool de nós do cluster do GKE. Atualmente, para limitar o acesso do cluster a recursos específicos do Google Cloud, é preciso implantar o AI Platform Pipelines em um cluster do GKE que usa uma conta de serviço gerenciada pelo usuário.

Use as instruções nas seções a seguir para criar e configurar uma conta de serviço, criar um cluster do GKE usando sua conta de serviço e implantar o Kubeflow Pipelines no cluster do GKE.

Criar uma conta de serviço para o cluster do GKE

Use as instruções a seguir para configurar uma conta de serviço para o cluster do GKE.

  1. Abra uma sessão do Cloud Shell.

    Abra o Cloud Shell

    O Cloud Shell é aberto em um frame na parte inferior do Console do Google Cloud.

  2. Execute os comandos a seguir no Cloud Shell para criar sua conta de serviço e conceder a ela acesso suficiente para executar o AI Platform Pipelines. Saiba mais sobre os papéis necessários para executar o AI Platform Pipelines com uma conta de serviço gerenciada pelo usuário.

    export PROJECT=PROJECT_ID
    export SERVICE_ACCOUNT=SERVICE_ACCOUNT_NAME
    gcloud iam service-accounts create $SERVICE_ACCOUNT \
      --display-name=$SERVICE_ACCOUNT \
      --project=$PROJECT
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/logging.logWriter
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/monitoring.metricWriter
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/monitoring.viewer
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/storage.objectViewer

    Substitua:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço a ser criada
    • PROJECT_ID: o projeto do Google Cloud onde a conta de serviço é criada
  3. Conceda à conta de serviço acesso a todos os recursos ou APIs do Google Cloud que os pipelines de ML exigem. Saiba mais sobre os papéis de Gerenciamento de identidade e acesso e gerenciamento de contas de serviço.

  4. Conceda à conta de usuário o papel "Usuário da conta de serviço" (iam.serviceAccountUser) na conta de serviço.

    gcloud iam service-accounts add-iam-policy-binding \
      "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      --member=user:USERNAME \
      --role=roles/iam.serviceAccountUser
    

    Substitua:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço
    • PROJECT_ID: o projeto do Google Cloud
    • USERNAME: seu nome de usuário no Google Cloud.

Configurar o Cluster do GKE

Use as instruções a seguir para configurar o cluster do GKE.

  1. Abra o Google Kubernetes Engine no console do Google Cloud.

    Abra o Google Kubernetes Engine

  2. Clique no botão Criar cluster. O formulário Princípios básicos do cluster é aberto.

  3. Insira o Nome do cluster.

  4. Em Tipo de local, selecione Por zona e selecione a zona pretendida do cluster. Para ajuda sobre como decidir qual zona usar, leia as práticas recomendadas para seleção de região.

  5. No painel de navegação, em Pools de nós, clique em default-pool. O formulário Detalhes do pool de nós é exibido.

  6. Digite o Número de nós a serem criados no cluster. Seu cluster precisa ter três ou mais nós para implantar o AI Platform Pipelines. É necessário ter uma cota de recursos disponível para os nós e os recursos deles (como rotas de firewall).

  7. No painel de navegação, em Pools de nós, clique em Nós. O formulário Nós é aberto.

  8. Escolha a Configuração da máquina padrão para usar nas instâncias. Você precisa selecionar um tipo de máquina com pelo menos duas CPUs e 4 GB de memória, como n1-standard-2, para implantar o AI Platform Pipelines. O faturamento varia de acordo com cada tipo de máquina. Para informações sobre preços de tipos de máquina, consulte a tabela de preços.

  9. No painel de navegação, em Pools de nós, clique em Segurança. O formulário Segurança do nó é exibido.

  10. Na lista suspensa Conta de serviço, selecione a conta de serviço que você criou anteriormente neste guia.

  11. Caso contrário, configure o cluster do GKE conforme desejado. Saiba mais sobre como criar um cluster do GKE.

  12. Clique em Criar

Instalar o Kubeflow Pipelines no cluster do GKE

Use as instruções a seguir para configurar o Kubeflow Pipelines em um cluster do GKE.

  1. Abra o AI Platform Pipelines no console do Google Cloud.

    Acesse o AI Platform Pipelines

  2. Na barra de ferramentas dos AI Platform Pipelines, clique em Nova instância. Os pipelines do Kubeflow serão abertos no Google Cloud Marketplace.

  3. Clique em Configurar. O formulário Implantar Kuberflow Pipelines (em inglês) será aberto.

  4. Na lista suspensa Cluster, selecione o cluster que você criou em uma etapa anterior. Se o cluster que você quer usar não estiver qualificado para implantação, verifique se ele atende aos requisitos para implantar o Kubeflow Pipelines.

  5. Os namespaces são usados para gerenciar recursos em clusters grandes do GKE. Se você não planeja utilizar namespaces no cluster, selecione padrão na lista suspensa Namespace.

    Se você planeja usar namespaces no cluster do GKE, crie um namespace usando a lista suspensa Namespace. Para criar um namespace:

    1. Selecione Criar um namespace na lista suspensa Namespace. A caixa Novo nome do namespace é exibida.
    2. Digite o nome do namespace em Novo nome do namespace.

    Para saber mais sobre namespaces, leia uma postagem do blog sobre como organizar o Kubernetes com namespaces (em inglês).

  6. Na caixa Nome da instância do app, insira um nome para a instância do Kubeflow Pipelines.

  7. O armazenamento gerenciado permite armazenar os metadados e artefatos do pipeline de ML por meio do Cloud SQL e do Cloud Storage, em vez de armazená-los em discos permanentes do Compute Engine. O uso de serviços gerenciados para armazenar os artefatos e metadados do pipeline facilita o backup e a restauração dos dados do cluster. Para implantar o Kubeflow Pipelines com armazenamento gerenciado, selecione Usar armazenamento gerenciado e forneça as seguintes informações:

    • Bucket do Cloud Storage para armazenamento de artefatos: com o armazenamento gerenciado, o Kubeflow Pipelines armazena artefatos de pipeline em um bucket do Cloud Storage. Especifique o nome do bucket em que você quer que o Kubeflow Pipelines armazene artefatos. Se o bucket especificado não existir, o implantador do Kubeflow Pipelines criará automaticamente um bucket para você na região us-central1.

      Saiba mais sobre como criar um novo bucket.

    • Nome da conexão da instância do Cloud SQL: com o armazenamento gerenciado, o Kubeflow Pipelines armazena metadados do pipeline em um banco de dados MySQL no Cloud SQL. Especifique o nome da conexão para sua instância do MySQL do Cloud SQL.

      Saiba mais sobre como configurar a instância do Cloud SQL.

    • Nome de usuário do banco de dados: especifique o nome de usuário do banco de dados que será usado pelo Kubeflow Pipelines ao se conectar à instância do MySQL. No momento, o usuário do banco de dados precisa ter privilégios ALL do MySQL para implantar o Kubeflow Pipelines com armazenamento gerenciado. Se você deixar esse campo em branco, o valor padrão será raiz.

      Saiba mais sobre usuários do MySQL.

    • Senha do banco de dados: especifique a senha do banco de dados que será usada pelo Kubeflow Pipelines ao se conectar à instância do MySQL. Se você deixar esse campo em branco, o Kubeflow Pipelines se conectará ao banco de dados sem fornecer uma senha, o que causa falhas quando o nome de usuário especificado exige senha.

    • Prefixo do nome do banco de dados: especifique o prefixo do nome do banco de dados. O valor do prefixo precisa começar com uma letra e conter apenas letras minúsculas, números e sublinhados.

      Durante o processo de implantação, o Kubeflow Pipelines cria dois bancos de dados: "DATABASE_NAME_PREFIX_pipeline" e "DATABASE_NAME_PREFIX_metadata". Se houver bancos de dados com esses nomes na instância do MySQL, o Kubeflow Pipelines reutilizará os bancos de dados existentes. Se esse valor não for especificado, o Nome da instância do app será usado como prefixo do nome do banco de dados.

  8. Clique em Implantar. Essa etapa pode levar alguns minutos.

  9. Para acessar o painel de pipelines, abra o AI Platform Pipelines no console do Google Cloud.

    Acesse o AI Platform Pipelines

    Em seguida, clique em Abrir painel de pipelines para a instância do AI Platform Pipelines.

Implantar o AI Platform Pipelines em um cluster do GKE existente

Para usar o Google Cloud Marketplace na implantação do Kubeflow Pipelines em um cluster do GKE, os critérios a seguir precisam ser atendidos:

  • Seu cluster precisa ter pelo menos três nós. Cada nó precisa ter pelo menos duas CPUs e quatro GB de memória disponíveis.
  • O escopo de acesso do cluster precisa conceder acesso total a todas as APIs do Cloud ou o cluster precisa usar uma conta de serviço personalizada.
  • O cluster ainda não pode ter o Kubeflow Pipelines instalado.

Saiba mais sobre como configurar o cluster do GKE para o AI Platform Pipelines.

Use as instruções a seguir para configurar o Kubeflow Pipelines em um cluster do GKE.

  1. Abra o AI Platform Pipelines no console do Google Cloud.

    Acesse o AI Platform Pipelines

  2. Na barra de ferramentas dos AI Platform Pipelines, clique em Nova instância. Os pipelines do Kubeflow serão abertos no Google Cloud Marketplace.

  3. Clique em Configurar. O formulário Implantar Kuberflow Pipelines (em inglês) será aberto.

  4. Na lista suspensa Cluster, selecione o cluster. Se o cluster que você quer usar não estiver qualificado para implantação, verifique se ele atende aos requisitos para implantar o Kubeflow Pipelines.

  5. Os namespaces são usados para gerenciar recursos em clusters grandes do GKE. Caso o cluster não use namespaces, selecione padrão na lista suspensa Namespace.

    Se o cluster usar namespaces, selecione um namespace atual ou crie um com a lista suspensa Namespace. Para criar um namespace:

    1. Selecione Criar um namespace na lista suspensa Namespace. A caixa Novo nome do namespace é exibida.
    2. Digite o nome do namespace em Novo nome do namespace.

    Para saber mais sobre namespaces, leia uma postagem do blog sobre como organizar o Kubernetes com namespaces (em inglês).

  6. Na caixa Nome da instância do app, insira um nome para a instância do Kubeflow Pipelines.

  7. O armazenamento gerenciado permite armazenar os metadados e artefatos do pipeline de ML por meio do Cloud SQL e do Cloud Storage, em vez de armazená-los em discos permanentes do Compute Engine. O uso de serviços gerenciados para armazenar os artefatos e metadados do pipeline facilita o backup e a restauração dos dados do cluster. Para implantar o Kubeflow Pipelines com armazenamento gerenciado, selecione Usar armazenamento gerenciado e forneça as seguintes informações:

    • Bucket do Cloud Storage para armazenamento de artefatos: com o armazenamento gerenciado, o Kubeflow Pipelines armazena artefatos de pipeline em um bucket do Cloud Storage. Especifique o nome do bucket em que você quer que o Kubeflow Pipelines armazene artefatos. Se o bucket especificado não existir, o implantador do Kubeflow Pipelines criará automaticamente um bucket para você na região us-central1.

      Saiba mais sobre como criar um novo bucket.

    • Nome da conexão da instância do Cloud SQL: com o armazenamento gerenciado, o Kubeflow Pipelines armazena metadados do pipeline em um banco de dados MySQL no Cloud SQL. Especifique o nome da conexão para sua instância do MySQL do Cloud SQL.

      Saiba mais sobre como configurar a instância do Cloud SQL.

    • Nome de usuário do banco de dados: especifique o nome de usuário do banco de dados que será usado pelo Kubeflow Pipelines ao se conectar à instância do MySQL. No momento, o usuário do banco de dados precisa ter privilégios ALL do MySQL para implantar o Kubeflow Pipelines com armazenamento gerenciado. Se você deixar esse campo em branco, o valor padrão será raiz.

      Saiba mais sobre usuários do MySQL.

    • Senha do banco de dados: especifique a senha do banco de dados que será usada pelo Kubeflow Pipelines ao se conectar à instância do MySQL. Se você deixar esse campo em branco, o Kubeflow Pipelines se conectará ao banco de dados sem fornecer uma senha, o que causa falhas quando o nome de usuário especificado exige senha.

    • Prefixo do nome do banco de dados: especifique o prefixo do nome do banco de dados. O valor do prefixo precisa começar com uma letra e conter apenas letras minúsculas, números e sublinhados.

      Durante o processo de implantação, o Kubeflow Pipelines cria dois bancos de dados: "DATABASE_NAME_PREFIX_pipeline" e "DATABASE_NAME_PREFIX_metadata". Se houver bancos de dados com esses nomes na instância do MySQL, o Kubeflow Pipelines reutilizará os bancos de dados existentes. Se esse valor não for especificado, o Nome da instância do app será usado como prefixo do nome do banco de dados.

  8. Clique em Implantar. Essa etapa pode levar alguns minutos.

  9. Para acessar o painel de pipelines, abra o AI Platform Pipelines no console do Google Cloud.

    Acesse o AI Platform Pipelines

    Em seguida, clique em Abrir painel de pipelines para a instância do AI Platform Pipelines.

A seguir