Fine-Tune StarCoder with Ertas

    在宽松许可源代码上训练的开放获取代码生成模型,提供 3B、7B 和 15B 三种规模,具有透明的训练数据治理和强大的多编程语言支持。

    3B7B15BBigCode / HuggingFace

    Overview

    StarCoder 是由 BigCode 开发的代码专用语言模型家族,BigCode 是 Hugging Face 和 ServiceNow Research 的合作项目。该项目以负责任和透明的 AI 开发为特色——训练数据完全由来自 The Stack v2 数据集的宽松许可代码组成,具有清晰的数据治理实践,包括代码作者的退出机制。

    StarCoder 2 系列(当前版本)包括三种规模:3B、7B 和 15B 参数。15B 模型在来自超过 600 种编程语言的约 4 万亿个 token 上训练,使其成为语言覆盖最广泛的代码模型之一。尽管规模适中,StarCoder 2 15B 在 HumanEval 和 MBPP 等代码生成基准测试上达到了与更大模型相当的性能。

    在架构上,StarCoder 使用仅解码器 Transformer,15B 变体采用多查询注意力(MQA),3B 和 7B 变体采用分组查询注意力(GQA)。所有模型支持代码补全任务的中间填充(FIM),具有 8K token 的上下文窗口(可通过微调扩展)。模型使用专门针对代码训练的自定义分词器,可高效地对编程语言语法、空白模式和常见代码构造进行分词。

    StarCoder 模型在 BigCode OpenRAIL-M 许可下发布,允许商业使用并附有负责任使用限制。透明的训练数据来源使 StarCoder 对于在训练数据许可方面有严格合规要求的组织特别有吸引力。

    Key Features

    训练数据透明度是 StarCoder 最强的差异化优势。训练数据集中的每个文件都来自宽松许可的仓库,BigCode 提供了 Am I In The Stack 工具,允许代码作者检查其代码是否被包含并在需要时退出。这种透明度水平在代码模型中是独一无二的,使 StarCoder 在法律和合规角度具有可辩护性——这对企业采用很重要。

    多语言支持远超主流语言。虽然大多数代码模型关注 Python、JavaScript、Java 和少数其他语言,StarCoder 涵盖 600 多种编程语言,包括 VHDL、SystemVerilog、Solidity、Julia、R、MATLAB、Fortran 等专业语言。这种广度对使用小众或特定领域语言的团队很有价值。

    中间填充(FIM)能力支持三种模式:前缀-后缀-中间(PSM)、后缀-前缀-中间(SPM)和组合模式。FIM 格式的灵活性提高了与不同 IDE 后端和代码补全服务的集成兼容性。StarCoder 还支持仓库级上下文,可以将文件路径和同一项目的其他文件作为上下文包含,以获得更准确的补全。

    Fine-Tuning with Ertas

    StarCoder 模型是 Ertas Studio 中微调的优秀候选,特别适合有特定编程语言需求或编码标准的组织。3B 模型使用 QLoRA 仅需 4-6GB VRAM,几乎可在任何现代 GPU 上训练。7B 模型需要 8-10GB,15B 模型需要 10-14GB——均在消费级硬件能力范围内。

    对于关注训练数据来源的组织,微调 StarCoder 提供了可辩护的基础。从仅在宽松许可代码上训练的模型开始,然后在您自己的专有代码库上微调。这创建了一个法律和合规团队可以验证的清晰数据来源链。

    Ertas Studio 支持代码专项微调格式,包括指令-响应对、FIM 三元组和仓库上下文示例。训练完成后,导出为 GGUF 格式并通过 Ollama 或 llama.cpp 部署。StarCoder 的适中大小意味着微调后的 GGUF 模型高度便携——Q4_K_M 量化的 15B 模型约 9GB,适合作为开发工具或 CI/CD 管道的一部分分发。

    Use Cases

    StarCoder 是对训练数据许可有严格要求的组织的首选。法律技术公司、政府机构和具有强合规文化的企业选择 StarCoder,因为他们可以验证整个训练数据管道。在内部代码库上微调后,StarCoder 成为完全可辩护的代码助手。

    广泛的编程语言覆盖使 StarCoder 对在专业领域工作的团队很有价值:硬件描述语言(VHDL、SystemVerilog)、科学计算(Julia、R、MATLAB)、区块链开发(Solidity)和嵌入式系统(C、Rust)。这些语言在通用代码模型中的代表性通常有限。

    StarCoder 的适中大小使其非常适合集成到开发工具中:VS Code 扩展、JetBrains 插件、Vim/Neovim 插件和命令行工具。3B 模型在 CPU 上足够快以实现实时代码补全,而 7B 和 15B 模型为代码审查、文档生成和测试用例创建等离线任务提供更高的质量。

    Hardware Requirements

    StarCoder 3B 在 Q4_K_M 下约需 2GB 内存,可在几乎任何开发机器上运行。7B 约需 4.3GB,15B 约需 9GB。这些适度的需求意味着 StarCoder 模型可以与开发者的正常工作负载并行运行,无需专用硬件。3B 模型的 CPU 推理是实用的,在现代笔记本电脑 CPU 上每秒可提供 10-20 个 token。

    对于 GPU 推理,15B 模型在 Q4_K_M 下可在任何配备 10GB 以上 VRAM 的 GPU 上运行,在 RTX 4070 Ti 及以上每秒可达 40-60 个 token。全精度 FP16 推理分别约需 6.5GB(3B)、14.5GB(7B)或 30GB(15B),均可在消费级或工作站 GPU 上实现。

    在 Ertas Studio 中微调时,3B 模型使用 QLoRA 需要 4-6GB VRAM,7B 需要 8-10GB,15B 需要 10-14GB。小巧的尺寸支持快速实验:在不同数据集上训练多个变体,比较结果,并在确定生产配置前快速迭代。

    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.