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。

Sources