Aqui estão algumas dicas para corrigir problemas inesperados.
Operação não permitida dentro do escopo da estratégia de distribuição
Erro como : Criar um gerador dentro de um escopo de estratégia não é permitido, porque há ambigüidade sobre como replicar um gerador (por exemplo, ele deve ser copiado para que cada réplica obtenha os mesmos números aleatórios, ou 'dividido' para que cada réplica receba diferentes aleatórios números).
Solução : Passar distribution_strategy='auto'
para run
API envolve todo o seu script em uma estratégia de distribuição TF baseada na configuração de cluster fornecida. Você verá o erro acima ou algo semelhante a ele, se por algum motivo uma operação não for permitida dentro do escopo da estratégia de distribuição. Para corrigir o erro, passe None
para o parâmetro distribution_strategy
e crie uma instância de estratégia como parte de seu código de treinamento, conforme mostrado neste exemplo.
Tempo limite de compilação de imagem do Docker
Erro como : requests.exceptions.ConnectionError: ('Conexão abortada.', Tempo limite ('Tempo limite da operação de gravação esgotado'))
Solução : O diretório que está sendo usado como um ponto de entrada provavelmente tem muitos dados para que a imagem seja construída com sucesso e pode haver dados estranhos incluídos na construção. Reformate sua estrutura de diretório de forma que a pasta que contém o ponto de entrada inclua apenas os arquivos necessários para o projeto atual.
Versão não compatível com treinamento TPU
Erro como : Ocorreu um erro ao enviar o job.Field: tpu_tf_version Erro: A versão de tempo de execução '2.3' especificada não é compatível com o treinamento de TPU. Especifique uma versão de tempo de execução diferente.
Solução : use o TF versão 2.1. Consulte Estratégia de TPU na seção Cluster e configuração de estratégia de distribuição .
TF construção noturna.
Aviso como : a imagem pai do Docker '2.4.0.dev20200720' não existe. Usando a última compilação noturna do TF.
Solução : Se você não fornecer o parâmetro docker_config.parent_image
, por padrão usaremos imagens docker TF pré-construídas como imagem pai. Se você não tiver o TF instalado no ambiente em que o run
é chamado, a imagem do TF docker para a versão estável latest
será usada. Caso contrário, a versão da imagem do docker corresponderá à versão do TF instalada localmente. No entanto, as imagens da docker TF pré-construídas não estão disponíveis para nightlies TF, exceto as mais recentes. Portanto, se o seu TF local for uma versão noturna mais antiga, atualizamos para a versão noturna mais recente automaticamente e levantamos este aviso.
Mistura de objetos de estratégia de distribuição.
Erro como : RuntimeError: Misturando diferentes objetos tf.distribute.Strategy.
Solução : Forneça distribution_strategy=None
quando você já tem uma estratégia de distribuição definida em seu código de modelo. A especificação de distribution_strategy'='auto'
envolverá seu código em uma estratégia de distribuição do TensorFlow. Isso causará o erro acima, se houver um objeto de estratégia já usado em seu código.