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
- Os dados a serem treinados foram carregados em um diretório do OBS.
- Pelo menos uma pasta vazia para armazenar a saída de treinamento foi criada no OBS.
- Uma imagem personalizada foi criada com base nas especificações do ModelArts. Para obter detalhes sobre as especificações de imagem personalizada, consulte Especificações para imagens personalizadas para trabalhos de treinamento.
- A imagem personalizada foi carregada no SWR. Para mais detalhes, consulte Como acessar o SWR e carregar imagens para ele?.
Criar um trabalho de treinamento
- Faça logon no console de gerenciamento do ModelArts. No painel de navegação à esquerda, escolha Training Management > Training Jobs.
- 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.
- 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.
- 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.