Onde salvar e gravar arquivos dos experimentos do Azure Machine Learning
APLICA-SE A: SDK do Python azureml v1
Neste artigo, você aprenderá onde salvar arquivos de entrada e onde gravar arquivos de saída dos experimentos para evitar erros de limite de armazenamento e latência do experimento.
Quando você executa tarefas de treinamento em um destino de computação, elas são isoladas de ambientes externos. O objetivo deste design é garantir a capacidade de reprodução e a portabilidade do experimento. Se executar o mesmo script duas vezes, no mesmo destino de computação ou em outro destino de computação, você com certeza receberá os mesmos resultados. Com esse design, você pode tratar os destinos de computação como recursos de computação sem estado, cada um sem afinidade com os trabalhos que estão sendo executados após a conclusão.
Onde salvar arquivos de entrada
Antes de iniciar um experimento em um destino de computação ou em seu computador local, você deve garantir que os arquivos necessários estejam disponíveis para esse destino de computação. Por exemplo, arquivos de dependência e arquivos de dados que seu código precisa para ser executado.
O Azure Machine Learning executa scripts de treinamento copiando o diretório de origem inteiro. Se você tiver dados confidenciais que não quer carregar, use um arquivo .ignore ou não o inclua no diretório de origem. Em vez disso, acesse seus dados por meio de um armazenamento de dados.
O limite de armazenamento para instantâneos de experimentos é de 300 MB e/ou 2.000 arquivos.
Por esse motivo, recomendamos:
Como armazenar arquivos em um conjunto de dados do Azure Machine Learning. O uso de conjuntos de dados evita problemas de latência de experimentos e tem as vantagens de acessar dados de um destino de computação remoto. O Azure Machine Learning lida com a autenticação e a montagem do conjunto de dados. Saiba mais sobre como especificar um conjunto de dados como fonte de dados de entrada em seu script de treinamento com o Treinar com conjunto de dados.
Se você precisar apenas de alguns arquivos de dados e scripts de dependência e não puder usar um armazenamento de dados, coloque os arquivos no mesmo diretório de pasta do script de treinamento. Especifique essa pasta como
source_directory
diretamente no script de treinamento ou no código que chama o script de treinamento.
Limites de armazenamento de instantâneos de experimento
Para experimentos, o Azure Machine Learning cria automaticamente um instantâneo de experimento do código com base no diretório sugerido ao configurar o trabalho. Para um pipeline, o diretório é configurado para cada etapa.
Isso tem um limite total de 300 MB e/ou 2.000 arquivos. Se você exceder esse limite, verá o seguinte erro:
While attempting to take snapshot of .
Your total snapshot size exceeds the limit of 300.0 MB
Para resolver esse erro, armazene os arquivos de experimento em um armazenamento de dados. Se você não puder usar um armazenamento de dados, a tabela abaixo oferecerá possíveis soluções alternativas.
Descrição do experimento | Solução de limite de armazenamento |
---|---|
Menos de 2.000 arquivos e não é possível usar um armazenamento de dados | Substituir o limite de tamanho do instantâneo por azureml._restclient.snapshots_client.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size' e azureml._restclient.constants.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size' Isso pode levar vários minutos, dependendo do número e do tamanho dos arquivos. |
Precisa usar um diretório de script específico | Para evitar que arquivos desnecessários sejam incluídos no instantâneo, faça uma opção Ignorar arquivo (.gitignore ou .amlignore ) no diretório. Adicione os arquivos e diretórios a serem excluídos para esse arquivo. Para obter mais informações sobre a sintaxe a ser usada dentro desse arquivo, consulte sintaxe e padrões para .gitignore . O arquivo .amlignore usa a mesma sintaxe. Se ambos os arquivos existirem, o arquivo .amlignore será usado e o arquivo .gitignore não será usado. |
Pipeline | Usar um subdiretório diferente para cada etapa |
Jupyter notebooks | Crie um arquivo .amlignore ou mova o notebook para um subdiretório novo e vazio e execute o código novamente. |
Onde gravar arquivos
Devido ao isolamento dos experimentos de treinamento, as alterações nos arquivos que ocorrem durante os trabalhos não são necessariamente mantidas fora do seu ambiente. Se o seu script modificar os arquivos locais para computação, as alterações não serão mantidas para o próximo trabalho de experimento e não serão propagadas de volta para o computador cliente automaticamente. Portanto, as alterações feitas durante o primeiro trabalho experimental não devem afetar as do segundo.
Ao gravar alterações, é recomendável gravar arquivos no armazenamento por meio de um conjunto de dados do Azure Machine Learning com um objeto OutputFileDatasetConfig. Consulte como criar um OutputFileDatasetConfig.
Caso contrário, grave arquivos na pasta ./outputs
e/ou ./logs
.
Importante
Duas pastas, saídas e logs, recebem tratamento especial do Azure Machine Learning. Durante o treinamento, ao gravar arquivos nas pastas ./outputs
e ./logs
, os arquivos serão carregados automaticamente no histórico de trabalhos para que você tenha acesso a eles quando o trabalho terminar.
Para saída como mensagens de status ou resultados de pontuação, grave arquivos na pasta
./outputs
, para que sejam preservados como artefatos no histórico de tarefas. Tenha cuidado com o número e o tamanho dos arquivos gravados nessa pasta, pois pode ocorrer latência quando o conteúdo for carregado no histórico do trabalho. Se a latência for uma preocupação, recomendamos gravar arquivos em um armazenamento de dados.Para salvar arquivos gravados como logs no histórico de trabalhos, grave arquivos na pasta
./logs
. Os logs são carregados em tempo real, portanto, esse método é adequado para streaming de atualizações dinâmicas de um trabalho remoto.
Próximas etapas
Saiba mais sobre como acessar dados do armazenamento.
Saiba mais sobre como Criar destinos de computação para treinamento e desenvolvimento