模型概述
模型特點
模型能力
使用案例
🚀 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模型:
- 閱讀研究論文:



