O MLPerf é uma “ferramenta de benchmarking sobre o desempenho dos modelos de Machine Learning com amplo suporte das instituições acadêmicas e de empresas”. A organização por trás do MLPerf é a MLCommons, um consórcio aberto de engenharia com a missão de “definir, desenvolver e testar benchmarks de treinamento do MLPerf”, além de criar padrões na indústria. A organização define as regras, políticas e procedimentos para obter benchmarks imparciais.
Até o momento, existem 50 membros fundadores que incluem empresas como AMD, ARM, Cisco, Google, Alibaba, Intel, Facebook, Fujitsu, Microsoft, Samsung, NVIDIA, Red Hat, VMWare e muitos mais. Peter Mattson, Staff Engineer do Google e Presidente da MLCommons, fez uma apresentação na Conferência ScaledML que forneceu ao público uma grande quantidade de informações sobre o MLPerf. No evento, Mattson explicou que existem três tipos de benchmarks do MLPerf.
- MLPerf Training (Treinamento): mede o tempo para treinar um modelo.
- MLPerf Inference (Inferência): mede a taxa de inferência.
- MLPerf Mobile (Móvil): mede o desempenho da inferência em dispositivos móveis.
A análise do MLPerf Training mede o tempo para treinar um modelo. Peter descreveu esse tipo de análise como “pegar um conjunto de dados como o ImageNet, executá-lo em um modelo como o Resnet e configurar-o para atingir uma qualidade alvo de uma certa porcentagem”. Então mede quanto tempo leva para fazer isso. O mais relevante do teste é que ele mede um valor real para os usuários.
Uma das questões que surgem sobre o benchmarking é se deve ser especificado o modelo usado ou não. Se for especificado, como mostra a ilustração acima, uma comparação de maçãs e maçãs pode ser feita entre diferentes sistemas. Se um modelo não for especificado, os engenheiros podem usar o seu próprio. O benefício dessa abordagem é que ela deixa aberto para qualquer pessoa usar métodos inovadores para melhorar os benchmarks. Talvez o engenheiro tenha investido muito na criação de um algoritmo poderoso ou otimizou o stack de software ou hardware para alcançar novos níveis de desempenho.
Divisão fechada e divisão aberta
As duas abordagens mencionadas acima são chamadas de divisão fechada e divisão aberta.
- Divisão fechada: o modelo é especificado. Tende a ser usado por vendedores de chips, por exemplo.
- Divisão Aberta: o modelo não é especificado. Usado por inovadores e aqueles que querem derrubar barreiras criando seus próprios métodos.
Nos benchmarks do MLPerf Training v0.5 y v0.6, o consórcio lançou sete benchmarks diferentes nas áreas de visão, linguagem, comércio e pesquisa, conforme ilustrado abaixo.
Por sua parte, o benchmark MLPerf Inference mede a taxa de inferência. Peter explicou desta forma: “pegue os inputs, processe-os através de um modelo treinado e certifique-se de que o modelo esteja funcionando no nível certo de precisão”. Esta abordagem é ilustrada aqui:
A inferência tende a ser usada em situações mais diversas. O consórcio apresentou quatro cenários diferentes.
- Fluxo único (Single stream): um fluxo constante de dados chega em ordem.
- Fluxo múltiplo (Multiple stream): vários fluxos diferentes chegam ao mesmo tempo.
- Servidor (Server): os dados chegam na distribuição de Poisson.
- Offline: os dados chegam em pedaços em determinados momentos.
Em termos de benchmarks, a MLCommons criou cinco benchmarks nas áreas de visão e linguagem, conforme ilustrado aqui:
A MLCommons está ativa e está lançando atualizações com regularidade. Por exemplo, nodia 30 de junho de 2021, a organização lançou o MLPerf Training v1.0 que incluiu dois novos benchmarks:
- Voz-para-Texto com RNN-T: analisa a entrada de voz para prever o texto correspondente. Usa o conjunto de dados LibriSeech.
- 3D Medical Imaging com 3D U-Net: detecta células cancerosas nos rins. Usa o conjunto de dados KiTS 19.
Em resumo, a MLCommons está desenvolvendo benchmarks que estão ajudando a comunidade global a medir e melhorar o desempenho dos modelos de Machine Learning.