Explicação detalhada do Modular: Como o pai do LLVM cria a futura linguagem do mecanismo de IA?

Estrutura deste artigo

**1.O que é um compilador? **

2. Sobre Chris Lattner, o pai do LLVM

  • O que são XLA e MLIR *O que é LLVM?
  • O que é clang *A relação entre Clang e LLVM

3.Sobre Modular

  • Modular —— mecanismo de inteligência artificial
  • Sobre a TPU do Google
  • Sobre aprendizagem profunda e programabilidade
  • Quais são os desafios técnicos na construção do motor?

4. Sobre empreendedorismo, formação de equipes de engenharia e o futuro da IA

**1. O que é um compilador? **

Um compilador é uma ferramenta de software que traduz linguagens de programação de alto nível em código executável de computador. O compilador converte o código-fonte escrito pelo programador em instruções binárias que o computador pode entender e executar. Essas instruções são empacotadas em código executável. Arquivo ou biblioteca para executar programas em seu computador.

O principal fluxo de trabalho do compilador é código-fonte → pré-processador → compilador → código objeto → vinculador → programas executáveis (utables)

Outro exemplo vívido:

*Professor: Crianças, hoje estamos aprendendo adição. *

blá,blá,blá......

*Crianças: Professora, aprendemos. *

Professor: Agora você pode entender 1+1=? O compilador

2. Chris Lattner, o pai do LLVM

Antes de falar sobre Modular, vamos primeiro falar sobre a experiência de Chris Lattner. Ele nasceu na Califórnia em 1978 e cresceu na área da baía de São Francisco. Ele começou a programar quando era muito jovem. Mais tarde, formou-se em informática. ciências pela UC Berkeley e fez doutorado na Universidade de Stanford, com foco em otimização de compiladores e paralelização automática.

Chris Lattner liderou o desenvolvimento do LLVM durante seu doutorado. Por causa do LLVM, ele ganhou o 2012 ACM Software Award** (ACM Software Award)***. *Depois disso, Lattne foi contratado pela Apple e foi responsável por muitos projetos importantes na Apple, incluindo o design e desenvolvimento do front-end do compilador Clang, a linguagem de programação Swift (a linguagem que substituiu Objective-C), e a melhoria do ambiente de desenvolvimento Xcode. A linguagem Swift é muito popular por sua simplicidade e desempenho e é usada por desenvolvedores para desenvolvimento de aplicativos em iOS, macOS e outras plataformas Apple.

Depois de deixar a Apple, Chris Lattner trabalhou em empresas como Tesla e Google, e continuou a publicar artigos de pesquisa e participar de projetos de código aberto na área de linguagens de programação e tecnologias de compilador. Ele foi responsável por liderar a equipe de infraestrutura do Tensorflow. no Google., criou o XLA e o MLIR.

Aqui explicamos o que são XLA e MLIR:

XLA (Accelerated Linear Algebra) é um compilador de álgebra linear de domínio específico que pode acelerar os modelos do TensorFlow, potencialmente sem exigir quaisquer alterações no código-fonte. Pode melhorar a velocidade de execução e melhorar o uso de memória. ***

***MLIR (Multi-Level Intermediate Representation:Multi-Level Intermediate Representation) é uma estrutura de compilador. Seu design otimiza o compilador e basicamente cobre todas as partes comuns do design do compilador. , o que muito facilita os desenvolvedores de compiladores. *

**Mais importante, o que é LLVM? **(O texto a seguir foi extraído do breve livro, veja o link de referência do texto original)

**LLVM pode ser entendido como uma coleção de compiladores modulares e reutilizáveis e tecnologias de cadeia de ferramentas. LLVM (na verdade, o nome completo de Low Level Virtue Machine, mas nunca foi usado como uma máquina virtual) Portanto, o seguinte LLVM não é um acrônimo; é o nome completo do projeto.

Então continuamos, A arquitetura tradicional do compilador se parece com isto:

Desmontado, inclui:

  • Frontend: front-end (análise lexical, análise sintática, análise semântica, geração de código intermediário)
  • Otimizador: otimizador (otimização de código intermediário)
  • Backend: backend (gera código de máquina)

A arquitetura LLVM é assim

**Para descrevê-lo com precisão, o LLVM fez muitas inovações no compilador, como: **

  • Diferentes front-end e back-end usam código intermediário unificado LLVM Intermediate Representation (LLVM IR)
  • Se você precisa oferecer suporte a uma nova linguagem de programação, você só precisa implementar um novo front-end
  • Se precisar oferecer suporte a um novo dispositivo de hardware, você só precisará implementar um novo back-end
  • A fase de otimização é uma fase universal. Tem como alvo o LLVM IR unificado. Quer suporte novas linguagens de programação ou novos dispositivos de hardware, não há necessidade de modificar a fase de otimização.
  • Em contraste, o front-end e o back-end do GCC não são muito separados, e o front-end e o back-end estão acoplados. Portanto, torna-se particularmente difícil para o GCC apoiar um novo idioma ou uma nova plataforma alvo.
  • LLVM agora é usado como uma infraestrutura comum para implementar várias linguagens compiladas estáticas e em tempo de execução (família GCC, Java, .NET, Python, Ruby, Scheme, Haskell, D, etc.)

**O que é Clang? **

Um subprojeto do projeto LLVM, um front-end do compilador C/C++/Objective-C baseado na arquitetura LLVM. Comparado com o GCC, o Clang tem as seguintes vantagens

  • Velocidade de compilação rápida: Em algumas plataformas, a velocidade de compilação do Clang é significativamente mais rápida que a do GCC (a velocidade de compilação do OC no modo Debug é 3 vezes mais rápida que a do GGC)
  • Pequeno consumo de memória: A memória ocupada pelo AST gerado pelo Clang é cerca de um quinto da do GCC
  • Design modular: Clang adota um design modular baseado em biblioteca, que é fácil de integrar com IDE e reutilizar para outros fins.
  • As informações de diagnóstico são altamente legíveis: durante o processo de compilação, o Clang cria e retém uma grande quantidade de metadados detalhados (metadados), o que é benéfico para depuração e relatórios de erros.
  • O design é claro e simples, fácil de entender, fácil de expandir e aprimorar

Relacionamento entre Clang e LLVM

Para a arquitetura geral do LLVM, o clang é usado como front-end. LLVM em um sentido amplo refere-se a toda a arquitetura LLVM, e LLVM em um sentido geral estrito refere-se ao backend LLVM (incluindo otimização de código e geração de código de destino).

O código-fonte (c/c++) passa por clang--> código intermediário (após uma série de otimizações, Pass é usado para otimização) --> código de máquina

Referência: Jianshu-12 de agosto de 2018-Uma explicação simples para ajudá-lo a entender o que é LLVM

3. Sobre Modular

Modular —— Mecanismo de Inteligência Artificial

  • **C****hris Lattner sobre compiladores e empreendedorismo como Modular? **

C****hris Lattner:"Eu criei o Modular não com um martelo em busca de pregos, nem com inovação por inovação. Atualmente, para empresas como a OpenAI, um pequeno número de funcionários precisa gastar muito de tempo escrevendo manualmente kernels CUDA. No entanto, otimizações para compiladores de IA podem ser usadas para melhorar a colaboração de software e expandir as capacidades de pessoas com diferentes habilidades e conhecimentos"

**"A forma final do compilador é permitir que os usuários usem código assembly muito simples para concluir qualquer tarefa e resolver problemas sem precisar saber muito sobre o hardware. A verdadeira função do compilador é usar um nível de abstração mais alto para expressar. **"

*"*O FasterTransformer lançado pela NVIDIA pode trazer enormes melhorias de desempenho. Portanto, muitas grandes empresas e desenvolvedores de modelos estão usando o FasterTransformer. Porém, se você quiser inovar na área de Transformer, será limitado pelo FasterTransformer."

  • **Em outras palavras, o papel do compilador está na sua generalização. Como entender a generalização aqui? **

C****hris Lattner: Se você deseja obter resultados iguais ou melhores que o FasterTransformer, mas usando outras arquiteturas gerais (aqui arquiteturas não-Transformer), então, através do compilador, você pode obter o melhor de ambos Como resultado, o mesmo excelente desempenho pode ser obtido durante a pesquisa, ou seja, a otimização no nível do compilador pode ser equivalente a um "mecanismo de IA" e auxiliar na transformação da arquitetura LLM no futuro.

  • **Mojo é atualmente muito popular e é compatível com o ecossistema Python, mas o objetivo do Modular é construir um mecanismo de inteligência artificial unificado. Então, na sua perspectiva, quais são os problemas atuais que precisam ser resolvidos no campo da pesquisa e desenvolvimento da inteligência artificial? **

Chris Lattner: Se você voltar ao período de 2015, 2016 e 2017, o rápido desenvolvimento da inteligência artificial, a tecnologia daquela época foi liderada principalmente pelo TensorFlow e PyTorch. PyTorch apareceu um pouco depois do TensorFlow. , mas ambos são designs semelhantes em alguns aspectos. **No entanto, as pessoas que constroem e projetam sistemas TensorFlow e PyTorch são compostas principalmente por experiência em inteligência artificial, equações diferenciais e diferenciação automática. Eles não resolveram o problema de fronteira de software e hardware. **

Portanto, Keras* é necessário (Nota: Keras é uma biblioteca de rede neural artificial de código aberto escrita em Python. Ela pode ser usada como uma interface de programação de aplicativos de alto nível para Tensorflow, Microsoft-CNTK e Theano para realizar modelos de aprendizagem profunda. O design, depuração, avaliação, aplicação e visualização ) ou nn.Module (Nota: nn.Module * é um conceito exclusivo do PyTorch e também é uma classe que será frequentemente usado*)*.

A camada inferior dessas coisas são, na verdade, operadores. Como implementar convolução, multiplicação de matrizes, algoritmo de redução e operação elemento por elemento? Você precisa usar CUDA e Intel MKL (Intel Math Kernel Library) e continuar a desenvolver essas bases.

Este modelo é bom no início, mas o problema também existe. Existem muito poucos operadores no início. No entanto, desde que um novo hardware seja introduzido, mesmo que seja apenas uma nova variante de CPU introduzida pela Intel, a complexidade computacional irá continuam a aumentar., Hoje, TensorFlow e PyTorch têm milhares de operadores, cada um chamado de kernel, e todos os kernels precisam ser escritos manualmente por humanos.

(Nota: IP na indústria de chips geralmente também é chamado de núcleo IP. Núcleo IP refere-se ao design maduro de módulos de circuito com funções independentes no chip. Este design de módulo de circuito pode ser aplicado a outros designs de chip que contêm este módulo de circuito. projeto, reduzindo assim a carga de trabalho de design, encurtando o ciclo de design e melhorando a taxa de sucesso do design de chips. O design maduro deste módulo de circuito incorpora a sabedoria do designer e reflete os direitos de propriedade intelectual do designer. Portanto, a indústria de chips usa núcleos IP para Indica o design maduro deste módulo de circuito. O núcleo IP também pode ser entendido como o componente intermediário do design do chip)

Em outras palavras, uma vez lançado um novo hardware, você terá que reescrever milhares de Kernels, de modo que o limite para entrar no hardware ficará cada vez mais alto. Além disso, esta situação também cria muitas dificuldades para a pesquisa científica. Por exemplo, um pesquisador, muito poucos sabem como esses kernels funcionam.

(Observação: como o desenvolvimento do kernel geralmente é específico para plataformas de hardware, mesmo a nvidia não é universal, muito menos FPGA ou DPU. Os operadores personalizados são o principal canal para expandir as capacidades de computação do software da plataforma de hardware)

Você também deve saber que muitas pessoas agora estão escrevendo CUDA Kernel* (Nota: Kernel: o nome da função executada por CUDA na GPU)*, mas o perfil de habilidade dos engenheiros aqui é completamente diferente das habilidades que podem inovar o arquitetura modelo. **Como resultado, muitos sistemas de inteligência artificial enfrentam esse desafio: não conseguem encontrar especialistas técnicos que possam escrever o Kernel. **

*(Observação: *Ao usar GPU para cálculo, todos os processos de cálculo podem ser encapsulados em um kernel de GPU e executados na GPU de maneira sequencial. Por uma questão de versatilidade, as bibliotecas de operadores tradicionais irão O design é muito básico, então não há são muitos)

Sobre a TPU do Google

Participei do projeto TPU do Google quando estava no Google. Naquela época, os desafios enfrentados pela equipe TPU incluíam: Existem milhares de Kernels diferentes no mercado, como lançar um novo hardware? Naquela época, muitos colegas também mencionaram se um compilador poderia ser usado para fazer isso. **Então, em vez de escrever à mão milhares de Kernels, reescrever todos esses operadores e criar completamente seu próprio ecossistema como Intel ou NVIDIA, o compilador pode ser mais flexível que o manual porque o compilador pode nos permitir fazer isso de diferentes maneiras. e o Kernel correspondente também pode otimizar muito o desempenho. **

**Os compiladores podem conseguir isso de forma generalizada, mas se usarmos o Kernel tradicional escrito à mão, o resultado deve ser um arranjo fixo de Kernels que as pessoas considerem interessante, em vez de algo novo que os pesquisadores desejam. **Então, nasceu o XLA do Google (Explicado acima: Álgebra Linear Acelerada: Álgebra Linear Acelerada). O XLA pode suportar computadores de grande escala no nível exaflop, mas o problema volta: o XLA surgiu para oferecer suporte ao TPU do Google.

**É realmente difícil construir um compilador e ainda existem problemas de escalabilidade. Atualmente, engenheiros de compiladores devem ser contratados para concluir muitos projetos de engenharia de aprendizado de máquina, e engenheiros de compiladores que entendem de aprendizado de máquina e vários conhecimentos relacionados são ainda mais importantes. suficiente. Além disso, o XLA não é escalável e funciona apenas com TPUs. **

Sobre aprendizado profundo e programabilidade

Se olharmos para trás, para a história de desenvolvimento do CUDA e do aprendizado profundo da NVIDIA, como o nascimento do AlexNet e o desenvolvimento do aprendizado profundo, muitas pessoas acreditam que o nascimento do AlexNet é o resultado da combinação de dados, computação ImageNet + e o poder da GPU. **

(Nota: Em 2012, Alex Krizhevsky e ilya, alunos de Geoffrey Hinton, um dos três gigantes do aprendizado profundo e vencedor do Prêmio Turing, propuseram o AlexNet e venceram o campeonato com uma vantagem significativa no ILSVRC daquele ano, superando em muito o terceiro dois. Este resultado atraiu grande atenção da academia e da indústria, e a visão computacional entrou gradualmente em uma era dominada pelo aprendizado profundo)

**Mas muitas pessoas esquecem a importância da "programabilidade". **

Porque foi o CUDA que permitiu aos pesquisadores inventar kernels convolucionais que não existiam antes, e o TensorFlow não existia naquela época. **Na verdade, é a combinação de dados, computação e programabilidade que permite que novas pesquisas lancem uma onda inteira de sistemas de aprendizagem profunda. **

**Portanto, é muito importante aprender com os acontecimentos passados e a história. Então, como você dá o próximo passo? Como avançamos para a próxima era desta tecnologia, onde todos podem beneficiar das incríveis inovações e ideias algorítmicas da humanidade? **Como se beneficiar do compilador? Como você pode aproveitar a escala e a versatilidade dos compiladores para resolver novos problemas? **Mais importante ainda, como você se beneficia da programabilidade? Este é o Modular em que estamos trabalhando – o mecanismo de inteligência artificial. **

Sobre o futuro da inteligência artificial

  • **Como você vê o futuro do desenvolvimento da inteligência artificial? Você acha que haverá mais colaboração entre equipes com perfis ou direções diferentes? Um dos seus objetivos é facilitar o uso do compilador por especialistas que não são compiladores? **

**Chris Lattner: **Os seres humanos são incríveis, mas ninguém consegue colocar tudo na cabeça. **Pessoas de diferentes tipos e especialidades trabalhando juntas podem criar algo maior do que todos os outros. Por exemplo Por exemplo, tenho alguma habilidade , mas basicamente não consigo me lembrar de nenhuma equação diferencial, certo? Então o próximo inventor da arquitetura LLM definitivamente não serei eu (risos).

**Mas se eu pensar nisso de uma perspectiva sistêmica, se eu conseguir que essas pessoas contribuam, colaborem e entendam como essas coisas funcionam, haverá um avanço. **Como promover a invenção? Como fazer com que mais pessoas que entendem as diferentes partes do problema realmente colaborem? **Portanto, a exploração do Mojo e do motor é um esforço para eliminar a complexidade do problema. Porque existem muitos sistemas já construídos que são simplesmente agregados. **

As soluções aqui geralmente baseiam-se apenas na resolução do problema, em vez de serem projetadas de cima para baixo. E acho que o Modular fornece uma pilha mais simples que pode ajudar a reduzir a complexidade de toda a pilha. Se não for refatorado, ainda seguirá a história fragmentada e caótica* (fragmentação no campo da inteligência artificial)* Quando você quiser mude um pouco, você irá travar, o desempenho será péssimo ou não funcionará.Esta situação vem da fragmentação da camada subjacente.

  • **Como entender os compiladores: os compiladores e as linguagens são um meio para colaboração ou cruzamento humano? **

Chris Lattner: Criei o Modular não para procurar pregos com martelo, nem para inovar por inovação. Atualmente, para empresas como a OpenAI, um pequeno número de funcionários precisa gastar muito tempo escrevendo CUDA manualmente grãos. **No entanto, as otimizações para compiladores de IA podem ser usadas para melhorar a colaboração de software e expandir as capacidades de pessoas com diferentes habilidades e conhecimentos. **

A forma final do compilador é permitir que os usuários concluam qualquer tarefa e resolvam problemas usando código assembly muito simples, sem precisar saber muito sobre o hardware. O verdadeiro papel do compilador é ser capaz de executar tarefas em um nível mais alto de abstração. .Expresso. Os compiladores também são uma forma de automatizar adequadamente otimizações comuns que, de outra forma, poderiam exigir programação manual.

O primeiro objetivo é tornar o processo o mais simplificado possível;

O segundo objetivo é que, se você tirar muita complexidade da sua mente, poderá abrir espaço para novas complexidades. Além disso, por meio da abstração, você pode tirar vantagem do compilador - porque o compilador tem atenção infinita aos detalhes, enquanto os humanos não;

**Níveis mais elevados de abstração também podem nos proporcionar muitas outras habilidades. **Sistemas de aprendizagem profunda e modulares elevaram os cálculos ao nível gráfico. Como explicar isso? Aqui, significa que uma vez que você se liberte de instruções de programação complexas, como loops for, e se torne mais declarativo, significa mudar o modelo de cálculo. Muita gente ainda não percebeu isso, mas acho que é possível. Como o sistema existente é fácil de causar dores de cabeça, muitas funções fornecidas pela abstração são para implementar Pmap e Vmap (Nota: Essas duas funções incluem derivação automática e paralelização)

O aprimoramento da tecnologia se beneficiou de um grande número de sistemas bem estruturados e bem estruturados, de um grande número de novos hardwares de computação de alto desempenho e de um grande número de avanços que foram feitos. ** Portanto, espero sinceramente que Modular pode ser mais ampla aplicação e popularidade, quebrando a complexidade da série, isso é maravilhoso. **

(Nota: A maior diferença entre a programação declarativa e a programação comum é que existe um conceito adicional de tempo. Você pode definir o passado, o presente e o futuro, em vez de manter o tempo unidirecional de todo o link de execução. Com o conceito de tempo, o conteúdo da definição pode ser simplificado, e então o gráfico de cálculo pode ser obtido através de "dedução", em vez de escrever um operador aqui e um operador ali, e montar um gráfico estático)

  • **Você pode definir o mecanismo de inteligência artificial, a estrutura de inteligência artificial e o compilador de inteligência artificial do Modular? **

Chris Lattner: A maioria das pessoas usará ferramentas como PyTorch ao treinar modelos grandes. Nesse cenário, CUDA ou Intel MKL serão introduzidos em breve. Eu chamo esses tipos de mecanismos coletivamente e menciono Para o mecanismo, ele principalmente refere-se à interface de hardware, e Modular fornece um novo mecanismo que pode introduzir TensorFlow, PyTorch e outros. Em seguida, os usuários podem conduzir operações e realizar programação de hardware de uma nova maneira, com base na abstração correta. , você pode produzir implementações interessantes.

  • **De acordo com sua definição, Modular é baseado entre a camada de framework e a camada de hardware. Então queremos saber os petaflops (número de operações de ponto flutuante que podem ser realizadas por segundo) do Modular no A100, mas descobri que o site é todo CPU e não vejo a GPU. Minha pergunta é: todos estão trabalhando duro para tornar a GPU mais rápida, então por que você quer fazer a CPU funcionar primeiro? **

Chris Lattner: Pensando desde os primeiros princípios, temos que começar de baixo. Como você define os sistemas de inteligência artificial atuais? Muitas pessoas falam sobre GPU todos os dias e discutem sobre GPU, parece que tudo está relacionado a GPU. No entanto, a inteligência artificial é, na verdade, um problema de computação paralela, heterogêneo e em grande escala. Portanto, a inteligência artificial tradicional começa com o carregamento de dados, e a GPU não carrega dados, então você deve realizar uma série de tarefas como carregamento de dados, pré-processamento e rede, além de um grande número de cálculos matriciais.

Para acionar a GPU, é definitivamente necessária uma CPU. Quando desenvolvemos software para o Accelerator, descobriremos que existem vários problemas, e o que os desenvolvedores consideram importante é uma parte importante do problema que desejam resolver. Então, todos construíram um sistema baseado no problema, e ele teve que ser projetado totalmente de acordo com os requisitos do chip. **

**Do ponto de vista técnico, a Modular quer construir um compilador universal, porque é fácil passar do universal para o vertical, mas minha experiência com o XLA é que não é viável começar com algo especializado e depois generalizar. . **

Para a indústria de inteligência artificial, a escala de treinamento é diretamente proporcional ao tamanho da equipe de pesquisa, enquanto a escala de inferência é diretamente proporcional à escala do produto, à base de usuários, etc. **Portanto, muitas inferências ainda são feitas na CPU. Portanto, decidimos começar com a CPU e melhorar primeiro a arquitetura. A CPU é mais fácil de usar e não ficará indisponível. Depois que a arquitetura geral estiver concluída, podemos continuar a expandir. Então atualmente também estamos trabalhando em GPUs, que serão lançadas em breve, e serão expandidas para esses diferentes tipos de Aceleradores ao longo do tempo. **

  • **Quais são os desafios técnicos na construção do motor? **

Chris Lattner: Os membros de nossa equipe foram basicamente expostos a todos os compiladores e entidades relacionadas do setor. Por exemplo, participei de pesquisas sobre XLA e TensorFlow, e também há membros de PyTorch, TVM, Intel OpenVINO e Onyx Runtime. O desafio para todos é que muitos dos sistemas foram projetados há cinco ou oito anos. A inteligência artificial daquela época era diferente de agora: não existia um grande modelo de linguagem.

**O problema é que quando você constrói um sistema, ele começa como um monte de código e depois fica cada vez maior. E quanto mais rápido um sistema evolui, mais difícil é fazer mudanças fundamentais. Então optamos por fazer tudo de novo do zero. **

Se você ainda quiser escrever o Kernel manualmente, primeiro faremos um protótipo dele em C++ e, em seguida, introduziremos gradualmente o mojo, o que significa que você pode construir um compilador de fusão automática muito complexo que aplica todas as tecnologias mais avançadas e também supera os mais avançados.Tecnologia.

Sabemos que os usuários odeiam as limitações de forma estática e a falta de programabilidade. Por exemplo, eles não querem ficar vinculados apenas ao Tensor* (Nota: o Tensor é na verdade uma matriz multidimensional, com o propósito de criar matrizes e vetores de dimensões superiores. Muitos modelos grandes têm Tensores irregulares)*

  • **Há algum objetivo de design para Modular? Ou princípio? **

Chris Lattner: Não sei se tenho um conjunto sistemático de princípios. Parece que ter um conjunto de princípios é como segurar um martelo e ver que tudo é um prego. **Mas muito do que temos que fazer é desbloquear o potencial do hardware e fazê-lo de uma forma que seja super fácil de usar. Portanto, muitas das condições iniciais têm menos a ver com permitir coisas novas e mais com a resolução de problemas complexos na realização de tarefas, por isso é mais como design e engenharia. **

Se você conversar com uma empresa LLM, é fácil descobrir que eles gastaram mais de 200 milhões de dólares americanos em GPU e GPU A100 de um tamanho de memória específico.**Todo mundo deseja obter todas as possibilidades por meio de GPU (poder de computação). Por um lado, há muitas pessoas que querem entrar no chip e desbloquear o potencial, mas há muitas outras que querem mais portabilidade, generalidade e abstração. **

O desafio aqui, portanto, é como habilitar e projetar o sistema para alcançar a abstração por padrão, sem abrir mão de todas as funcionalidades. Da mesma forma, muitos compiladores, especialmente compiladores de aprendizado de máquina, basicamente tentam cobrir um ponto específico no espaço, e suas funções não são universais.

Outra coisa é que nos preocupamos com os usuários, porque muitas pessoas são obcecadas por tecnologia, mas esquecem que os retratos de quem aplica tecnologia e de quem cria tecnologia são completamente diferentes. Precisamos entender as ideias dos desenvolvedores que usam ferramentas.

  • **O Modular acaba de ser lançado para download e uso com base no Linux Mojo nos últimos dias. Versões para MacOS e Windows serão lançadas em breve. Então, quais outros kits de ferramentas e componentes estarão disponíveis nos próximos seis a nove meses a partir de agora? **

**Chris Lattner:**Mojo ainda é uma linguagem jovem e trabalharemos gradativamente com o ecossistema para torná-lo cada vez mais maduro. Queremos ter uma grande comunidade em torno do Mojo para construirmos coisas legais juntos. Para atingir esse objetivo, abriremos gradualmente o código do Mojo, e todos devem trabalhar juntos para resolver muitos detalhes para construir um ecossistema que funcione bem, e não apenas uma bagunça.

Assim como o desastre do Python 2-3 que todos vivenciaram, ninguém quer se lembrar dele* (Observação: mais de 80% das duas sintaxes são incompatíveis e, devido a problemas históricos, muitas distribuições Linux dependem de py2 na parte inferior, mas o usuário usou acidentalmente o py3 e pip install xxx travou o sistema). *

**P: Qual é a sua relação com Guido (*****Nota: engenheiro holandês Guido van Rossum, que inventou a linguagem Python) e a Python Foundation? Como eles estão relacionados entre si? **

Chris Lattner: Guido sabia que Mojo estava chegando e Guido passou muito tempo com nossa equipe, e nos sentimos muito sortudos. Ele ocasionalmente aparece na comunidade Discord mojo e me faz perguntas difíceis, o que é incrível.

Acreditamos que mojo é um membro da família Python. Claro, existem muitos membros da família Python, incluindo PyPy e Cython, etc. Esperamos que Python possa continuar a se desenvolver e adicionar novos conteúdos. Mojo também continua a crescer e adicionar novos conteúdos.

Volte 30 ou 40 anos atrás, quando existia a linguagem C, e então uma coisa nova chamada C++ apareceu em 1983. C++ é na verdade a linguagem C com classes (Nota: Em 1979, Bjame Sgoustrup foi para Bell Labs e começou a transformar C em uma linguagem com aulas. Em 1983, a linguagem foi oficialmente chamada de C++)

O que aconteceu na época foi que C e C++ começaram como duas comunidades diferentes, mas havia muita convergência, compartilhamento de ideias e troca de ideias entre elas.

É claro que todos os recursos da linguagem C foram eventualmente integrados ao C++. Então espero que a mesma coisa aconteça com Mojo e Python.

Sobre empreendedorismo e formação de equipes de engenharia

  • **Houve muitos fundadores como você que tiveram carreiras longas e incríveis como engenheiros. De repente, é CEO. Então, o que você aprendeu sobre construir equipes e treinar outras pessoas? Principalmente depois de se tornar engenheiro, agora você também tem que ser líder de produto e responsável pelo financiamento. **

**Chris Lattner:**Na Modular, meu cofundador Tim e eu temos um relacionamento muito próximo e somos muito complementares. No processo de abertura de um negócio, ter alguém com quem conversar é muito, muito importante. O que estou vivenciando agora é algo que nunca experimentei como líder de engenharia no Google e na Apple.

**Quando iniciamos esta empresa, nossa crença era compreender a dor. Representar uma grande empresa é diferente de representar uma empresa start-up. Quando a empresa start-up estiver realmente estabelecida, eu serei o líder de engenharia e começarei a formar uma equipe de engenharia, enquanto Tim será responsável pelo trabalho de produto e negócios, e será responsável pelo trabalho na ausência de uma grande empresa.Comunicar-se com diferentes empresas (clientes) sob a aura da fábrica. Por exemplo, quais são seus pontos fracos atuais? **

No que você está trabalhando atualmente? Quais são os desafios? Como podemos ajudar? O que você acha do que estamos fazendo? Como Modular, o desafio que enfrentamos é que o que queremos construir é realmente um problema técnico super difícil e muito abstrato.

**Para resolver esses problemas difíceis, é necessária a contratação de especialistas técnicos muito caros de todas as grandes empresas de tecnologia. Portanto, devo arrecadar muitos fundos, motivar bem os funcionários, pagar-lhes salários e fazer com que os funcionários se sintam confortáveis. **

Enfrentamos os clientes diretamente e vemos a dor dos clientes no campo da inteligência de IA. Construir e implantar muitas coisas é realmente uma bagunça, e todos estão presos por muitas coisas ineficazes. Portanto, nossa visão é unificar todas essas coisas com o Modular.

Mas o problema surge novamente: durante o desenvolvimento de produtos, os produtos também mudam constantemente e as necessidades continuarão a mudar com o tempo. Então, as equipes com as quais trabalhamos acabaram com um nível de complexidade muito alto, com muitos sistemas confusos e diferentes desenvolvidos para diferentes casos especiais.

  • **Experiência como Líder de Engenharia: Ampla experiência na construção de equipes e recrutamento de engenheiros. Você tem alguma experiência ou sugestão em gerenciamento de projetos? **

Chris Lattner: Meu trabalho é ajudar a equipe a vencer. Você tem que definir o que é vencer, dar às pessoas uma visão clara, um objetivo claro e manter todos alinhados. **Quando você tem um grupo grande de pessoas muito boas pessoas ao seu redor Quando todos querem ser heróis, um objetivo claro é muito importante. Quando a energia potencial é sobreposta, um grande progresso será feito rapidamente, mas quando for invertido, o impulso será compensado. **

Internamente, muitas vezes estou pessoalmente envolvido ajudando a construir a infraestrutura inicial e é importante mostrar à equipe como isso vai funcionar, e isso faz parte da nossa cultura. O mais importante para mim na equipe de engenharia é a velocidade de implementação, se você esperar 24 horas ou três semanas para rodar o CI, tudo ficará mais lento.

Ao contratar e à medida que continua a desenvolver seus funcionários, você também quer determinar no que os funcionários são bons, certo? Eu realmente acredito que se você tem uma equipe de pessoas realmente boa e apaixonada e os une com algo que eles realmente querem fazer, eles têm superpoderes.

Muitas vezes, queremos ter certeza de que as pessoas estão resolvendo os problemas certos. Dessa forma, eles podem crescer, fazer coisas, impulsionar e tomar decisões de forma independente. Mas muitas vezes, as pessoas estarão muito focadas no produto, ou algumas são particularmente boas em fazer negócios, concentrando-se nos clientes e nos problemas que os clientes encontram. Mas você não pode resolver e construir um produto sem uma equipe.

**Gosto muito do Tim porque ele é muito bom em áreas nas quais não sou muito bom e todos estão aprendendo uns com os outros. **

Sobre ChatGPT e Inteligência Artificial

O surto do ChatGPT é super interessante. Para pessoas como nós, que prestam atenção à inteligência artificial há muito tempo, o ChatGPT significa uma espécie de inovação na interface do usuário e faz com que as pessoas percebam o poder da inteligência artificial. Olhando para trás, penso que isto elevou o perfil da IA na consciência pública durante vários anos.

**Qual é o mistério não resolvido mais interessante no campo da inteligência artificial? **

Chris Lattner: Acho que a inteligência artificial está na adolescência neste momento. Existem muitas pessoas inteligentes com ideias diferentes sobre o que é IA, certo? Algumas pessoas pensam que tudo deveria ser redes neurais ponta a ponta e que o software deveria desaparecer. Acho que a pergunta a ser respondida é: qual é o equilíbrio entre algoritmos de treinamento e algoritmos de design inteligente? Pessoalmente, não acho que seja tudo uma coisa ou outra. Se você deseja construir um detector de gatos, a CNN é realmente uma boa maneira de fazê-lo. Se você deseja escrever um gerenciador de inicialização ou sistema operacional, implementá-lo com um loop for funciona perfeitamente. **Mas onde essas coisas serão eliminadas ao longo do tempo? Como podemos fazer com que os desenvolvedores de aplicativos pensem de forma mais consistente sobre essas apresentações? **

**Nossa aposta para o futuro é que a IA eventualmente se tornará parte do conjunto de ferramentas de como as pessoas pensam sobre como construir aplicativos como metodologia de desenvolvimento de software. Não apenas aplicativos para iPhone ou formulários semelhantes, mas também todo o serviço em nuvem, pipeline de dados e, em última análise, construção iterativa de todo o produto do usuário.É claro que ainda estamos no caminho da exploração. **

*ObrigadoEvolution of Technology Life** a todos os meus amigos pelo apoio contínuo ao autor ao longo dos anos, e obrigado à ChaosAI**

*Obrigado a Dakai, AsyncGreed, Zhang Bo, Mao Li, Ethan e Mew pela ajuda profissional

referências:

1.

2. Referência: A que se refere o IP na indústria de chips? -Xin Analects-O céu está alto e as nuvens estão escuras Andi863

3.Página inicial de Chris Lattner (nondot.org)

4.nn.funcional e nn.Módulo - Liang Yun 1991 Algorithm Food House 10/07/2020 21:47

5. Referência: Jianshu-12 de agosto de 2018-Uma explicação simples para ajudar você a entender o que é LLVM

Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
  • Recompensa
  • Comentar
  • Republicar
  • Partilhar
Comentar
0/400
Nenhum comentário
  • Pino
Negocie cripto em qualquer lugar e a qualquer hora
qrCode
Digitalizar para transferir a aplicação Gate
Novidades
Português (Portugal)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)