Simple Science

Ciência de ponta explicada de forma simples

# Informática# Arquitetura de Hardware# Inteligência Artificial# Computação distribuída, paralela e em cluster# Aprendizagem de máquinas

Avançando o Treinamento de Aprendizado de Máquina com Sistemas de Processamento na Memória

Novo estudo avalia algoritmos de otimização em PIM pra melhorar a eficiência do aprendizado de máquina.

― 10 min ler


Sistemas PIMSistemas PIMPotencializam Aprendizadode MáquinaPIM.treinamento eficiente em plataformasOtimizando algoritmos pra um
Índice

O treinamento de modelos de machine learning em grandes conjuntos de dados pode ser caro e demorado. Sistemas tradicionais, como CPUs e GPUs, costumam ter limites por causa da necessidade de mover dados de um lado pro outro entre o armazenamento e o processador. Esse movimento constante de dados pode desacelerar as coisas e desperdiçar energia. Uma solução pra isso é o Processing-In-Memory (PIM), que permite fazer cálculos perto ou dentro da própria memória, reduzindo a necessidade de movimentação de dados.

O Desafio do Treinamento em Machine Learning

O treinamento de machine learning (ML) envolve encontrar o melhor modelo minimizando erros com base em um conjunto de dados. Esse processo pode ser complexo e exige muitos recursos computacionais. Além disso, conforme os conjuntos de dados crescem, eles costumam ficar grandes demais pra caber na memória de um processador. Quando isso acontece, o sistema precisa mover dados frequentemente entre o processador e a memória externa. Isso resulta em um desempenho mais lento e um consumo de energia maior.

O PIM busca resolver esse problema colocando capacidades de processamento diretamente na memória. Isso permite um acesso mais rápido aos dados e reduz a movimentação, o que deve ajudar em várias tarefas de machine learning. No entanto, muitos estudos anteriores sobre PIM não usaram sistemas do mundo real ou focaram em algoritmos de machine learning comumente usados.

Objetivos do Estudo

Esse estudo busca avaliar como algoritmos de otimização distribuída populares funcionam em sistemas PIM reais. Nosso objetivo é acelerar o treinamento de modelos de machine learning por meio de:

  1. Implementação de algoritmos de otimização conhecidos que dependem de um nó central em uma configuração real de PIM.
  2. Teste rigoroso do desempenho, precisão e escalabilidade desses algoritmos com grandes conjuntos de dados.
  3. Comparação dos resultados com sistemas tradicionais de CPU e GPU.
  4. Discussão sobre as implicações para o design de hardware futuro e a importância de colaborar no desenvolvimento de algoritmos e hardware.

Principais Descobertas

A partir da nossa pesquisa, descobrimos três pontos principais:

  1. Sistemas PIM podem ser uma boa alternativa a CPUs e GPUs avançadas para muitas tarefas de machine learning limitadas por memória, quando os algoritmos e tipos de dados se alinham bem com as capacidades do PIM.
  2. Escolher o algoritmo de otimização certo é crucial para o desempenho em sistemas PIM.
  3. Ao contrário das crenças comuns, arquiteturas PIM nem sempre escalam linearmente com um número aumentado de unidades de processamento para várias cargas de trabalho de machine learning.

Pra apoiar estudos futuros, planejamos tornar nosso código disponível publicamente.

Algoritmos de Otimização Importantes

O Stochastic Gradient Descent (SGD) é um algoritmo de otimização chave usado em machine learning. Ele forma a base de muitos algoritmos distribuídos projetados pra lidar com a demanda crescente por treinamentos rápidos e eficientes em grandes conjuntos de dados.

Quando treina modelos em grandes conjuntos de dados, o processo costuma ser lento e intensivo em recursos. O volume de dados pode sobrecarregar a memória do processador, forçando o sistema a mover repetidamente dados entre o processador e a memória externa, o que reduz o desempenho e aumenta o uso de energia. Esse é um problema bem conhecido em tarefas que lidam com muitos dados, como o treinamento de modelos de machine learning.

O que é Processing-In-Memory (PIM)?

O PIM fornece uma solução ao realizar cálculos dentro ou perto da memória. Esse conceito não é novo, mas ganhou atenção recentemente devido a avanços em pesquisas acadêmicas e implementações comerciais.

Enquanto algumas propostas passadas tentaram melhorar o treinamento de machine learning usando PIM, muito poucos estudos oferecem uma avaliação completa usando arquiteturas PIM do mundo real. Trabalhos anteriores se concentraram predominantemente em algoritmos de descent gradient, que não são amplamente usados em machine learning moderno, ao contrário do mais popular SGD.

Visão Geral do Estudo

Esse estudo investiga algoritmos de otimização distribuída bem conhecidos em arquiteturas PIM pra acelerar tarefas pesadas de machine learning. Usamos o sistema PIM do UPMEM para nossa pesquisa devido à sua disponibilidade comercial.

Implementamos diferentes combinações de três algoritmos de otimização distribuída:

  1. Mini-Batch Stochastic Gradient Descent com Model Averaging (MA-SGD).
  2. Mini-Batch Stochastic Gradient Descent Gradient Averaging (GA-SGD).
  3. Distributed Alternating Direction Method of Multipliers (ADMM).

Também avaliamos o desempenho de dois modelos lineares: Regressão Logística (LR) e Máquinas de Vetores de Suporte (SVM) usando dois grandes conjuntos de dados, YFCC100M-HNfc6 e Criteo.

Nosso processo de avaliação envolveu analisar todas as combinações de algoritmos e dados com base em desempenho, precisão e escalabilidade. Depois, comparamos os resultados com sistemas tradicionais de CPU e GPU enquanto discutíamos o futuro do hardware PIM.

Contribuições Chave

Essa pesquisa contribui com esses pontos importantes:

  1. Somos os primeiros a implementar e estudar o treinamento de modelos lineares de machine learning usando algoritmos de otimização distribuída práticos em hardware PIM do mundo real.
  2. Apontamos considerações de design para vários algoritmos, modelos e cargas de trabalho ao treinar machine learning em PIM.
  3. Destacamos desafios de escalabilidade relacionados à eficiência estatística de modelos treinados em PIM e a necessidade de desenvolver hardware PIM que acomode algoritmos de otimização paralela descentralizada.

Contexto sobre o Treinamento em Machine Learning

Treinamento em Machine Learning

O objetivo principal do treinamento em machine learning é descobrir o melhor modelo minimizando um certo erro com base em um conjunto de dados de treinamento. Cada amostra no conjunto de dados consiste em recursos e rótulos que guiam o processo de treinamento.

Modelos e Algoritmos

Focamos em dois modelos lineares de classificação binária que são comumente usados em tarefas de otimização:

  1. Regressão Logística (LR): Usa uma função de perda de entropia cruzada binária.
  2. Máquinas de Vetores de Suporte (SVM): Opera com perda hinge.

Algoritmos de Otimização

Examinamos três algoritmos de otimização distribuída centralizados adequados para treinar modelos LR e SVM:

  1. Mini-Batch Stochastic Gradient Descent com Model Averaging (MA-SGD): Trabalhadores treinam modelos locais e periodicamente os average com um modelo central.

  2. Mini-Batch Stochastic Gradient Descent Gradient Averaging (GA-SGD): Cada trabalhador calcula gradientes para partes do lote e os envia pra um servidor central pra averaging.

  3. Distributed Alternating Direction Method of Multipliers (ADMM): Divide um problema em subproblemas menores tratados por trabalhadores, que sincronizam seus resultados com um servidor central.

Técnicas de Regularização

Pra alcançar um desempenho geral melhor, empregamos métodos de regularização padrão, que ajudam a reduzir erros associados a previsões de modelos.

Visão Geral do Sistema PIM UPMEM

O sistema PIM UPMEM é composto por hosts tradicionais (unidades de processamento central) e módulos de memória PIM especializados projetados pra tarefas de processamento na memória.

Cada módulo PIM inclui uma área de memória acessível pela CPU e uma unidade de processamento que executa tarefas. Essa configuração permite que programas para o PIM sejam desenvolvidos usando uma linguagem de programação padrão. A arquitetura permite que vários threads rodem simultaneamente, melhorando a eficiência.

Implementação dos Algoritmos

Pro sistema PIM UPMEM, elaboramos um fluxo de controle de alto nível pra treinar modelos de machine learning. A unidade de processamento central inicializa o sistema enviando o programa pras unidades de processamento e atribuindo tarefas. Todo o conjunto de dados é dividido e distribuído entre as unidades de processamento, que só precisam acessar os dados uma vez durante o processo de treinamento.

Quando os cálculos estão prontos, os resultados das unidades de processamento são coletados pela CPU central, que então agrega e comunica o modelo atualizado de volta pras unidades de processamento pra continuar o treinamento.

Comparações de Referência

Pra avaliar nossa implementação PIM, comparamos seu desempenho com sistemas tradicionais de CPU e GPU usando os mesmos algoritmos de otimização. Para CPUs, usamos uma implementação distribuída que divide o trabalho entre vários threads, enquanto pra GPUs, implementamos apenas uma versão básica do SGD devido a limitações na utilização efetiva de recursos.

Conjuntos de Dados

Usamos dois conjuntos de dados significativos pra treinar nossos modelos:

  1. YFCC100M-HNfc6: Contém 97 milhões de amostras com recursos derivados de dados multimídia.

  2. Criteo 1TB Click Logs: Um grande conjunto de dados usado pra previsão de taxa de cliques, consistindo de bilhões de amostras com muitos recursos.

Análise de Desempenho do YFCC100M-HNfc6

Ao analisar o conjunto de dados YFCC100M-HNfc6, observamos que a comunicação entre o servidor de parâmetros e o PIM frequentemente provou ser um gargalo, especialmente pra certos algoritmos.

Na maioria dos casos, o tempo de computação consumido pelos algoritmos de otimização foi maior que o tempo gasto no movimento de dados, indicando que o desempenho no PIM foi fortemente influenciado pela eficiência computacional e não apenas pelas taxas de transferência de dados.

Ao ajustar tamanhos de lote e comparar resultados entre os vários algoritmos de otimização, fornecemos insights sobre os melhores métodos pra melhorar o desempenho em aplicações PIM do mundo real.

Análise de Desempenho do Criteo

O conjunto de dados Criteo apresentou desafios diferentes devido à sua natureza de alta dimensionalidade. Pra esse conjunto de dados, observamos uma mudança na dinâmica de desempenho em comparação com o conjunto YFCC100M-HNfc6.

Aqui, os tempos de computação foram frequentemente dominados pelo movimento de dados, indicando que a necessidade de um manuseio de dados mais complexo estava reduzindo a eficiência geral do processo de treinamento no PIM. Nossas descobertas destacaram a importância da seleção de algoritmos com base nas características específicas do conjunto de dados em uso.

Implicações para o Design de Hardware

Com base em nossas descobertas, acreditamos que, embora os sistemas PIM possam competir com processadores tradicionais em tarefas de machine learning, ainda são necessárias melhorias contínuas no design do hardware.

Uma área significativa pra melhoria é a comunicação entre as unidades de processamento, que atrapalha a capacidade de utilizar algoritmos descentralizados que mostraram resultados promissores em outros contextos. Essa mudança permitiria uma gama mais ampla de algoritmos a serem executados em futuros sistemas PIM, potencialmente levando a um desempenho e escalabilidade melhores.

Conclusão

Resumidamente, nossa pesquisa indica que sistemas PIM têm um grande potencial para tarefas de machine learning, mas exigem uma consideração cuidadosa sobre as escolhas de algoritmos e capacidades de hardware. Os insights obtidos em nossas avaliações servem como base pra mais explorações e otimizações nessa área emergente da computação. Ao promover a colaboração entre as comunidades de machine learning e arquitetura de computadores, podemos desbloquear novas possibilidades pra um treinamento de machine learning eficiente e escalável.

Fonte original

Título: PIM-Opt: Demystifying Distributed Optimization Algorithms on a Real-World Processing-In-Memory System

Resumo: Modern Machine Learning (ML) training on large-scale datasets is a very time-consuming workload. It relies on the optimization algorithm Stochastic Gradient Descent (SGD) due to its effectiveness, simplicity, and generalization performance. Processor-centric architectures (e.g., CPUs, GPUs) commonly used for modern ML training workloads based on SGD are bottlenecked by data movement between the processor and memory units due to the poor data locality in accessing large datasets. As a result, processor-centric architectures suffer from low performance and high energy consumption while executing ML training workloads. Processing-In-Memory (PIM) is a promising solution to alleviate the data movement bottleneck by placing the computation mechanisms inside or near memory. Our goal is to understand the capabilities of popular distributed SGD algorithms on real-world PIM systems to accelerate data-intensive ML training workloads. To this end, we 1) implement several representative centralized parallel SGD algorithms on the real-world UPMEM PIM system, 2) rigorously evaluate these algorithms for ML training on large-scale datasets in terms of performance, accuracy, and scalability, 3) compare to conventional CPU and GPU baselines, and 4) discuss implications for future PIM hardware and highlight the need for a shift to an algorithm-hardware codesign. Our results demonstrate three major findings: 1) The UPMEM PIM system can be a viable alternative to state-of-the-art CPUs and GPUs for many memory-bound ML training workloads, especially when operations and datatypes are natively supported by PIM hardware, 2) it is important to carefully choose the optimization algorithms that best fit PIM, and 3) the UPMEM PIM system does not scale approximately linearly with the number of nodes for many data-intensive ML training workloads. We open source all our code to facilitate future research.

Autores: Steve Rhyner, Haocong Luo, Juan Gómez-Luna, Mohammad Sadrosadati, Jiawei Jiang, Ataberk Olgun, Harshita Gupta, Ce Zhang, Onur Mutlu

Última atualização: 2024-09-27 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2404.07164

Fonte PDF: https://arxiv.org/pdf/2404.07164

Licença: https://creativecommons.org/licenses/by/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais de autores

Artigos semelhantes