Partilhar 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.

Quando você executa 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 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 após a conclusão.

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. Por exemplo, 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 experimentos é de 300 MB e/ou 2.000 arquivos.

Por esta razão, recomendamos:

  • Armazenar seus 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 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.

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 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 2.000 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 .amlignore arquivo será usado e o .gitignore arquivo não será usado.
Pipeline Use um subdiretório diferente para cada etapa
Blocos de notas do Jupyter Crie um .amlignore arquivo ou mova seu bloco de anotações para um 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 persistentes 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./outputs e./logs pastas, os arquivos 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 persistam 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