Os parâmetros dos modelos de IA mudaram drasticamente nos últimos anos. You Yang destacou que de 2016 a janeiro de 2021, o número de parâmetros do modelo de IA aumentou 40 vezes a cada 18 meses; de janeiro de 2018 a janeiro de 2021, o número de parâmetros do grande AI modelo de linguagem aumentou 340 vezes a cada 18 meses. Em contrapartida, entre janeiro de 2016 e janeiro de 2021, a memória das GPUs aumentará apenas 1,7 vezes a cada 18 meses.
Percebe-se que o alto custo de treinamento e o longo ciclo são os problemas mais difíceis de serem superados no desenvolvimento de grandes modelos.
Em resposta a este problema, You Yang propôs o sistema Colossal-AI, a partir dos três níveis de sistema de memória de alta eficiência, sistema paralelo N-dimensional e otimização em larga escala, a fim de minimizar a movimentação de dados nas mesmas condições de equipamento e maximizar o rendimento da GPU, ampliado até seu ponto mais alto.
You Yang também destacou que o número de parâmetros do modelo nesta fase foi ampliado em 100.000 vezes, mas o número de camadas não aumentou muito, o que pode significar que o desenvolvimento da IA hoje pode não ser mais um aprendizado profundo, mas entrou a era do amplo aprendizado. À medida que o modelo se torna mais amplo, diante de tarefas de treinamento de GPU em grande escala e de longo prazo, o núcleo do sistema de treinamento de modelos grandes será como implementar a computação paralela de GPU para atingir a meta de modelos grandes mais rápidos e econômicos. treinamento.
A seguir está o conteúdo do discurso ao vivo de You Yang, que Leifeng.com editou e organizou sem alterar a intenção original:
Oportunidades e desafios de grandes modelos de IA
Primeiro mostre uma foto. A abcissa no gráfico é o tempo e a ordenada é a quantidade do parâmetro do modelo AI.
De 2016 a janeiro de 2021, o volume dos parâmetros do modelo grande de IA aumentará aproximadamente 40 vezes a cada 18 meses; de janeiro de 2018 a janeiro de 2021, o volume dos parâmetros do modelo de IA aumentará 340 vezes a cada 18 meses.
Em 2016, o melhor modelo do mundo naquela época era o ResNet-50, e o melhor modelo hoje é o GPT-4. Do ponto de vista da arquitetura, embora a OpenAI não tenha anunciado a arquitetura do GPT-4, mas comparada com a rede neural de 50 camadas do ResNet-50 e a arquitetura do GPT-3 que possui menos de 100 camadas, pode-se dizer que o número de camadas do modelo de IA nos últimos anos não foi produzido, muitas mudanças.
Do ResNet-50 ao GPT-4, embora o número de parâmetros tenha aumentado cerca de 100.000 vezes, cada camada na verdade se tornou mais ampla. Incluindo a versão LLaMA-65B, também é uma rede com dezenas de camadas.
Portanto, podemos não estar aprendendo profundamente, mas entramos em uma era de aprendizado amplo.
Pode-se ver que, desde 2019, a arquitetura Transformer unificou basicamente a trilha do modelo de IA em grande escala, e os atuais modelos de IA em grande escala mais eficientes são todos arquiteturas Transformer. As duas linhas pontilhadas na figura acima não apenas mostram a tendência de mudança dos grandes parâmetros do modelo, mas também mostram a tendência de mudança da GPU.
Embora o preço das ações da Nvidia tenha subido muitas vezes, a taxa de crescimento da memória GPU de fabricantes, incluindo a Nvidia, está muito atrás da velocidade de desenvolvimento de modelos grandes.
Em comparação com a taxa de crescimento dos parâmetros do modelo nos últimos seis anos, de janeiro de 2016 a janeiro de 2021, a taxa de crescimento computacional das GPUs NVIDIA aumentou apenas 1,7 vezes a cada 18 meses.
Pegue o A100 80G como exemplo para calcular a quantidade de memória necessária para o treinamento do GPT-3. O GPT-3 tem cerca de 175 bilhões de parâmetros. Para facilitar o cálculo, pegue um número inteiro de 200 bilhões, que é igual a 200 vezes 10 para a 9ª potência, e cada precisão ocupa 4 bytes, os parâmetros sozinhos ocupam 800G de memória e o gradiente também ocupa 800G de memória. De acordo com o método de otimização atual, informações como primeiro momento e segundo momento são armazenadas em 800G. Em outras palavras, se você treinar um modelo grande que não faz nada, precisará de pelo menos alguns terabytes de memória. Uma única GPU A100 com apenas 80G de memória está longe de ser suficiente. Além disso, quanto maior o tamanho do lote dos resultados intermediários , maior será a sobrecarga de memória.
É por isso que, do ponto de vista da memória, o treinamento de modelos grandes requer primeiro milhares de GPUs.
Dê um exemplo quantificável. PaLM é um modelo grande de 540 bilhões. De acordo com o preço atual do mercado de computação em nuvem, o treinamento PaLM precisa contratar pelo menos 1.000 GPUs, e o custo é de cerca de mais de 9 milhões de dólares americanos. Meta mencionou claramente antes que o LLaMA precisa usar 2.000 GPUs A100 e leva três semanas para concluir uma sessão de treinamento. A partir desse cálculo, pode-se concluir que o custo de uma única sessão de treinamento do LLaMA é de 5 milhões de dólares americanos.
No entanto, como o refinamento de um modelo grande não se limita a uma sessão de treinamento, podem ser necessárias pelo menos cinco ou seis iterações de um bom produto de modelo grande, e o estágio inicial é todo de tentativa e erro. Portanto, de acordo com a análise do canal público, o custo de uma única sessão de treinamento do GPT-4 é de cerca de 60 milhões de dólares americanos, e o treinamento leva pelo menos vários meses. É por isso que mesmo que o ChatGPT tenha sido atualizado para a versão mais recente, sua camada inferior ainda é o modelo da versão de setembro de 2021. Em outras palavras, de setembro de 2021 até o presente, a OpenAI não atualizou seus produtos em essência.A razão fundamental é que o custo de treinamento de cada modelo não é apenas alto, mas o ciclo de treinamento também é muito longo, então o alto custo de o treinamento de modelos grandes é muito alto.
Imagine um problema. Hoje existe um modelo grande com 1 trilhão de parâmetros e 100 bilhões de parâmetros. Podemos usar algum método para detectar se o modelo grande com trilhões de parâmetros é melhor que o modelo grande com 100 bilhões de parâmetros? Ou seja, qual é a extensão do aumento no número de parâmetros do modelo?
A partir de hoje, sinto que esta questão não pode ser respondida cientificamente por enquanto. Existem vários motivos.
Em primeiro lugar, há um problema de otimização não convexa no treinamento de redes neurais.Atualmente, a maioria dos pontos convergidos pelo treinamento são soluções ótimas locais, e não soluções ótimas globais. Portanto, precisamos verificar até que ponto a rede neural é treinada, o que não pode ser verificado com os recursos computacionais existentes.
A segunda dificuldade é que o treinamento de modelos grandes geralmente treina apenas uma ou duas épocas, enquanto no modelo CNN anterior, o treinamento ResNet tem 90 épocas, e mesmo o treinamento de aprendizagem auto-supervisionado tem 1000 épocas, então o modelo grande treina apenas uma ou duas épocas O método equivale a percorrer o conjunto de dados apenas uma ou duas vezes, e a convergência é ainda mais insuficiente. Portanto, no caso de um custo de treinamento tão alto, é difícil verificarmos se um modelo com 1 trilhão de parâmetros ou um modelo com 2 trilhões de parâmetros é melhor, pois seu potencial não foi totalmente explorado por meio de experimentos. Portanto, penso que o grande modelo de IA de hoje é um assunto experimental.Como melhorar efetivamente a eficiência deste experimento e reduzir custos desempenhará um papel fundamental na popularização de toda a indústria.
De volta à realidade, por que hoje todo mundo busca grandes modelos? Do ponto de vista da lógica matemática, quanto maiores os parâmetros do modelo, melhor será o efeito, que é absoluto.
Ao mesmo tempo, os custos continuaram a aumentar. Atualmente, o treinamento de grandes modelos requer centenas, milhares ou até dezenas de milhares de GPUs. Como reduzir ainda mais o custo de dezenas de milhares de GPUs é um grande desafio.
Há 20 anos, por contar com a frequência principal da época, todos os programas eram seriais. Supondo que a velocidade do hardware fosse aumentada em 10 vezes, a velocidade de execução também poderia ser aumentada em 10 vezes sem alterar uma única linha de código. Mas hoje, se você quiser acelerar seu código em 10 vezes, supondo que o hardware já seja 10 vezes mais rápido, mas se você não otimizar o código, provavelmente ele será mais lento. A razão é que no caso de uma máquina maior, como dentro da GPU, a movimentação de dados entre a memória da GPU e a CPU, ou a movimentação de dados entre as GPUs, mais a movimentação de dados implementada pelo servidor, ocupará a maior parte de todo o tempo do sistema, a maior parte do tempo é gasto na movimentação de dados e a escalabilidade do modelo se tornará ruim.
Acho que no futuro, um software bem distribuído e um software mal distribuído poderão ter uma diferença de velocidade de 10 vezes em milhares de GPUs, ou mesmo 500 GPUs.
**Como funciona o Colossal-AI? **
Com base nos desafios acima, propomos um grande sistema de treinamento de modelos Colossal-AI, que fornece métodos de otimização, reduz o custo da movimentação de dados e maximiza a eficiência da escalabilidade do modelo.
Um dado específico é que usar o PyTorch mais simples para treinar GPT-3 custa 10 milhões de dólares americanos. Depois que a Nvidia for otimizada, o custo pode ser reduzido para 3 milhões de dólares americanos com Megatron, e depois de usar Colossal-AI, o custo pode ser reduzido para US$ 1,3 milhão. Pode-se observar que, nas mesmas condições de equipamento, a minimização da movimentação de dados reduz a proporção da movimentação de dados ao nível mais baixo e pode expandir o rendimento da GPU ao ponto mais alto.
Em resposta aos problemas acima, Colossal-AI propõe três níveis. Outro software semelhante também inclui esses três níveis.
A primeira camada é otimizar a memória. Primeiro, garantir que a eficiência da memória de uma única GPU e de um único servidor seja a mais alta. Esta é a base.
O segundo nível é o paralelismo N-dimensional. Quando atualmente usamos milhares ou dezenas de milhares de GPUs, a tecnologia principal é a Computação Paralela (computação paralela). De 1 GPU a 10 GPUs, devido à sua escala relativamente pequena, podemos facilmente obter uma aceleração de 7x; de 10 a 100 GPUs, podemos obter apenas uma aceleração de 4x, porque a escala paralela se torna maior e sua comunicação O preço diminuiu acima. E de 100 GPUs para 1000 GPUs, como o custo de comunicação aumenta ainda mais, é provável que obtenha apenas uma aceleração de 2x. E indo de 1.000 GPUs para 10.000 GPUs, se o software estiver funcionando mal, ele pode não apenas não acelerar, como pode até ficar mais lento porque o dispositivo passa todo o tempo em comunicação de maior densidade.
A segunda é o problema de otimização. Acho que há duas camadas na direção de desenvolvimento de grandes modelos de IA no futuro. A primeira camada é tornar o modelo mais inteligente e projetar uma estrutura melhor. Por exemplo, de BERT para GPT, ou de ResNet para BERT, etc. Ele está constantemente tentando mudar a estrutura do modelo.
Além disso, há melhorias nos métodos de otimização. Desde a transição do SGD para o MOMENTUM, ADAGRAD e ADAM agora, também é muito importante ter melhores métodos de otimização que possam aumentar a eficiência em 10 vezes no futuro.
Específico para o problema paralelo de treinamento de grandes modelos na prática.
O primeiro é o paralelismo de dados, que é o método paralelo mais simples e eficiente. Paralelismo de dados significa que, assumindo que existem 10.000 imagens, 1.000 imagens são processadas em cada ciclo.Se houver 10 máquinas, cada máquina recebe 100 imagens e todas as imagens podem ser processadas em 10 ciclos.
No processo de paralelismo de dados, ele precisa ser resumido. Cada máquina usa dados diferentes para obter gradientes diferentes. A máquina aprende diferentes alterações em dados diferentes, atualiza o gradiente do parâmetro e, finalmente, calcula o gradiente global. Atualmente, o método de soma e a média é usada. Dessa forma, o efeito tem sido muito bom. Anteriormente, o método LARS da Colossal-AI em paralelismo de dados reduziu o tempo de treinamento do ImageNet de uma hora para um minuto para Google, Meta, Tencent, Sony e outras empresas.
O paralelismo de dados é o mais básico e o mais estável. Depois de dividir os dados, assumindo que haverá 10.000 GPUs no futuro, é fácil acontecer que quatro ou cinco GPUs travem a cada poucas horas.É difícil operar e manter um cluster de 10.000 GPUs, mas a estabilidade do paralelismo de dados O ponto é que mesmo que haja 10.000 GPUs travando, cerca de uma dúzia, o resultado geral não mudará, porque é uma soma e média de gradiente.
Com base nesta consideração, penso que o paralelismo de dados é uma infra-estrutura fundamental.
Claro, o paralelismo de dados por si só não é suficiente, a razão é que o paralelismo de dados pressupõe que o modelo deve ser copiado para cada GPU ou servidor, e o servidor ou GPU trocará gradientes. Porém, se a GPU tiver apenas 80G de memória, um modelo com trilhões de parâmetros requer dezenas de terabytes de memória, que não podem ser armazenados na GPU.É necessário cortar o modelo para GPUs diferentes e depois resumir os resultados. Essa abordagem é chamada de paralelismo de modelo. Existem dois tipos de paralelismo de modelo: o primeiro é o paralelismo tensorial, ou seja, o paralelismo de modelo dentro de uma camada. Por exemplo, o número de camadas do GPT-3 é de cerca de 80 ou 90 camadas. O modelo é cortado uma vez para cada camada e o cálculo na camada é dividido em várias partes. Depois que uma camada é calculada, a próxima camada é calculada , e assim por diante. Isto é paralelismo tensorial.
Outra forma é o Paralelismo de Pipeline (Pipeline Parallelism), um modelo de paralelismo entre paralelismo de dados e paralelismo de tensor. Ao construir vários tubos de dados (pipelines), os pontos de dados de cada tubo de dados são diferentes, o que equivale a dividir um tamanho grande em vários tamanhos pequenos, e o cálculo do tubo é realizado desta forma. Se houver 10 tubos, 10 tubos representam dez conjuntos de dados diferentes, o primeiro tubo calcula os dados da primeira camada e o segundo tubo calcula a segunda camada... Desta forma, é paralelo, semelhante ao nosso edifício Da mesma forma , 10 equipes de engenharia constroem 1.000 andares, quando a primeira equipe de engenharia está construindo o primeiro andar do primeiro edifício, a segunda equipe de engenharia está construindo o segundo andar do segundo edifício e assim por diante.
Quanto mais edifícios houver, maior será a relação entre edifícios e equipas de engenharia e maior será a eficiência, o que equivale a 10 equipas de engenharia a operar ao mesmo tempo. Cada equipe de engenharia é equivalente a uma GPU, cada edifício é equivalente a um tubo e o número de camadas do edifício é equivalente ao número de camadas da rede neural, que é a lógica central do paralelismo de pipeline.
Atualmente, a indústria tem feito trabalhos relacionados, além do Colossal-AI, há também o TensorRT da NVIDIA e o DeepSpeed da Microsoft, que também são as duas empresas com as maiores barreiras técnicas.
Mas o que torna o Colossal-AI diferente é que o Colossal-AI se concentra na direção do desenvolvimento de grandes modelos no futuro. Percebe-se que o modelo atual ainda está se tornando mais amplo, não mais profundo, e o paralelismo tensorial será mais importante, mas sua maior desvantagem é que, por cortar toda a camada, o overhead de comunicação é muito grande. É por isso que o CEO da Nvidia explicou especificamente o problema de muita sobrecarga de comunicação ao introduzir o paralelismo 3D pela primeira vez no GTC Summit, e isso só pode ser feito em um servidor. Portanto, Colossal-AI concentra-se no paralelismo de tensores 2D e no paralelismo de tensores 2,5D, o que reduz o custo computacional em uma ordem de grandeza.
Isso significa que com o paralelismo tensorial unidimensional, cada máquina precisa lidar com 9.999 máquinas entre 10.000 máquinas, enquanto o paralelismo tensor 2D a divide em subunidades, e cada máquina precisa lidar apenas com 96 máquinas. Sua lógica central é usar alguma sincronização local (sincronização local) para substituir a sincronização global (sincronização global) e mais comunicação local para substituir a comunicação global.Neste processo, o agendamento do projeto é o mais difícil.
O mesmo se aplica ao paralelismo tensor 3D. Cada vez que uma dimensão é aumentada, a complexidade do seu projeto aumentará em uma ordem de grandeza e a complexidade da comunicação acabará diminuindo.
Em termos de otimização de memória, o treinamento atual de grandes modelos de IA requer muita sobrecarga de memória. Mesmo se você não fizer nada, ainda precisará de alguns terabytes de memória. Se você não fizer intervenção manual, depois de usá-lo , você pode precisar de dezenas ou até centenas de terabytes de memória.
Para melhorar o efeito de previsão do modelo, muitas vezes precisamos de dados de sequência longa.A essência do grande modelo atual é prever a probabilidade da próxima palavra através da saída de uma palavra, e os dados de sequência longa são apenas necessário. Nesse sentido, a Colossal-AI também lançou o Paralelismo de Sequência (paralelismo de sequência).
Especificamente, após cortar a sequência, você enfrentará um problema sério: ao realizar a pontuação de atenção, cada token precisa ser avaliado com outros tokens na sequência global, e apenas parte dos tokens estará no servidor após a divisão, e tokens diferentes serão ser distribuído em outros servidores, de forma que cada servidor precise lidar com outros servidores para funcionar.
Ou seja, supondo que 200 pessoas na sala levaram cada uma um pacote de lanches hoje, espero que todos possam provar os lanches de todos os outros, e pelo menos 200 trocas quadradas são necessárias para permitir que todos possam provar os lanches dos outros. lanches. Aí a maneira mais fácil é: todos formam um círculo, todos passam os lanches que comeram para a pessoa da direita, e pegam os lanches da esquerda, apenas n-1 vezes, ou seja, 199 passes Finalizar. Reduzindo assim o custo geral de comunicação.
Resumindo, a atual pilha de tecnologia central para treinamento de grandes modelos de IA é, na verdade, computação paralela, porque temos que processar centenas de milhares de núcleos de GPU e usar todas as GPUs em paralelo. Paralelismo de dados, paralelismo de tensor, paralelismo de pipeline e paralelismo de sequência de dados são os módulos principais do paralelismo.
Em termos de otimização de memória, estamos atualmente em um ambiente onde não há muitas opções, a GPU Nvidia é a melhor e parece que não temos outras soluções melhores para substituí-la. Mas o problema é que a memória da GPU Nvidia é limitada. Nesse caso, podemos pensar em como usar a memória da CPU e a memória NVMe? A ideia central é que se a memória da GPU não puder ser armazenada, ela será movida para a CPU, e se a CPU não puder ser armazenada, ela será colocada no NVMe. Em geral, na construção de um prédio, as matérias-primas necessárias não podem ser depositadas no canteiro de obras no andar de baixo, então as colocamos na fábrica ao lado . O núcleo de sua tecnologia também é minimizar a movimentação de dados, ou seja, minimizar a movimentação de dados entre CPU e GPU, e fortalecer a movimentação de dados entre CPU e NVMe, aumentando assim a velocidade de transferência ao máximo.
Aderindo ao código aberto
Colossal-AI é um software de código aberto. Ao mesmo tempo, também construímos uma plataforma comercial. Para usuários sem GPU, eles podem treinar e implantar diretamente seus próprios modelos grandes na plataforma. Também fornecemos vários modelos, como LLaMA, PaLM e GPT, e leva apenas dois ou três dias para concluir o ajuste fino do modelo o mais rápido possível. Em comparação com os usuários anteriores, que podem precisar de semanas ou até meses para lidar com infraestrutura como hardware e software, a eficiência melhorou bastante. Ao mesmo tempo, Colossal-AI também protege a privacidade dos usuários. A plataforma não retém ou acessa dados do usuário. Esta é a diferença essencial entre Colossal-AI e OpenAI ChatGPT. Quando carregamos dados para o Google Cloud, em muitos casos, o Google não toca nossos dados, mas o OpenAI GPT os analisa, e riscos como modelos de IA não interpretáveis e treinamento incompleto são comuns. Portanto, no futuro, muitas empresas treinarão seus próprios modelos grandes.O que a Colossal-AI faz é maximizar a proteção da privacidade do usuário e, ao mesmo tempo, fornecer ferramentas para treinamento de modelos grandes.
Em termos de desempenho, o Colossal-AI pode treinar um modelo 24 vezes maior no mesmo hardware, que é 3 vezes mais rápido que o DeepSpeed. Mesmo um servidor de baixo custo pode usar o Colossal-AI para completar o treinamento do modelo correspondente. Por exemplo, para o treinamento do LLaMA-65B, usando o mesmo código no Colossal-AI pode-se obter diretamente cerca de 50% de eficiência de aceleração.
Uma analogia simples, por exemplo, agora o grande modelo é para cavar ouro, e a Nvidia está vendendo pás, depois vendemos luvas e roupas e maximizamos a eficiência da escavação de ouro.
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
You Yang, Universidade Nacional de Cingapura: Como a IA de alto desempenho pode avançar?
Fonte: Lei Feng Net
Autor: Huang Nan
Percebe-se que o alto custo de treinamento e o longo ciclo são os problemas mais difíceis de serem superados no desenvolvimento de grandes modelos.
Em resposta a este problema, You Yang propôs o sistema Colossal-AI, a partir dos três níveis de sistema de memória de alta eficiência, sistema paralelo N-dimensional e otimização em larga escala, a fim de minimizar a movimentação de dados nas mesmas condições de equipamento e maximizar o rendimento da GPU, ampliado até seu ponto mais alto.
You Yang também destacou que o número de parâmetros do modelo nesta fase foi ampliado em 100.000 vezes, mas o número de camadas não aumentou muito, o que pode significar que o desenvolvimento da IA hoje pode não ser mais um aprendizado profundo, mas entrou a era do amplo aprendizado. À medida que o modelo se torna mais amplo, diante de tarefas de treinamento de GPU em grande escala e de longo prazo, o núcleo do sistema de treinamento de modelos grandes será como implementar a computação paralela de GPU para atingir a meta de modelos grandes mais rápidos e econômicos. treinamento.
A seguir está o conteúdo do discurso ao vivo de You Yang, que Leifeng.com editou e organizou sem alterar a intenção original:
Oportunidades e desafios de grandes modelos de IA
Primeiro mostre uma foto. A abcissa no gráfico é o tempo e a ordenada é a quantidade do parâmetro do modelo AI.
Em 2016, o melhor modelo do mundo naquela época era o ResNet-50, e o melhor modelo hoje é o GPT-4. Do ponto de vista da arquitetura, embora a OpenAI não tenha anunciado a arquitetura do GPT-4, mas comparada com a rede neural de 50 camadas do ResNet-50 e a arquitetura do GPT-3 que possui menos de 100 camadas, pode-se dizer que o número de camadas do modelo de IA nos últimos anos não foi produzido, muitas mudanças.
Do ResNet-50 ao GPT-4, embora o número de parâmetros tenha aumentado cerca de 100.000 vezes, cada camada na verdade se tornou mais ampla. Incluindo a versão LLaMA-65B, também é uma rede com dezenas de camadas.
Portanto, podemos não estar aprendendo profundamente, mas entramos em uma era de aprendizado amplo.
Pode-se ver que, desde 2019, a arquitetura Transformer unificou basicamente a trilha do modelo de IA em grande escala, e os atuais modelos de IA em grande escala mais eficientes são todos arquiteturas Transformer. As duas linhas pontilhadas na figura acima não apenas mostram a tendência de mudança dos grandes parâmetros do modelo, mas também mostram a tendência de mudança da GPU.
Embora o preço das ações da Nvidia tenha subido muitas vezes, a taxa de crescimento da memória GPU de fabricantes, incluindo a Nvidia, está muito atrás da velocidade de desenvolvimento de modelos grandes.
Em comparação com a taxa de crescimento dos parâmetros do modelo nos últimos seis anos, de janeiro de 2016 a janeiro de 2021, a taxa de crescimento computacional das GPUs NVIDIA aumentou apenas 1,7 vezes a cada 18 meses.
Pegue o A100 80G como exemplo para calcular a quantidade de memória necessária para o treinamento do GPT-3. O GPT-3 tem cerca de 175 bilhões de parâmetros. Para facilitar o cálculo, pegue um número inteiro de 200 bilhões, que é igual a 200 vezes 10 para a 9ª potência, e cada precisão ocupa 4 bytes, os parâmetros sozinhos ocupam 800G de memória e o gradiente também ocupa 800G de memória. De acordo com o método de otimização atual, informações como primeiro momento e segundo momento são armazenadas em 800G. Em outras palavras, se você treinar um modelo grande que não faz nada, precisará de pelo menos alguns terabytes de memória. Uma única GPU A100 com apenas 80G de memória está longe de ser suficiente. Além disso, quanto maior o tamanho do lote dos resultados intermediários , maior será a sobrecarga de memória.
É por isso que, do ponto de vista da memória, o treinamento de modelos grandes requer primeiro milhares de GPUs.
No entanto, como o refinamento de um modelo grande não se limita a uma sessão de treinamento, podem ser necessárias pelo menos cinco ou seis iterações de um bom produto de modelo grande, e o estágio inicial é todo de tentativa e erro. Portanto, de acordo com a análise do canal público, o custo de uma única sessão de treinamento do GPT-4 é de cerca de 60 milhões de dólares americanos, e o treinamento leva pelo menos vários meses. É por isso que mesmo que o ChatGPT tenha sido atualizado para a versão mais recente, sua camada inferior ainda é o modelo da versão de setembro de 2021. Em outras palavras, de setembro de 2021 até o presente, a OpenAI não atualizou seus produtos em essência.A razão fundamental é que o custo de treinamento de cada modelo não é apenas alto, mas o ciclo de treinamento também é muito longo, então o alto custo de o treinamento de modelos grandes é muito alto.
A partir de hoje, sinto que esta questão não pode ser respondida cientificamente por enquanto. Existem vários motivos.
Em primeiro lugar, há um problema de otimização não convexa no treinamento de redes neurais.Atualmente, a maioria dos pontos convergidos pelo treinamento são soluções ótimas locais, e não soluções ótimas globais. Portanto, precisamos verificar até que ponto a rede neural é treinada, o que não pode ser verificado com os recursos computacionais existentes.
A segunda dificuldade é que o treinamento de modelos grandes geralmente treina apenas uma ou duas épocas, enquanto no modelo CNN anterior, o treinamento ResNet tem 90 épocas, e mesmo o treinamento de aprendizagem auto-supervisionado tem 1000 épocas, então o modelo grande treina apenas uma ou duas épocas O método equivale a percorrer o conjunto de dados apenas uma ou duas vezes, e a convergência é ainda mais insuficiente. Portanto, no caso de um custo de treinamento tão alto, é difícil verificarmos se um modelo com 1 trilhão de parâmetros ou um modelo com 2 trilhões de parâmetros é melhor, pois seu potencial não foi totalmente explorado por meio de experimentos. Portanto, penso que o grande modelo de IA de hoje é um assunto experimental.Como melhorar efetivamente a eficiência deste experimento e reduzir custos desempenhará um papel fundamental na popularização de toda a indústria.
De volta à realidade, por que hoje todo mundo busca grandes modelos? Do ponto de vista da lógica matemática, quanto maiores os parâmetros do modelo, melhor será o efeito, que é absoluto.
Ao mesmo tempo, os custos continuaram a aumentar. Atualmente, o treinamento de grandes modelos requer centenas, milhares ou até dezenas de milhares de GPUs. Como reduzir ainda mais o custo de dezenas de milhares de GPUs é um grande desafio.
Há 20 anos, por contar com a frequência principal da época, todos os programas eram seriais. Supondo que a velocidade do hardware fosse aumentada em 10 vezes, a velocidade de execução também poderia ser aumentada em 10 vezes sem alterar uma única linha de código. Mas hoje, se você quiser acelerar seu código em 10 vezes, supondo que o hardware já seja 10 vezes mais rápido, mas se você não otimizar o código, provavelmente ele será mais lento. A razão é que no caso de uma máquina maior, como dentro da GPU, a movimentação de dados entre a memória da GPU e a CPU, ou a movimentação de dados entre as GPUs, mais a movimentação de dados implementada pelo servidor, ocupará a maior parte de todo o tempo do sistema, a maior parte do tempo é gasto na movimentação de dados e a escalabilidade do modelo se tornará ruim.
Acho que no futuro, um software bem distribuído e um software mal distribuído poderão ter uma diferença de velocidade de 10 vezes em milhares de GPUs, ou mesmo 500 GPUs.
**Como funciona o Colossal-AI? **
Com base nos desafios acima, propomos um grande sistema de treinamento de modelos Colossal-AI, que fornece métodos de otimização, reduz o custo da movimentação de dados e maximiza a eficiência da escalabilidade do modelo.
Um dado específico é que usar o PyTorch mais simples para treinar GPT-3 custa 10 milhões de dólares americanos. Depois que a Nvidia for otimizada, o custo pode ser reduzido para 3 milhões de dólares americanos com Megatron, e depois de usar Colossal-AI, o custo pode ser reduzido para US$ 1,3 milhão. Pode-se observar que, nas mesmas condições de equipamento, a minimização da movimentação de dados reduz a proporção da movimentação de dados ao nível mais baixo e pode expandir o rendimento da GPU ao ponto mais alto.
A primeira camada é otimizar a memória. Primeiro, garantir que a eficiência da memória de uma única GPU e de um único servidor seja a mais alta. Esta é a base.
O segundo nível é o paralelismo N-dimensional. Quando atualmente usamos milhares ou dezenas de milhares de GPUs, a tecnologia principal é a Computação Paralela (computação paralela). De 1 GPU a 10 GPUs, devido à sua escala relativamente pequena, podemos facilmente obter uma aceleração de 7x; de 10 a 100 GPUs, podemos obter apenas uma aceleração de 4x, porque a escala paralela se torna maior e sua comunicação O preço diminuiu acima. E de 100 GPUs para 1000 GPUs, como o custo de comunicação aumenta ainda mais, é provável que obtenha apenas uma aceleração de 2x. E indo de 1.000 GPUs para 10.000 GPUs, se o software estiver funcionando mal, ele pode não apenas não acelerar, como pode até ficar mais lento porque o dispositivo passa todo o tempo em comunicação de maior densidade.
A segunda é o problema de otimização. Acho que há duas camadas na direção de desenvolvimento de grandes modelos de IA no futuro. A primeira camada é tornar o modelo mais inteligente e projetar uma estrutura melhor. Por exemplo, de BERT para GPT, ou de ResNet para BERT, etc. Ele está constantemente tentando mudar a estrutura do modelo.
Além disso, há melhorias nos métodos de otimização. Desde a transição do SGD para o MOMENTUM, ADAGRAD e ADAM agora, também é muito importante ter melhores métodos de otimização que possam aumentar a eficiência em 10 vezes no futuro.
Específico para o problema paralelo de treinamento de grandes modelos na prática.
O primeiro é o paralelismo de dados, que é o método paralelo mais simples e eficiente. Paralelismo de dados significa que, assumindo que existem 10.000 imagens, 1.000 imagens são processadas em cada ciclo.Se houver 10 máquinas, cada máquina recebe 100 imagens e todas as imagens podem ser processadas em 10 ciclos.
No processo de paralelismo de dados, ele precisa ser resumido. Cada máquina usa dados diferentes para obter gradientes diferentes. A máquina aprende diferentes alterações em dados diferentes, atualiza o gradiente do parâmetro e, finalmente, calcula o gradiente global. Atualmente, o método de soma e a média é usada. Dessa forma, o efeito tem sido muito bom. Anteriormente, o método LARS da Colossal-AI em paralelismo de dados reduziu o tempo de treinamento do ImageNet de uma hora para um minuto para Google, Meta, Tencent, Sony e outras empresas.
Com base nesta consideração, penso que o paralelismo de dados é uma infra-estrutura fundamental.
Claro, o paralelismo de dados por si só não é suficiente, a razão é que o paralelismo de dados pressupõe que o modelo deve ser copiado para cada GPU ou servidor, e o servidor ou GPU trocará gradientes. Porém, se a GPU tiver apenas 80G de memória, um modelo com trilhões de parâmetros requer dezenas de terabytes de memória, que não podem ser armazenados na GPU.É necessário cortar o modelo para GPUs diferentes e depois resumir os resultados. Essa abordagem é chamada de paralelismo de modelo. Existem dois tipos de paralelismo de modelo: o primeiro é o paralelismo tensorial, ou seja, o paralelismo de modelo dentro de uma camada. Por exemplo, o número de camadas do GPT-3 é de cerca de 80 ou 90 camadas. O modelo é cortado uma vez para cada camada e o cálculo na camada é dividido em várias partes. Depois que uma camada é calculada, a próxima camada é calculada , e assim por diante. Isto é paralelismo tensorial.
Quanto mais edifícios houver, maior será a relação entre edifícios e equipas de engenharia e maior será a eficiência, o que equivale a 10 equipas de engenharia a operar ao mesmo tempo. Cada equipe de engenharia é equivalente a uma GPU, cada edifício é equivalente a um tubo e o número de camadas do edifício é equivalente ao número de camadas da rede neural, que é a lógica central do paralelismo de pipeline.
Atualmente, a indústria tem feito trabalhos relacionados, além do Colossal-AI, há também o TensorRT da NVIDIA e o DeepSpeed da Microsoft, que também são as duas empresas com as maiores barreiras técnicas.
Mas o que torna o Colossal-AI diferente é que o Colossal-AI se concentra na direção do desenvolvimento de grandes modelos no futuro. Percebe-se que o modelo atual ainda está se tornando mais amplo, não mais profundo, e o paralelismo tensorial será mais importante, mas sua maior desvantagem é que, por cortar toda a camada, o overhead de comunicação é muito grande. É por isso que o CEO da Nvidia explicou especificamente o problema de muita sobrecarga de comunicação ao introduzir o paralelismo 3D pela primeira vez no GTC Summit, e isso só pode ser feito em um servidor. Portanto, Colossal-AI concentra-se no paralelismo de tensores 2D e no paralelismo de tensores 2,5D, o que reduz o custo computacional em uma ordem de grandeza.
O mesmo se aplica ao paralelismo tensor 3D. Cada vez que uma dimensão é aumentada, a complexidade do seu projeto aumentará em uma ordem de grandeza e a complexidade da comunicação acabará diminuindo.
Para melhorar o efeito de previsão do modelo, muitas vezes precisamos de dados de sequência longa.A essência do grande modelo atual é prever a probabilidade da próxima palavra através da saída de uma palavra, e os dados de sequência longa são apenas necessário. Nesse sentido, a Colossal-AI também lançou o Paralelismo de Sequência (paralelismo de sequência).
Especificamente, após cortar a sequência, você enfrentará um problema sério: ao realizar a pontuação de atenção, cada token precisa ser avaliado com outros tokens na sequência global, e apenas parte dos tokens estará no servidor após a divisão, e tokens diferentes serão ser distribuído em outros servidores, de forma que cada servidor precise lidar com outros servidores para funcionar.
Ou seja, supondo que 200 pessoas na sala levaram cada uma um pacote de lanches hoje, espero que todos possam provar os lanches de todos os outros, e pelo menos 200 trocas quadradas são necessárias para permitir que todos possam provar os lanches dos outros. lanches. Aí a maneira mais fácil é: todos formam um círculo, todos passam os lanches que comeram para a pessoa da direita, e pegam os lanches da esquerda, apenas n-1 vezes, ou seja, 199 passes Finalizar. Reduzindo assim o custo geral de comunicação.
Em termos de otimização de memória, estamos atualmente em um ambiente onde não há muitas opções, a GPU Nvidia é a melhor e parece que não temos outras soluções melhores para substituí-la. Mas o problema é que a memória da GPU Nvidia é limitada. Nesse caso, podemos pensar em como usar a memória da CPU e a memória NVMe? A ideia central é que se a memória da GPU não puder ser armazenada, ela será movida para a CPU, e se a CPU não puder ser armazenada, ela será colocada no NVMe. Em geral, na construção de um prédio, as matérias-primas necessárias não podem ser depositadas no canteiro de obras no andar de baixo, então as colocamos na fábrica ao lado . O núcleo de sua tecnologia também é minimizar a movimentação de dados, ou seja, minimizar a movimentação de dados entre CPU e GPU, e fortalecer a movimentação de dados entre CPU e NVMe, aumentando assim a velocidade de transferência ao máximo.
Aderindo ao código aberto
Colossal-AI é um software de código aberto. Ao mesmo tempo, também construímos uma plataforma comercial. Para usuários sem GPU, eles podem treinar e implantar diretamente seus próprios modelos grandes na plataforma. Também fornecemos vários modelos, como LLaMA, PaLM e GPT, e leva apenas dois ou três dias para concluir o ajuste fino do modelo o mais rápido possível. Em comparação com os usuários anteriores, que podem precisar de semanas ou até meses para lidar com infraestrutura como hardware e software, a eficiência melhorou bastante. Ao mesmo tempo, Colossal-AI também protege a privacidade dos usuários. A plataforma não retém ou acessa dados do usuário. Esta é a diferença essencial entre Colossal-AI e OpenAI ChatGPT. Quando carregamos dados para o Google Cloud, em muitos casos, o Google não toca nossos dados, mas o OpenAI GPT os analisa, e riscos como modelos de IA não interpretáveis e treinamento incompleto são comuns. Portanto, no futuro, muitas empresas treinarão seus próprios modelos grandes.O que a Colossal-AI faz é maximizar a proteção da privacidade do usuário e, ao mesmo tempo, fornecer ferramentas para treinamento de modelos grandes.
Em termos de desempenho, o Colossal-AI pode treinar um modelo 24 vezes maior no mesmo hardware, que é 3 vezes mais rápido que o DeepSpeed. Mesmo um servidor de baixo custo pode usar o Colossal-AI para completar o treinamento do modelo correspondente. Por exemplo, para o treinamento do LLaMA-65B, usando o mesmo código no Colossal-AI pode-se obter diretamente cerca de 50% de eficiência de aceleração.
Uma analogia simples, por exemplo, agora o grande modelo é para cavar ouro, e a Nvidia está vendendo pás, depois vendemos luvas e roupas e maximizamos a eficiência da escavação de ouro.