Os modelos de linguagem são métodos estatísticos que prevêem a sucessão de tokens em sequências, usando texto natural. Modelos de linguagem grandes (LLMs) são modelos de linguagem baseados em redes neurais com centenas de milhões (BERT) para mais de um trilhão de parâmetros (MiCS) e cujo tamanho torna impraticável o treinamento com uma única GPU. As habilidades generativas dos LLMs os tornam populares para síntese de texto, resumo, tradução automática e muito mais.
O tamanho de um LLM e seus dados de treinamento é uma faca de dois gumes: traz qualidade de modelagem, mas acarreta desafios de infraestrutura. O modelo em si geralmente é muito grande para caber na memória de um único dispositivo GPU ou em vários dispositivos de uma instância multi-GPU. Esses fatores exigem o treinamento de um LLM em grandes clusters de instâncias de aprendizado de máquina (ML) acelerado. Nos últimos anos, vários clientes têm usado o treinamento AWS Cloud for LLM.
Nesta postagem, mergulhamos em dicas e práticas recomendadas para um treinamento LLM bem-sucedido em Treinamento Amazon SageMaker. O SageMaker Training é um serviço de computação de ML em lote gerenciado que reduz o tempo e o custo para treinar e ajustar modelos em escala sem a necessidade de gerenciar a infraestrutura. Dentro de um comando de lançamento, Amazon Sage Maker lança um cluster de computação efêmero totalmente funcional executando a tarefa de sua escolha e com recursos de ML aprimorados, como metastore, I/O gerenciado e distribuição. A postagem abrange todas as fases de uma carga de trabalho de treinamento LLM e descreve os recursos de infraestrutura associados e as melhores práticas. Algumas das práticas recomendadas neste post referem-se especificamente a instâncias ml.p4d.24xlarge, mas a maioria é aplicável a qualquer tipo de instância. Essas práticas recomendadas permitem que você treine LLMs no SageMaker na escala de dezenas a centenas de milhões de parâmetros.
Em relação ao escopo deste post, observe o seguinte:
- Não cobrimos projeto científico de rede neural e otimizações associadas. Amazon.Ciência apresenta inúmeras publicações científicas, incluindo, entre outras, LLMs.
- Embora este post se concentre em LLMs, a maioria de suas práticas recomendadas são relevantes para qualquer tipo de treinamento de modelo grande, incluindo visão computacional e modelos multimodais, como difusão estável.
Melhores práticas
Discutimos as seguintes práticas recomendadas neste post:
- Computar – O SageMaker Training é uma ótima API para iniciar trabalhos de preparação de conjuntos de dados de CPU e trabalhos de GPU de mil escalas.
- Armazenamento – Vemos o carregamento de dados e o checkpoint feito de duas maneiras, dependendo das habilidades e preferências: com um Amazon FSx Luster sistema de arquivos ou Serviço de armazenamento simples da Amazon (Amazon S3) apenas.
- Paralelismo – Sua escolha de biblioteca de treinamento distribuída é crucial para o uso apropriado das GPUs. Recomendamos o uso de uma biblioteca otimizada para nuvem, como o paralelismo de dados fragmentados do SageMaker, mas bibliotecas autogerenciadas e de código aberto também podem funcionar.
- Networking – Certifique-se de que EFA e NVIDIA GPUDirectRDMA estejam ativados, para comunicação rápida entre máquinas.
- Resiliência – Em escala, falhas de hardware podem acontecer. Recomendamos checkpoints regularmente. A cada poucas horas é comum.
Seleção de região
O tipo de instância e a capacidade desejada são fatores determinantes para a seleção da região. Para as regiões suportadas pelo SageMaker e o Amazon Elastic Compute Nuvem (Amazon EC2) tipos de instância que estão disponíveis em cada região, consulte Preços do Amazon SageMaker. Nesta postagem, presumimos que o tipo de instância de treinamento seja um ml.p4d.24xlarge gerenciado pelo SageMaker.
Recomendamos trabalhar com sua equipe de contas da AWS ou entrar em contato Vendas da AWS para determinar a região apropriada para sua carga de trabalho LLM.
Preparação de dados
Os desenvolvedores do LLM treinam seus modelos em grandes conjuntos de dados de texto que ocorre naturalmente. Exemplos populares de tais fontes de dados incluem Rastreio comum e A pilha. O texto que ocorre naturalmente pode conter vieses, imprecisões, erros gramaticais e variações de sintaxe. A qualidade final de um LLM depende significativamente da seleção e curadoria dos dados de treinamento. A preparação de dados de treinamento LLM é uma área ativa de pesquisa e inovação na indústria LLM. A preparação de um conjunto de dados de processamento de linguagem natural (NLP) está repleta de oportunidades de paralelismo sem compartilhamento. Em outras palavras, existem etapas que podem ser aplicadas a unidades de trabalho - arquivos de origem, parágrafos, sentenças, palavras - sem exigir sincronização entre os trabalhadores.
As APIs de trabalhos do SageMaker, ou seja, SageMaker Training e SageMaker Processing, são excelentes para esse tipo de tarefa. Eles permitem que os desenvolvedores executem um contêiner Docker arbitrário em uma frota de várias máquinas. No caso da API de treinamento do SageMaker, a frota de computação pode ser heterogêneo. Numerosas estruturas de computação distribuída foram usadas no SageMaker, incluindo Painel, Raio, e também PySparkGenericName, que têm um dedicado Contêiner gerenciado pela AWS e SDK no processamento do SageMaker.
Quando você inicia um trabalho com várias máquinas, o SageMaker Training and Processing executa seu código uma vez por máquina. Você não precisa usar uma estrutura de computação distribuída específica para escrever um aplicativo distribuído: você pode escrever o código de sua escolha, que será executado uma vez por máquina, para realizar o paralelismo sem compartilhamento. Você também pode escrever ou instalar a lógica de comunicação entre nós de sua escolha.
Carregamento de dados
Existem várias maneiras de armazenar os dados de treinamento e movê-los de seu armazenamento para os nós de computação acelerada. Nesta seção, discutimos as opções e práticas recomendadas para carregamento de dados.
Opções de armazenamento e carregamento do SageMaker
Um tamanho típico de conjunto de dados LLM é de centenas de milhões de tokens de texto, representando algumas centenas de gigabytes. Clusters gerenciados pelo SageMaker de instâncias ml.p4d.24xlarge propõem várias opções para armazenamento e carregamento de conjuntos de dados:
- SSD NVMe no nó – As instâncias ml.P4d.24xlarge são equipadas com 8 TB NVMe, disponível em
/opt/ml/input/data/<channel>
se você usar Modo de arquivo do SageMakere em/tmp
. Se você busca a simplicidade e o desempenho de uma leitura local, pode copiar seus dados para o SSD NVMe. A cópia pode ser feita pelo modo SageMaker File ou por seu próprio código, por exemplo, usando multiprocessado boto3 or S5cmd. - FSx para brilho – Os SSDs NVMe no nó são limitados em tamanho e requerem ingestão do Amazon S3 em cada trabalho ou criação de cluster quente. Se você deseja dimensionar para conjuntos de dados maiores, mantendo o acesso aleatório de baixa latência, pode usar o FSx for Lustre. O Amazon FSx é um sistema de arquivos paralelos de código aberto, popular em computação de alto desempenho (HPC). FSx para Lustre usa armazenamento de arquivo distribuído (remoção) e separa fisicamente os metadados do arquivo do conteúdo do arquivo para obter leitura/gravação de alto desempenho.
- Modo SageMaker FastFile – Modo FastFile (FFM) é um recurso exclusivo do SageMaker que apresenta objetos S3 remotos em instâncias de computação gerenciadas pelo SageMaker em uma interface compatível com POSIX e os transmite somente após a leitura, usando FUSE. FFM lê resultados em chamadas S3 que transmitem arquivos remotos bloco a bloco. Como prática recomendada para evitar erros relacionados ao tráfego do Amazon S3, os desenvolvedores de FFM devem procurar manter o número subjacente de chamadas do S3 razoável, por exemplo, lendo arquivos sequencialmente e com uma quantidade controlada de paralelismo.
- Carregamento de dados autogerenciado – Claro, você também pode decidir implementar sua própria lógica de carregamento de dados totalmente personalizada, usando código proprietário ou de código aberto. Algumas razões para usar o carregamento de dados autogerenciado são para facilitar uma migração reutilizando o código já desenvolvido, para implementar a lógica personalizada de tratamento de erros ou para ter mais controle sobre o desempenho subjacente e a fragmentação. Exemplos de bibliotecas que você pode usar para carregamento de dados autogerenciados incluem dados da tocha.datapipes (anteriormente Plug-in AWS PyTorch S3) e conjunto de dados da web. O AWS Python SDK boto3 também pode ser combinado com conjunto de dados da tocha classes para criar um código de carregamento de dados personalizado. As classes de carregamento de dados personalizados também permitem o uso criativo de clusters heterogêneos do SageMaker Training para adaptar com precisão o equilíbrio de CPU e GPU a uma determinada carga de trabalho.
Para obter mais informações sobre essas opções e como escolhê-las, consulte Escolha a melhor fonte de dados para seu trabalho de treinamento do Amazon SageMaker.
Práticas recomendadas para interação em larga escala com o Amazon S3
O Amazon S3 é capaz de lidar com cargas de trabalho LLM, tanto para leitura de dados quanto para verificação. Ele suporta um taxa de solicitação de 3,500 solicitações PUT/COPY/POST/DELETE ou 5,500 solicitações GET/HEAD por segundo por prefixo em um bucket. No entanto, essa taxa não está necessariamente disponível por padrão. Em vez disso, à medida que a taxa de solicitação de um prefixo aumenta, o Amazon S3 escala automaticamente para lidar com o aumento da taxa. Para mais informações, consulte Por que estou recebendo erros 503 Slow Down do Amazon S3 quando as solicitações estão dentro da taxa de solicitação suportada por prefixo.
Se você espera interação Amazon S3 de alta frequência, recomendamos as seguintes práticas recomendadas:
- Tente ler e escrever de vários baldes S3 e prefixos. Por exemplo, você pode particionar dados de treinamento e pontos de verificação em diferentes prefixos.
- Verifique as métricas do Amazon S3 em Amazon CloudWatch para acompanhar as taxas de solicitação.
- Tente minimizar a quantidade de PUT/GET simultâneos:
- Tenha menos processos usando o Amazon S3 ao mesmo tempo. Por exemplo, se oito processos por nós precisam fazer checkpoint para o Amazon S3, você pode reduzir o tráfego PUT por um fator de 8 fazendo checkpoint hierarquicamente: primeiro dentro do nó, depois do nó para o Amazon S3.
- Leia vários registros de treinamento de um único arquivo ou S3 GET, em vez de usar um S3 GET para cada registro de treinamento.
- Se você usar o Amazon S3 por meio do SageMaker FFM, o SageMaker FFM fará chamadas S3 para buscar arquivos parte por parte. Para limitar o tráfego do Amazon S3 gerado pelo FFM, recomendamos que você leia os arquivos sequencialmente e limite o número de arquivos abertos em paralelo.
Se você tem um Plano de suporte para desenvolvedor, negócios ou empresa, você pode abrir um caso de suporte técnico sobre erros S3 503 Slow Down. Mas primeiro certifique-se de ter seguido as melhores práticas e obter os IDs de solicitação para as solicitações com falha.
Paralelismo de treinamento
Os LLMs geralmente têm de dezenas a centenas de bilhões de parâmetros, tornando-os grandes demais para caber em uma única placa de GPU NVIDIA. Os praticantes do LLM desenvolveram várias bibliotecas de código aberto facilitando a computação distribuída do treinamento LLM, incluindo PSDB, Velocidade Profunda e Megatron. Você pode executar essas bibliotecas no SageMaker Training, mas também pode usar as bibliotecas de treinamento distribuídas do SageMaker, que foram otimizadas para a Nuvem AWS e fornecem uma experiência de desenvolvedor mais simples. Os desenvolvedores têm duas opções para treinamento distribuído de seu LLM no SageMaker: bibliotecas distribuídas ou autogerenciadas.
Bibliotecas distribuídas do SageMaker
Para fornecer a você melhor desempenho e usabilidade de treinamento distribuído, o SageMaker Training propõe várias extensões proprietárias para escalar o código de treinamento do TensorFlow e PyTorch. O treinamento LLM geralmente é conduzido de maneira 3D paralelística:
- Paralelismo de dados divide e alimenta os mini-lotes de treinamento para várias réplicas idênticas do modelo, para aumentar a velocidade de processamento
- Paralelismo de pipeline atribui várias camadas do modelo a diferentes GPUs ou mesmo instâncias, a fim de dimensionar o tamanho do modelo além de uma única GPU e um único servidor
- Paralelismo tensor divide uma única camada em várias GPUs, geralmente dentro do mesmo servidor, para dimensionar camadas individuais para tamanhos superiores a uma única GPU
No exemplo a seguir, um modelo de 6 camadas é treinado em um cluster de k*3 servidores com 8*k*3 GPUs (8 GPUs por servidor). O grau de paralelismo de dados é k, o paralelismo de pipeline é 6 e o paralelismo de tensor é 4. Cada GPU no cluster contém um quarto de uma camada de modelo e um modelo completo é particionado em três servidores (24 GPUs no total).
Os itens a seguir são especificamente relevantes para LLMs:
- Modelo distribuído SageMaker paralelo – Esta biblioteca usa particionamento de gráfico para produzir particionamento de modelo inteligente otimizado para velocidade ou memória. O modelo distribuído paralelo do SageMaker expõe a mais recente e melhor otimização de treinamento de modelo grande, incluindo paralelismo de dados, paralelismo de pipeline, paralelismo de tensor, fragmentação de estado do otimizador, ponto de verificação de ativação e descarregamento. Com a biblioteca paralela de modelo distribuído SageMaker, documentamos um treinamento de modelo de 175 bilhões de parâmetros em 920 GPUs NVIDIA A100. Para mais informações, consulte Treine mais de 175 bilhões de modelos de NLP de parâmetros com adições paralelas de modelo e Hugging Face no Amazon SageMaker.
- Paralelo de dados fragmentados do SageMaker - Em MiCS: dimensionamento quase linear para treinamento de modelo gigantesco em nuvem pública, Zhang et ai. introduza uma estratégia paralela de modelo de baixa comunicação que particione os modelos apenas em um grupo paralelo de dados, em vez de todo o cluster. Com o MiCS, os cientistas da AWS conseguiram atingir 176 teraflops por GPU (56.4% do pico teórico) para treinar um modelo de 210 camadas e 1.06 trilhão de parâmetros em instâncias EC2 P4de. O MiCS agora está disponível para clientes do SageMaker Training como Paralelo de dados fragmentados do SageMaker.
As bibliotecas de treinamento distribuídas do SageMaker fornecem alto desempenho e uma experiência de desenvolvedor mais simples. Em particular, os desenvolvedores não precisam escrever e manter um ativador de processo paralelo personalizado ou usar uma ferramenta de ativação específica da estrutura, porque o iniciador paralelo é integrado ao SDK de ativação de trabalho.
Autogerenciado
Com o treinamento SageMaker, você tem a liberdade de usar a estrutura e o paradigma científico de sua escolha. Em particular, se você mesmo deseja gerenciar o treinamento distribuído, tem duas opções para escrever seu código personalizado:
- Use um AWS Deep Learning Container (DLC) – A AWS desenvolve e mantém DLCs, fornecendo ambientes baseados em Docker otimizados para AWS para as principais estruturas de ML de código aberto. O SageMaker Training tem uma integração exclusiva que permite extrair e executar DLCs da AWS com ponto de entrada externo definido pelo usuário. Para o treinamento LLM em particular, os DLCs da AWS para TensorFlow, PyTorch, Hugging Face e MXNet são particularmente relevantes. O uso de um DLC de estrutura permite que você use o paralelismo nativo da estrutura, como o PyTorch Distributed, sem precisar desenvolver e gerenciar suas próprias imagens do Docker. Além disso, nossos DLCs apresentam um Integração MPI, que permite iniciar o código paralelo facilmente.
- Escreva uma imagem personalizada do Docker compatível com o SageMaker – Você pode trazer sua própria imagem (BYO) (consulte Use seus próprios algoritmos de treinamento e Contêineres de treinamento personalizado do Amazon SageMaker), começando do zero ou estendendo uma imagem DLC existente. Ao usar uma imagem personalizada para treinamento LLM no SageMaker, é particularmente importante verificar o seguinte:
- Sua imagem contém EFA com configurações apropriadas (discutido mais adiante neste post)
- Sua imagem contém uma biblioteca de comunicação NVIDIA NCCL, habilitada com GPUDirectRDMA
Os clientes puderam usar várias bibliotecas de treinamento distribuídas e autogerenciadas, incluindo o DeepSpeed.
Comunicações
Dada a natureza distribuída de um trabalho de treinamento LLM, a comunicação entre máquinas é crítica para a viabilidade, desempenho e custos da carga de trabalho. Nesta seção, apresentamos os principais recursos para comunicação entre máquinas e concluímos com dicas para instalação e ajuste.
Adaptador de tecido elástico
Para acelerar os aplicativos de ML e melhorar o desempenho obtendo flexibilidade, escalabilidade e elasticidade fornecidas pela nuvem, você pode aproveitar Adaptador de tecido elástico (EFA) com SageMaker. Em nossa experiência, o uso de EFA é um requisito para obter desempenho satisfatório de treinamento LLM de vários nós.
Um dispositivo EFA é uma interface de rede conectada a instâncias do EC2 gerenciadas pelo SageMaker durante a execução dos trabalhos de treinamento. O EFA está disponível em famílias específicas de instâncias, incluindo a P4d. As redes EFA são capazes de atingir várias centenas de Gbps de taxa de transferência.
Associada à EFA, a AWS apresentou o Datagrama Confiável Escalável (SRD), um transporte baseado em Ethernet inspirado no Datagrama confiável InfiniBand, evoluiu com restrição de ordenação de pacotes relaxada. Para obter mais informações sobre EFA e SRD, consulte Na busca por performance, há mais de uma forma de construir uma rede, o vídeo Como funciona o EFA e por que não usamos infiniband na nuvem, e o trabalho de pesquisa Um protocolo de transporte otimizado para nuvem para HPC elástico e escalável de Shalev et al.
Você pode adicionar integração de EFA em instâncias compatíveis a contêineres Docker existentes do SageMaker ou contêineres personalizados que podem ser usados para treinar modelos de ML usando trabalhos do SageMaker. Para mais informações, consulte Executar treinamento com EFA. A EFA é exposta através do código aberto Libfabric pacote de comunicação. No entanto, os desenvolvedores do LLM raramente o programam diretamente com o Libfabric e, geralmente, dependem da NVIDIA Collective Communications Library (NCCL).
Plug-in AWS-OFI-NCCL
No ML distribuído, o EFA é usado com mais frequência com a NVIDIA Collective Communications Library (NCCL). NCCL é uma biblioteca de código aberto desenvolvida pela NVIDIA que implementa algoritmos de comunicação entre GPUs. A comunicação entre GPUs é a base do treinamento LLM que catalisa escalabilidade e desempenho. É tão crítico para o treinamento DL que o NCCL geralmente é integrado diretamente como um back-end de comunicação em bibliotecas de treinamento de aprendizado profundo, para que os desenvolvedores LLM o usem - às vezes sem perceber - de sua estrutura de desenvolvimento Python DL preferida. Para usar o NCCL no EFA, os desenvolvedores LLM usam o AWS-developed Plug-in AWS OFI NCCL, que mapeia as chamadas NCCL para a interface Libfabric usada pelo EFA. Recomendamos usar a versão mais recente do AWS OFI NCCL para se beneficiar das melhorias recentes.
Para verificar se o NCCL usa EFA, você deve definir a variável de ambiente NCCL_DEBUG
para INFO
, e verifique nos logs se o EFA é carregado pelo NCCL:
Para obter mais informações sobre a configuração NCCL e EFA, consulte Teste sua configuração EFA e NCCL. Você pode personalizar ainda mais o NCCL com vários variáveis ambientais. Observe que, em vigor no NCCL 2.12 e superior, a AWS contribuiu com uma lógica de seleção de algoritmo de comunicação automatizada para redes EFA (NCCL_ALGO
pode ser deixado indefinido).
NVIDIA GPUDirect RDMA sobre EFA
Com o tipo de instância P4d, nós introduzido GPUDirect RDMA (GDR) sobre malha EFA. Ele permite que as placas de interface de rede (NICs) acessem diretamente a memória da GPU, tornando mais rápida a comunicação remota de GPU para GPU em instâncias EC2 baseadas em GPU da NVIDIA, reduzindo a sobrecarga de orquestração nas CPUs e nos aplicativos do usuário. GDR é usado sob o capô pelo NCCL, quando viável.
O uso de GDR aparece na comunicação entre GPUs quando o nível de log é definido como INFO, conforme o código a seguir:
Usando EFA em contêineres de aprendizado profundo da AWS
A AWS mantém Deep Learning Containers (DLCs), muitos dos quais vêm com Dockerfiles gerenciados pela AWS e construídos contendo EFA, AWS OFI NCCL e NCCL. Os seguintes repositórios do GitHub oferecem exemplos com PyTorch e TensorFlow. Você não precisa instalar essas bibliotecas por conta própria.
Usando o EFA em seu próprio contêiner de treinamento do SageMaker
Se você criar seu próprio contêiner de treinamento do SageMaker e quiser usar o NCCL sobre EFA para comunicação acelerada entre nós, será necessário instalar EFA, NCCL e AWS OFI NCCL. Para mais informações, consulte Executar treinamento com EFA. Além disso, você deve definir as seguintes variáveis de ambiente em seu contêiner ou em seu código de ponto de entrada:
FI_PROVIDER="efa"
especifica o provedor de interface de malhaNCCL_PROTO=simple
instrui o NCCL a usar um protocolo simples para comunicação (atualmente, o provedor EFA não oferece suporte a protocolos LL; habilitá-los pode levar à corrupção de dados)FI_EFA_USE_DEVICE_RDMA=1
usa a funcionalidade RDMA do dispositivo para transferência unilateral e bilateralNCCL_LAUNCH_MODE="PARALLEL"
NCCL_NET_SHARED_COMMS="0"
Orquestração
Gerenciar o ciclo de vida e a carga de trabalho de dezenas a centenas de instâncias de computação requer um software de orquestração. Nesta seção, oferecemos as melhores práticas para orquestração LLM
Orquestração dentro do trabalho
Os desenvolvedores devem escrever o código de treinamento do lado do servidor e o código do iniciador do lado do cliente na maioria das estruturas distribuídas. O código de treinamento é executado em máquinas de treinamento, enquanto o código do iniciador do lado do cliente inicia a carga de trabalho distribuída de uma máquina cliente. Há pouca padronização hoje, por exemplo:
- No PyTorch, os desenvolvedores podem iniciar tarefas em várias máquinas usando
torchrun
,torchx
,torch.distributed.launch
(caminho de descontinuação) outorch.multiprocessing.spawn
- DeepSpeed propõe seu próprio iniciador de CLI de velocidade profunda e também oferece suporte ao lançamento de MPI
- MPI é uma estrutura de computação paralela popular que tem o benefício de ser independente de ML e razoavelmente estável e, portanto, estável e documentada, e é cada vez mais vista em cargas de trabalho de ML distribuídas
Em um cluster SageMaker Training, o contêiner de treinamento é iniciado uma vez em cada máquina. Consequentemente, você tem três opções:
- Iniciador nativo – Você pode usar como ponto de entrada o iniciador nativo de uma estrutura DL específica, por exemplo, um
torchrun
call, que gerará vários processos locais e estabelecerá comunicações entre as instâncias. - Integração SageMaker MPI – Você pode usar a integração SageMaker MPI, disponível em nosso AWS DLC, ou auto-instalável via kit de ferramentas de treinamento para sábios, para executar diretamente seu código de ponto de entrada N vezes por máquina. Isso tem a vantagem de evitar o uso de scripts de iniciador intermediários específicos da estrutura em seu próprio código.
- Bibliotecas distribuídas do SageMaker – Se você usar as bibliotecas distribuídas do SageMaker, poderá se concentrar no código de treinamento e não precisará escrever nenhum código de inicialização! O código do iniciador distribuído do SageMaker é integrado ao SDK do SageMaker.
Orquestração entre trabalhos
Os projetos LLM geralmente consistem em vários trabalhos: pesquisa de parâmetros, experimentos de dimensionamento, recuperação de erros e muito mais. Para iniciar, parar e paralelizar as tarefas de treinamento, é importante usar um orquestrador de tarefas. O SageMaker Training é um orquestrador de tarefas de ML sem servidor que provisiona instâncias de computação transitórias imediatamente mediante solicitação. Você paga apenas pelo que usa e os clusters são desativados assim que seu código termina. Com Piscinas quentes de treinamento SageMaker, você tem a opção de definir um tempo de vida em clusters de treinamento para reutilizar a mesma infraestrutura entre as tarefas. Isso reduz o tempo de iteração e a variabilidade de posicionamento entre tarefas. Os trabalhos do SageMaker podem ser iniciados a partir de uma variedade de linguagens de programação, incluindo Python e CLI.
Existe um SDK Python específico do SageMaker chamado SDK Python do SageMaker e implementado através do sábio biblioteca Python, mas seu uso é opcional.
Aumentar cotas para trabalhos de treinamento com um cluster de treinamento grande e longo
O SageMaker tem cotas padrão de recursos, projetadas para evitar uso e custos não intencionais. Para treinar um LLM usando um grande cluster de instâncias de ponta em execução por um longo período, você provavelmente precisará aumentar as cotas na tabela a seguir.
Nome da cota | Valor padrão |
Tempo de execução mais longo para um job de treinamento | 432,000 segundos |
Número de instâncias em todos os jobs de treinamento | 4 |
Número máximo de instâncias por job de treinamento | 20 |
ml.p4d.24xlarge para uso de trabalho de treinamento | 0 |
ml.p4d.24xlarge para treinamento de uso de piscina aquecida | 0 |
See Cotas de serviço da AWS como visualizar seus valores de cota e solicitar um aumento de cota. As cotas de pools quentes sob demanda, instância spot e treinamento são rastreadas e modificadas separadamente.
Se você decidir manter o SageMaker Profiler ativado, saiba que todo trabalho de treinamento inicia um trabalho de processamento do SageMaker, cada um consumindo uma instância ml.m5.2xlarge. Confirme se suas cotas de processamento do SageMaker são altas o suficiente para acomodar a simultaneidade esperada do trabalho de treinamento. Por exemplo, se você deseja iniciar 50 trabalhos de treinamento habilitados para o Profiler sendo executados simultaneamente, será necessário aumentar o limite de ml.m5.2xlarge para processar o uso do trabalho para 50.
Além disso, para iniciar um trabalho de longa duração, você precisará definir explicitamente o Estimador max_run
parâmetro para a duração máxima desejada para o trabalho de treinamento em segundos, até o valor de cota do tempo de execução mais longo para um trabalho de treinamento.
Monitoramento e resiliência
A falha de hardware é extremamente rara na escala de uma única instância e se torna cada vez mais frequente à medida que o número de instâncias usadas simultaneamente aumenta. Na escala LLM típica – centenas a milhares de GPUs usadas 24 horas por dia, 7 dias por semana, durante semanas a meses – é quase certo que ocorram falhas de hardware. Portanto, uma carga de trabalho LLM deve implementar mecanismos apropriados de monitoramento e resiliência. Em primeiro lugar, é importante monitorar de perto a infraestrutura do LLM, para limitar o impacto das falhas e otimizar o uso dos recursos de computação. O SageMaker Training propõe vários recursos para essa finalidade:
- Os logs são enviados automaticamente para o CloudWatch Logs. Os logs incluem seu script de treinamento
stdout
estderr
. No treinamento distribuído baseado em MPI, todos os funcionários do MPI enviam seus logs para o processo líder. - Métricas de utilização de recursos do sistema, como memória, uso de CPU e uso de GPU, são enviadas automaticamente para o CloudWatch.
- Você pode definir métricas de treinamento personalizadas que será enviado ao CloudWatch. As métricas são capturadas de logs com base em expressões regulares definidas por você. Pacotes de experimentos de terceiros, como o Parceiro AWS A oferta de pesos e vieses pode ser usada com o treinamento do SageMaker (por exemplo, consulte Otimizando Hiperparâmetros CIFAR-10 com W&B e SageMaker).
- Perfilador SageMaker permite inspecionar o uso da infraestrutura e obter recomendações de otimização.
- Amazon Event Bridge e AWS Lambda permitem que você crie lógica de cliente automatizada reagindo a eventos como falhas de trabalho, sucessos, uploads de arquivos S3 e muito mais.
- Auxiliar de SSH do SageMaker é uma biblioteca de código aberto mantida pela comunidade que permite conectar-se a hosts de trabalho de treinamento por meio de SSH. Pode ser útil inspecionar e solucionar problemas de execuções de código em nós específicos.
Além do monitoramento, o SageMaker também traz equipamentos para resiliência do trabalho:
- Verificações de integridade do cluster – Antes do início do trabalho, o SageMaker executa verificações de integridade da GPU e verifica a comunicação NCCL nas instâncias da GPU, substituindo as instâncias com falha, se necessário, para garantir que o script de treinamento comece a ser executado em um cluster íntegro de instâncias. As verificações de integridade estão atualmente habilitadas para tipos de instância baseados em GPU P e G.
- Tentativas integradas e atualização de cluster – Você pode configurar o SageMaker para tentar novamente trabalhos de treinamento que falham com um erro de servidor interno (ISE) do SageMaker. Como parte da repetição de uma tarefa, o SageMaker substituirá todas as instâncias que encontraram erros de GPU irrecuperáveis por novas instâncias, reiniciará todas as instâncias íntegras e iniciará a tarefa novamente. Isso resulta em reinicializações mais rápidas e conclusão da carga de trabalho. A atualização de cluster está atualmente habilitada para tipos de instância baseados em GPU P e G. Você pode adicionar em seu próprio mecanismo de repetição do aplicativo em torno do código do cliente que envia o trabalho, para lidar com outros tipos de erros de inicialização, como exceder a cota da sua conta.
- Automatizado ponto de verificação para Amazon S3 – Isso ajuda você ponto de verificação seu progresso e recarregue um estado passado em novos trabalhos.
Para se beneficiar da substituição no nível do nó, seu código deve apresentar erros. Os coletivos podem travar, em vez de errar, quando um nó falha. Portanto, para obter uma correção imediata, defina adequadamente um tempo limite em seus coletivos e faça com que o código lance um erro quando for atingido.
Alguns clientes configuram um cliente de monitoramento para monitorar e agir em caso de interrupção do trabalho ou interrupção da convergência do aplicativo, monitorando os logs e métricas do CloudWatch para padrões anormais, como nenhum registro gravado ou 0% de uso da GPU para sugerir uma interrupção, interrupção da convergência e auto pare/repita o trabalho.
Mergulhe fundo no ponto de verificação
A ponto de verificação do SageMaker recurso copia tudo o que você escreve /opt/ml/checkpoints
de volta ao Amazon S3 como o URI especificado no checkpoint_s3_uri
Parâmetro do SDK. Quando um job é iniciado ou reiniciado, tudo o que está escrito naquele URI é enviado de volta para todas as máquinas, em /opt/ml/checkpoints
. Isso é conveniente se você deseja que todos os nós tenham acesso a todos os pontos de verificação, mas em escala — quando você tem muitas máquinas ou muitos pontos de verificação históricos, pode levar a longos tempos de download e tráfego muito alto no Amazon S3. Além disso, no paralelismo de tensor e pipeline, os trabalhadores precisam apenas de uma fração do modelo com ponto de verificação, não todo. Se você enfrentar essas limitações, recomendamos as seguintes opções:
- Ponto de verificação para FSx for Luster – Graças à E/S aleatória de alto desempenho, você pode definir o esquema de atribuição de arquivos e sharding de sua escolha
- Ponto de verificação autogerenciado do Amazon S3 – Para obter exemplos de funções Python que podem ser usadas para salvar e ler pontos de verificação sem bloqueio, consulte Salvando Pontos de Verificação
Sugerimos enfaticamente verificar seu modelo a cada poucas horas, por exemplo, 1–3 horas, dependendo da sobrecarga e dos custos associados.
Front-end e gerenciamento de usuários
O gerenciamento de usuários é um ponto forte de usabilidade do SageMaker em comparação com a infraestrutura herdada compartilhada de HPC. As permissões de treinamento do SageMaker são regidas por vários Gerenciamento de acesso e identidade da AWS (IAM) abstrações:
- Os principais — usuários e sistemas — recebem permissão para lançar recursos
- Os trabalhos de treinamento carregam papéis próprios, que permitem que eles tenham suas próprias permissões, por exemplo, em relação ao acesso a dados e à invocação de serviços
Além disso, em 2022 adicionamos Gerente de função do SageMaker para facilitar a criação de permissões orientadas por persona.
Conclusão
Com o SageMaker Training, você pode reduzir custos e aumentar a velocidade de iteração em sua carga de trabalho de treinamento de modelo grande. Documentamos histórias de sucesso em vários posts e estudos de caso, incluindo:
Se você deseja melhorar seu tempo de colocação no mercado de LLM e reduzir seus custos, dê uma olhada na API de treinamento do SageMaker e conte-nos o que você construiu!
Agradecimentos especiais a Amr Ragab, Rashika Kheria, Zmnako Awrahman, Arun Nagarajan e Gal Oshri por suas críticas e ensinamentos úteis.
Sobre os autores
Anastasia Tzeveleka é arquiteto de soluções especializado em aprendizado de máquina e IA na AWS. Ela trabalha com clientes na EMEA e os ajuda a arquitetar soluções de aprendizado de máquina em escala usando os serviços da AWS. Ela trabalhou em projetos em diferentes domínios, incluindo processamento de linguagem natural (NLP), MLOps e ferramentas Low Code No Code.
Gili Nachum é um arquiteto de soluções especialista em IA/ML sênior que trabalha como parte da equipe EMEA Amazon Machine Learning. Gili é apaixonado pelos desafios de treinar modelos de aprendizado profundo e como o aprendizado de máquina está mudando o mundo como o conhecemos. Nas horas vagas, Gili gosta de jogar tênis de mesa.
Olivier Cruchant é Arquiteto Principal de Soluções Especialista em Machine Learning da AWS, com sede na França. Olivier ajuda os clientes da AWS – de pequenas startups a grandes empresas – a desenvolver e implantar aplicativos de aprendizado de máquina de nível de produção. Em seu tempo livre, ele gosta de ler trabalhos de pesquisa e explorar a natureza com amigos e familiares.
Bruno Pistone é um arquiteto de soluções especialista em IA/ML para AWS com sede em Milão. Ele trabalha com clientes de qualquer tamanho para ajudá-los a entender profundamente suas necessidades técnicas e projetar soluções de IA e Machine Learning que fazem o melhor uso da Nuvem AWS e da pilha Amazon Machine Learning. Suas áreas de especialização são Machine Learning de ponta a ponta, Machine Learning Industrialization e MLOps. Ele gosta de passar tempo com seus amigos e explorar novos lugares, além de viajar para novos destinos.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- Platoblockchain. Inteligência Metaverso Web3. Conhecimento Ampliado. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/training-large-language-models-on-amazon-sagemaker-best-practices/
- :é
- ][p
- $UP
- 000
- 1
- 100
- 2022
- 7
- 8
- a
- habilidades
- Capaz
- Sobre
- acima
- acelerar
- acelerado
- Acesso
- acomodar
- Conta
- Alcançar
- alcançar
- em
- Aja
- ativação
- ativo
- adaptar
- adicionado
- Adição
- Adicionalmente
- Adicionais
- Vantagem
- AI
- AI / ML
- AL
- algoritmo
- algoritmos
- Todos os Produtos
- Permitindo
- permite
- Amazon
- Amazon EC2
- Amazon FSx
- Aprendizado de máquina da Amazon
- Amazon Sage Maker
- quantidade
- e
- api
- APIs
- relevante
- Aplicação
- aplicações
- aplicado
- apropriado
- SOMOS
- ÁREA
- por aí
- AS
- associado
- At
- atributos
- auto
- Automatizado
- automaticamente
- disponível
- evitando
- AWS
- em caminho duplo
- Backend
- Equilíbrio
- baseado
- BE
- Porque
- torna-se
- antes
- ser
- beneficiar
- MELHOR
- melhores práticas
- Pós
- Grande
- bilhão
- bilhões
- Bloquear
- trazer
- Traz
- construir
- construído
- negócio
- by
- chamada
- chamado
- chamadas
- CAN
- capaz
- Capacidade
- cartão
- Cartões
- transportar
- casas
- Estudos de Caso
- catalisa
- desafios
- mudança
- Canal
- verificar
- Cheques
- escolha
- escolhas
- Escolha
- aulas
- cliente
- de perto
- Na nuvem
- Agrupar
- código
- Collective
- combinado
- como
- comum
- geralmente
- Comunicação
- Comunicações
- comparado
- compatível
- realização
- computação
- Computar
- computador
- Visão de Computador
- computação
- conclui
- conduzido
- Configuração
- Confirmar
- Contato
- Consequentemente
- não contenho
- Recipiente
- Containers
- contém
- conteúdo
- contribuiu
- ao controle
- controlado
- Conveniente
- Convergência
- Corrupção
- Custo
- custos
- poderia
- Para
- cobrir
- Covers
- crio
- criação
- Criatividade
- crítico
- crucial
- curadoria
- Atualmente
- personalizadas
- Clientes
- personalizar
- dados,
- acesso a dados
- Preparação de dados
- conjuntos de dados
- decidir
- dedicado
- profundo
- deep learning
- Padrão
- Grau
- Dependendo
- depende
- implantar
- Design
- projetado
- desejado
- destinos
- Determinar
- determinando
- desenvolver
- desenvolvido
- Developer
- desenvolvedores
- Desenvolvimento
- desenvolve
- dispositivo
- Dispositivos/Instrumentos
- diferente
- Distribuição
- diretamente
- discutir
- discutido
- distribuído
- computação distribuída
- treinamento distribuído
- distribuição
- Estivador
- Não faz
- domínios
- não
- down
- download
- dezenas
- durante
- cada
- facilmente
- Eficaz
- ou
- EMEA
- permitir
- habilitado
- permite
- permitindo
- encorajar
- termina
- aprimorada
- desfrutar
- suficiente
- garantir
- Empreendimento
- empresas
- entrada
- Meio Ambiente
- ambientes
- equipamento
- equipado
- erro
- erros
- estabelecer
- Mesmo
- eventos
- eventual
- Cada
- tudo
- evoluiu
- exemplo
- exemplos
- Excel
- existente
- esperar
- esperado
- vasta experiência
- experimentar
- Explorando
- exposto
- expressões
- estendendo
- extensões
- externo
- extremamente
- tecidos
- Rosto
- facilitar
- facilitando
- fatores
- fracassado
- falha
- Falha
- famílias
- família
- Moda
- RÁPIDO
- mais rápido
- defeituoso
- factível
- Característica
- Funcionalidades
- poucos
- campo
- Envie o
- Arquivos
- Primeiro nome
- caber
- ANIMARIS
- Flexibilidade
- Foco
- concentra-se
- seguido
- seguinte
- Escolha
- fração
- Quadro
- enquadramentos
- França
- Freedom
- freqüente
- recentes
- amigos
- da
- cheio
- totalmente
- funcional
- funcionalidade
- funções
- mais distante
- GAL
- gerado
- generativo
- ter
- obtendo
- GitHub
- dado
- GPU
- GPUs
- gráfico
- ótimo
- maior
- Grupo
- Cresce
- manipular
- Manipulação
- Aguentar
- acontecer
- Hardware
- Ter
- ter
- Saúde
- saudável
- útil
- ajuda
- ajuda
- Alta
- Alta frequência
- alta performance
- histórico
- capuz
- anfitriões
- HORÁRIO
- Como funciona o dobrador de carta de canal
- Como Negociar
- Contudo
- hpc
- HTML
- http
- HTTPS
- Centenas
- centenas de milhões
- i
- idêntico
- Identidade
- imagem
- imagens
- imediatamente
- Impacto
- executar
- implementado
- implementação
- importante
- melhorar
- melhorado
- melhorias
- in
- Em outra
- incluir
- Incluindo
- Crescimento
- aumentou
- Aumenta
- cada vez mais
- Individual
- indústria
- info
- INFORMAÇÕES
- Infraestrutura
- Inovação
- inspirado
- instalar
- instância
- em vez disso
- integrado
- integração
- Inteligente
- interação
- Interface
- intermediário
- interno
- introduzir
- introduzido
- IT
- iteração
- ESTÁ
- se
- Trabalho
- Empregos
- jpg
- Guarda
- Chave
- Tipo
- Saber
- língua
- Idiomas
- grande
- em grande escala
- Maior
- mais recente
- lançamento
- lançado
- lança
- camada
- camadas
- conduzir
- líder
- aprendizagem
- Legado
- Nível
- bibliotecas
- Biblioteca
- wifecycwe
- como
- Provável
- LIMITE
- limitações
- Limitado
- pequeno
- LLM
- carregamento
- local
- longo
- muito tempo
- olhar
- procurando
- Baixo
- máquina
- aprendizado de máquina
- máquinas
- a manter
- Manter
- mantém
- fazer
- FAZ
- Fazendo
- gerencia
- gerenciados
- de grupos
- muitos
- mapas
- máximo
- Memória
- metadados
- métodos
- Métrica
- migração
- MILÃO
- milhões
- ML
- MLOps
- Moda
- modelo
- modelos
- modificada
- Monitore
- monitoração
- mais
- a maioria
- mover
- múltiplo
- nomeadamente
- nativo
- natural
- Processamento de linguagem natural
- Natureza
- necessariamente
- necessário
- você merece...
- Cria
- rede
- baseado em rede
- redes
- rede neural
- Novo
- PNL
- nó
- nós
- número
- numeroso
- Nvidia
- objetos
- of
- oferecer
- oferecendo treinamento para distância
- oliva
- on
- Sob demanda
- ONE
- aberto
- open source
- código-fonte aberto
- aberto
- oportunidades
- otimização
- Otimize
- otimizado
- Opção
- Opções
- orquestração
- ordem
- Outros
- próprio
- pacote
- pacotes
- Papel
- papéis
- paradigma
- Paralelo
- parâmetro
- parâmetros
- parte
- particular
- particularmente
- apaixonado
- passado
- caminho
- padrões
- Pagar
- Pico
- atuação
- performances
- permissão
- permissões
- Fisicamente
- oleoduto
- Locais
- platão
- Inteligência de Dados Platão
- PlatãoData
- jogar
- ponto
- piscina
- Piscinas
- Popular
- Publique
- POSTAGENS
- prática
- práticas
- prevendo
- preferências
- preferido
- presente
- presentes
- evitar
- anteriormente
- Diretor
- processo
- processos
- em processamento
- produzir
- Agenda
- Programação
- linguagens de programação
- Progresso
- projetos
- devidamente
- oferece
- propõe
- proprietário
- protocolo
- protocolos
- fornecer
- fornecido
- provedor
- fornecendo
- público
- publicações
- propósito
- colocar
- Python
- pytorch
- qualidade
- aumentar
- acaso
- RARO
- Taxa
- Preços
- alcançado
- Leia
- Leitura
- perceber
- razoável
- razões
- receber
- recentemente
- recomendar
- recomendações
- registro
- registros
- recuperação
- reduzir
- reduz
- redução
- em relação a
- região
- regiões
- regular
- regularmente
- relacionado
- relevante
- confiável
- remoto
- substituir
- representando
- solicitar
- pedidos
- requerer
- requerimento
- exige
- pesquisa
- pesquisa e inovação
- recurso
- Recursos
- Resultados
- Opinões
- Tipo
- papéis
- Execute
- corrida
- sábio
- mesmo
- Salvar
- AMPLIAR
- escalável
- Escala
- Escalas
- dimensionamento
- esquema
- científico
- cientistas
- escopo
- Scripts
- Sdk
- Pesquisar
- Segundo
- segundo
- Seção
- busca
- selecionado
- doadores,
- senior
- Serverless
- Servidores
- serviço
- Serviços
- conjunto
- Configurações
- vários
- fragmentado
- raspando
- compartilhado
- rede de apoio social
- de forma considerável
- simples
- simplicidade
- simultaneamente
- solteiro
- Tamanho
- tamanhos
- Habilidades
- lento
- pequeno
- So
- Software
- Soluções
- alguns
- fonte
- Fontes
- especialista
- específico
- especificamente
- especificada
- velocidade
- Passar
- splits
- Spot
- estável
- pilha
- começo
- Comece
- começa
- Startups
- Estado
- estatístico
- Passos
- Dê um basta
- paragem
- armazenamento
- loja
- Histórias
- Estratégia
- transmitir canais
- córregos
- força
- descascamento
- discordaram
- caso
- sucesso
- Histórias de sucesso
- bem sucedido
- tal
- ajuda
- Suportado
- suportes
- Sincronização
- sintaxe
- .
- mesa
- Tire
- Tarefa
- tarefas
- Profissionais
- Dados Técnicos:
- fluxo tensor
- obrigado
- que
- A
- o mundo
- deles
- Eles
- si mesmos
- teórico
- assim sendo
- Este
- De terceiros
- milhares
- três
- Através da
- Taxa de transferência
- tempo
- vezes
- dicas
- para
- hoje
- Tokens
- também
- ferramenta
- ferramentas
- topo
- Total
- pista
- tráfego
- Trem
- treinado
- Training
- Tradução
- transporte
- Trilhão
- tipos
- típico
- para
- subjacente
- compreender
- único
- unidades
- Atualizar
- us
- usabilidade
- Uso
- usar
- Utilizador
- geralmente
- valor
- Valores
- variedade
- vário
- verificar
- versão
- via
- Vídeo
- Ver
- visão
- quente
- Caminho..
- maneiras
- semanas
- BEM
- O Quê
- qual
- enquanto
- QUEM
- inteiro
- precisarão
- de
- dentro
- sem
- palavras
- Atividades:
- trabalhou
- trabalhadores
- trabalhar
- trabalho
- mundo
- escrever
- escrito
- anos
- Vocês
- investimentos
- você mesmo
- Youtube
- zefirnet