Ativar um compartilhamento de NFS para treinamento personalizado

É possível configurar jobs de treinamento personalizados para ativar compartilhamentos do Network File System (NFS) no contêiner em que o código está sendo executado. Isso permite que os jobs acessem arquivos remotos como se fossem locais, permitindo alta capacidade e baixa latência.

Neste guia, mostramos como ativar um compartilhamento de NFS ao executar um job de treinamento personalizado.

Antes de começar

  1. Crie um compartilhamento de NFS em uma nuvem privada virtual (VPC). Seu compartilhamento precisa ser acessível sem autenticação.

    É possível usar uma instância do Filestore como compartilhamento de NFS. Se você estiver usando o Filestore e planeja usar o peering de VPC para a Vertex AI na próxima etapa, selecione Acesso a serviços particulares como o modo de conexão ao criar uma instância. Para ver um exemplo, consulte Como criar instâncias na documentação do Filestore.

  2. Para conectar o Vertex AI à VPC que hospeda seu compartilhamento de NFS, siga as instruções em Usar a interface do Private Service Connect para o Vertex AI (recomendado) ou Configurar peering de rede VPC.

Informações de NFS para treinamento personalizado

Ao criar um job de treinamento personalizado que monta um compartilhamento de NFS, é necessário especificar o seguinte:

  • O nome da rede para a Vertex AI acessar. A maneira como você especifica o nome da rede varia de acordo com o tipo de job de treinamento personalizado. Veja mais detalhes em Fazer um treinamento personalizado.

  • A configuração de NFS no campo WorkerPoolSpec. Inclua os seguintes campos:

    Campo Descrição
    nfsMounts.server O endereço IP do servidor NFS. Precisa ser um endereço privado na sua VPC.
    nfsMounts.path O caminho de compartilhamento do NFS. Precisa ser um caminho absoluto que comece com /.
    nfsMounts.mountPoint O ponto de montagem local. Precisa ser um nome de diretório UNIX válido. Por exemplo, se o ponto de montagem local for sourceData, especifique o caminho /mnt/nfs/sourceData da instância de VM de treinamento.

    Para mais informações, consulte Onde especificar recursos de computação.

Exemplo: criar um job personalizado usando a CLI gcloud

  1. Siga as etapas em Criar um aplicativo de treinamento em Python para um contêiner predefinido para criar um aplicativo de treinamento que será executado no Vertex AI.

  2. Crie um arquivo chamado config.yaml que descreva as configurações de montagem da configuração da interface PSA ou do Private Service Connect para o job de treinamento. Use um dos seguintes formatos:

Interface do Private Service Connect

  1. Para usar a interface do Private Service Connect:

    pscInterfaceConfig:
         network_attachment: NETWORK_ATTACHMENT_NAME
    workerPoolSpecs:
        - machineSpec:
            machineType: MACHINE_TYPE
        replicaCount: 1
        pythonPackageSpec:
           executorImageUri: PYTHON_PACKAGE_EXECUTOR_IMAGE_URI or PRE_BUILT_CONTAINER_IMAGE_URI
           packageUris:
           -  PYTHON_PACKAGE_URIS
           pythonModule: PYTHON_MODULE
        nfsMounts:
          - server: NFS_SERVER_IP
          path: NFS_SHARE_NAME
          mountPoint: LOCAL_FOLDER
    

    Substitua:

    • NETWORK_ATTACHMENT_NAME: o nome do anexo de rede.

    • MACHINE_TYPE: o identificador do seu tipo de máquina virtual.

    • PYTHON_PACKAGE_EXECUTOR_IMAGE_URI ou PRE_BUILT_CONTAINER_IMAGE_URI: o URI de uma imagem de contêiner no Artifact Registry que vai executar o pacote Python fornecido. A Vertex AI oferece uma grande variedade de imagens de executores com pacotes pré-instalados para atender aos vários casos de uso dos usuários.

    • PYTHON_PACKAGE_URIS: uma lista separada por vírgulas de URIs do Cloud Storage que especificam os arquivos de pacote do Python que compõem o programa de treinamento e os pacotes dependentes. O número máximo de URIs do pacote é 100.

    • PYTHON_MODULE: o nome do módulo Python que será executado após a instalação dos pacotes.

    • NFS_SERVER_IP: o endereço IP do servidor NFS.

    • NFS_SHARE_NAME: o caminho de compartilhamento do NFS, que é um caminho absoluto que começa com /.

    • LOCAL_FOLDER: o ponto de montagem local (nome do diretório do UNIX).

    Verifique se o nome da sua rede está formatado corretamente e se o compartilhamento de NFS existe na rede especificada.

  2. Crie o job personalizado e transmita o arquivo config.yaml para o parâmetro --config.

    gcloud ai custom-jobs create \
      --region=LOCATION \
      --display-name=JOB_NAME \
      --config=config.yaml
    

    Substitua:

    • LOCATION: especifique a região em que o job será criado.

    • JOB_NAME: um nome para o job personalizado.

Peering de VPC

  1. Use o peering de VPC se quiser que o job use o peering de VPC/PSA no job ou não.

    network: projects/PROJECT_NUMBER/global/networks/NETWORK_NAME
    workerPoolSpecs:
        - machineSpec:
            machineType: MACHINE_TYPE
          replicaCount: 1
          pythonPackageSpec:
            executorImageUri: PYTHON_PACKAGE_EXECUTOR_IMAGE_URI or 
                  PRE_BUILT_CONTAINER_IMAGE_URI
            packageUris:
              -  PYTHON_PACKAGE_URIS
            pythonModule: PYTHON_MODULE
          nfsMounts:
            - server: NFS_SERVER_IP
              path: NFS_SHARE_NAME
              mountPoint: LOCAL_FOLDER
    

    Substitua:

    • PROJECT_NUMBER: o ID do seu projeto do Google Cloud.

    • NETWORK_NAME: o nome da VPC particular ou compartilhada.

    • MACHINE_TYPE: o identificador do seu tipo de máquina virtual.

    • PYTHON_PACKAGE_EXECUTOR_IMAGE_URI or PRE_BUILT_CONTAINER_IMAGE_URI: o URI de uma imagem de contêiner no Artifact Registry que vai executar o pacote Python fornecido. A Vertex AI oferece uma grande variedade de imagens de executores com pacotes pré-instalados para atender aos vários casos de uso dos usuários.

    • PYTHON_PACKAGE_URIS: uma lista separada por vírgulas de URIs do Cloud Storage que especificam os arquivos de pacote do Python que compõem o programa de treinamento e os pacotes dependentes. O número máximo de URIs do pacote é 100.

    • PYTHON_MODULE: o nome do módulo Python que será executado após a instalação dos pacotes.

    • NFS_SERVER_IP: o endereço IP do servidor NFS.

    • NFS_SHARE_NAME: o caminho de compartilhamento do NFS, que é um caminho absoluto que começa com /.

    • LOCAL_FOLDER: o ponto de montagem local (nome do diretório do UNIX).

    Verifique se o nome da sua rede está formatado corretamente e se o compartilhamento de NFS existe na rede especificada.

  2. Crie o job personalizado e transmita o arquivo config.yaml para o parâmetro --config.

    gcloud ai custom-jobs create \
      --region=LOCATION \
      --display-name=JOB_NAME \
      --config=config.yaml
    

Substitua:

  • LOCATION: especifique a região em que o job será criado.

  • JOB_NAME: um nome para o job personalizado.

Limitações

  • Você precisa ativar o compartilhamento de NFS usando um endereço IP interno da VPC. Não é permitido usar URLs públicos.

  • Os jobs de treinamento montam os compartilhamentos NFS sem autenticação e falharão se um nome de usuário e uma senha forem necessários.

    Para proteger seus dados, defina permissões no compartilhamento do NFS. Se você estiver usando o Filestore, consulte controle de acesso na documentação do Filestore.

  • Não é possível executar dois jobs de treinamento que montam compartilhamentos NFS de diferentes redes VPC ao mesmo tempo. Isso ocorre devido à restrição de peering de rede.