notícias

Os custos de pesquisa da DeepMind são tão altos que um artigo do ICML custou US$ 12,9 milhões

2024-08-03

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Novo Relatório de Sabedoria

Editor: Qiao Yang

[Introdução à Nova Sabedoria] Um artigo recentemente aceito pela DeepMind no ICML 2024 expôs completamente sua “tirania” apoiada pelo Google. Um artigo estima que o poder de computação e o custo necessários para esta pesquisa são cerca de 15% do pré-treinamento do Llama 3, e o custo pode chegar a 12,9 milhões de dólares americanos.

Quanto orçamento experimental é necessário para publicar um artigo de conferência?

Recentemente, a DeepMind publicou um estudo que conduziu uma extensa investigação empírica de vários detalhes algorítmicos e arquitetônicos, como seleção de parâmetros e otimizadores, quando o LLM é ampliado.

Este artigo foi aceito pelo ICML 2024.


Endereço do artigo: https://arxiv.org/abs/2407.05872

O artigo de 63 páginas cobre dezenas de milhares de modelos e as alternativas incluem 3 otimizadores, 4 esquemas de parametrização, várias suposições de alinhamento, mais de uma dúzia de taxas de aprendizagem e 14 tamanhos de parâmetros de até 26,8B.


4 esquemas de parametrização que requerem experimentação

Só de ouvir esses números, não é difícil saber que esta pesquisa deve envolver um grande número de experimentos de execução de modelos.

Um leitor fiel, para testar sua compreensão do conteúdo do artigo, contou todos os experimentos nele realizados e estimou o custo de replicação do artigo.


Somando todo o poder de computação necessário, chegou a surpreendentes US$ 12,9 milhões.

Chegou a hora de testar suas habilidades básicas. Se você é o líder de uma equipe de pesquisa, estimar o poder computacional e os custos necessários com base no plano experimental é uma habilidade essencial.

Então vamos seguir este artigo do blog para descobrir onde exatamente esses mais de 10 milhões de dólares foram queimados.

Informações sobre arquitetura do transformador

O Apêndice C do artigo fornece várias configurações detalhadas sobre o algoritmo e a arquitetura do modelo, como uso de arquitetura somente decodificador, normalização de camada, função de ativação GeLU, sem abandono, tokenizador T5, tamanho de lote de 256, uso de paralelismo FSDP, etc.


Estatísticas de escala de parâmetros de modelos experimentais

Através de informações arquiteturais, podemos estimar aproximadamente os FLOPS necessários para cada token em treinamento, denotado como M.

Como o artigo não descreve nenhum mecanismo GQA/MQA, assume-se que Rkv=1, além de lseq=512, Dhead=128, L=8 (profundidade), V=32101 (vocabulário segmentador de palavras).

Os parâmetros totais do modelo podem ser expressos como:

Portanto, podemos obter a fórmula de cálculo de M:

Por padrão, o número de tokens processados ​​por experimento (TPE) é 5k (número de etapas de treinamento) × 256 (tamanho do lote) × 512 (lseq), que é aproximadamente 6,5536e9.

def M(d: int, L=8, l_seq=512, V=32101) -> int:     return 6*d * (L*(12*d + l_seq) + V) TPE = 50000 * 256 * 512

Experimento de alinhamento

No experimento de alinhamento de hipóteses, o resultado ideal obtido na varredura da taxa de aprendizagem subsequente foi usado diretamente em vez de uma varredura da taxa de aprendizagem separada, de modo que o cálculo do custo nesta etapa é relativamente simples:


def alignment() -> int:     return 4 * TPE * sum(M(d) for d in [1024,2048,4096]) # >>> f'{alignment():.3E}' # '3.733E+20' # >>> cost_of_run(alignment())[0] # 888.81395400704

Se o H100 custa US$ 3 por hora de operação, o custo do experimento de alinhamento é de aproximadamente US$ 888.

taxa de Aprendizagem

Subproblema: experimento de perda de avaliação ideal (perda de avaliação)

A Tabela E1 do artigo registra todas as combinações possíveis de otimizador × esquema de parametrização × tamanho do modelo × configurações experimentais em 6 tamanhos de modelo e realiza varreduras básicas de taxa de aprendizado, respectivamente, para obter a melhor perda de avaliação.

No total, inclui as seguintes variáveis ​​experimentais:

- Dimensão do modelo D∈3072,4096,6144,8192,12288,16384

- 4 opções de parametrização

- 3 otimizadores, dos quais SGD possui apenas 5 configurações experimentais, Adam e Adam+Param Scaling possuem 7 configurações experimentais

Suponha que todos os experimentos aqui sejam conduzidos de forma independente e que os resultados não sejam replicados de outros locais. Portanto, se todos forem executados uma vez, haverá uma estimativa do limite superior do custo:


H = [1,2,4,6,8,12,16,20,24,32,48,64,96,128] D = [h * 128 for h in H] def table_e1() -> int:   sets_x_optims = 5 + 7 + 7   return 4 * sets_x_optims * TPE * sum(M(d) for d in D[-6:]) # >>> f'{table_e1():.3E}';cost_of_run(table_e1()) # '1.634E+23' # (388955.9991064986, 16206.499962770775)

O custo desta peça é próximo de US$ 400 mil, o que ainda está dentro da faixa aceitável, mas já é muito caro para a maioria dos orçamentos acadêmicos.

A Tabela E1 fornece a melhor perda de avaliação, mas não descreve a estratégia de varredura do LR, e o número de pontos em cada imagem também é diferente.


Como não obtivemos resposta do autor do artigo, não podemos determinar o mecanismo específico, por isso assumimos que cada perda melhor avaliada passou por 15 experimentos (a inspeção visual descobriu que o número de pontos em cada linha é de cerca de 10 a 15).

parâmetro β

De acordo com a Seção 4.2 do artigo, a taxa de aprendizagem também envolve a seleção de dois hiperparâmetros: β e γ.

Se houver apenas parâmetros β, é chamado de configuração "LR+default":


Esta parte inclui otimizador 3×, parametrização 4×, além de experimentos separados em camadas globais e individuais (GlobalLR, Perlayer-fullalign) e um número desconhecido de varreduras LR:


def beta_only() -> int:   return 3*4*2*PpL * TPE * sum(M(d) for d in D) # 7.988E+23 (1902022.3291813303, 79250.93038255542)

Como pode ser visto na fórmula, o custo é semelhante ao experimento épsilon abaixo, ambos de US$ 2 milhões.

parâmetro γ

Comparado com o experimento do parâmetro β, há duas diferenças detalhadas nesta parte.

Em primeiro lugar, além das configurações GlobalLR e Perlayer-fullalign, a configuração Perlayer-noalign também precisa ser adicionada.


Em segundo lugar, uma pesquisa de hiperparâmetros 3D (γ_1, γ_h, γ_L+1) é realizada apenas para d=1024=b, portanto, há 800 execuções adicionais.


A fórmula de cálculo após combinar os dois é:


O custo estimado desta peça está próximo do experimento do mapa de calor épsilon de Adam, cerca de US$ 3,2 milhões.

def gamma_expts() -> int:   return 36*TPE * (800*M(1024) + PpL*sum(M(d) for d in D)) # gamma_expts 1.354E+24 (3224397.534237257, 134349.8972598857)

Parâmetros Epsilon do otimizador Adam

O experimento do parâmetro Epsilon descrito na Seção 4.3 do artigo é responsável pela maior parte do cálculo.


De acordo com a inferência acima, 15 taxas de aprendizagem diferentes (pontos por linha) são tentadas a cada vez para encontrar a melhor perda de avaliação, então o valor do cálculo do gráfico de mudança do parâmetro épsilon mostrado na Figura 6 é:


Os cálculos revelaram uma conta sucintamente cara de US$ 2 milhões.

PpL = 15  # unprincipled estimate def eps_variants() -> int:   return 4 * 6 * PpL * TPE * sum(M(d) for d in D) ''' >>> f'{eps_variants():.3E}';cost_of_run(eps_variants()) '7.988E+23' (1902022.3291813303, 79250.93038255542) '''

Além do gráfico de linhas no lado esquerdo da Figura 6, há também os resultados do mapa de calor no Apêndice F.


Supondo que cada valor de bloco seja o resultado de 13 varreduras de taxa de aprendizagem, o valor do cálculo desta parte é:


Verificou-se que o custo de obter apenas estes 8 mapas de calor foi de 3,2 milhões de dólares. Além disso, como modelamos o número de varreduras LR como uma constante 13, esse número é provavelmente menor que o custo real.

def eps_heatmaps() -> int:    # eps-type * eps-val * parameterizations * LR range * ...   return 2 * 6 * 4 * 13 * TPE * sum(M(d) for d in D[-6:]) ''' >>> f'{eps_heatmaps():.3E}';cost_of_run(eps_heatmaps()) '1.341E+24' (3193533.466348094, 133063.89443117057) '''

perda de peso

O experimento de redução de peso (Apêndice G) é relativamente fácil de entender. Uma varredura LR básica é realizada no esquema de parametrização 4× e em todos os parâmetros:


É muito mais barato do que o experimento épsilon, que é o salário anual de um engenheiro da Bay Area – US$ 317.000.

def weight_decay() -> int:   return 4 * PpL * TPE * sum(M(d) for d in D) ''' >>> f'{weight_decay():.3E}'; cost_of_run(weight_decay()) '1.331E+23' (317003.7215302217, 13208.488397092571) '''

Otimizador Adaptator

Esta parte do experimento é descrita em detalhes no Apêndice C3 e visa testar se o dimensionamento de parâmetros Adafactor e Adam + têm mecanismos de dimensionamento de largura semelhantes.


Existem gráficos 2×4, onde cada otimizador coleta 11 pontos de dados, então a fórmula de cálculo é:


Outros US$ 188 mil foram adicionados à conta.

def adafactor() -> int:   return 2*2*4*PpL*TPE*sum(M(d) for d in D[:11]) ''' >>> f'{adafactor():.3E}'; cost_of_run(adafactor()) '7.918E+22' (188532.80765144504, 7855.533652143543) '''

Otimização de cálculo

O artigo tenta alterar o número de cabeças de atenção H, na esperança de encontrar as configurações de cálculo ideais, mas envolve alterações no tamanho do passo e no conjunto de dados, portanto, esta parte não usa descrições de fórmulas. O código de cálculo é o seguinte:

def P(d: int, L=8, V=32101) -> int:     return 2 * d * (6*L*d + V) def compute_optimal():   indices_50k = (14, 14, 12)   return 4*PpL*sum([     TPE * sum(sum( M(d) for d in D[:i] ) for i in indices_50k),         20  * sum(P(d)*M(d) for d in D[:11]) *3,   ]) # compute_optim 7.518E+23 (1790104.1799513847, 74587.67416464102)

Resumir

Resuma o poder de computação e os custos dos experimentos acima:

alignment       3.733E+20 (888.81395400704, 37.033914750293334) table_e1        1.634E+23 (388955.9991064986, 16206.499962770775) eps_variants    7.988E+23 (1902022.3291813303, 79250.93038255542) eps_heatmaps    1.341E+24 (3193533.466348094, 133063.89443117057) beta_only       7.988E+23 (1902022.3291813303, 79250.93038255542) gamma_expts     1.354E+24 (3224397.534237257, 134349.8972598857) weight_decay    1.331E+23 (317003.7215302217, 13208.488397092571) adafactor       7.918E+22 (188532.80765144504, 7855.533652143543) compute_optim   7.518E+23 (1790104.1799513847, 74587.67416464102)

Verificou-se que a complexidade computacional de todo o artigo foi de 5,42e24 FLOPS.

Este número representa apenas 15% do valor do cálculo de treinamento do Llama 3. Se executado em um cluster H100 de 100.000 cartões, leva apenas 2 dias para concluir todos os experimentos.

total_flops=5.421E+24 rental price: US$12.9M h100 node months required: 746.9595590938408 (sanity check) D=[128, 256, 512, 768, 1024, 1536, 2048, 2560, 3072, 4096, 6144, 8192, 12288, 16384] (sanity check) model sizes: ['0.00979B', '0.0227B', '0.058B', '0.106B', '0.166B', '0.325B', '0.534B', '0.794B', '1.1B', '1.87B', '4.02B', '6.97B', '15.3B', '26.8B'] (sanity check) M/6P: ['63.4%', '68.5%', '75.3%', '79.7%', '82.8%', '86.8%', '89.3%', '91.0%', '92.2%', '93.9%', '95.7%', '96.7%', '97.7%', '98.3%']

No entanto, se não o medirmos a partir dos padrões de pré-treinamento do LLM, e apenas considerarmos este artigo da DeepMind como uma pesquisa acadêmica, esta quantidade de cálculo parece bastante extravagante.

Se o laboratório tivesse apenas 10 H100s, seria impossível realizar pesquisas dessa magnitude.

Um grande laboratório com 100 H100s poderá concluir todos os experimentos acima em poucos anos.

Referências:

https://152334h.github.io/blog/scaling-exponents/

https://news.ycombinator.com/item?id=41107721

https://arxiv.org/abs/2407.05872