Code Llama 發布說明
Code Llama 是一系列最先進的、開放存取的大型語言模型家族,專門用於編碼任務,建構在 Llama 2 架構之上。這些模型旨在透過自動化代碼完成、生成單元測試和編寫文檔來提升開發者的生產力。
模型變體與訓練
Code Llama 提供三種參數規模:70 億、130 億和 340 億。這些模型是透過多階段訓練過程開發的:
- Base Models: 從 Llama 2 初始化,並在近乎去重的公開可用代碼及相關自然語言討論上訓練了 5000 億個 token。
- Python Specialist: 基礎模型的版本在額外的 1000 億個 Python 代碼 token 上進一步訓練。
- Instruction Fine-tuned: 一個經過優化以理解並遵循自然語言指令的版本。此變體透過結合 Llama 2 Chat 指令調整數據集以及由 Llama 2(生成面試問題)和 Code Llama(生成解決方案和單元測試)創建的自指令數據集進行訓練。
技術能力
長上下文窗口
Code Llama 支援原生 16,000 個 token 的上下文窗口。透過長上下文微調和頻率域 RoPE 縮放,模型可以外推以管理多達 100,000 個 token 的上下文窗口。
代碼填充
7B 和 13B 的基礎模型與指令變體支援代碼填充。這使得模型能夠生成介於現有前綴和後綴之間的代碼,這對於 IDE 中基於游標的代碼助手至關重要。此功能在 34B 模型或 Python 專門版本中不可用。
語言支援
這些模型在多種主要程式語言上展現了最先進的性能,包括 Python、C++、Java、PHP、C#、TypeScript 和 Bash。
部署與整合
Hugging Face 生態系統
Code Llama 已整合到 transformers 庫(版本 4.33+),提供以下支援:
- 4-bit Loading: 與
bitsandbytes的整合使得 34B 模型能夠在消費級 GPU 上運行,例如 NVIDIA RTX 3090。 - Precision Options: 雖然模型是在
bfloat16下訓練的(建議用於微調),但模型可以以float16運行以獲得更快的推理速度,且評估指標沒有明顯下降。
生產推理
為了就緒的生產部署,模型與 Text Generation Inference (TGI) 和 Hugging Face Inference Endpoints 相容。Inference Endpoints 的推薦硬體包括:
- 7B models: 1x Nvidia A10G (GPU 中等)。
- 13B models: 1x Nvidia A100 (GPU 超大)。
- 34B models: 1x Nvidia A100,搭配
bitsandbytes量化 (GPU 1xlarge) 或 2x Nvidia A100 (GPU 2xlarge)。
性能評估
Code Llama 模型使用 HumanEval 和 MultiPL-E(該工具將 HumanEval 翻譯為多種語言)進行基準測試。根據發布時的多語言代碼排行榜,Code Llama 家族在不同規模和變體上展現出具競爭力的性能。例如,CodeLlama-34B-Instruct 模型在 Python 上獲得 50.79 分,在 JavaScript 上獲得 45.85 分,而排行榜平均分為 35.09。