懒惰的架构师(OpenAI 的 o3)。o3 在编写代码方面非常懒惰,但在规划方面表现出色。它乐于阅读数十个文件并进行深入分析,但在需要编辑多个文件的情况下常常会遇到困难。
过于热心的孩子(Claude Sonnet 3.7 Thinking)。Claude Sonnet 迫不及待地想要开始,真是太兴奋了!它并不是最小心的,在较长的工具调用串中,可能会开始编辑与您要求的内容完全无关的东西。
相对平衡?(Gemini 2.5 Pro)。Gemini 2.5 比 Sonnet 3.7 更聪明,速度显著更快,性格也更为内敛。通常是编写多个文件代码的最佳选择。
我发现 o4-mini 非常慢且相当平庸,而 GPT 4.1 在某些特定领域很有用。我的建议:
- 使用 o3 进行规划和/或仅在一个或最多两个文件中编写代码。如果涉及更多文件,它可能会公开反抗,拒绝继续编写。
- 始终确保 Sonnet 3.7 在相对较小的产品部分上遵循紧密的计划,并进行监督。如果您在代码库的多个区域有简单的更改要进行,例如,让 Sonnet 运行,但仍需监督,这是该模型个性完美的应用。
我通常的做法:
- 中等复杂度:编辑一个文件:使用 o3。编辑多个文件:用 o3 进行规划,使用 gemini-2.5 编写。
- 简单复杂度:编辑多个文件,非常简单:如有需要,使用 o3 进行规划,使用 claude-3.7 编写。编辑多个文件,简单,需公式化方法:将详细提示写入 GPT 4.1。
- 高复杂度:使用 o3 进行规划,分成多个部分,逐小块使用 gemini-2.5 编写,并对每个部分非常小心。如果我特别懒,有时会一次性处理所有部分,然后在最后修复所有错误,但这可能会导致后续的代码问题。
很想听听其他人如何使用不同的模型!
返回首页
最新
目标:
* 证明大型语言模型(LLMs)足够智能,可以几乎独立进行机器学习实验
* 具体来说,vibe-coding不仅仅适用于网页开发
* 鼓励人们进行这些小实验
* 特别是为了更好地理解相关概念
背景:我在大学上过线性代数课程,但没有接受过正规的机器学习培训。然而,五年前,像AI Dungeon和GPT-3这样的项目让我产生了浓厚的兴趣,我开始观看Yannic Kilcher的视频,以了解其工作原理。我甚至想到了使用变换器架构进行实验的一些想法,但实际上执行这些实验似乎有些繁琐。
于是,vibe coding应运而生。具体来说,是Claude Code。它是否足够聪明,可以组织一个实验:准备数据集、构建模型、编写训练代码、调试等?
基本上,是的。描述你想要的内容并确保它不作弊需要一些努力,但Claude足够聪明,可以从头开始编写模型代码。
其他模型如Gemini 2.5 Pro和o3可能甚至更好。
很多人认为LLMs无法编写新代码,只能重用现有代码。我并不认为这是事实。很难确定代码是否100%独特,但至少它是相当不寻常的。
无论如何,以下是我所做的:
1. 仅编码的非自回归变换器。
几乎所有生成型LLMs都基于仅解码的自回归变换器架构,该架构一次生成一个标记。(即,为了生成标记(n+1),它依赖于标记1到n的数据。)这种类型的变换器可以高效训练(因果掩码为每个标记提供训练信号,仅需一次前向传播),但生成过程缓慢且低效。Gemini 2.5 Flash允许1M标记的输入,但输出仅为65k标记。你无法真正转换大量文本。
但如果我们直接通过一次前向传播生成目标序列呢?即,我们可以预测输出序列的标记,而不是预测下一个标记。没有根本原因表明这不能工作,但这更具挑战性,因为神经网络必须跟踪输入和输出标记的位置等。
实验表明,这在简单语言中是可行的:在这个例子中,变换器学会了如何展开括号,例如,对于输入“a(b+c)”,它生成“ab+a*c”。 [链接](https://github.com/killerstorm/expere/tree/master/non_autoregressive_transformer)
我相信还有更好的方法来实现这一点,但至少这足以确认没有根本原因表明这不能工作。编写代码花了大约20分钟,示例在RTX 4070上训练了2分钟。
我尝试了几个实验:
2. 通过在每个头的注意力分数上添加一个小型多层感知器(MLP)来尝试改善注意力。
3. 制作RWKV和变换器之间的混合体。
这也足够有效,能够开始训练并获得合理的损失曲线。(尽管我花了超过30分钟让Claude修复代码,它在这里遇到了一些困难。)虽然训练一个真实的语言模型需要更强大的GPU和时间,而我没有等它完成。
我认为,通过更好的提示和更好的模型,它可以完全自主地进行实验,这可能会在今年实现。