Simple Science

Ciência de ponta explicada de forma simples

# Informática# Linguagens de programação# Inteligência Artificial

Apresentando Modelos de Compiladores LLM para Otimização de Código

Novos modelos melhoram a eficiência do código de software e o desempenho do compilador.

― 6 min ler


Modelos de Compilador LLMModelos de Compilador LLMpara Otimizaçãoas capacidades do compilador.Revolucionando a eficiência do código e
Índice

Modelos de linguagem grandes (LLMs) mostraram ser muito bons em várias áreas do desenvolvimento de software, incluindo programação. No entanto, o uso deles para melhorar o desempenho de código e compiladores ainda não foi totalmente explorado. Treinar esses modelos exige muita potência de computação e dados, o que pode ser demais para muitos Pesquisadores. Para preencher essa lacuna, apresentamos um novo conjunto de modelos pré-treinados projetados para otimizar código. Esses modelos são baseados em tecnologia existente e melhoram a compreensão de linguagens de programação e métodos de Otimização.

Visão geral do Compilador LLM

Essa nova família de compiladores foi treinada com uma quantidade enorme de dados, especificamente tokens de linguagem de programação, para entender e otimizar código. Ela foca em duas tarefas principais: deixar o código menor e converter Código de Montagem de volta para linguagens de nível mais alto. Os modelos vêm em dois tamanhos, tornando-os acessíveis para vários usos em pesquisa e indústria.

Importância das Tarefas de Engenharia de Software

Há um interesse crescente em usar LLMs para tarefas de engenharia de software como gerar código, traduzir código entre linguagens e testar código. Muitos modelos existentes podem sugerir prováveis conclusões para código incompleto, ajudando desenvolvedores a editar e criar software. No entanto, esses modelos geralmente não focam em otimizar o próprio código. Quando solicitados, eles podem fazer pequenas mudanças, mas frequentemente cometem erros que levam a códigos incorretos.

Abordagens Anteriores para Otimização de Código

Tentativas anteriores de usar aprendizado de máquina para otimização de código empregaram vários métodos, incluindo características feitas à mão e técnicas mais novas como redes neurais gráficas. No entanto, esses métodos têm limitações, pois podem perder informações essenciais sobre o código, levando a representações incompletas. Em contraste, LLMs usam um formato de texto completo que é fácil de trabalhar, tornando-o uma escolha melhor para tarefas de otimização.

Desafios no Treinamento de Modelos

Treinar LLMs requer recursos extensivos, consumindo milhões de horas de GPU e grandes quantidades de dados de treinamento. Esse custo pode impedir que pesquisadores avancem ainda mais na área, já que muitos não têm acesso aos recursos necessários. Para resolver esse problema, estamos liberando modelos que já foram treinados para entender representações de compiladores e realizar otimizações com dados adicionais mínimos.

Processo de Treinamento dos Modelos

O processo de treinamento envolve duas etapas principais. Primeiro, os modelos são treinados com uma quantidade substancial de código de montagem e representações intermediárias do compilador (IRs). Em seguida, eles passam por um ajuste fino através de um conjunto de dados personalizado que os ajuda a aprender como otimizar código de forma eficaz. O objetivo final é fornecer uma base sólida para pesquisadores e desenvolvedores na área de otimização de código.

Técnicas de Otimização de Código

Otimizar flags de compilador é uma técnica bem conhecida que afeta tanto o desempenho quanto o tamanho do código. Nossos modelos são treinados para prever as melhores flags para a ferramenta de otimização LLVM IR para minimizar o tamanho do código. Isso é crucial porque encontrar a configuração ideal pode reduzir significativamente o tempo de execução e o uso de recursos.

Desmontando Código

Outra função vital desses modelos é a capacidade de converter código de montagem de volta para LLVM IR. Essa tarefa é importante para realizar otimizações adicionais e atualizar códigos mais antigos para se adaptarem a sistemas mais novos. Estudos anteriores tentaram usar aprendizado de máquina para descompilação, mostrando potencial em gerar código legível e preciso a partir de binários. Nossos modelos expandem esse trabalho ao aprender a relação entre código de montagem e IR.

Garantindo Correção

Quando se usa esses modelos, a correção é fundamental. Um método chamado round-tripping é usado para verificar se o IR levantado é preciso. Se o IR puder ser compilado de volta para o mesmo código de montagem do qual foi originalmente criado, o processo é considerado correto. Isso ajuda a garantir que o código gerado pelo modelo atenda aos padrões esperados.

Desempenho dos Modelos

Os modelos são avaliados usando várias métricas, incluindo sua capacidade de otimizar o tamanho do código e desmontar código com precisão. Em testes, os modelos demonstraram uma redução significativa no tamanho do código comparado a métodos tradicionais de otimização. Além disso, eles conseguiram gerar uma desmontagem correta em muitos casos, mostrando sua eficácia em entender código.

Avaliação Comparativa

Quando comparados a modelos existentes, nossos modelos de Compilador LLM se saíram melhor tanto em tarefas de otimização quanto em tarefas de desmontagem. A capacidade deles de manter uma compreensão poderosa das estruturas do compilador e do código de montagem os diferencia de esforços anteriores na área.

Conclusão

Em conclusão, a introdução dos modelos de Compilador LLM oferece a pesquisadores e desenvolvedores novas ferramentas para melhorar a eficiência e o desempenho do código. Ao aproveitar os últimos avanços em modelos de linguagem, esses modelos oferecem uma solução econômica e escalável para enfrentar os desafios complexos da otimização de código e do desempenho do compilador.

Ao tornar esses modelos amplamente disponíveis, esperamos incentivar mais pesquisas e desenvolvimentos nesta área, ampliando os limites do que pode ser alcançado com LLMs em engenharia de software.

Direções Futuras

Embora os modelos atuais mostrem promessas, ainda há mais trabalho a ser feito. Esforços futuros podem se concentrar em aumentar a capacidade dos modelos de lidar com trechos de código mais longos, o que continua sendo uma limitação na aplicação da tecnologia. Além disso, melhorar a correção das saídas dos modelos será crucial para aplicações no mundo real, garantindo que qualquer código gerado ou otimizado atenda aos altos padrões necessários para uso em produção.

O objetivo é continuar refinando esses modelos e seus processos de treinamento para desbloquear ainda mais potencial no campo da otimização de código e compiladores.

Fonte original

Título: Meta Large Language Model Compiler: Foundation Models of Compiler Optimization

Resumo: Large Language Models (LLMs) have demonstrated remarkable capabilities across a variety of software engineering and coding tasks. However, their application in the domain of code and compiler optimization remains underexplored. Training LLMs is resource-intensive, requiring substantial GPU hours and extensive data collection, which can be prohibitive. To address this gap, we introduce Meta Large Language Model Compiler (LLM Compiler), a suite of robust, openly available, pre-trained models specifically designed for code optimization tasks. Built on the foundation of Code Llama, LLM Compiler enhances the understanding of compiler intermediate representations (IRs), assembly language, and optimization techniques. The model has been trained on a vast corpus of 546 billion tokens of LLVM-IR and assembly code and has undergone instruction fine-tuning to interpret compiler behavior. LLM Compiler is released under a bespoke commercial license to allow wide reuse and is available in two sizes: 7 billion and 13 billion parameters. We also present fine-tuned versions of the model, demonstrating its enhanced capabilities in optimizing code size and disassembling from x86_64 and ARM assembly back into LLVM-IR. These achieve 77% of the optimising potential of an autotuning search, and 45% disassembly round trip (14% exact match). This release aims to provide a scalable, cost-effective foundation for further research and development in compiler optimization by both academic researchers and industry practitioners.

Autores: Chris Cummins, Volker Seeker, Dejan Grubisic, Baptiste Roziere, Jonas Gehring, Gabriel Synnaeve, Hugh Leather

Última atualização: 2024-06-27 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2407.02524

Fonte PDF: https://arxiv.org/pdf/2407.02524

Licença: https://creativecommons.org/licenses/by/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais de autores

Artigos semelhantes