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。
这些模型在约 5000 亿个以代码数据为主的 token 上进行训练,包括公共代码仓库、代码相关讨论和文档。这种广泛的代码专注训练使模型深入理解编程概念——从语法和语义到设计模式、算法复杂度以及数十种编程语言的最佳实践。
Code Llama 支持填充(中间填充)功能,模型可以生成代码来填补前缀和后缀之间的空白。这对 IDE 集成至关重要,开发者需要的补全需要自然融入现有代码上下文。7B 和 13B 模型支持 16K 上下文窗口,而 34B 和 70B 模型通过 RoPE 频率缩放扩展至 100K token。
所有 Code Llama 模型均在 Llama 2 社区许可下发布,允许商业使用。尽管 Qwen 2.5 Coder 和 DeepSeek Coder 等更新的模型在某些基准测试上已追平或超越 Code Llama,但 Code Llama 仍然广泛部署,并受益于成熟的工具和集成生态系统。
Key Features
中间填充(FIM)能力是 Code Llama 在实际代码开发中最具特色的功能。与标准的从左到右生成不同,FIM 允许模型生成连接前缀和后缀的代码,产生在两侧上下文中都恰当的补全。这对 IDE 集成至关重要,包括代码补全、自动重构和空白填充任务,其中周围代码上下文约束了解决方案。
Python 专用变体(Code Llama Python)在额外 1000 亿个 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 支持专业数据集格式:代码生成任务的指令-响应对、中间填充训练的前缀-后缀-中间三元组,以及自动审查应用的代码审查对。以 JSONL 格式上传数据集及相应字段,平台将处理分词和聊天模板格式化。
34B 模型为需要更高代码质量的组织提供了出色的质量提升,使用 QLoRA 约需 20-24GB VRAM。微调完成后,导出为 GGUF 格式并通过 Ollama(基于 API 的访问)或 llama.cpp(直接嵌入开发工具)集成到开发工作流中。许多团队使用微调后的 Code Llama 模型作为自定义 VS Code 扩展和 JetBrains 插件的后端。
Use Cases
Code Llama 的主要用途是作为智能 代码助手:根据自然语言描述生成代码、补全部分实现、解释现有代码和建议改进。中间填充能力使其在 IDE 集成中尤为有效,可以提供同时考虑前后代码的上下文感知补全。
微调后的 Code Llama 模型非常适合作为组织内部开发助手。通过在专有代码库、内部库和编码指南上训练,模型可以生成遵循团队惯例、正确使用内部 API 并符合组织编码标准的代码。这对于注重代码一致性的大型团队特别有价值。
Code Llama 还非常适合代码审查自动化、文档生成、测试用例创建和遗留代码现代化。指令调优变体可以向初级开发者解释复杂代码、识别潜在错误并建议优化。Python 变体在数据科学团队中特别受欢迎,用于生成数据处理管道、可视化代码和机器学习训练脚本。
Hardware Requirements
Code Llama 7B 在 Q4_K_M 量化下约需 4.4GB 内存,可在几乎所有现代开发机器上运行。13B 约需 7.8GB,34B 约需 20GB,70B 在 Q4_K_M 下约需 40GB。对于开发使用,7B 和 13B 模型在消费级硬件上可提供即时响应,是 IDE 集成的理想选择。
全精度 FP16 推理分别约需 14GB(7B)、26GB(13B)、68GB(34B)和 140GB(70B)。对于开发团队部署,在 A6000 48GB 上运行的 34B 模型提供了质量和速度的绝佳平衡,通常每秒可生成 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.