项目概述
Refact-1.6B-fim是一个强大的代码补全和对话模型,尽管只有1.6B的参数规模,但在代码生成和补全方面表现出色,甚至超越了许多更大规模的模型。该模型在HumanEval基准测试中达到了32.0%的pass@1和53.0%的pass@10分数,性能接近15B参数的StarCoder模型。
关键特性
- 支持多种编程语言的代码补全
- 具备Fill-in-the-Middle(FIM)能力,可以在代码中间进行补全
- 可以作为对话助手使用,在聊天模式下性能出色
- 轻量级设计(1.6B参数),运行速度快
- 开源可商用,基于BigScience OpenRAIL-M许可证
技术创新
该模型采用了多项先进的技术:
- 使用ALiBi注意力机制
- 采用LayerNorm替代RMSNorm
- 实现了Multi Query Attention
- 应用了LiON优化器、Flash Attention和早期dropout等技术
训练过程
模型的训练分为两个阶段:
- 预训练阶段:
- 使用仅包含许可代码的自建数据集和开放文本数据集
- 严格筛选英语内容和计算机科学相关主题
- 进行了深度数据去重
- 文本与代码比例为50:50
- 总共训练了1.2万亿tokens
- 微调阶段:
- 使用15%的开放代码指令数据集
- 85%为特殊构建的合成数据集
- 总共微调了400亿tokens
- 训练时间为28天,使用64块NVIDIA A5000 GPU
实际应用
该模型已经集成到Refact插件中,用户可以直接下载使用。同时也提供了开源的Docker容器,支持自托管部署。模型在实际IDE中的代码补全表现优异,可以为开发者提供智能且快速的编程辅助。
性能评估
在多个基准测试中表现出色:
- HumanEval pass@1: 32.0%
- HumanEval pass@10: 53.0%
- 在聊天模式下的HumanEval pass@1达到38.4%
- 支持多种编程语言的评测
使用限制
虽然模型支持多种编程语言的代码,但在自然语言方面主要针对英语进行优化。对于非英语语言的处理能力相对较弱,这是模型的主要限制之一。