Fine-Tune Code Llama with Ertas

    Meta 基于 Llama 2 构建的专业代码生成模型家族,提供 7B、13B、34B 和 70B 四种规模,包含针对代码补全、指令遵循和 Python 开发优化的变体。

    7B13B34B70BMeta

    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

    Q4_0Q4_K_MQ5_K_MQ6_KQ8_0F16

    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.