Estamos constantemente treinando modelos de linguagem para o nosso trabalho. Nossa equipe usa dezenas de placas de vídeo diferentes escolhidas para diferentes tarefas: em algum lugar precisamos de uma poderosa estação DGX, e em algum lugar um cartão de jogo antigo como RTX 2080Ti é suficiente. A escolha da GPU ideal para treinamento de modelos pode impactar significativamente a velocidade e a relação custo-benefício do processo.
O que é interessante é que existem alguns artigos na Internet com comparação de GPU para aprendizado de máquina, mas poucos se concentram na velocidade para treinamento de modelos de linguagem. Principalmente apenas testes de inferência são encontrados. Quando o novo chip H100 foi lançado, o relatório da NVidia afirmou que era até nove vezes mais rápido que o A100 em treinamento, mas para nossas tarefas, a nova placa era apenas 90% mais rápida que a antiga. Em comparação, nossos provedores de nuvem tinham uma diferença de preço de 2 x entre essas GPUs, então não fazia sentido mudar para o novo H100 para economizar dinheiro.
Além disso, fizemos um teste em uma estação DGX, que consiste em 8 placas gráficas A100 de 80 GB e custa 10 mil dólares por mês. Após o teste, ficou claro que a relação preço/desempenho desta estação não nos convém em tudo e para este dinheiro, podemos tomar 66 x RTX 3090, que no total será muito mais útil.
Nossos modelos de linguagem de tradução têm até 500 milhões de parâmetros (100 milhões a 300 milhões em média). É possível que se aumentarmos significativamente o número de parâmetros, a relação preço/desempenho da DGX seja melhor. Atualmente, não treinamos grandes modelos de linguagem que possam traduzir entre todos os idiomas em todas as variações de uma só vez, mas usamos modelos de linguagem separados para cada par de idiomas, e. Inglês-Alemão. Cada um desses modelos leva de 120 a 300 Mb.
Vale ressaltar que diferentes idiomas possuem diferentes quantidades de dados na Internet, e enquanto. Por exemplo, para o espanhol, você pode encontrar 500 milhões de frases com traduções, mas ao treinar modelos para idiomas mais raros como o tibetano, você precisa escolher uma GPU específica para tarefas de aprendizado de máquina com base nos dados disponíveis. Para criar um modelo de tradução do inglês para o espanhol, usamos um servidor com 4 x RTX 4500 e 256 GB de RAM. Ao mesmo tempo, a língua tibetana pode ser treinada no RTX 2080 Ti com 16 GB de RAM, pois não faz sentido aumentar a complexidade da rede neural e, como resultado, levar um servidor mais poderoso com uma pequena quantidade de dados.
Seleção de processadores gráficos e figuras teóricas
O treinamento do modelo de linguagem ocorreu em nossa plataforma interna Data Studio usando a estrutura OpenNMT-tf. Esta fase incluiu preparação de dados, treinamento de modelos e comparação de modelos com uma tradução de referência. A utilização do FP16 em vez do FP32 durante a formação permitiu-nos reduzir significativamente o tempo de formação dos modelos linguísticos sem degradar a qualidade da tradução, mas nem todas as nossas GPUs apoiaram isso.
Ao escolher um processador gráfico, é padrão considerar métricas como poder de processamento (TFLOPS), memória de vídeo (VRAM), resultados de benchmark de GPU, suporte de biblioteca e estrutura, orçamento e outros fatores (tamanho e formato da placa gráfica, requisitos de energia, resfriamento e compatibilidade com seu sistema). Ao treinar modelos de geração de texto, você também deve ter em mente que diferentes idiomas consumirão diferentes quantidades de recursos. Por exemplo, 1 byte é usado para codificar um caractere para idiomas latinos, 2 bytes para idiomas cirílicos e 3 bytes para idiomas contendo hieróglifos. Entender quais características sua placa gráfica terá tem um impacto significativo na velocidade do processo de aprendizagem.
No treinamento dos modelos quanto às GPUs utilizadas, as placas de vídeo foram divididas em dois grupos de acordo com o período de uso: placas de vídeo precoces, que foram utilizadas para fazer as primeiras medidas de velocidade de aprendizagem, e placas atualmente em uso. As principais características dessas placas gráficas podem ser encontradas na Tabela 1 e na Tabela 2, respectivamente.
Tabela 1 - Processadores gráficos utilizados anteriormente e seus parâmetros técnicos
Number of GPUs | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Tesla V100-SXM2 | HBM2, 16 | 7.0 | 31.33 | 16.31 |
2 | Tesla V100-SXM2 | HBM2, 32 | 7.0 | 31.33 | 15.67 |
1 | RTX 4060 Ti | GDDR6, 8 | 8.9 | 22.06 | 22.06 |
1 | Nvidia A40 | GDDR6, 48 | 8.6 | 37.42 | 37.42 |
2 | Nvidia A40 | GDDR6, 96 | 8.6 | 37.42 | 37.42 |
1 | Nvidia A100 | HBM2, 40 | 8.0 | 77.97 | 19.49 |
1 | Nvidia A100 | HBM2, 80 | 8.0 | 77.97 | 19.49 |
1 | Nvidia RTX A6000 | GDDR6, 48 | 8.6 | 38.71 | 38.71 |
1 | Nvidia A10 | GDDR6, 24 | 8.6 | 31.24 | 31.24 |
8 | Nvidia A10 | GDDR6, 192 | 8.6 | 31.24 | 31.24 |
1 | Nvidia H100 | HBM3, 80 | 9.0 | 204.9 | 51.22 |
Notas
1. Com CUDA maior que 7,0, o uso do FP16 dará um impulso na velocidade de treinamento, dependendo da versão CUDA e das características da própria placa gráfica.
2. Se a especificação da placa gráfica indicar que a relação de desempenho FP16 para FP32 é superior a 1 para 1, então o uso de precisão mista será garantido para aumentar a velocidade de treinamento na quantidade especificada na especificação. Por exemplo, para o Quadro RTX 6000 o valor FP16 TFLOPS de 32,62 (2:1) acelerará o treino em pelo menos duas vezes (2,4 vezes na prática)
Tabela 2 - Modelos de GPU atualmente utilizados e suas principais características
Number of GPUs in use | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Quadro RTX 6000 | GDDR6, 24 | 7.5 | 32.62 | 16.31 |
2 | Quadro RTX 6000 | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Quadro RTX 6000 | GDDR6, 96 | 7.5 | 32.62 | 16.31 |
2 | Nvidia TITAN RTX | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Nvidia RTX A4500 | GDDR6, 96 | 8.6 | 23.65 | 23.65 |
1 | Nvidia GeForce RTX 3090 | GDDR6X, 24 | 8.6 | 35.58 | 35.58 |
1 | Nvidia GeForce RTX 3070 | GDDR6, 8 | 8.6 | 20.31 | 20.31 |
* - os valores para FP16, TFLOPS e FP32, TFLOPS são retirados das especificações por GPU
Processo de treinamento e teste de GPU
Os modelos foram treinados utilizando um conjunto de 18 GPUs. No processo de treinamento de redes neurais, utilizamos numerosos pares de idiomas (mais de cem idiomas). Os testes de GPU ajudaram a identificar qual hardware tem melhor desempenho para tarefas específicas. Durante o treinamento de nossos pares de línguas, tomou-se como base os seguintes parâmetros de redes neurais:
- tamanho do vocabulário = 30 000
- numunidades = 768
- camadas = 6
- cabeças = 16
- dimensão interna = 4 096
Primeiramente, vamos caracterizar as GPUs que pertenciam ao primeiro grupo com base na Tabela 1. O tempo em minutos e segundos gasto no treinamento do modelo a uma velocidade aproximada de 1.000 passos e um múltiplo em tamanho de lote de 100.000 unidades serão tomados como base para a comparação dos indicadores.
Ressaltamos que para o primeiro grupo, as medidas de velocidade foram realizadas com o uso do alinhamento mecanismo e apenas usando 32o PQ. Sem utilizar este mecanismo a velocidade de aprendizagem em alguns servidores pode ser muito mais rápida.
O mecanismo de alinhamento permite combinar substrings na base e no texto traduzido. É necessário traduzir texto formatado, como páginas da web, quando uma substring em uma frase pode ser destacada em uma fonte diferente e deve ser traduzida com o realce.
Levando em consideração os parâmetros da rede neural acima mencionados, o melhor tempo da primeira tabela foi mostrado pela GPU Nvidia H100 com tempo de aprendizagem de 22 minutos, e o tempo intermediário foi mostrado pela GPU da mesma marca GeForce RTX 4060 Ti com tempo de aprendizado de 72 minutos e o último lugar foi ocupado pela GPU Tesla V100-SXM 2 com tempo de aprendizado de 140 minutos.
Havia também oito placas Nvidia A10 no teste de GPU com curva de aprendizado de 20 minutos e 28 segundos, duas placas Nvidia A40 com tempo de 56 minutos e duas placas Tesla V100-SXM com clock de 86 minutos. A aplicação simultânea de múltiplas placas da mesma série de GPU pode acelerar o processo de treinamento dos modelos e mostrar quase o mesmo tempo com GPUs que possuem capacidades mais altas, mas tal técnica pode não ser suficientemente racional financeira e processualmente. Os resultados das medidas de velocidade de aprendizagem podem ser observados na Tabela número 3.
Tabela 3 - Medições do tempo de treinamento nos mapas gráficos utilizados anteriormente
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
8 | Nvidia A10 | 20,28 | 6 250 |
1 | Nvidia H100 | 22 | 25 000 |
1 | A100 (80 Gb) | 40 | 25 000 |
1 | A100 (40 Gb) | 56 | 15 000 |
2 | Nvidia A40 | 56 | 12 500 |
1 | RTX A6000 | 68,25 | 12 500 |
1 | GeForce RTX 4060 Ti | 72 | 4 167 |
1 | Nvidia A40 | 82,08 | 12 500 |
2 | Tesla V100-SXM | 86 | 4 167 |
1 | Nvidia A10 | 104,50 | 5 000 |
1 | Tesla V100-SXM2 | 140 | 4 167 |
A seguir, vamos fazer uma análise comparativa dos pedais de gás gráficos atualmente em uso (Tabela 2). Para este grupo de processadores gráficos, as medições de velocidade foram realizadas utilizando o alinhamento mecanismo, bem como utilização do 16.o PQ e do 32.o PQ. Medições de velocidade incluindo este mecanismo e precisão mista serão apresentadas abaixo nas Tabelas 4 e 5, respectivamente.
Assim, tendo medido a velocidade das GPUs a partir desta tabela, podemos dizer que o primeiro lugar foi ocupado pela GPU da série RTX A4500 com um tempo de treinamento de 31 minutos, mas deve-se enfatizar que tal velocidade dos modelos de treinamento foi obtida aumentando o número de unidades da GPU usada até 4. Desconsiderando esse fato, a velocidade de treinamento da referida GPU será muito maior, o que a colocará no penúltimo lugar da mesa final.
A GPU da série Quadro RTX 6000 com um tempo de aprendizagem de 47 minutos está em segundo lugar. Deve-se notar que tal velocidade de treinamento é inversamente condicionada pelo número de unidades do processador utilizado, que é igual a quatro. Usar apenas uma dessas GPU daria uma perda de velocidade de cerca de 3,2 vezes e, consequentemente, seria de aproximadamente 153 minutos e a colocaria em último lugar.
A terceira linha foi tomada pela GPU da série TITAN RTX com um tempo de 75 minutos e 85 segundos. Essa pontuação de velocidade de aprendizagem se deve ao uso de 2 processadores, o que reduziu o tempo de treinamento do modelo.
O líder inquestionável em termos de velocidade de treino no número de uma unidade será definitivamente a GPU da série GeForce RTX 3090 com um tempo de 78 minutos e 26 segundos. Aumentar o número de unidades desta GPU acelerará a velocidade de treinamento do modelo, o que ultrapassará claramente todos os modelos de GPU mencionados acima. Os dados das medidas do tempo de treinamento do modelo podem ser observados na Tabela 4.
Tabela 4 - Análise comparativa da velocidade de treinamento do modelo de linguagem em GPUs utilizadas anteriormente
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 31 | 5 000 |
4 | Quadro RTX 6000 | 47 | 6 250 |
2 | Nvidia TITAN RTX | 75,85 | 6 250 |
1 | GeForce RTX 3090 | 78,26 | 6 250 |
2 | Quadro RTX 6000 | 88 | 6 250 |
1 | GeForce RTX 3070 | 104,17 | 2 000 |
1 | Quadro RTX 6000 | 153 | 6 250 |
As seguintes medições de velocidade de treinamento foram realizadas usando FP16. Em comparação com o FP32, a meia precisão permite reduzir a quantidade de memória consumida durante o treinamento do modelo e acelerar a computação na GPU. A precisão da representação será menor do que com a utilização do FP32.
Medindo o tempo de treinamento dos modelos utilizando FP32 da tabela anterior, podemos dizer que o tempo de treinamento da rede neural foi reduzido em quase duas vezes. Com base nos resultados da medição de desempenho, podemos observar a partir dos benchmarks de GPU de aprendizado de máquina na Tabela 4 que as posições das GPUs permaneceram praticamente inalteradas. A placa da série Quadro RTX 6000 subiu da quinta para a sexta posição, batendo a GPU GeForce RTX 3090 por 96 segundos. Os números finais são mostrados na Tabela 5.
Tabela 5 - Análise comparativa da velocidade de treinamento do modelo de linguagem em GPUs utilizadas anteriormente
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 16 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 15,81 | 10 000 |
4 | Quadro RTX 6000 | 20,34 | 12 500 |
2 | Nvidia TITAN RTX | 32,68 | 6 250 |
2 | Quadro RTX 6000 | 37,93 | 10 000 |
1 | GeForce RTX 3090 | 38,89 | 10 000 |
1 | GeForce RTX 3070 | 48,51 | 2 500 |
1 | Quadro RTX 6000 | 52,56 | 10 000 |