Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ ModelArts/ Contêineres do Docker com ModelArts/ Uso de uma imagem personalizada para treinar modelos (treinamento de modelo)/ Uso de uma imagem personalizada para criar um trabalho de treinamento baseado em CPU ou GPU
Atualizado em 2024-09-14 GMT+08:00

Uso de uma imagem personalizada para criar um trabalho de treinamento baseado em CPU ou GPU

O treinamento do modelo é um processo iterativo de otimização. Por meio do gerenciamento unificado de treinamento, você pode selecionar de forma flexível algoritmos, dados e hiperparâmetros para obter a configuração e o modelo de entrada ideais. Depois de comparar as métricas entre as versões do trabalho, você pode determinar o trabalho de treinamento mais satisfatório.

Pré-requisitos

Criar um trabalho de treinamento

  1. Faça logon no console de gerenciamento do ModelArts. No painel de navegação à esquerda, escolha Training Management > Training Jobs.
  2. Clique em Create Training Job e defina parâmetros.
    Tabela 1 Criar um trabalho de treinamento usando uma imagem personalizada

    Parâmetro

    Descrição

    Algorithm Type

    Selecione Custom algorithm. Este parâmetro é obrigatório.

    Boot Mode

    Selecione Custom image. Este parâmetro é obrigatório.

    Image

    Caminho da imagem do contêiner. Este parâmetro é obrigatório.

    Você pode definir o caminho da imagem do contêiner de uma das seguintes maneiras:
    • Para selecionar sua imagem ou uma imagem compartilhada por outras pessoas, clique em Select à direita e selecione uma imagem de contêiner para treinamento. A imagem necessária deve ser carregada no SWR com antecedência.
    • Para selecionar uma imagem pública, insira o endereço da imagem pública no SWR. Digite o caminho da imagem no formato "Organization name/Image name:Version name". Não contenha o nome de domínio (swr.<region>.xxx.com) no caminho porque o sistema adicionará automaticamente o nome de domínio ao caminho. Por exemplo, se o endereço do SWR de uma imagem pública for swr.<region>.xxx.com/test-image/tensorflow2_1_1:1.1.1, digite test-images/tensorflow2_1_1:1.1.1.

    Code Directory

    Selecione o diretório do OBS onde o arquivo de código de treinamento está armazenado. Se a imagem personalizada não contiver código de treinamento, você precisará definir esse parâmetro. Se a imagem personalizada contiver código de treinamento, você não precisa definir esse parâmetro.

    • Carregue o código para o bucket do OBS antecipadamente. O tamanho total dos arquivos no diretório não pode exceder 5 GB, o número de arquivos não pode exceder 1000 e a profundidade da pasta não pode exceder 32.
    • O arquivo de código de treinamento é baixado automaticamente para o diretório ${MA_JOB_DIR}/demo-code do contêiner de treinamento quando o trabalho de treinamento é iniciado. demo-code é o diretório do OBS de último nível para armazenar o código. Por exemplo, se Code Directory estiver definido como /test/code, o arquivo de código de treinamento será baixado para o diretório ${MA_JOB_DIR}/code do contêiner de treinamento.

    User ID

    ID de usuário para executar o contêiner. Recomenda-se o valor padrão 1000.

    Se o UID precisa ser especificado, seu valor deve estar dentro do intervalo especificado. Os intervalos de UID de diferentes pools de recursos são os seguintes:

    • Pool de recursos públicos: 1000 a 65535
    • Pool de recursos dedicados: 0 a 65535

    Boot Command

    Comando para inicializar uma imagem. Este parâmetro é obrigatório.

    Quando um trabalho de treinamento está em execução, o comando de inicialização é executado automaticamente após o download do diretório de código.
    • Se o script de inicialização de treinamento for um arquivo .py, train.py, por exemplo, o comando de inicialização é o seguinte.
      python ${MA_JOB_DIR}/demo-code/train.py
    • Se o script de inicialização de treinamento for um arquivo .sh, main.sh, por exemplo, o comando de inicialização será o seguinte.
      bash ${MA_JOB_DIR}/demo-code/main.sh

    Você pode usar ponto-e-vírgula (;) e E comercial (&&) para combinar vários comandos. demo-code no comando é o diretório do OBS de último nível onde o código é armazenado. Substitua-o pelo real.

    Local Code Directory

    Especifique o diretório local de um contêiner de treinamento. Quando um treinamento é iniciado, o sistema baixa automaticamente o diretório de código para esse diretório.

    O diretório de código local padrão é /home/ma-user/modelarts/user-job-dir. Este parâmetro é opcional.

    Work Directory

    Durante o treinamento, o sistema executa automaticamente o comando cd para executar o arquivo de inicialização neste diretório.

    Tabela 2 Parâmetros para criar um trabalho de treinamento

    Parâmetro

    Sub parâmetro

    Descrição

    Input

    Parameter

    O código do algoritmo lê os dados de entrada de treinamento com base no nome do parâmetro de entrada.

    Defina esse parâmetro como data_url, que é o mesmo que o parâmetro para analisar os dados de entrada no código de treinamento. Você pode definir vários parâmetros de entrada de treinamento. O nome de cada parâmetro de entrada de treinamento deve ser exclusivo.

    Por exemplo, se você usar argparse no código de treinamento para analisar data_url na entrada de dados, defina o nome do parâmetro da entrada de treinamento como data_url.

    import argparse
    # Create a parsing task.
    parser = argparse.ArgumentParser(description="train mnist", formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    # Add parameters.
    parser.add_argument('--train_url', type=str, help='the path model saved')
    parser.add_argument('--data_url', type=str, help='the training data')
    # Parse the parameters.
    args, unknown = parser.parse_known_args()

    Dataset

    Clique em Dataset e selecione o conjunto de dados de destino e sua versão na lista de conjuntos de dados do ModelArts.

    Quando o trabalho de treinamento é iniciado, o ModelArts baixa automaticamente os dados no caminho de entrada para o contêiner de treinamento.

    NOTA:

    O gerenciamento de dados do ModelArts está sendo atualizado e é invisível para usuários que não usaram o gerenciamento de dados. Recomenda-se que os novos usuários armazenem seus dados de treinamento em buckets do OBS.

    Data path

    Clique em Data path e selecione o caminho de armazenamento para os dados de entrada de treinamento de um bucket do OBS.

    Quando o trabalho de treinamento é iniciado, o ModelArts baixa automaticamente os dados no caminho de entrada para o contêiner de treinamento.

    How to Obtain

    O seguinte usa a entrada de treinamento data_path como um exemplo.

    • Se você selecionar Hyperparameters, use este código para obter os dados:
      import argparse
      parser = argparse.ArgumentParser()
      parser.add_argument('--data_path')
      args, unknown = parser.parse_known_args()
      data_path = args.data_path 
    • Se você selecionar Environment variables, use este código para obter os dados:
      import os
      data_path = os.getenv("data_path", "")

    Output

    Parameter

    O código do algoritmo lê os dados de saída de treinamento com base no nome do parâmetro de saída.

    Defina esse parâmetro como train_url, que é o mesmo que o parâmetro para analisar os dados de saída no código de treinamento. Você pode definir vários parâmetros de saída de treinamento. O nome de cada parâmetro de saída de treinamento deve ser exclusivo.

    Data path

    Clique em Data path e selecione o caminho de armazenamento para os dados de saída de treinamento de um bucket do OBS. Durante o treinamento, o sistema sincroniza automaticamente os arquivos do diretório de código local do contêiner de treinamento com o caminho dos dados.

    NOTA:

    O caminho de dados só pode ser um caminho do OBS. Para evitar problemas com o armazenamento de dados, escolha um diretório vazio como caminho de dados.

    How to Obtain

    O seguinte usa a saída de treinamento train_url como um exemplo.

    • Se você selecionar Hyperparameters, use este código para obter os dados:
      import argparse
      parser = argparse.ArgumentParser()
      parser.add_argument('--train_url')
      args, unknown = parser.parse_known_args()
      train_url = args.train_url 
    • Se você selecionar Environment variables, use este código para obter os dados:
      import os
      train_url = os.getenv("train_url", "")

    Predownload

    Indica se deve ser feito o download prévio dos arquivos no diretório de saída para um diretório local.

    • Se você definir Predownload como No, o sistema não fará o download dos arquivos no caminho de dados de saída do treinamento para um diretório local do contêiner de treinamento quando o trabalho de treinamento for iniciado.
    • Se você definir Predownload como Yes, o sistema fará download automático dos arquivos no caminho de dados de saída de treinamento para um diretório local do contêiner de treinamento quando o trabalho de treinamento for iniciado. Quanto maior o tamanho do arquivo, maior o tempo de download. Para evitar excesso de tempo de treinamento, remova todos os arquivos desnecessários do diretório de código local do contêiner de treinamento o mais rápido possível. Para usar treinamento resumível e treinamento incremental, Download deve ser selecionado.

    Hyperparameters

    -

    Usado para ajuste de treinamento. Este parâmetro é opcional.

    Environment Variable

    -

    Adicione variáveis de ambiente com base nos requisitos de serviço. Para obter detalhes sobre variáveis de ambiente predefinidas no contêiner de treinamento, consulte Visualização de variáveis de ambiente de um contêiner de treinamento.

    Auto Restart

    -

    Número de tentativas para um trabalho de treinamento com falha. Se esse parâmetro estiver habilitado, um trabalho de treinamento com falha será automaticamente entregue novamente e executado. Na página de detalhes do trabalho de treinamento, você pode exibir o número de tentativas de um trabalho de treinamento com falha.

    • Esta função está desativada por padrão.
    • Se você ativar essa função, defina o número de tentativas. O valor varia de 1 a 3 e não pode ser alterado.
  3. Selecione um flavor de instância. O intervalo de valores dos parâmetros de treinamento é consistente com as restrições das imagens personalizadas existentes. Selecione um pool de recursos públicos ou um pool de recursos dedicados, conforme necessário. Para obter detalhes sobre os parâmetros, consulte Criação de um trabalho de treinamento.
  1. Clique em Submit para criar o trabalho de treinamento.

    Leva um período de tempo para criar um trabalho de treinamento.

    Para exibir o status em tempo real de um trabalho de treinamento, vá para a lista de trabalhos de treinamento e clique no nome do trabalho de treinamento. Na página de detalhes do trabalho de treinamento exibida, exiba as informações básicas do trabalho de treinamento. Para obter detalhes, consulte Exibição de detalhes do trabalho de treinamento.