Fine-Tune Code Llama with Ertas
Meta 基於 Llama 2 打造的專業程式碼生成模型系列,提供 7B、13B、34B 和 70B 四種規格,並針對程式碼補全、指令跟隨和 Python 開發提供最佳化變體。
Overview
Code Llama 是 Meta 於 2023 年 8 月發布的程式碼專用大型語言模型家 族。透過在 Llama 2 的基礎上使用大量程式碼資料集進行額外訓練,Code Llama 提供四種規格(7B、13B、34B 和 70B)以及每種規格的三個變體:用於程式碼補全的基礎 Code Llama、用於指令跟隨程式碼任務的 Code Llama Instruct,以及用於 Python 專屬開發的 Code Llama Python。
這些模型使用約 5,000 億個 token 進行訓練,資料以程式碼為主,包括公開程式碼儲存庫、程式碼相關討論和技術文件。這種專注於程式碼的深度訓練使模型能深入理解程式設計概念——從語法與語義到設計模式、演算法複雜度,以及數十種程式語言的最佳實踐。
Code Llama 支援填充(fill-in-the-middle)功能,模型可以在前綴和後綴之間生成程式碼來填補空缺。這對 IDE 整合至關重要,因為開發者需要的補全內容必須自然融入現有程式碼上下文。7B 和 13B 模型支援 16K token 的上下文視窗,而 34B 和 70B 模型透過 RoPE 頻率縮放擴展至 100K token。
所有 Code Llama 模型均以 Llama 2 社群授權釋出,允許商業使用。雖然 Qwen 2.5 Coder 和 DeepSeek Coder 等較新模型在某些基準測試上已追平或超越 Code Llama,但 Code Llama 仍被廣泛部署,並受益於其成熟的工具和整合生態系統。
Key Features
填充(Fill-in-the-Middle,FIM)能力是 Code Llama 在實際程式碼開發中最具特色的功能。與標準的從左到右生成不同,FIM 允許模型生成連接前綴與後綴的程式碼,產生在兩側都具有上下文適當性的補全內容。這對於 IDE 整合至關重要,例如程式碼補全、自動化重構和需要依據周圍程式碼上下文來約束 解決方案的填空任務。
Python 專用變體(Code Llama Python)使用額外 1,000 億個 Python 專屬資料 token 進行進一步訓練,使其在 Python 開發任務上特別出色。在 Python 基準測試中,它以顯著差距超越基礎 Code Llama 模型,同時在其他語言上維持合理的效能。
Code Llama 展現出強大的長上下文能力,尤其是 34B 和 70B 規格。100K token 的上下文視窗能夠處理完整的程式碼庫、大型檔案和多檔案上下文——這對需要理解專案結構、匯入層級和跨檔案依賴關係的實際程式碼任務至關重要。
Fine-Tuning with Ertas
Code Llama 是在 Ertas Studio 中進行程式碼相關應用微調最具回報的模型之一。7B 和 13B 變體是理想的起點,使用 QLoRA 分別需要 8-12GB 和 10-16GB VRAM。透過對組織內部的程式碼儲存庫、編碼標準和 API 文件進行微調,可以建立一個能生成符合團隊慣例和框架的程式碼模型。
對於以程式碼為重點的微調,Ertas Studio 支援專用資料集格式:用於程式碼生成任務的指令-回應對、用於 fill-in-the-middle 訓練的前綴-後綴-中間三元組,以及用於自動化程式碼審查的程式碼審查對。以 JSONL 格式上傳您的資料集並填入適當欄位,平台將自動處理 tokenization 和聊天範本格式化。
34B 模型為需要更高程式碼品質的組織提供了出色的品質提升,使用 QLoRA 需要約 20-24GB VRAM。微調後,匯出為 GGUF 格式並透過 Ollama(用於 API 存取)或 llama.cpp(用於直接嵌入開發工具)整合到您的開發工作流程中。許多團隊使用微調後的 Code Llama 模型作為自訂 VS Code 擴充功能和 JetBrains 外掛的後端。
Use Cases
Code Llama 的主要用途是作為智慧程式碼助手:根據自然語言描述生成程式碼、補全部分實作、解釋現有程式碼以及建議改進方案。fill-in-the-middle 能力使其在 IDE 整合中特別有效,可以提供同時考慮前後程式碼的上下文感知補全。
微調後的 Code Llama 模型作為組織內部開發助手表現出色。透過在專有程式碼庫、內部函式庫和編碼指南上進行訓練,模型可以生成遵循團隊慣例、正確使用內部 API 並遵守組織編碼標準的程式碼。這對於程式碼一致性至關重要的大型團隊尤其有價值。
Code Llama 也非常適合程式碼審查自動化、文件生成、測試案例建立和遺留程式碼現代化。指令微調變體可以向初級開發者解釋複雜程式碼、識別潛在錯誤並建議最佳化方案。Python 變體在資料科學團隊中特別受歡迎,用於生成資料處理管線、視覺化程式碼和機器學習訓練腳本。
Hardware Requirements
Code Llama 7B 在 Q4_K_M 量化下需要約 4.4GB RAM,幾乎可以在任何現代開發機器上執行。13B 需要約 7.8GB,34B 約 20GB,70B 在 Q4_K_M 下約 40GB。對於開發用途,7B 和 13B 模型在消費級硬體上提供即時回應,非常適合 IDE 整合。
完整 FP16 推論分別需要約 14GB(7B)、26GB(13B)、68GB(34B)和 140GB(70B)。對於開發團隊部署,34B 模型在 A6000 48GB 上提供出色的品 質與速度平衡,通常每秒生成 25-35 個 token。
在 Ertas Studio 中進行微調,7B 模型需要 8-12GB VRAM,13B 需要 10-16GB,34B 需要 20-24GB,70B 使用 QLoRA 需要 40-48GB。7B 和 13B 模型因其快速的訓練時間和低資源需求而最受微調歡迎,能夠在程式碼專用資料集上快速迭代。
Supported Quantizations
Related Resources
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.