🚀 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材料可接受使用政策。
⚠️ 重要提示
使用此模型時,用戶必須遵守我們的許可證和可接受使用政策。
💡 使用建議
開發者應使用特定於編譯器的評估基準來評估模型,嚴格測試任何建議的編譯器優化,並在模型反彙編彙編代碼時確認其準確性。