MindSpore Da Huawei: Um Novo Concorrente Para TensorFlow E PyTorch?

Índice:

MindSpore Da Huawei: Um Novo Concorrente Para TensorFlow E PyTorch?
MindSpore Da Huawei: Um Novo Concorrente Para TensorFlow E PyTorch?

Vídeo: MindSpore Da Huawei: Um Novo Concorrente Para TensorFlow E PyTorch?

Vídeo: MindSpore Da Huawei: Um Novo Concorrente Para TensorFlow E PyTorch?
Vídeo: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, Maio
Anonim

A Huawei anunciou que seu middleware MindSpore Deep Learning no estilo TensorFlow e PyTorch agora é de código aberto. Descubra neste artigo suas características mais importantes.

MindSpore da Huawei
MindSpore da Huawei

A Huawei acaba de anunciar que sua estrutura MindSpore para o desenvolvimento de aplicativos de IA está se tornando um código-fonte aberto e disponível no GiHub e Gitee. MindSpore é outra estrutura de Deep Learning para treinar modelos de rede neural, semelhante ao TensorFlow ou PyTorch, projetado para uso de Edge para Cloud, que oferece suporte a GPUs e, obviamente, processadores Huawei Ascend.

Em agosto passado, quando a Huawei anunciou o lançamento oficial de seu processador Ascend, MindSpore foi apresentado pela primeira vez, afirmando que “em uma sessão de treinamento baseada em ResNet-50 típica, a combinação de Ascend 910 e MindSpore é cerca de duas vezes mais rápida. Ao treinar modelos de IA versus outros cartões de aprendizagem importantes usando TensorFlow É verdade que muitas estruturas surgiram nos últimos anos e talvez MindSpore não seja nada mais do que um grupo que pode competir remotamente com TensorFlow (apoiado pelo Google) e PyTorch (apoiado pelo Facebook)

Arquitetura do sistema

O site MindSpore descreve que a infraestrutura consiste em três camadas principais: expressão de front-end, mecanismo gráfico e tempo de execução de back-end. A figura a seguir mostra um diagrama visual:

Imagem
Imagem

O primeiro nível do MindSpore oferece uma API Python para programadores. Como a linguística da linguagem em nossa comunidade é de fato Python, e de outra forma, MindSpore quer competir com PyTorch e TensorFlow. Com esta API, os programadores podem manipular modelos (treinamento, inferência, etc.) e processar dados. Este primeiro nível também inclui suporte para representação provisória de código (MindSpore IR), no qual muitas otimizações serão baseadas que podem ser realizadas em paralelização e diferenciação automática (GHLO).

Abaixo está a camada Graph Engine que fornece a funcionalidade necessária para criar e executar a diferenciação automática do gráfico de execução. Com MindSpore, eles optaram por um modelo de diferenciação automática diferente de PyTorch (que gera um gráfico de execução dinâmica) ou TensorFlow (embora a opção de criar um cronograma de execução estática mais eficiente tenha sido originalmente escolhida, agora também oferece uma opção de gráfico de execução dinâmica e permite uma versão estática do gráfico com o uso do decorador @ tf.function de sua API de baixo nível).

A escolha da MindSpore é converter o código-fonte para o formato de código intermediário (MindSpore IR) para aproveitar as vantagens dos dois modelos (para obter mais informações, consulte a seção “Separação automática” no site da MindSpore).

A camada final consiste em todas as bibliotecas e ambientes de tempo de execução necessários para dar suporte às várias arquiteturas de hardware nas quais o código será processado. Muito provavelmente, será um back-end muito semelhante a outros frameworks, talvez com recursos da Huawei, como bibliotecas como HCCL (Huawei Collective Communication Library), equivalente a NVIDIA NCCL (NVIDIA Collective Communication Library).

Suporte de visualização de treinamento

De acordo com o tutorial do MindSpore, embora seja impossível instalá-los e usá-los, eles têm o MindInsight para criar visualizações que lembram um pouco o TensorBoard, TensorFlow. Dê uma olhada em algumas capturas de tela que eles mostram em seu site:

Imagem
Imagem
Imagem
Imagem

De acordo com o manual, MindSpore atualmente usa um mecanismo de retorno de chamada (uma reminiscência de como é feito com Keras) para escrever (em um arquivo de log) no processo de treinamento de todos os parâmetros de modelo e hiperparâmetros que queremos, bem como o cronograma de computação quando a compilação da rede neural em código intermediário está completa.

Paralelismo

Em seu tutorial, eles falam sobre dois modos de paralelização (DATA_PARALLEL e AUTO_PARALLEL) e fornecem um código de amostra que treina o ResNet-50 com um conjunto de dados CIFAR para um processador Ascend 910 (que não consegui testar). DATA_PARALLEL se refere a uma estratégia comumente conhecida como paralelismo de dados, que consiste em dividir os dados de treinamento em vários subconjuntos, cada um deles executado na mesma réplica do modelo, mas em unidades de processamento diferentes. O suporte do Graph Engine é fornecido para paralelização de código e, em particular, para paralelismo AUTO_PARALLEL.

O modo AUTO_PARALLEL otimiza automaticamente a paralelização combinando a estratégia de paralelização de dados (discutida acima) com a estratégia de paralelização do modelo, na qual o modelo é dividido em partes diferentes e cada parte é executada em paralelo em unidades de processamento diferentes. Este modo automático seleciona a estratégia de paralelização que oferece os melhores benefícios, que podem ser lidos na seção Paralelo Automático no site MindSpore (embora não descrevam como as estimativas e decisões são feitas). Teremos que esperar para que a equipe técnica expanda a documentação e entenda mais detalhes sobre a estratégia de auto-paralelização. Mas está claro que essa estratégia de paralelização automática é crítica, e é aqui que eles devem e podem competir com TensorFlow ou PyTorch, obtendo um desempenho significativamente melhor usando processadores Huawei.

Roteiro planejado e como contribuir

Obviamente, há muito trabalho a ser feito e, neste ponto, eles simplificaram as ideias que têm em mente para o próximo ano no extenso roteiro apresentado nesta página, mas argumentam que as prioridades serão ajustadas de acordo com o usuário.

Comentários. No momento, podemos encontrar estas linhas principais:

  1. Suporte para mais modelos (modelos clássicos pendentes, GAN, RNN, Transformers, modelos de aprendizagem amplificados, programação probabilística, AutoML, etc.).
  2. Estenda APIs e bibliotecas para melhorar a usabilidade e experiência de programação (mais operadores, mais otimizadores, mais funções de perda, etc.)
  3. Suporte abrangente ao processador Huawei Ascend e otimização de desempenho (otimização de compilação, melhoria de utilização de recursos, etc.)
  4. Evolução da pilha de software e execução de otimizações de gráficos computacionais (melhorando a representação IV intermediária, adicionando recursos de otimização adicionais, etc.).
  5. Suporte para mais linguagens de programação (não apenas Python).
  6. Aprendizagem distribuída aprimorada com otimização de agendamento automático, distribuição de dados, etc.
  7. Aprimore a ferramenta MindInsight para tornar mais fácil para o programador "depurar" e melhorar o ajuste de hiperparâmetros durante o processo de aprendizagem.
  8. Progresso na entrega de funcionalidade de inferência para dispositivos no Edge (segurança, suporte para modelos não-plataforma via ONNX, etc.)

Na página da comunidade, você pode ver que a MindSpore tem parceiros fora da Huawei e da China, como a University of Edinburgh, Imperial College London, University of Munster (Alemanha) ou Paris-Saclay University. Eles dizem que seguirão um modelo de governança aberta e convidarão toda a comunidade a contribuir com o código e a documentação.

Conclusão

Após uma rápida primeira olhada, parece que as decisões corretas de design e implementação (como simultaneidade e diferenciação automática) podem adicionar espaço para melhorias e otimizações que alcançam um desempenho melhor do que as estruturas que desejam superar. Mas ainda há muito trabalho pela frente para capturar PyTorch e TensorFlow e, acima de tudo, construir uma comunidade, não só! Porém, todos nós já sabemos que com o apoio de uma grande empresa do setor como a Huawei, tudo é possível, ou era óbvio há três anos quando saiu a primeira versão do PyTorch (Facebook) que poderia estar perto do calcanhar do TensorFlow (Google)?

Recomendado: