🚀 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-13b"
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:基础模型,在超过500B的LLVM-IR、x86_84、ARM和CUDA汇编代码上预训练,可预测LLVM优化效果。
- LLM Compiler FTD:进一步微调,可预测LLVM汇编代码的最佳优化方案以减小代码大小,并将汇编代码反汇编为LLVM-IR。
- 理解能力强:对编译器优化的理解远超现有公开可用的大语言模型,20%的时间能完美模拟编译器。
- 效果领先:LLM Compiler FTD在代码大小优化和反汇编任务上达到了最先进的结果。与GPT-4 Turbo相比,在代码大小优化上提升了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-13b"
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可以预测代码大小的变化以及应用这些优化后输出代码的样子。它对优化编译器的行为理解程度很高,在很多情况下可以完美复制其输出。
除了核心功能,为了展示其解决复杂编译器优化问题的能力,LLM Compiler针对两个特定的下游任务进行了微调:
- 给定一段LLVM汇编代码,预测
opt
使用的最佳优化传递以最小化代码大小。
- 从一段x86_64或ARM汇编代码生成LLVM IR。
模型性能
我们在保留测试集上测试了LLM Compiler模型在模拟编译器转换、预测最佳传递列表和反编译中间表示方面的性能,并将其与Code Llama和GPT-4进行了比较。
- 模拟编译器优化:LLM Compiler在20%的情况下可以逐字符匹配预期的汇编,而Code Llama由于对IR的了解有限,无法达到较高的值。
- 代码大小优化:只有LLM Compiler FTD模型在代码大小优化上比 -Oz 有所改进,13B参数模型在61%的情况下生成的目标文件比 -Oz 更小。
- 反汇编性能:LLM Compiler FTD 13B在往返汇编的准确性(往返BLEU)上最高,最常产生完美的反汇编。Code Llama Instruct和GPT-4 Turbo在生成语法正确的LLVM-IR方面存在困难。
模型发布
Meta坚信AI模型,特别是为编码设计的模型,采用开放策略能促进创新和安全。通过发布LLM Compiler等模型,整个社区可以探索其潜力,发现问题并修复漏洞。模型权重可在Hugging Face上获取。
负责任使用
开发者应使用特定于编译器的评估基准来评估模型。由于编译器并非无缺陷,任何建议的编译器优化都必须经过严格测试。当模型反汇编汇编代码时,应确认其准确性。
生成式AI优化的未来
LLM Compiler旨在支持编译器研究人员和工程师。我们希望它能激发更多人利用大语言模型为研究和商业产品创建新的创新工具。
🔧 技术细节
模型信息
训练数据
所有实验报告和发布的模型都使用与Code Llama相同的数据进行训练和微调,但权重不同(详情请参阅 研究论文 中的第2节和表1)。
评估结果
请参阅研究论文第3节中主要模型的评估和详细消融实验,以及第4节中的安全评估。
伦理考虑和局限性
LLM Compiler及其变体是一项新技术,使用时存在风险。到目前为止进行的测试都是用英语进行的,无法涵盖所有场景。因此,与所有大语言模型一样,LLM Compiler的潜在输出无法提前预测,在某些情况下,模型可能会对用户提示产生不准确或令人反感的响应。因此,在部署LLM Compiler的任何应用程序之前,开发者应针对其特定应用进行安全测试和调整。
📄 许可证
LLM Compiler根据 LLM Compiler许可协议 发布,该协议纳入了 Llama材料可接受使用政策。
⚠️ 重要提示
使用此模型时,用户必须遵守我们的许可证和可接受使用政策。
💡 使用建议
开发者应使用特定于编译器的评估基准来评估模型,严格测试任何建议的编译器优化,并在模型反汇编汇编代码时确认其准确性。