![Notícias dos desenvolvedores: SvelteKit 2.0, pesquisa sobre estado de ferrugem e IA na Apple](https://optimuscloud.com.br/wp-content/uploads/2024/01/1706174792_Noticias-dos-desenvolvedores-SvelteKit-20-pesquisa-sobre-estado-de-ferrugem-150x150.jpg)
Notícias dos desenvolvedores: SvelteKit 2.0, pesquisa sobre estado de ferrugem e IA na Apple
25 de janeiro de 2024![Homenagem: Niklaus Wirth, 1934-2024](https://optimuscloud.com.br/wp-content/uploads/2024/01/1706175848_Homenagem-Niklaus-Wirth-1934-2024-150x150.png)
Homenagem: Niklaus Wirth, 1934-2024
25 de janeiro de 2024Os desenvolvedores tiveram que escolher entre a facilidade de uso do Python ou o alto desempenho de C, C++ ou Rust. Uma nova linguagem chamada Mojo visa oferecer aos desenvolvedores uma maneira de ter ambos – a facilidade de uso do Python e o alto desempenho.
“A maneira de ver isso é que o Mojo é um membro da família Python, que pega toda essa linguagem legal, compilador e outras tecnologias e traz o Python vários passos à frente”, disse o criador do Mojo e CEO da Modular Chris Lattner. “O que dizemos é que ele sobrecarrega o Python, dá superpoderes aos programadores de Python e permite que alguém que conhece Python seja capaz de aprender coisas novas e de expressar e conquistar novos caminhos sem ter que mudar para C++ para fazer isso.”
Lattner, que também escreveu Swift, admite que é um projeto ambicioso que tenta resolver algumas das complexidades em torno da inteligência artificial. Mojo combina a usabilidade do Python com o desempenho do C++ para desbloquear a programabilidade do hardware de IA e a extensibilidade dos modelos de IA, de acordo com seu site. São feitas comparações com Julia, que também foi escrita para alto desempenho.
“Um dos outros desafios que as pessoas que trabalham com aprendizado de máquina enfrentam é que há uma grande diferença entre a fase de pesquisa de um projeto e a fase de implantação da produção”, disse ele. “Na implantação de produção, as pessoas se preocupam muito com a eficiência e muito se você tem centenas de milhares, ou milhões ou bilhões de usuários (…) e por isso os pesquisadores sempre adoram Python, porque é super hackeável. E é dinâmico e flexível, por isso eles adoram Python. Mas o pessoal da produção adora C++.”
Resolvendo a complexidade do desenvolvimento de IA
Com o Mojo, a equipe Modular queria resolver parte da complexidade das implantações de IA, explicou Lattner. Se os desenvolvedores quiserem escrever para GPU – que é usado quando os modelos são treinados – eles terão que usar Cuda ou SYCL ou “um dos muitos outros sistemas realmente estranhos”, disse ele. Se os desenvolvedores quiserem escrever para uma CPU – que é usada para servir modelos de IA – então os desenvolvedores precisam conhecer C++. Mas se os desenvolvedores quiserem que as pessoas usem suas ferramentas, eles terão que construir no ecossistema Python, observou ele.
“O que percebemos é que na verdade existem três mundos muito diferentes, todos se unindo e a IA… está progredindo, mas está progredindo apesar dessa complexidade”, disse ele. “Ao longo do caminho, decidimos resolver o nosso problema, para podermos construir esta tecnologia de IA, precisamos construir uma nova linguagem de programação, e foi daí que veio o Mojo.”
A documentação do Mojo observa que a equipe da Modular AI queria “um modelo de programação inovador e escalável que pudesse ter como alvo aceleradores e outros sistemas heterogêneos que são difundidos no campo da IA”. A linguagem de programação precisava de metaprogramação poderosa em tempo de compilação, integração de técnicas de compilação adaptativas, armazenamento em cache em todo o fluxo de compilação e outros recursos que não são suportados pelas linguagens existentes, continuou.
A Modular, que foi fundada por Lattner e pelo líder de aprendizado de máquina do Google, Tim Davis, usou o Mojo para construir seu mecanismo de inferência, que inclui um compilador e um sistema de tempo de execução. A empresa lançou uma versão inicial interna do Mojo no ano passado. Ela o lançou publicamente para navegadores em maio deste ano e, em seguida, lançou um SDK Mojo para Ubuntu Linux e MacOS, com planos de lançar um SDK para Windows no futuro. Há também um playground online e uma extensão do Visual Studio Code para Mojo, o que significa que os desenvolvedores podem usar as funções de conclusão de código, formatação de código e depurador com Mojo.
O Mojo já tem mais de 100 mil usuários, acrescentou. Embora atualmente não seja de código aberto, o plano é torná-lo eventualmente.
Dando ‘superpoderes’ aos programadores Python
O caso de uso do Mojo é para o espaço de IA, mas Lattner disse que as pessoas estão falando sobre como usá-lo no backend com Django e potencialmente para desenvolvimento de jogos. Ainda é cedo, acrescentou ele, então resta saber como os desenvolvedores irão aproveitar o Mojo.
Mojo é um superconjunto do Python, explicou ele. Ele permite que alguém que conhece Python seja capaz de “conquistar novos caminhos” sem ter que mudar para C++.
“Uma das outras coisas realmente importantes sobre o Mojo é que ele funciona com todas as bibliotecas Python que já existem”, disse ele. “Isso significa que você não precisa reescrever tudo (ou) reaprender tudo.”
Mojo também pega emprestado de C++. Por exemplo, não força os desenvolvedores a usar tipos, embora quando tipos são usados, melhore o desempenho, disse Lattner. Outro exemplo: enquanto a comunidade Python está trabalhando para adicionar suporte para threads, o Mojo já oferece suporte nativo de uma forma “supereficiente”, acrescentou.
A IA usa GPUs no treinamento, mas quando o modelo é servido, isso é feito nas CPUs, explicou ele. A equipe da Modular trabalhou a partir de todos os recursos do hardware, em vez de tornar o Python um pouco melhor.
“O que isso significa é que dizemos: ‘O que o hardware pode fazer?’ O hardware tem muitos núcleos. Então você precisa de tópicos. Tem muito paralelismo para que você possa executar muitas operações ao mesmo tempo”, explicou. “Ele precisa ser acessado diretamente, como faz um compilador C, por meio de um compilador, em vez de ser um intérprete.”
Lattner trabalha em compiladores há décadas, acrescentou. A Modular baseou-se nessa experiência e “depois construiu o melhor compilador e pilha de tecnologia do mundo que pode realmente usar todos esses recursos interessantes e expô-los da maneira utilizável que os programadores Python gostam”, acrescentou Lattner.
Mojo também é mais rápido que Python, afirmou. Embora Modular diga que é 68.000 vezes mais rápido, esse número é um pouco “escolhido a dedo”, reconheceu ele, acrescentando que as pessoas na Internet relataram que é pelo menos 1.000 vezes mais rápido.
“Dentro de uma CPU, você obtém muitos desses recursos de acelerador agora. Você obtém vetores, o que lhe dá a capacidade de fazer mais de uma operação por vez, e o Mojo os expõe diretamente, então há um monte de coisas que têm sido muito comuns em mundos orientados para desempenho, mas que nunca existiram por muito tempo. por diferentes motivos na comunidade Python”, disse ele.
Mojo também dá aos desenvolvedores Python a chance de aprender novos recursos sem ter que aprender C++ ou abandonar Python, acrescentou.
“C++ é uma linguagem maravilhosa em muitos aspectos, mas também é antiga e cheia de arestas vivas e é muito desafiadora para as pessoas”, disse Lattner. “Um ponto importante disso é que podemos permitir que as pessoas continuem a crescer dentro de um ecossistema.”
A postagem Mojo combina a facilidade do Python com o desempenho do C++, Rust apareceu pela primeira vez em The New Stack.