自定义氛围编码探索第一部分:探索开始 🧙
我正在开始一项新的探索,旨在构建我自己的自定义编码模型。我受到了“氛围编码”的启发,但我认为它由于使用一体化模型而受到根本性的限制。如果针对您的特定氛围使用多个不同的模型,则可以生成适合其应用程序的代码。
在这些博客文章中,我将试验并分享我关于微调模型的工作。我将使用开源工具和数据集,并且尽可能地依赖免费、廉价和本地的解决方案。
如果我能做到这一点,我的设置需要为您和您的工作进行调整,但是如果您按照我的步骤操作,这应该是可以实现的。
以下是一些其他资源可以帮助您入门
目标
如果我们使用像 Cursor 或 VSCode 的 Co-pilot 这样的 IDE,我们会发现它们将模型用于一系列核心任务。例如:
- 检索文件或代码库的相关部分
- 在打字时生成代码补全
- 在聊天窗口中响应查询
- 根据指令对一个或多个代码文件应用更改
- 思考具有挑战性的问题
- 使用文档检索等工具生成解决方案
这些任务可能以多种方式使用一组模型,并带有相关的提示,我们无法构建一个完整的应用程序。实际上,我希望大部分提示最初都由我来完成。这样我就可以专注于微调。幸运的是,有一些很酷的开源工具,如 Continue.dev,可以做到这一点。
呼……我没有构建一个新的 IDE。
开发环境
我们将使用一套简单的工具在本地运行 IDE 环境:VScode、ZED、LMStudio 和 Continue.dev。如果您想了解详细的设置指南,请参阅这篇博客文章。
我们将使用在“我的笔记本电脑”上运行的本地推理,主要是因为这样便于我进行测试和演示。在此过程中,我将分享一些选项,以防您的计算资源比我多或少。这意味着我们将使用一台配备 64GB 内存的 M3 Mac。
训练设置
我们将完全依赖后训练技术,因为它们对预算影响最大,并且我们将使用 Unsloth、TRL 和 Accelerate 等库来保持简单和高效。如果您想阅读相关材料,请查看 LLM 课程中的这一单元。
评估设置
这里的目标是建立一个可用的自定义编码环境,而不是从基准中挤出小数,因此我们将依赖编码问题、分享录音和审查定性性能。
话虽如此,我们需要一些基准来指导我们训练模型时的决策,因此我们将使用 HumanEval 和 Live Code Bench 来比较模型。我选择 HumanEval 是因为它速度快,而选择 Live Code Bench 是因为它健壮且无污染。