Por que a Swift pode se tornar um grande evento em Deep Learning

Olá Habr! Apresento a você a tradução do artigo “Por que a Swift pode ser a próxima grande coisa no aprendizado profundo”, de Max Pechyonkin, que me interessou, na qual o autor discute o idioma em que o treinamento profundo será realizado nos próximos anos.

Se você está fazendo um treinamento aprofundado, provavelmente deve começar a aprender Swift

Entrada


Se você está programando, provavelmente quando ouve Swift, pensa em desenvolver aplicativos no iOS e no MacOS. Se você é um treinamento aprofundado, deve ter ouvido falar do Swift for Tensorflow (S4TF). Então você pode se perguntar: “Por que o Google criou uma versão do TensorFlow for Swift? Afinal, já existem versões para Python e C ++, então por que outra linguagem? ” Neste post, tentarei responder a essa pergunta e declarar as razões pelas quais você deve monitorar de perto o S4TF, bem como a própria linguagem Swift. Não tentarei fazer uma análise detalhada, apenas tentarei descrever o panorama geral com muitos links; se você estiver interessado, poderá se aprofundar.

Swift tem um apoio muito forte


Swift foi criado por Chris Luttner quando ele trabalhou na Apple. Agora, Chris trabalha para o Google Brain (uma das melhores equipes de pesquisa em inteligência artificial do mundo). O próprio fato de o criador da linguagem Swift estar agora trabalhando no laboratório, que está envolvido em um treinamento aprofundado, indica a seriedade desse projeto.

Há algum tempo, as pessoas no Google perceberam que, mesmo sendo Python e uma linguagem maravilhosa, ainda há muitas restrições difíceis de superar. Um novo idioma era necessário para o TensorFlow e, após muita deliberação, Swift foi escolhido como candidato. Não vou entrar em detalhes aqui, mas aqui está um documento que descreve as falhas do Python, bem como quais outras linguagens foram consideradas e como tudo se juntou no Swift.

Swift for TensorFlow é muito mais do que apenas uma biblioteca


O Swift para TensorFlow não é apenas TF para outro idioma. Este é essencialmente outro ramo (no sentido git ) da própria linguagem Swift. Isso significa que o S4TF não é uma biblioteca; é uma linguagem com suas próprias regras, com suas próprias funções internas que suportam todas as funcionalidades exigidas pelo TensorFlow. Por exemplo, o S4TF possui um sistema muito poderoso de diferenciação automática : é uma das coisas fundamentais no aprendizado profundo, é necessário para o cálculo de gradientes. Compare isso com o Python, no qual a diferenciação automática não é o principal componente da linguagem. Alguns recursos originalmente desenvolvidos como parte do S4TF foram posteriormente integrados à própria linguagem Swift.

Rápido rápido


Quando descobri que Swift é tão rápido quanto C, fiquei surpreso. Eu sabia que o C era altamente otimizado e permitia atingir uma velocidade muito alta, mas isso era devido ao gerenciamento de micro memória e, portanto, o C tinha problemas com a segurança da memória. Além disso, C não é tão fácil de aprender.

O Swift agora está rodando tão rápido quanto C nos cálculos numéricos, não tem problemas com a segurança da memória e é muito mais fácil de aprender. O compilador LLVM da Swift é muito poderoso e possui uma otimização muito eficiente, pois fornece velocidade de código muito rápida.

Você pode usar Python, C e C ++ no Swift


Como o Swift for machine learning está em um estágio muito inicial de seu desenvolvimento, muitas bibliotecas para MO não foram criadas para ele. Você não deve se preocupar muito com isso, pois o Swift tem uma incrível compatibilidade com o Python. Você simplesmente importa qualquer biblioteca Python para o Swift, e funciona. Você também pode importar as bibliotecas C e C ++ para o Swift (para C ++, é necessário garantir que os arquivos de cabeçalho sejam gravados em C puro, sem funções C ++).

Para resumir, se você precisar de uma funcionalidade específica, mas ainda não estiver implementada no Swift, poderá importar os pacotes Python, C ou C ++ apropriados.
Impressionante!

Swift pode ir muito baixo


Se você já usou o TensorFlow, provavelmente o fez com o pacote Python. Sob o capô, a versão Python da biblioteca TensorFlow usa o código C em um nível muito baixo. Portanto, quando você chama uma função no TensorFlow, em algum nível, usa algum código C. Isso significa que há um limite para a profundidade em que você pode verificar o código-fonte. Por exemplo, se você quiser ver como as convoluções são implementadas, não verá o código Python porque elas são implementadas em C.

Swift é diferente. Chris Luttner chamou Swift de " açúcar sintático para LLVM [linguagem assembly]". Isso significa que, de fato, o Swift trabalha quase diretamente com o hardware e, entre outras, não há outras linhas de código escritas em C. Isso também significa que o Swift é muito rápido, como descrevi acima. Isso tudo leva ao fato de que você, como desenvolvedor, pode verificar o código em níveis muito altos e muito baixos, sem a necessidade de usar C.

O que vem a seguir?


Swift é apenas uma parte das inovações de aprendizado aprofundadas que acontecem no Google. Há outro componente que também está fortemente conectado: MLIR , que significa representação intermediária multinível. O MLIR será uma infraestrutura unificadora de compilador que permitirá escrever código no Swift (ou em qualquer outro idioma) e compilá-lo em qualquer hardware de suporte. Agora, existem muitos compiladores para diferentes equipamentos de destino, mas o MLIR é capaz de mudar isso, além de permitir a reutilização do código, mas também escrever seus próprios componentes de compilador de baixo nível. Também permitirá que os pesquisadores usem o aprendizado de máquina para otimizar algoritmos de baixo nível.

Enquanto o MLIR atua como um compilador para aprendizado de máquina, também vemos a possibilidade de usar métodos de aprendizado de máquina em compiladores. Isso é especialmente importante, pois o número de engenheiros que desenvolvem bibliotecas numéricas não está crescendo tão rápido quanto a variedade de modelos ou hardware para aprendizado de máquina.

Imagine usar o aprendizado profundo para otimizar algoritmos de baixo nível para particionar memória em dados (o Halide está tentando resolver um problema semelhante). E este é apenas o começo, estamos aguardando muitas outras aplicações criativas usando aprendizado de máquina em compiladores.

Sumário


Se você está no campo do aprendizado profundo, provavelmente deve começar a aprender Swift. Isso trará muitas vantagens sobre o Python. O Google está investindo seriamente em tornar o Swift o principal componente de sua infraestrutura TensorFlow ML, e provavelmente o Swift se tornará uma linguagem de aprendizado aprofundada. Se você já está começando a aprender e usar o Swift, isso lhe dará a vantagem pioneira.

Source: https://habr.com/ru/post/pt457954/


All Articles