Type something to search...
Fine-tuning the llama3 Model with Synthetic Data in 1 Hour: A Practical Guide to Rapidly Improve Code Generation Quality

Fine-tuning the llama3 Model with Synthetic Data in 1 Hour: A Practical Guide to Rapidly Improve Code Generation Quality

我经常与大型语言模型 (LLM) 讨论代码生成,并分享了大量经验,包括来自 60 多个 AI 项目的陷阱和最佳实践,包括缺乏模块化和错误处理。

有许多用于质量控制的工具,但有时创建一个更小的“大脑”来根据一组人类语言策略检查代码,而无需编写任何代码,会更具吸引力。 目标是微调一个小模型(例如 llama3),以仔细检查由其他模型生成的任何代码(包括可能在长时间对话后变得疲倦并开始生成低质量代码的较大模型)。

备注 标题承诺在一小时内完成这个项目,这是可行的。 不要被这篇博文的长度所迷惑,很多事情都是可选的(比如基准测试等),但核心几乎是零代码,几乎任何玩过 Chatgpt 或 Claude 的人都可以做到。

— -

详细说明

  • 微调一个小型且廉价的模型来审查由其他模型(无论大小)生成的代码。 这是根据我们定义的一组策略完成的。 我们将向模型提供一个代码片段,它将针对每个标准回复一个分数。 根据模型的响应,我们可以接受或修改正在审查的代码。
  • 微调和推理费用低于 3 美元。 确切的定价可以在 fireworks.ai 上找到。 或者,您可以使用任何其他框架,如 Hugging Face 及其自动训练功能。 但是,我个人喜欢 Fireworks,因为它易于训练和部署,而且我发现推理速度很快。 当然,您可以选择适合您用例的任何内容。

一个示例响应应如下所示(以便能够被另一个工具(如 CI/CDI 管道)处理)。

`{
  "modularity_score": "7",
  "modularity_description": "The code is well-organized into independent sections, such as the HTML structure, CSS styles, and content.....",
  "error_handling_score": "5",
  "error_handling_description": "The code does not include any error handling mechanisms. ...",
  "logging_score": "6",
  "logging_description": "The code does not include any logging statements. While it's effectively.",
  "explanation": "The code is well-structured and follows standard HTML and CSS practices. However, it lacks modularity in the CS.... code."
}

— -

我们需要什么

  • kiln frameowkr 用于生成合成数据和微调
  • 一个 Fireworks API 密钥,用于 AI 帐户以微调模型并托管微调后的模型
  • (可选)OpenAI 或 Open Router 的 API 密钥(稍后查看)

— -

它如何运作的简要说明

  • 我们通过定义一组代码审查要求(例如,模块化、错误处理等)来创建合成数据。
  • 这些要求作为生成合成数据提示的基础。
  • 这些提示由一个强大的模型(如 o4 或 Claude sonnet)完成。
  • 然后,此数据用于微调一个更小、更快、更便宜的模型,例如 llama3。
  • 然后,我们可以使用这个较小的模型在 VSCode、Claude AI 或任何我们喜欢的地方进行代码审查,例如使用 MCP。

— -

1. 配置 LLM 提供商

我们将使用两个不同的提供商:Fireworks 用于微调和托管微调后的模型,OpenAI 用于生成合成数据。 或者,您也可以使用 Groq 通过一个强大的模型(如 llama 70B)来生成合成数据,这可能比 OpenAI 快得多。

http://localhost:8757/settings/providers

设置提供商后,创建一个新项目和任务:

创建新任务

功能需求

  • 模块化
  • 适当的错误处理
  • 一致的日志记录

输出模式

{
  "type": "object",
  "properties": {"modularity_score": {
  "title": "modularity_score",
  "type": "string",
  "description": "Integer value from 1-10 that quantifies code modularity. 1=no separation of concerns; 10=perfectly modular with independent components."
},
"modularity_description": {
  "title": "modularity_description",
  "type": "string",
  "description": "Detailed explanation of modularity issues found in the code, highlighting specific areas for improvement."
},
"error_handling_score": {
  "title": "error_handling_score",
  "type": "string",
  "description": "Integer value from 1-10 that rates error handling implementation. 1=no error handling; 10=comprehensive handling of all edge cases."
},
"error_handling_description": {
  "title": "error_handling_description",
  "type": "string",
  "description": "Detailed explanation of error handling issues found in the code, with examples of missing or inadequate error handling."
},
"logging_score": {
  "title": "logging_score",
  "type": "string",
  "description": "Integer value from 1-10 that measures logging quality. 1=no logging; 10=complete context-aware logging with appropriate levels."
},
"logging_description": {
  "title": "logging_description",
  "type": "string",
  "description": "Detailed explanation of logging issues found in the code, noting inconsistencies and opportunities for better log practices."
},
"explanation": {
  "title": "explanation",
  "type": "string",
  "description": "Overall summary of the code review findings, highlighting the most critical issues and providing general recommendations."
}  },
  "required": ["modularity_score",
	"modularity_description",
	"error_handling_score",
	"error_handling_description",
	"logging_score",
	"logging_description",
	"explanation"]
}

— -

2. 创建合成数据

生成几个样本——可能一开始是四个——看看输出。如果效果不够好,使用“添加指导”按钮使其更精确,例如只生成 Python 代码。

请注意,在这一步,我们只生成提示端。模型(完成/推理)的审查发生在稍后,并且可以使用可选的并行化完成。另请注意,后面的步骤要求更高,因为它需要一些智能。可以考虑使用批量 API 进行完成(Kiln 尚未支持)以节省 30–50% 的推理成本。

使用此过程几次,创建大约 100 个数据项左右。我建议为此使用像 GPT-4 这样强大的模型,并且不要一次性生成所有内容——也许一次生成 20 个项目,并在继续之前审查输出。

在每个生成步骤之后,单击“全部保存”将它们保存到您的数据集。当您点击该按钮时,推理(响应生成)会立即开始,使用您选择的模型。最好为完成选择一个更强大的模型,例如 o4 或 Claude sonnet。

您可以在侧边栏的“数据集”下查看您的数据集。Kiln 增量生成数据,因此之前的数据集项目不会被替换。通过这种方式,您可以创建多样化的数据集,例如 20 个用于 Python 代码的项目,30 个用于 Node.js 等。

— -

3. 审查和清理数据集

现在转到数据集并最后一次审查数据。删除任何不需要的或质量差的合成数据。训练数据越好,模型之后的性能就越好。

— -

4. 运行微调作业

接下来,我们将从数据集中创建一个微调作业。在本例中,我们在 Fireworks 上使用 llama 8B 模型。这是我们将要微调的模型,但之前,使用了一个“更智能”的模型(如 GPT-4)来生成合成数据。

当提示输入数据集时,创建一个新的数据集。

然后,当提示输入过滤器时,选择“全部”以使用所有数据进行训练(不拆分)。

现在选择“基本(零次)”提示和训练策略“仅最终响应”。 对于高级情况——或者如果您想训练像 deepseek r1 这样的推理模型——您可能会使用推理步骤来训练模型,而不仅仅是最终答案。(尽管这也可以与非推理模型(如 llama3)一起使用。)

当提示输入提示方法时,选择“基本(零次)”。您可以通过打开侧边栏中的“提示”菜单来找到实际使用的值。

对于其他用例,您可以选择高级提示方法,例如少次或思维链。

微调作业将开始,可能需要一些时间才能完成,具体取决于您的训练数据的大小。

当作业完成后,该模型应托管在 Fireworks.ai 上。

完成微调作业后,请务必将其部署(“部署 LoRA”)为无服务器服务。只有在实际使用模型时,才会按需收费。对于 llama 3,这是一个

— -

5. 测试它

现在我们可以通过单击“运行”按钮并输入任何代码片段来测试我们微调后的模型。确保在模型选择中选择微调后的模型。在提示方法中,您可以选择零次或其他选项。您可以通过单击侧边栏中相应的提示来查看这些选项的实际值。

由于我们使用足够的数据训练了模型,因此在给出任何代码片段而没有进一步的指令时,它将始终返回一个评分。这正是我们想要的。

— -

(可选)在 Fireworks.ai 上进行测试

我们也可以在 Kiln 之外进行测试,例如在 Fireworks.ai 游乐场上:

或者使用 curl:

与基础模型进行基准测试

如果您想知道此模型与基础模型(未经微调)的性能如何,以下是结果。

正如您所看到的,微调后的模型几乎通过了所有测试,而基础模型在几乎所有测试用例中都表现不佳。

Related Posts

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

AI 研究报告和论文写作 合并两个系统指令以获得两个模型的最佳效果 Perplexity AI 的 Deep Research 工具提供专家级的研究报告,而 OpenAI 的 ChatGPT-o3-mini-high 擅长推理。我发现你可以将它们结合起来生成令人难以置信的论文,这些论文比任何一个模型单独撰写的都要好。你只需要将这个一次性提示复制到 **

阅读更多
让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

Non members click here作为一名软件开发人员,多年来的一个发现总是让我感到惊讶,那就是人们还在 Excel

阅读更多
使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

10 个常见问题解答 本文是我推出的一个名为“10 个常见问题解答”的新系列的一部分。在本系列中,我旨在通过回答关于该主题的十个最常见问题来分解复杂的概念。我的目标是使用简单的语言和相关的类比,使这些想法易于理解。 图片来自 [Solen Feyissa](https://unsplash.com/@solenfeyissa?utm_source=medium&utm_medi

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

在AI军备竞赛中分辨事实与虚构 DeepSeek AI真的是它所宣传的游戏规则改变者,还是仅仅聪明的营销和战略炒作?👀 虽然一些人将其视为AI效率的革命性飞跃,但另一些人则认为它的成功建立在借用(甚至窃取的)创新和可疑的做法之上。传言称,DeepSeek的首席执行官在疫情期间像囤积卫生纸一样囤积Nvidia芯片——这只是冰山一角。 从其声称的550万美元培训预算到使用Open

阅读更多
Type something to search...