AI Pulse

AI编码代理实测:Astra分数更高,Fable代码更可读

我使用Fable 5.1和Astra(均设为xhigh)并排运行了ML文本处理和模型训练工作流,结果截然不同。警告:长帖。

TL;DR:Astra写代码更具智能体性,Fable更具连贯性。Fable写作更好,也更遵从指令。Astra的最终结果略好,其科学严谨性/可复现性明显更强。在收到关于其方法的人类反馈后,两个模型的F1/准确率都提升了0.02-0.04,这说明两者都没有完全掌握AI/ML文本处理、向量化和模型训练流程。

Astra是更好的编码者,编写了更严格的评估协议(70/15/15训练/验证/测试,而Fable是基本的80/20),使用留出验证集选择模型,而Fable则用更简单的基于测试F1的选择。它还调试得更深入:两个模型都遇到了gensim 4.4编译内核bug:Fable试图解决,失败后只是隐藏了受影响运行中的stderr通知(不过它告诉我它这么做了),而Astra积极追根溯源,然后通过降级gensim以及兼容的NumPy/SciPy依赖修复了环境。

Astra编写了加固的training-run.py代码,强制重建uv虚拟环境而不改动我的默认环境,对语料库进行SHA-256哈希以确保后续运行的可复现性,输出拆分清单和run-summary.json,并渲染无头浏览器进行QA并提供截图(不确定是否有必要,但整体上令人印象深刻的过度设计)。Fable的构建脚本是临时的,只存在于tmp中,整体强度较低。

Astra更有效地部署了子代理,使用了我预先构建的notebook-reviewer和citation-checker代理,前者通过审查发现了一个真实bug(句子末尾词汇丢失的分词缺陷)并修复了它,在此过程中保留了一个回归测试。Fable忽略了这个问题,因为出于某种原因它没有调用我可用的子代理(这很令人惊讶,通常它这方面做得不错)。

如果你在寻找一个能自主攻克损坏环境并留下取证式审计轨迹的代理,那就是Astra。然而,这次审查还没结束,Fable即将反击。

Astra自信地交付了一个重大的可验证文本编码缺陷。处理UTF-8数据时,Astra坚持认为Windows-1252解码能保留货币符号,但最终HTML输出中原始数据里的货币符号位置到处都是乱码。Fable读取了UTF-8,验证了它,并采用无聊的默认设置得到了正确输出。

我还让两个模型起草了一份运行分析报告,Fable的报告明显更具洞察力。尽管我讨厌Claude标志性的写作风格,但a) 5.1已经显著淡化了Claude腔,b) Fable超出了我的评分标准,对文本预处理管道的不同部分进行了消融实验,以揭示一个基本上毫无用处的昂贵步骤,并指出基于我本来会忽略的复杂度,分类排名存在差异。就写散文而言,我任何时候都会选Fable 5.1,我已经有一段时间没这么评价Claude了。

说到写作,Fable编写的代码更地道、更可读。它看起来更像是我会写的代码,而不是LLM在没有约束时会选择写的代码(是的,我有一整份coding-conventions.md文档,将我的要求应用于两个模型,Fable只是更好地遵循了它,并且一开始就写得更自然)。Astra代码的某些部分,我必须非常费力地眯着眼才能搞清楚在干什么,以及为什么。这对我来说很重要,因为我不是最强壮的编码者(仍在努力提升),我需要理解代码才能从中学习。

最后,Fable更好地界定了工作范围:它把时间和token花在重复运行、调整超参数和重新训练模型上,以找到最优设置,而Astra深入调试gensim错误。它通过这个过程找到了显著的提升,尽管那只是让它大致追平了Astra的数字(见下表)。Astra似乎在训练过程中一开始就取得了本垒打,所以我不知道它是否会执行同样的工作流。Astra还通过添加PyTorch改变(mutated)了我的venv,而我构建venv时是特意强制模型使用TensorFlow+Keras以得到更简洁代码的,不过最后Astra还是改用了TF。两个模型完成时间大致相同。

以下是最终结果,有一个小小的注意事项——Astra的测试集得分超过其验证集,因此它可能抽取了一个幸运的测试集,人为提高了分数(不过两个模型在管道中都不存在泄漏或数据质量问题):

每个模型的最佳逻辑回归和LSTM,按宏F1排名:

模型分类器最佳表示准确率宏F1
Fable 5.1逻辑回归TF-IDF0.98830.9881
Fable 5.1简单LSTMWord2Vec-Skip-gram0.97180.9705
Astra逻辑回归TF-IDF0.99690.9969
Astra简单LSTMBoW0.97810.9765

我确实想指出,这些最终分数是在我向两个模型提供了关于文本数据清洗、向量化和模型训练过程常见陷阱的完全相同反馈之后得到的(一旦它们的初始运行完成)。两个模型都从那一通用指导中提升了相似的幅度(0.02-0.04的F1和准确率)(该指导完全没有针对它们各自的具体缺陷或流程步骤)。那是在其他完全自主的工作中唯一的人工干预,只是我想看看它们是否能通过额外的最佳方法论上下文来改进自身方法,而它们都做到了,程度相似。

我希望这篇文章能以某种方式为那些想知道这两个模型在实际工作中的表现的人提供一点帮助,特别是如果你像我一样是AI/ML学生。

—— 高票评论(帖子共5条讨论)——

[+14] u/AltruisticCoder:终于有篇好分析,不是围着AGI 2027互相吹捧的。

[+6] u/mtmttuan:
> Astra写了加固的training-run.py

你会期望如今的编码代理知道命名规范

> Astra是更好的编码者,编写了更严格的评估协议(70/15/15训练/验证/测试,与Fable基本的80/20相比)

你还会期望我们的AI霸主知道像每个学ML至少两节课的正常学生那样把数据分成三份。

阅读原文
📚 相关主题 大语言模型机器学习

订阅 AI Pulse

每天 08:00 · 12:30 · 18:30 · 23:50 更新