Quebrando a Barreira de Memória: Escalonamento de Tamanho de Lote Quase Infinito para Perda ContrastivaBreaking the Memory Barrier: Near Infinite Batch Size Scaling for
Contrastive Loss
A perda contrastiva é uma abordagem poderosa para aprendizado de representações, onde tamanhos de lote maiores aprimoram o desempenho ao fornecer mais amostras negativas para distinguir melhor entre dados semelhantes e dissimilares. No entanto, o dimensionamento dos tamanhos de lote é limitado pelo crescimento quadrático no consumo de memória da GPU, principalmente devido à instanciação completa da matriz de similaridade. Para lidar com isso, propomos uma estratégia de cálculo baseada em blocos que divide o cálculo da perda contrastiva em blocos arbitrariamente pequenos, evitando a materialização completa da matriz de similaridade. Além disso, introduzimos uma estratégia de divisão em vários níveis para aproveitar a estrutura hierárquica de sistemas distribuídos, utilizando comunicação baseada em anel no nível da GPU para otimizar a sincronização e kernels fundidos no nível do núcleo CUDA para reduzir a sobrecarga de E/S. Resultados experimentais mostram que o método proposto dimensiona os tamanhos de lote para níveis sem precedentes. Por exemplo, ele permite o treinamento contrastivo de um modelo CLIP-ViT-L/14 com um tamanho de lote de 4M ou 12M usando 8 ou 32 A800 80GB sem sacrificar precisão alguma. Comparado às soluções de eficiência de memória do estado da arte, ele alcança uma redução de dois ordens de magnitude na memória mantendo uma velocidade comparável. O código será disponibilizado publicamente.