模型简介
模型特点
模型能力
使用案例
🚀 Meta大语言模型编译器(LLM Compiler)
Meta大语言模型编译器(LLM Compiler)是一款用于编译器优化的先进大语言模型。它基于Code Llama构建,在代码优化和编译器推理方面表现出色,免费供研究和商业使用。
🚀 快速开始
若要使用此模型,请确保安装transformers
:
pip install transformers accelerate
使用模型编译器功能的示例代码可在 llm_compiler_demo.py 中找到。
以下代码展示了默认功能。你可能需要设置HuggingFace访问令牌 - 请参阅 (https://huggingface.co/docs/hub/security-tokens)。
from transformers import AutoTokenizer
import transformers
import torch
model = "facebook/llm-compiler-7b-ftd"
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
"text-generation",
model=model,
torch_dtype=torch.float16,
device_map="auto",
)
sequences = pipeline(
'%3 = alloca i32, align 4',
do_sample=True,
top_k=10,
temperature=0.1,
top_p=0.95,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200,
)
for seq in sequences:
print(f"Result: {seq['generated_text']}")
✨ 主要特性
- 性能卓越:基于Code Llama构建,在代码优化和编译器推理方面性能提升。
- 免费使用:免费供研究和商业使用。
- 两种版本:
- LLM Compiler:基础模型,在超过5000亿个LLVM - IR、x86_84、ARM和CUDA汇编代码的标记上进行预训练,用于预测LLVM优化效果。
- LLM Compiler FTD:进一步微调,用于预测LLVM汇编代码的最佳优化以减小代码大小,以及将汇编代码反汇编为LLVM - IR。
- 理解深刻:对编译器优化的理解远超现有公开可用的大语言模型,20%的时间能完美模拟编译器。
- 效果出色:LLM Compiler FTD在代码大小优化和反汇编任务上达到了最先进的结果。与GPT - 4 Turbo相比,在代码大小优化上比 - Oz提高了5.24%(GPT - 4 Turbo为0.03%),在反汇编上的往返BLEU分数达到0.96(GPT - 4 Turbo为0.43)。
📦 安装指南
使用此模型前,请确保安装transformers
和accelerate
:
pip install transformers accelerate
💻 使用示例
基础用法
from transformers import AutoTokenizer
import transformers
import torch
model = "facebook/llm-compiler-7b-ftd"
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
"text-generation",
model=model,
torch_dtype=torch.float16,
device_map="auto",
)
sequences = pipeline(
'%3 = alloca i32, align 4',
do_sample=True,
top_k=10,
temperature=0.1,
top_p=0.95,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200,
)
for seq in sequences:
print(f"Result: {seq['generated_text']}")
📚 详细文档
模型工作原理
LLM Compiler是Code Llama的专业化版本,是一个使用深度学习进行代码优化的前沿工具。它在大量的LLVM汇编(IR)、x86_64、ARM和CUDA汇编代码上进行了预训练。给定一段LLVM汇编和opt
(LLVM优化器)的一系列优化传递,它可以预测代码大小的变化以及应用这些优化后输出代码的样子。在很多情况下,它能够完美复制优化编译器的输出。
此外,为了展示其解决复杂编译器优化问题的能力,LLM Compiler针对两个特定的下游任务进行了微调:
- 给定一段LLVM汇编代码,预测
opt
使用的最佳优化传递以最小化代码大小。 - 从一段x86_64或ARM汇编代码生成LLVM IR。
我们发布了70亿和130亿参数两种大小的LLM Compiler模型,模型训练时的上下文窗口为16000个标记。这两种模型满足不同的服务和延迟要求,例如70亿参数的模型可以在单个GPU上运行,更适合低延迟要求的任务,而130亿参数的模型能返回最佳结果。
模型性能
我们在保留测试集上测试了LLM Compiler模型在模拟编译器转换、预测最佳传递列表和反编译中间表示方面的性能,并将其与Code Llama和GPT - 4进行了比较。
在模拟编译器优化能力方面,我们给模型提供未优化的中间表示样本和随机生成的优化列表,然后要求模型生成应用优化后的相应IR。LLM Compiler在20%的情况下能逐字符匹配预期的汇编,而Code Llama由于对IR了解甚少,无法达到较高的准确率。
在优化IR代码大小方面,我们让模型为给定的未优化IR生成传递列表,然后使用opt
对特定程序进行优化并记录二进制大小。只有LLM Compiler FTD模型比 - Oz有改进,130亿参数的模型在61%的情况下生成的目标文件更小。
在反汇编性能方面,我们给模型提供x86汇编代码并要求生成相应的IR,然后将模型生成的反汇编IR再转换回汇编。LLM Compiler FTD 13B在往返汇编(往返BLEU)方面的准确率最高,最常产生完美的反汇编结果。而Code Llama Instruct和GPT - 4 Turbo在生成语法正确的LLVM - IR方面存在困难。
模型发布
Meta坚信人工智能模型,尤其是用于编码的模型,采用开放策略能促进创新和安全。通过发布LLM Compiler等模型,整个社区可以探索其潜力,发现问题并修复漏洞。模型权重可在Hugging Face上获取。
负责任使用
我们的研究论文深入介绍了LLM Compiler的开发过程、基准测试方法以及模型的局限性,还讨论了遇到的问题和采取的缓解措施。建议开发者使用特定于编译器的评估基准来评估模型,由于编译器并非无缺陷,任何建议的编译器优化都必须经过严格测试。当模型反汇编汇编代码时,应确认其准确性。
生成式AI优化的未来
LLM Compiler旨在支持编译器研究人员和工程师,但仍有许多用例有待支持。我们希望LLM Compiler能激发更多人利用大语言模型为研究和商业产品创建新的创新工具。
🔧 技术细节
模型信息
属性 | 详情 |
---|---|
模型开发者 | Meta |
模型变体 | LLM Compiler有70亿和130亿参数两种模型大小,分为基础版本和针对代码大小和反汇编进行指令微调的版本 |
输入 | 模型仅接受文本输入 |
示例提示 | 请参阅仓库中的 llm_compiler_demo.py 以获取不同用例的示例 |
输出 | 模型仅生成文本输出 |
模型架构 | LLM Compiler是一个使用优化变压器架构的自回归语言模型 |
模型训练时间 | 2024年1月至2024年6月 |
模型状态 | 这是一个基于离线数据集训练的静态模型 |
许可证 | 可在 https://ai.meta.com/resources/models-and-libraries/llama-downloads/ 获取自定义商业许可证 |
研究论文 | 更多信息可在论文 "Meta Large Language Model Compiler: Foundation Models of Compiler Optimization" 中找到 |
预期用途
- 预期用例:LLM Compiler旨在用于英语、相关编程语言、LLVM IR、x86_64汇编和ARM汇编的商业和研究用途。
- 非预期用途:禁止以任何违反适用法律法规(包括贸易合规法律)的方式使用;禁止使用英语以外的语言;禁止以 可接受使用政策 和LLM Compiler及其变体许可协议禁止的任何其他方式使用。
硬件和软件
- 训练因素:我们使用了自定义训练库,发布的模型的训练和微调在Meta的研究超级集群上进行。
- 碳足迹:总体而言,训练所有LLM Compiler模型需要在A100 - 80GB(TDP为350 - 400W)类型的硬件上进行14000 GPU小时的计算(不包括Code Llama的训练)。100%的估计tCO2eq排放量通过Meta的可持续发展计划进行了抵消。
训练数据
本文报告的所有实验和发布的模型都使用与Code Llama相同的数据进行训练和微调,但权重不同(详情请参阅 研究论文 中的第2节和表1)。
评估结果
研究论文的第3节提供了主要模型的评估和详细的消融实验,第4节提供了安全评估。
伦理考虑和局限性
LLM Compiler及其变体是一项新技术,使用时存在风险。到目前为止的测试都是用英语进行的,无法涵盖所有场景。因此,与所有大语言模型一样,LLM Compiler的潜在输出无法提前预测,在某些情况下,模型可能会对用户提示产生不准确或令人反感的响应。因此,在部署LLM Compiler的任何应用程序之前,开发者应针对模型的特定应用进行安全测试和调整。请参阅 负责任使用指南。
📄 许可证
使用此模型受Meta许可证的约束,具体许可协议请见 LLM Compiler License Agreement,该协议纳入了 Llama材料可接受使用政策。
模型卡
LLM Compiler是一系列预训练和微调的生成式文本模型,参数规模从70亿到130亿不等。本仓库是Hugging Face Transformers格式的70亿参数代码大小和反汇编微调模型版本。该模型专为代码优化而设计,其他模型的链接可在底部索引中找到。
参数数量 | 基础模型 | 针对代码大小和反汇编微调的模型 |
---|---|---|
7B | facebook/llm-compiler-7b | facebook/llm-compiler-7b-ftd |
13B | facebook/llm-compiler-13b | facebook/llm-compiler-13b-ftd |
立即试用LLM Compiler
- 下载LLM Compiler和LLM Compiler FTD模型:
- 阅读研究论文:



