Escolha a melhor fonte de dados para seu trabalho de treinamento do Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Escolha a melhor fonte de dados para seu trabalho de treinamento do Amazon SageMaker

Amazon Sage Maker é um serviço gerenciado que facilita a criação, o treinamento e a implantação de modelos de aprendizado de máquina (ML). Os cientistas de dados usam trabalhos de treinamento do SageMaker para treinar facilmente modelos de ML; você não precisa se preocupar com o gerenciamento de recursos de computação e paga apenas pelo tempo real de treinamento. A ingestão de dados é parte integrante de qualquer pipeline de treinamento, e os trabalhos de treinamento do SageMaker oferecem suporte a uma variedade de modos de armazenamento e entrada de dados para atender a uma ampla variedade de cargas de trabalho de treinamento.

Esta postagem ajuda você a escolher a melhor fonte de dados para seu caso de uso de treinamento SageMaker ML. Apresentamos as opções de fontes de dados que os trabalhos de treinamento do SageMaker suportam nativamente. Para cada fonte de dados e modo de entrada, descrevemos sua facilidade de uso, características de desempenho, custo e limitações. Para ajudá-lo a começar rapidamente, fornecemos o diagrama com um exemplo de fluxo de decisão que você pode seguir com base nas principais características da sua carga de trabalho. Por último, realizamos vários benchmarks para cenários de treinamento realistas para demonstrar as implicações práticas no custo e desempenho geral do treinamento.

Fontes de dados e modos de entrada nativos do SageMaker

Ler dados de treinamento com facilidade e flexibilidade e com bom desempenho é uma preocupação comum e recorrente no treinamento de ML. O SageMaker simplifica a ingestão de dados com uma seleção de mecanismos de ingestão de dados eficientes e de alto rendimento, chamados fontes de dados e seus respectivos modos de entrada. Isso permite dissociar o código de treinamento da fonte de dados real, montar automaticamente sistemas de arquivos, ler com alto desempenho, ativar facilmente a fragmentação de dados entre GPUs e instâncias para permitir o paralelismo de dados e embaralhar automaticamente os dados no início de cada época.

O mecanismo de ingestão de treinamento SageMaker integra-se nativamente a três serviços de armazenamento gerenciados pela AWS:

  • Serviço de armazenamento simples da Amazon (Amazon S3) é um serviço de armazenamento de objetos que oferece escalabilidade, disponibilidade de dados, segurança e desempenho líderes do setor.
  • Amazon FSx para Lustre é um armazenamento compartilhado totalmente gerenciado com a escalabilidade e o desempenho do popular sistema de arquivos Lustre. Geralmente está vinculado a um bucket S3 existente.
  • Sistema de arquivos elástico da Amazon (Amazon EFS) é um sistema de arquivos compartilhados de uso geral, escalável e altamente disponível com vários níveis de preços. O Amazon EFS não tem servidor e aumenta e diminui automaticamente conforme você adiciona e remove arquivos.

O treinamento do SageMaker permite que seu script de treinamento acesse conjuntos de dados armazenados no Amazon S3, FSx for Lustre ou Amazon EFS, como se estivessem disponíveis em um sistema de arquivos local (por meio de uma interface de sistema de arquivos compatível com POSIX).

Com o Amazon S3 como fonte de dados, você pode escolher entre o modo File, o modo FastFile e o modo Pipe:

  • Modo de arquivo – O SageMaker copia um conjunto de dados do Amazon S3 para o armazenamento da instância de ML, que é um arquivo anexado Loja de blocos elásticos da Amazon (Amazon EBS) ou volume SSD NVMe, antes do início do script de treinamento.
  • Modo FastFile – O SageMaker expõe um conjunto de dados residente no Amazon S3 como um sistema de arquivos POSIX na instância de treinamento. Os arquivos do conjunto de dados são transmitidos do Amazon S3 sob demanda à medida que seu script de treinamento os lê.
  • Modo de tubo – O SageMaker transmite um conjunto de dados residente no Amazon S3 para a instância de treinamento de ML como um canal Unix, que transmite do Amazon S3 sob demanda à medida que seu script de treinamento lê os dados do canal.

Com FSx for Lustre ou Amazon EFS como fonte de dados, o SageMaker monta o sistema de arquivos antes do início do script de treinamento.

Canais de entrada de treinamento

Ao iniciar um trabalho de treinamento do SageMaker, você pode especificar até 20 tarefas gerenciadas canais de entrada de treinamento. Você pode pensar nos canais como uma unidade de abstração para informar ao trabalho de treinamento como e onde obter os dados disponibilizados para o código do algoritmo ler a partir de um caminho do sistema de arquivos (por exemplo, /opt/ml/input/data/input-channel-name) na instância de ML. Os canais de treinamento selecionados são capturados como parte dos metadados do trabalho de treinamento para permitir um rastreamento completo da linhagem do modelo para casos de uso como reprodutibilidade de trabalhos de treinamento ou para fins de governança de modelo.

Para usar o Amazon S3 como fonte de dados, defina um Entrada de treinamento para especificar o seguinte:

  • Seu modo de entrada (modo Arquivo, FastFile ou Pipe)
  • Distribuição e baralhar • Configuração
  • An S3DataType como um dos três métodos para especificar objetos no Amazon S3 que compõem seu conjunto de dados:

Como alternativa, para FSx for Lustre ou Amazon EFS, você define um Entrada do sistema de arquivos.

O diagrama a seguir mostra cinco trabalhos de treinamento, cada um configurado com uma combinação diferente de fonte de dados e modo de entrada:

Escolha a melhor fonte de dados para seu trabalho de treinamento do Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Fontes de dados e modos de entrada

As seções a seguir fornecem um mergulho profundo nas diferenças entre o Amazon S3 (modo File, modo FastFile e modo Pipe), FSx for Lustre e Amazon EFS como mecanismos de ingestão do SageMaker.

Modo de arquivo Amazon S3

O modo de arquivo é o modo de entrada padrão (se você não especificou um explicitamente) e é o mais simples de usar. Ao usar essa opção de entrada, o SageMaker baixa o conjunto de dados do Amazon S3 para o armazenamento da instância de treinamento de ML (Amazon EBS ou NVMe local, dependendo do tipo de instância) em seu nome antes de iniciar o treinamento do modelo, para que o script de treinamento possa ler o conjunto de dados do o sistema de arquivos local. Nesse caso, a instância deve ter espaço de armazenamento suficiente para acomodar todo o conjunto de dados.

Você configura o conjunto de dados para o modo Arquivo fornecendo um prefixo S3, um arquivo de manifesto ou um arquivo de manifesto aumentado.

Você deve usar um prefixo S3 quando todos os arquivos do conjunto de dados estiverem localizados em um prefixo S3 comum (as subpastas são aceitáveis).

O arquivo de manifesto lista os arquivos que compõem seu conjunto de dados. Normalmente, você usa um manifesto quando um trabalho de pré-processamento de dados emite um arquivo de manifesto ou quando os arquivos do conjunto de dados são espalhados por vários prefixos S3. Um manifesto aumentado é um arquivo de linha JSON, onde cada linha contém uma lista de atributos, como uma referência a um arquivo no Amazon S3, juntamente com atributos adicionais, principalmente rótulos. Seus casos de uso são semelhantes aos de um manifesto.

O modo de arquivo é compatível com Modo local do SageMaker (iniciando um contêiner de treinamento SageMaker interativamente em segundos). Para treinamento distribuído, você pode fragmentar o conjunto de dados em várias instâncias com o ShardedByS3Key opção.

A velocidade de download do modo de arquivo depende do tamanho do conjunto de dados, do tamanho médio do arquivo e do número de arquivos. Por exemplo, quanto maior for o conjunto de dados (ou quanto mais arquivos ele tiver), mais longo será o estágio de download, durante o qual o recurso de computação da instância permanece efetivamente ocioso. Ao treinar com instâncias spot, o download do conjunto de dados é feito sempre que o trabalho é retomado após uma interrupção spot. Normalmente, o download de dados ocorre a aproximadamente 200 MB/s para arquivos grandes (por exemplo, 5 minutos/50 GB). Se essa sobrecarga de inicialização é aceitável depende principalmente da duração geral do seu trabalho de treinamento, porque uma fase de treinamento mais longa significa uma fase de download proporcionalmente menor.

Modo FastFile do Amazon S3

O modo FastFile expõe objetos S3 por meio de uma interface de sistema de arquivos compatível com POSIX, como se os arquivos estivessem disponíveis no disco local da sua instância de treinamento, e transmite seu conteúdo sob demanda quando os dados são consumidos pelo script de treinamento. Isso significa que seu conjunto de dados não precisa mais caber no espaço de armazenamento da instância de treinamento e você não precisa esperar que o conjunto de dados seja baixado para a instância de treinamento antes que o treinamento possa começar.

Para facilitar isso, o SageMaker lista todos os metadados de objetos armazenados no prefixo S3 especificado antes da execução do script de treinamento. Esses metadados são usados ​​para criar um arquivo somente leitura FUSE (sistema de arquivos no espaço do usuário) que está disponível para o seu script de treinamento via /opt/ml/data/training-channel-name. A listagem de objetos S3 é executada em até 5,500 objetos por segundo, independentemente do tamanho. Isso é muito mais rápido do que baixar arquivos antecipadamente, como é o caso do modo Arquivo. Enquanto seu script de treinamento está em execução, ele pode listar ou ler arquivos como se estivessem disponíveis localmente. Cada operação de leitura é delegada ao serviço FUSE, que faz proxy de solicitações GET para o Amazon S3 para entregar o conteúdo real do arquivo ao chamador. Como um sistema de arquivos local, o FastFile trata os arquivos como bytes, portanto, é independente dos formatos de arquivo. O modo FastFile pode atingir uma taxa de transferência de mais de um GB/s ao ler arquivos grandes sequencialmente usando vários trabalhadores. Você pode usar o FastFile para ler arquivos pequenos ou recuperar intervalos de bytes aleatórios, mas deve esperar uma taxa de transferência mais baixa para esses padrões de acesso. Você pode otimizar seu padrão de acesso de leitura serializando muitos arquivos pequenos em contêineres de arquivos maiores e lendo-os sequencialmente.

FastFile atualmente suporta apenas prefixos S3 (sem suporte para manifesto e manifesto aumentado), e o modo FastFile é compatível com o modo local SageMaker.

Modo Pipe do Amazon S3

O modo Pipe é outro modo de streaming que foi amplamente substituído pelo modo FastFile, mais recente e mais simples de usar.

Com o modo Pipe, os dados são pré-buscados do Amazon S3 com alta simultaneidade e taxa de transferência e transmitidos para Unix chamados FIFO pipes. Cada pipe só pode ser lido por um único processo. Uma extensão específica do SageMaker para TensorFlow de forma conveniente integra o modo Pipe ao carregador de dados nativo do TensorFlow para streaming de texto, formatos de arquivo TFRecords ou RecordIO. O modo Pipe também suporta fragmentação gerenciada e embaralhamento de dados.

FSx para brilho

O FSx for Lustre pode ser dimensionado para centenas de GB/s de taxa de transferência e milhões de IOPS com recuperação de arquivos de baixa latência.

Ao iniciar um trabalho de treinamento, o SageMaker monta o sistema de arquivos FSx for Lustre no sistema de arquivos da instância de treinamento e, em seguida, inicia seu script de treinamento. A montagem em si é uma operação relativamente rápida que não depende do tamanho do conjunto de dados armazenado no FSx for Lustre.

Em muitos casos, você cria um sistema de arquivos FSx for Lustre e vincule-o a um bucket S3 e prefixe. Quando vinculados a um bucket S3 como origem, os arquivos são carregados lentamente no sistema de arquivos à medida que seu script de treinamento os lê. Isso significa que logo após a primeira época da sua primeira execução de treinamento, todo o conjunto de dados é copiado do Amazon S3 para o FSx para armazenamento Lustre (supondo que uma época seja definida como uma única varredura completa nos exemplos de treinamento e que o FSx alocado para O armazenamento de brilho é grande o suficiente). Isso permite acesso a arquivos de baixa latência para quaisquer épocas subsequentes e trabalhos de treinamento com o mesmo conjunto de dados.

Você também pode pré-carregar arquivos no sistema de arquivos antes de iniciar o trabalho de treinamento, o que alivia a partida a frio devido ao carregamento lento. Também é possível executar vários trabalhos de treinamento em paralelo que são atendidos pelo mesmo sistema de arquivos FSx for Lustre. Para acessar o FSx for Lustre, seu trabalho de treinamento deve se conectar a uma VPC (consulte Configurações de VPCConfig), que requer configuração e envolvimento do DevOps. Para evitar custos de transferência de dados, o sistema de arquivos usa uma única zona de disponibilidade e você precisa especificar esse ID da zona de disponibilidade ao executar o trabalho de treinamento. Como você está usando o Amazon S3 como armazenamento de dados de longo prazo, recomendamos implantar seu armazenamento FSx for Lustre com Scratch 2, como uma opção econômica de armazenamento de curto prazo para alta taxa de transferência, fornecendo uma linha de base de 200 MB/s e uma explosão de até 1300 MB/s por TB de armazenamento provisionado.

Com seu sistema de arquivos FSx for Lustre em execução constante, você pode iniciar novos trabalhos de treinamento sem esperar pela criação de um sistema de arquivos e não precisa se preocupar com a inicialização a frio durante a primeira época (porque os arquivos ainda podem ser armazenados em cache no o sistema de arquivos FSx for Lustre). A desvantagem nesse cenário é o custo extra associado à manutenção do sistema de arquivos em execução. Como alternativa, você pode criar e excluir o sistema de arquivos antes e depois de cada trabalho de treinamento (provavelmente com automação com script para ajudar), mas leva tempo para inicializar um sistema de arquivos FSx for Lustre, que é proporcional ao número de arquivos que ele contém (por Por exemplo, leva cerca de uma hora para indexar aproximadamente 2 milhões de objetos do Amazon S3).

Amazon EFS

Recomendamos usar o Amazon EFS se seus dados de treinamento já residirem no Amazon EFS devido a casos de uso além do treinamento de ML. Para usar o Amazon EFS como fonte de dados, os dados já devem residir no Amazon EFS antes do treinamento. O SageMaker monta o sistema de arquivos do Amazon EFS especificado na instância de treinamento e inicia o script de treinamento. Ao configurar o sistema de arquivos do Amazon EFS, você precisa escolher entre o modo de desempenho de uso geral padrão, que é otimizado para latência (bom para arquivos pequenos), e o modo de desempenho máximo de E/S, que pode escalar para níveis mais altos de taxa de transferência agregada e operações por segundo (melhor para trabalhos de treinamento com muitos trabalhadores de E/S). Para saber mais, consulte Usando o modo de desempenho correto.

Além disso, você pode escolher entre duas opções de taxa de transferência medida: taxa de transferência intermitente e taxa de transferência provisionada. A taxa de transferência de intermitência para um sistema de arquivos de 1 TB fornece uma linha de base de 150 MB/s, enquanto é capaz de intermitência para 300 MB/s por um período de 12 horas por dia. Se você precisar de uma taxa de transferência de linha de base mais alta ou ficar sem créditos de intermitência muitas vezes, poderá aumentar o tamanho do sistema de arquivos ou mudar para a taxa de transferência provisionada. Na taxa de transferência provisionada, você paga pela taxa de transferência de linha de base desejada até um máximo de 3072 MB/s de leitura.

Seu job de treinamento deve se conectar a uma VPC (consulte Configurações de VPCConfig) para acessar o Amazon EFS.

Escolhendo a melhor fonte de dados

A melhor fonte de dados para seu trabalho de treinamento depende das características da carga de trabalho, como tamanho do conjunto de dados, formato do arquivo, tamanho médio do arquivo, duração do treinamento, padrão de leitura do carregador de dados sequencial ou aleatório e quão rápido seu modelo pode consumir os dados de treinamento.

O fluxograma a seguir fornece algumas diretrizes para ajudá-lo a começar:
Escolha a melhor fonte de dados para seu trabalho de treinamento do Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Quando usar o Amazon EFS

Se o seu conjunto de dados for armazenado principalmente no Amazon EFS, você poderá ter um aplicativo de pré-processamento ou de anotações que use o Amazon EFS para armazenamento. Você poderia facilmente executar um trabalho de treinamento configurado com um canal de dados que aponta para o sistema de arquivos do Amazon EFS (para obter mais informações, consulte Acelere o treinamento no Amazon SageMaker usando os sistemas de arquivos Amazon FSx for Luster e Amazon EFS). Se o desempenho não for tão bom quanto o esperado, verifique suas opções de otimização com o Guia de desempenho do Amazon EFSou considere outros modos de entrada.

Use o modo Arquivo para pequenos conjuntos de dados

Se o conjunto de dados estiver armazenado no Amazon S3 e seu volume geral for relativamente pequeno (por exemplo, menos de 50 a 100 GB), tente usar o modo Arquivo. A sobrecarga de download de um conjunto de dados de 50 GB pode variar com base no número total de arquivos (por exemplo, cerca de 5 minutos se dividido em fragmentos de 100 MB). Se essa sobrecarga de inicialização é aceitável depende principalmente da duração geral do seu trabalho de treinamento, porque uma fase de treinamento mais longa significa uma fase de download proporcionalmente menor.

Serializando muitos arquivos pequenos juntos

Se o tamanho do conjunto de dados for pequeno (menos de 50 a 100 GB), mas for composto de muitos arquivos pequenos (menos de 50 MB), a sobrecarga de download do modo Arquivo aumentará, porque cada arquivo precisará ser baixado individualmente do Amazon S3 para o volume da instância de treinamento. Para reduzir essa sobrecarga e acelerar a passagem de dados em geral, considere serializar grupos de arquivos menores em menos contêineres de arquivos maiores (como 150 MB por arquivo) usando formatos de arquivo como Registro TF para TensorFlow, Conjunto de dados da Web para PyTorch, ou Gravar IO para MXNet. Esses formatos exigem que seu carregador de dados itere através de exemplos sequencialmente. Você ainda pode embaralhar seus dados reordenando aleatoriamente a lista de arquivos TFRecord após cada época e amostrando aleatoriamente os dados de um buffer de embaralhamento local (veja o seguinte Exemplo do TensorFlow).

Quando usar o modo FastFile

Para conjuntos de dados maiores com arquivos maiores (mais de 50 MB), a primeira opção é tentar o modo FastFile, que é mais simples de usar do que o FSx for Lustre porque não requer a criação de um sistema de arquivos ou a conexão a uma VPC. O modo FastFile é ideal para contêineres de arquivos grandes (mais de 150 MB) e também pode funcionar bem com arquivos com mais de 50 MB. Como o modo FastFile fornece uma interface POSIX, ele suporta leituras aleatórias (leitura de intervalos de bytes não sequenciais). No entanto, este não é o caso de uso ideal e seu rendimento provavelmente seria menor do que com leituras sequenciais. No entanto, se você tiver um modelo de ML relativamente grande e computacionalmente intensivo, o modo FastFile ainda poderá saturar a largura de banda efetiva do pipeline de treinamento e não resultar em um gargalo de E/S. Você precisará experimentar e ver. Felizmente, mudar do modo Arquivo para FastFile (e vice-versa) é tão fácil quanto adicionar (ou remover) o input_mode='FastFile' parâmetro ao definir seu canal de entrada usando o SageMaker Python SDK:

sagemaker.inputs.TrainingInput(S3_INPUT_FOLDER, input_mode='FastFile') 

Nenhum outro código ou configuração precisa ser alterado.

Quando usar FSx para Lustre

Se o seu conjunto de dados for muito grande para o modo Arquivo ou tiver muitos arquivos pequenos (que não podem ser serializados facilmente) ou se você tiver um padrão de acesso de leitura aleatório, o FSx for Lustre é uma boa opção a ser considerada. Seu sistema de arquivos é dimensionado para centenas de GB/s de taxa de transferência e milhões de IOPS, o que é ideal quando você tem muitos arquivos pequenos. No entanto, como já discutido anteriormente, esteja atento aos problemas de inicialização a frio devido ao carregamento lento e à sobrecarga de configuração e inicialização do sistema de arquivos FSx for Lustre.

Considerações de custo

Para a maioria dos trabalhos de treinamento de ML, especialmente trabalhos que utilizam GPUs ou chips de ML desenvolvidos especificamente, a maior parte do custo do treinamento são os segundos faturáveis ​​da instância de treinamento de ML. Armazenamento GB por mês, solicitações de API e taxa de transferência provisionada são custos adicionais diretamente associados às fontes de dados que você usa.

Armazenamento GB por mês

O armazenamento em GB por mês pode ser significativo para conjuntos de dados maiores, como vídeos, dados de sensores LiDAR e registros de lances em tempo real da AdTech. Por exemplo, armazenar 1 TB no Nível de acesso frequente do Amazon S3 Intelligent-Tiering custa $ 23 por mês. Adicionar o sistema de arquivos FSx for Lustre ao Amazon S3 resulta em custos adicionais. Por exemplo, criar um sistema de arquivos de 1.2 TB do tipo Scratch 2 com SSD e compactação de dados desativada custa US$ 168 adicionais por mês (US$ 140/TB/mês).

Com o Amazon S3 e o Amazon EFS, você paga apenas pelo que usa, o que significa que você será cobrado de acordo com o tamanho real do conjunto de dados. Com o FSx for Lustre, você é cobrado pelo tamanho do sistema de arquivos provisionado (1.2 TB no mínimo). Ao executar instâncias de ML com volumes EBS, o Amazon EBS é cobrado independentemente da instância de ML. Geralmente, esse é um custo muito menor em comparação com o custo de execução da instância. Por exemplo, executar uma instância ml.p3.2xlarge com um volume EBS de 100 GB por 1 hora custa US$ 3.825 para a instância e US$ 0.02 para o volume EBS.

Solicitações de API e custo de throughput provisionado

Enquanto seu trabalho de treinamento analisa o conjunto de dados, ele lista e busca arquivos despachando solicitações de API do Amazon S3. Por exemplo, cada milhão de solicitações GET custa US$ 0.4 (com a classe Intelligent-Tiering). Você não deve esperar nenhum custo de transferência de dados para largura de banda dentro e fora do Amazon S3, porque o treinamento ocorre em uma única zona de disponibilidade.

Ao usar um FSx for Lustre vinculado a um bucket do S3, você incorrerá em custos de solicitação de API do Amazon S3 para leitura de dados que ainda não estão armazenados em cache no sistema de arquivos, porque o FSx For Lustre faz proxy da solicitação para o Amazon S3 (e armazena em cache o resultado ). Não há custos de solicitação direta para o FSx for Lustre em si. Ao usar um sistema de arquivos FSx for Lustre, evite custos de transferência de dados entre zonas de disponibilidade executando seu trabalho de treinamento conectado à mesma zona de disponibilidade em que você provisionou o sistema de arquivos. O Amazon EFS com taxa de transferência provisionada adiciona um custo extra para considerar além GB por mês.

Estudo de caso de desempenho

Para demonstrar as considerações de desempenho de treinamento mencionadas anteriormente, realizamos uma série de benchmarks para um caso de uso realista no domínio da visão computacional. O benchmark (e as conclusões) desta seção podem não ser aplicáveis ​​a todos os cenários e são afetados por vários fatores predeterminados que usamos, como DNN. Executamos testes para 12 combinações do seguinte:

  • Modos de entrada – FSx para Lustre, modo Arquivo, modo FastFile
  • Tamanho do conjunto de dados – Conjunto de dados menor (1 GB), conjunto de dados maior (54 GB)
  • Tamanho do arquivo – Arquivos menores (JPGs, aproximadamente 39 KB), Arquivos maiores (TFRecord, aproximadamente 110 MB)

Para este estudo de caso, escolhemos os modos de entrada mais usados ​​e, portanto, omitimos o Amazon EFS e o modo Pipe.

Os benchmarks do estudo de caso foram projetados como trabalhos de treinamento completos do SageMaker TensorFlow em uma instância ml.p3.2xlarge de GPU única. Escolhemos o renomado ResNet-50 como nosso modelo de backbone para a tarefa de classificação e Caltech-256 como o menor conjunto de dados de treinamento (que replicamos 50 vezes para criar sua versão maior do conjunto de dados). Realizamos o treinamento para uma época, definida como uma única varredura completa através dos exemplos de treinamento.

Os gráficos a seguir mostram o tempo total faturável dos trabalhos de treinamento do SageMaker para cada cenário de benchmark. O tempo total do trabalho em si é composto por download, treinamento e outros estágios (como inicialização do contêiner e upload de artefatos do modelo treinado para o Amazon S3). Tempos faturáveis ​​mais curtos se traduzem em trabalhos de treinamento mais rápidos e mais baratos.

Escolha a melhor fonte de dados para seu trabalho de treinamento do Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Vamos primeiro discutir Cenário A e Cenário C, que demonstra convenientemente a diferença de desempenho entre os modos de entrada quando o conjunto de dados é composto por muitos arquivos pequenos.

Cenário A (arquivos menores, conjunto de dados menor) revela que o trabalho de treinamento com o sistema de arquivos FSx for Lustre tem o menor tempo faturável. Possui a fase de download mais curta e seu estágio de treinamento é tão rápido quanto o modo Arquivo, mas mais rápido que o FastFile. FSx for Lustre é o vencedor neste teste de época única. Dito isto, considere uma carga de trabalho semelhante, mas com várias épocas – a sobrecarga relativa do modo Arquivo devido ao estágio de download diminui à medida que mais épocas são adicionadas. Neste caso, preferimos o modo Arquivo pela facilidade de uso. Além disso, você pode descobrir que usar o modo Arquivo e pagar por 100 segundos extras faturáveis ​​é uma escolha melhor do que pagar e provisionar um sistema de arquivos FSx for Lustre.

Cenário C (arquivos menores, conjunto de dados maior) mostra FSx for Lustre como o modo mais rápido, com apenas 5,000 segundos de tempo total faturável. Ele também possui o estágio de download mais curto, pois a montagem do sistema de arquivos FSx for Lustre não depende do número de arquivos no sistema de arquivos (1.5 milhão de arquivos neste caso). A sobrecarga de download do FastFile também é pequena; ele busca apenas metadados dos arquivos que residem no prefixo do bucket S3 especificado, enquanto o conteúdo dos arquivos é lido durante o estágio de treinamento. O modo arquivo é o modo mais lento, gastando 10,000 segundos para baixar todo o conjunto de dados antecipadamente antes de iniciar o treinamento. Quando olhamos para o estágio de treinamento, o FSx for Lustre e o modo File demonstram excelente desempenho semelhante. Quanto ao modo FastFile, ao transmitir arquivos menores diretamente do Amazon S3, a sobrecarga para despachar uma nova solicitação GET para cada arquivo torna-se significativa em relação à duração total da transferência do arquivo (apesar de usar um carregador de dados altamente paralelo com buffer de pré-busca). Isso resulta em um rendimento geral mais baixo para o modo FastFile, o que cria um gargalo de E/S para o trabalho de treinamento. FSx for Lustre é o vencedor claro neste cenário.

Cenários B e D mostram a diferença de desempenho entre os modos de entrada quando o conjunto de dados é composto por menos arquivos maiores. A leitura sequencial usando arquivos maiores normalmente resulta em melhor desempenho de E/S porque permite um buffer eficaz e reduz o número de operações de E/S.

Cenário B (arquivos maiores, conjunto de dados menor) mostra tempo de estágio de treinamento semelhante para todos os modos (testificando que o treinamento não é limitado por E/S). Nesse cenário, preferimos o modo FastFile ao modo Arquivo devido ao estágio de download mais curto, e preferimos o modo FastFile ao FSx for Lustre devido à facilidade de uso do primeiro.

Cenário D (arquivos maiores, conjunto de dados maior) mostra tempos faturáveis ​​totais relativamente semelhantes para todos os três modos. A fase de download do modo Arquivo é mais longa que a do FSx for Lustre e FastFile. O modo de arquivo faz download de todo o conjunto de dados (54 GB) do Amazon S3 para a instância de treinamento antes de iniciar o estágio de treinamento. Todos os três modos passam um tempo semelhante na fase de treinamento, porque todos os modos podem buscar dados com rapidez suficiente e são vinculados à GPU. Se usarmos instâncias de ML com recursos adicionais de CPU ou GPU, como ml.p4d.24xlarge, a taxa de transferência de E/S de dados necessária para saturar os recursos de computação aumentará. Nesses casos, podemos esperar que o FastFile e o FSx for Lustre dimensionem com êxito sua taxa de transferência (no entanto, a taxa de transferência do FSx for Lustre depende do tamanho do sistema de arquivos provisionado). A capacidade do modo Arquivo de dimensionar sua taxa de transferência depende da taxa de transferência do volume de disco anexado à instância. Por exemplo, instâncias apoiadas pelo Amazon EBS (como ml.p3.2xlarge, ml.p3.8xlarge e ml.p3.16xlarge) são limitadas a uma taxa de transferência máxima de 250 MB/s, enquanto instâncias locais apoiadas por NVMe (como ml. g5.* ou ml.p4d.24xlarge) podem acomodar uma produtividade muito maior.

Resumindo, acreditamos que o FastFile é o vencedor neste cenário porque é mais rápido que o modo Arquivo e tão rápido quanto o FSx for Lustre, porém mais simples de usar, custa menos e pode facilmente aumentar seu rendimento conforme necessário.

Além disso, se tivéssemos um conjunto de dados muito maior (vários TB de tamanho), o modo Arquivo gastaria muitas horas baixando o conjunto de dados antes que o treinamento pudesse começar, enquanto o FastFile poderia iniciar o treinamento significativamente mais rapidamente.

Traga sua própria ingestão de dados

A fonte de dados nativa do SageMaker se adapta à maioria, mas não a todos os cenários de treinamento de ML possíveis. As situações em que você pode precisar procurar outras opções de ingestão de dados podem incluir a leitura de dados diretamente de um produto de armazenamento de terceiros (supondo que não seja possível uma exportação fácil e oportuna para o Amazon S3) ou ter um forte requisito para o mesmo treinamento script para ser executado inalterado no SageMaker e Amazon Elastic Compute Nuvem (Amazon EC2) ou Serviço Amazon Elastic Kubernetes (Amazon EKS). Você pode resolver esses casos implementando seu mecanismo de ingestão de dados no script de treinamento. Este mecanismo é responsável pela leitura de conjuntos de dados de fontes externas na instância de treinamento. Por exemplo, o TFRecordDataset do TensorFlow tf.data biblioteca pode ler diretamente do armazenamento do Amazon S3.

Se o seu mecanismo de ingestão de dados precisar chamar qualquer serviço da AWS, como Serviço de banco de dados relacional da Amazon (Amazon RDS), certifique-se de que o Gerenciamento de acesso e identidade da AWS (IAM) do seu trabalho de treinamento inclui as políticas relevantes do IAM. Se a fonte de dados residir em Nuvem virtual privada da Amazon (Amazon VPC), você precisa executar seu trabalho de treinamento conectado à mesma VPC.

Quando você mesmo gerencia a ingestão de conjuntos de dados, o rastreamento de linhagem do SageMaker não pode registrar automaticamente os conjuntos de dados usados ​​durante o treinamento. Portanto, considere mecanismos alternativos, como tags de trabalho de treinamento ou hiperparâmetros, para capturar seus metadados relevantes.

Conclusão

A escolha da fonte de dados de treinamento do SageMaker certa pode ter um efeito profundo na velocidade, na facilidade de uso e no custo do treinamento de modelos de ML. Use o fluxograma fornecido para começar rapidamente, observar os resultados e experimentar configurações adicionais conforme necessário. Tenha em mente os prós, os contras e as limitações de cada fonte de dados e até que ponto elas atendem aos requisitos individuais do seu trabalho de treinamento. Entre em contato com um contato da AWS para obter mais informações e assistência.


Sobre os autores

Escolha a melhor fonte de dados para seu trabalho de treinamento do Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.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.

Escolha a melhor fonte de dados para seu trabalho de treinamento do Amazon SageMaker PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Dr.Alexandre Arzhanov é um Arquiteto de Soluções Especialista em AI/ML com sede em Frankfurt, Alemanha. Ele ajuda os clientes da AWS a projetar e implantar suas soluções de ML na região EMEA. Antes de ingressar na AWS, Alexander estava pesquisando as origens de elementos pesados ​​em nosso universo e se apaixonou pelo ML depois de usá-lo em seus cálculos científicos em larga escala.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS