Preparação em fatias de TPU
As TPUs foram concebidas para serem expandidas para um pod de TPUs. Um Pod de TPUs é uma coleção de dispositivos de TPUs ligados por interfaces de rede de alta velocidade dedicadas. Um Pod de TPU permite-lhe distribuir a carga de processamento por várias TPUs. Cada placa de TPU está ligada a uma máquina anfitriã baseada em CPU de alto desempenho para tarefas como o carregamento e o pré-processamento de dados. Para tirar o máximo partido de um maior número de UTPs, tem de ajustar vários parâmetros da tarefa de preparação.
A configuração para a preparação com TPU Pods é diferente para cada framework. Use os seguintes links para ver informações detalhadas sobre a preparação em Pods com cada framework:
As secções seguintes explicam alguns problemas comuns, as alterações que tem de fazer nos seus modelos e as práticas recomendadas para reduzir ou evitar falhas de pods.
Aumentar o tamanho do lote e os passos de treino
Para alcançar o escalonamento linear em tipos de TPU maiores, mantenha o tamanho do lote por núcleo igual.
Por exemplo, se usar um tamanho do lote de 1024 numa v6e-8, use um tamanho do lote de 4096 (4 * 1024) numa v6e-32. Isto usa totalmente o hardware da TPU. Pode usar tamanhos de lotes mais pequenos, mas a sua preparação não é dimensionada linearmente se o fizer.
Alguns modelos incluem uma flag train_steps
em que um passo corresponde ao
processamento de um único lote de dados. Quando aumenta o tamanho do lote, reduza o número de passos de preparação para que o número total de exemplos de preparação permaneça o mesmo.
Por exemplo, se tiver um tamanho do lote de 1000 para 100 passos, são processados 100 000 exemplos durante a preparação. Se tiver agora 4 trabalhadores e um tamanho do lote eficaz de 4000, tem de ajustar o número de passos para 25 para processar os mesmos 100 000 exemplos. Se o seu modelo usar uma flag epochs
, não precisa de dimensionar o número de passos.
Os tamanhos dos lotes maiores podem alterar o comportamento de convergência do modelo, pelo que também pode ajustar alguns hiperparâmetros, como a taxa de aprendizagem.
Usar contentores do Cloud Storage regionais na mesma região que o TPU Pod
Em geral, a prática recomendada para a preparação de TPUs é usar sempre recursos na mesma região. A região do recurso é particularmente importante quando usa TPU Pods, porque as taxas de transferência de dados são mais elevadas quando o seu contentor do Cloud Storage e a TPU estão na mesma região.
Certifique-se de que está a usar um contentor do Cloud Storage regional na mesma região que a TPU para conjuntos de dados de preparação e pontos de verificação.
Práticas recomendadas de fluxo de trabalho para o desenvolvimento em TPU Pods
Quando desenvolve uma nova carga de trabalho de TPU, é frequentemente ideal começar o desenvolvimento nas TPUs mais pequenas e iterar progressivamente para tamanhos de TPU maiores. Comece por usar uma versão de TPU pequena (por exemplo, v6e-8).
- Teste a sua carga de trabalho para verificar o comportamento esperado
- Teste e valide o desempenho com as ferramentas de desempenho
Assim que a sua carga de trabalho estiver funcional e atingir os alvos de desempenho, aumente a escala para um tipo de TPU maior, como um v6e-32. Aumente gradualmente e de forma iterativa o tamanho da TPU enquanto valida a escalabilidade (funcionalidade e desempenho) até atingir o tamanho da TPU pretendido.