Share via


Onde salvar e gravar arquivos para experimentos do Azure Machine Learning

APLICA-SE A:Python SDK azureml v1

Neste artigo, você aprenderá onde salvar arquivos de entrada e onde gravar arquivos de saída de seus experimentos para evitar erros de limite de armazenamento e latência de experimento.

Ao iniciar trabalhos de treinamento em um destino de computação, eles são isolados de ambientes externos. O objetivo deste projeto é garantir a reprodutibilidade e portabilidade do experimento. Se você executar o mesmo script duas vezes, no mesmo destino ou em outro destino de computação, receberá os mesmos resultados. Com esse design, você pode tratar os destinos de computação como recursos de computação sem monitoração de estado, cada um sem afinidade com os trabalhos que estão sendo executados depois de concluídos.

Onde salvar arquivos de entrada

Antes de iniciar um experimento em um destino de computação ou em sua máquina local, você deve garantir que os arquivos necessários estejam disponíveis para esse destino de computação, como arquivos de dependência e arquivos de dados que seu código precisa executar.

Scripts de treinamento de trabalhos do Azure Machine Learning copiando todo o diretório de origem. Se você tiver dados confidenciais que não deseja carregar, use um arquivo .ignore ou não o inclua no diretório de origem. Em vez disso, acesse seus dados usando um armazenamento de dados.

O limite de armazenamento para instantâneos de experimentação é 300 MB e/ou 2000 ficheiros.

Por esta razão, recomendamos:

  • Armazenar seus arquivos em um conjunto de dados do Azure Machine Learning. Isso evita problemas de latência do experimento e tem as vantagens de acessar dados de um destino de computação remoto, o que significa que a autenticação e a montagem são gerenciadas pelo Azure Machine Learning. Saiba mais sobre como especificar um conjunto de dados como sua fonte de dados de entrada em seu script de treinamento com Treinar com conjuntos 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 que o script de treinamento. Especifique essa pasta como sua source_directory diretamente no script de treinamento ou no código que chama o script de treinamento.

Limites de armazenamento de snapshots de experimentos

Para experimentos, o Aprendizado de Máquina do Azure cria automaticamente um instantâneo de experimento do seu código com base no diretório que você sugere ao configurar o trabalho. Para um pipeline, o diretório é configurado para cada etapa.

Isto tem um limite total de 300 MB e/ou 2000 ficheiros. 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 seus arquivos de experimento em um armazenamento de dados. Se você não puder usar um armazenamento de dados, a tabela abaixo oferece possíveis soluções alternativas.

Descrição da experiência Solução de limite de armazenamento
Menos de 2000 arquivos & não podem usar um armazenamento de dados Substitua o limite de tamanho do snapshot 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 tamanho dos arquivos.
Deve usar diretório de script específico Para evitar que arquivos desnecessários sejam incluídos no instantâneo, crie um arquivo de ignorar (.gitignore ou .amlignore) no diretório. Adicione os ficheiros e os diretórios a excluir neste ficheiro. Para obter mais informações sobre a sintaxe a ser usada dentro desse arquivo, consulte sintaxe e padrões para .gitignore. O .amlignore arquivo usa a mesma sintaxe. Se ambos os arquivos existirem, o arquivo será usado e o .amlignore.gitignore arquivo não será usado.
Pipeline Use um subdiretório diferente para cada etapa
Blocos de notas do Jupyter Crie um arquivo ou mova seu bloco de anotações para um .amlignore novo subdiretório vazio e execute seu código novamente.

Onde escrever ficheiros

Devido ao isolamento dos experimentos de treinamento, as alterações nos arquivos que acontecem durante os trabalhos não são necessariamente persistidas fora do seu ambiente. Se o script modificar os arquivos locais para computação, as alterações não serão persistidas para o próximo trabalho de experimento e não serão propagadas de volta para a máquina cliente automaticamente. Portanto, as alterações feitas durante o primeiro trabalho de experimento não afetam e não devem afetar as do segundo.

Ao gravar alterações, recomendamos gravar arquivos no armazenamento por meio de um conjunto de dados do Aprendizado de Máquina do Azure com um objeto OutputFileDatasetConfig. Veja como criar um OutputFileDatasetConfig.

Caso contrário, escreva arquivos na ./outputs e/ou ./logs pasta.

Importante

Duas pastas, saídas e logs, recebem tratamento especial pelo Azure Machine Learning. Durante o treinamento, quando você escreve arquivos e./logs pastas, os arquivos./outputs serão automaticamente carregados para o seu histórico de trabalho, para que você tenha acesso a eles assim que o trabalho for concluído.

  • Para saídas, como mensagens de status ou resultados de pontuação, grave arquivos na ./outputs pasta, para que eles sejam mantidos como artefatos no histórico de trabalhos. Esteja atento ao número e tamanho dos arquivos gravados nessa pasta, pois a latência pode ocorrer quando o conteúdo é carregado no histórico de trabalhos. Se a latência for uma preocupação, recomenda-se gravar arquivos em um armazenamento de dados.

  • Para salvar o arquivo gravado como logs no histórico de trabalhos, grave os arquivos na ./logs pasta. Os logs são carregados em tempo real, por isso este método é adequado para transmitir atualizações ao vivo de um trabalho remoto.

Próximos passos