[BidClub_]
Machine Learning Street Talk · · 56 分钟

看着美国在AI上一路狂奔——Alistair Pullen(Cosine AI)

Tim ScarfeAlistair Pullen

YouTube
TL;DR
  • Cosine的主权模型押注之所以在经济上站得住脚,很大程度上是因为英国提供训练算力,客户承担推理部署。政府支持让它获得了Bristol的Isambard集群算力配额,而Cosine向客户授权模型权重,由客户用自己的GPU运行,而不是自己为token服务基础设施融资。这让主权AI从愿景变成一项范围狭窄、资本纪律明确的建设,但Pullen强调,“犯错或腾挪的空间并不大”。

  • Pullen认为,前沿性能可能要求在总参数量和激活参数量上对标闭源实验室,而不只是宣传一个大规模稀疏模型。他援引第三方估算称,Sonnet总参数量为1.3万亿–1.5万亿,Opus为1.5万亿–1.8万亿,其中激活参数可能达到1500亿–1800亿;而部署经济性又推动开放模型减少激活参数。他的直白反事实是:“如果我们能做出万亿参数的稠密模型,我们早就做了”(“If we could have trillion-parameter dense models, we would.”)。

  • 真正持久的数据护城河可能位于预训练之后:真实轨迹和大规模RL运行塑造了模型实际的行为方式。在大约30万亿个预训练token之后,Pullen说所有人都在“压缩互联网的大部分内容”;差异化转向后训练数据、强化学习规模,以及接触真实用户提交的混乱prompt。他还表示,最大型实验室在数据采购和成熟的内部数据职能上占优。他明确没有声称Anthropic会用Claude Code对话训练,但认为其轨迹流可能成为极其强大的反馈来源。

  • 通过单元测试并不是充分的奖励,因为它会把臃肿、不安全、难维护的方案与正确方案一并强化。Cosine先以正确性作为所有奖励的门槛,再评估优雅程度、冗余代码等质量,有时还会将agent的补丁与人类实现进行比较。更深层的研究目标是信用归因:找出一条轨迹中真正产生后果的决策,而不是把256,000-token rollout中的每个token都视为对最终0或1奖励负有同等责任。Scarfe将此与基准测试局限联系起来:pass@1和pass@5可能漏掉可靠性、安全性和抽象能力形成。

  • 编码agent仍需要人类,因为模糊的产品意图、品味和可维护性尚无法被可靠验证。Pullen预计,更强的模型、逼真的RL环境和harness工程最终会带来自主运行,但他说“我们离那一步还远得很”。短期内,质量保障会从阅读巨量diff转向运行时证明——证明功能确实有效,在真实环境中验证疑似漏洞,并维护完整的端到端测试。

  • Harness的价值正从基础工具接入转向高效编排,但swarm会成倍增加理解债务。Pullen说,如今强模型“基本只用Bash就能完成任何任务”,但Cosine的编排器—子规划器—worker层级,可以完成Kimi K2.6单独无法处理的项目。文件锁、编辑通知和对低层worker的直接干预能够减少冲突,却无法消除“事后通盘梳理”的必要。

  • 出口管制已把主权AI变成迫在眉睫的商业品类,同时也暴露出它对硬件的依赖。Pullen暂时的辩护是,Cosine所需的基础设施已经装在英国,实验也已开始;Scarfe预计模型将在年末前后推出。关于5.6的消息让性能差距变得切身:“我们别无选择,只能把它做出来”(“We have no choice but to make it happen.”)。

摘要 · 为研究而整理的核心内容

1. 公共算力让主权AI成为可执行项目

  • Pullen介绍,Cosine是一家英国前沿实验室,直到大约3个月前,主要专注于为金融服务、保险和国防等受监管及“高侧”环境打造同类最佳的编码agent。如今这项业务仍在继续,但公司同时承担起建设英国首个“某种意义上的主权LLM”的任务。

  • 采访前大约9或10周,Cosine获得了政府主权AI部门的支持——Pullen纠正了自己“被纳入”的说法。实际收益是获得Bristol的Isambard超级计算机集群算力,并由私有算力补充;否则,一家融资5000万–1亿美元的初创公司,可能仅为获取项目算力就要花掉相当大一部分资金。

  • Scarfe将这一紧迫性与Fable突然因出口管制被叫停联系起来。Pullen说,主权“不是我1月时预料到的事情”,但Cosine已经具备将政府算力配额转化为可信尝试所需的模型训练基础设施、算法、数据运营和人才。

2. 避开推理经济学,让几百万美元与几十亿美元竞争

  • Scarfe提出的核心挑战很直接:美国实验室在做数千亿美元规模的项目,Mistral也在投入个位数至两位数的十亿美元,而Cosine如何用几百万美元完成同样的事情?Pullen的回答从商业架构开始:“我们Cosine不是一家推理公司。”

  • 客户通常获得模型权重,在自己的GPU上部署于物理隔离环境,或者通过既有的Azure或AWS关系租用算力。Cosine授权技术,而不是从token中赚取利润,因此无需为推理数据中心提供资金;Pullen认为,后者正是许多最大型基础设施交易的动因。

  • 这一区分并不意味着训练成本低。Cosine计划完成继续预训练、中训练和后训练,但Pullen承认,受限算力限制了RL生成次数、rollout多样性以及RL期间的推理时算力。如果拥有10倍算力,他会运行更大的实验;而现在,“犯错的空间并不大”。

  • 因此,项目能否成立取决于有意收窄的范围,以及异常直接的需求信号。英国一些最大型企业正把自身希望解决的用例输入Cosine,让它可以围绕明确的国内客户训练,而不是盲目优化所有可能的部署场景。

3. 激活参数量决定性能上限

  • Pullen将前沿竞争力归结为3个主要变量:架构与模型总规模、激活参数量,以及数据。他将Mistral Large 3定义为675B稀疏模型;这或许能够务实地适配企业GPU配置,但这种可部署性也同时限制了性能能够扩展到的上限。

  • 一份第三方延迟分析深刻影响了Cosine的架构选择。Pullen谨慎地称这些数字并不确定,但表示Sonnet的总参数量可能为1.3万亿–1.5万亿,激活参数超过1000亿;Opus可能为1.5万亿–1.8万亿,激活参数约1500亿–1800亿,具体还部分取决于推理使用FP8还是FP4。

  • Pullen举的例子是DeepSeek V4 Pro:总参数量约1.6万亿,但激活参数可能只有300亿–500亿。Scarfe进一步展开以推理为中心的论点:如果一个模型仅为装入内存并达到可接受吞吐,就需要2个B300节点,那么对许多用户而言它并不实用。他认为,这种部署约束是中国、欧洲和美国的开放模型尚未追平闭源模型性能的原因之一。

  • 支撑Pullen偏好稠密模型的部署证据是GPT-OSS-12B。按照他的回忆,该模型激活参数约50亿,而稠密模型Devstral 2 123B的规模远大于此。Cosine部署过两者,Pullen说Devstral的效果“简直是天壤之别”。“如果我们能做出万亿参数的稠密模型,我们早就做了”(“If we could have trillion-parameter dense models, we would.”);在他看来,稀疏性主要是推理和部署上的折中。

4. 后训练数据比再复制一份互联网更重要

  • Pullen怀疑,当预训练数据集达到约30万亿token后,它们会趋于收敛:“到了那个规模,我们压缩的已经是互联网的大部分内容。”中训练可能也已趋于商品化;后训练数据,以及以“大得离谱的规模”运行RL的能力,仍是实验室之间更鲜明的差异化来源。

  • 他还表示,最大型实验室拥有优势,因为它们可以从数据经纪商处采购更多数据,并且具备成熟的内部数据职能;但他并没有声称其他实验室完全不具备这些能力。

  • Scarfe对数据护城河给出了更强版本的论证:软件工程并不只是代码生成,而是运行实验、建立和修改心智抽象,并与团队共享的过程。因此,轨迹展示的不只是最终补丁,还有“你是怎么走到这一步的”。

  • Pullen不知道Anthropic的条款是否允许其使用Claude Code活动进行训练,也拒绝声称Anthropic确实这样做。Cosine自身员工轨迹的直接价值更简单:它们揭示用户实际如何发出prompt,把干净、理想化的训练问题替换成类似“它不工作”和“你他妈为什么要这么做”的请求。

  • 这些对话没有标准答案式的奖励,尽管用户反应或模型评判器可能近似衡量满意度。Pullen仍推测,Anthropic从轨迹中获得的大量“alpha”,来自学习真实的指令、纠正和挫败分布,并让训练时的交互不那么像合成数据。

5. 只奖励正确性,RL会制造软件垃圾

  • Scarfe提出的“意大利面怪物”质疑是:agent经常能通过测试,却用200行代码完成原本1行就够的事情,不断积累理解债务。Pullen表示认同:标准编码RL会在单元测试通过时奖励一次rollout,从而把成功路径上的每个不安全命令和丑陋实现一并强化。关键问题不只是能不能运行,而是“代价是什么”。

  • Cosine把正确性设为门槛:一个优雅但错误的答案得不到任何奖励。在此之外,单独的奖励项针对软件垃圾;许可宽松的pull request则可以提供人类参考补丁。如果agent额外写了500行代码,这一差异本身就构成不给满额奖励的证据,而不要求模型照抄原始实现。

  • 算法难题在于信用归因。一条rollout可能要经过256,000个token才得到1或0,但现有方法往往把每个token都视为具有同等因果作用。Pullen将其比作老师批改一篇2500字的作文,只写一句“这是B”;数百次尝试或许能在统计上找出问题,但直接圈出那句糟糕的句子,教学效率会高得多。

  • Cosine希望以一种“不带主观偏见”的方式定位重要决策,并将正向或负向的advantage不成比例地分配给这些片段。这一方法可以叠加在GRPO、GSPO及相关算法之上,用相同的FLOPs强化可复用的选择,而不是填充内容。Scarfe总结为:迫使模型向“抽象山”更高处攀登;Pullen接受这一表述。

  • Scarfe还批评以pass@1和pass@5为中心的基准测试忽视可靠性、一致性、安全性和抽象能力形成。他提到François Chollet更新后的ARC挑战:该挑战难以通过暴力搜索解决,因此更要求模型具备真正的抽象能力。

6. 可验证性让人类继续留在Agent工程环路中

  • Scarfe追问其中的认识论边界:在编码、数学和物理领域,执行结果可以提供可验证奖励;但机器学习本身和奖励模型都不会自动拥有真相。对于法律及其他不可验证领域,Pullen诚实的回答是“我不知道”;人类或经过良好提示的LLM评判器也许能接近答案,但轻松实现广泛泛化的宏大愿景,“已经被某种程度上证明并没有多少现实基础”。

  • Pullen相信人类最终可以离开环路,但“我们离那一步还远得很”,尤其是在一个新应用只有模糊规格的情况下。优秀且可维护的软件仍需要品味,也需要事后修正设计决策。进展必须同时依赖更强的模型、接近真实工程工作的RL环境,以及更好的harness。

  • 他对短期代码审查的设想,是用运行时证明替代另一个AI阅读diff。Cosine的安全swarm会在类似生产环境的虚拟机中启动应用,并尝试利用每个被指称的漏洞;如果agent无法复现,相关发现就会被删除。对pull request而言,同一原则是:“证明给我看它确实在做那件事。”

  • Scarfe的反驳仍未解决:agent可能会编写或削弱自己的测试,而功能规格、用户故事和行为,只是“盲人摸象”的不同侧面。Pullen补充了完整的端到端测试,以及快乐路径的截图或录屏,试图替代审查积压,以及“看起来没问题,合并吧”——而后者往往只发生在1分钟之后。

7. Swarm扩展模型能力,但记忆仍是RAG形状的权宜之计

  • Pullen提出一个颇具挑衅性的判断:随着模型能力提升,“agentic harnesses正变得越来越不重要”,因为模型已经强大到基本只靠Bash就能完成几乎任何任务,只是速度更慢、成本更高。Cosine仍在共同设计harness和模型,但如今主要优化更少的token,因为企业“token经济学”已变得重要。

  • Scarfe值得保留的反驳是:subagent可以通过把困难任务拆解成全新且定义紧密的任务,降低歧义和上下文腐化。Cosine的swarm将这一逻辑自动化:一个编排器把不同垂直方向交给子规划器,再由子规划器调度并行worker。一个带有Python SDK、物理约束和3D查看器的机械表编译器,尽管超出Kimi K2.6单独处理的能力,却得以一次性完成。

  • 规模扩大后,干扰和不透明性也随之而来。Cosine允许用户直接介入低层worker,使用写锁确保同一时间只有一个agent编辑文件,并在其他worker修改了某个agent最近读取的文件时发出警告。这些控制措施有所帮助,但Pullen承认,如果抽象或设计选择出了问题,事后仍要“全面梳理一遍”。

  • 记忆更难处理:agent必须知道何时检索、什么值得存储,以及一条记忆是否已经过时。向量数据库和嵌入式笔记仍然“有点像权宜之计”,实际上是“RAG仅存的残余”。持续学习可能把记忆放进潜在空间,但RL会引入奖励投机、信息泄漏,以及从未来查询知识的风险。

8. 合成评测器把真实工作转化为可规模化RL

  • Cosine不要求模型自行发明编码问题,因为“如果模型能想出一个问题,它大概也能解决这个问题”。它从真实的功能开发、重构和其他commit开始,再合成缺失的ground truth或grader。测试必须在实现层面保持足够中立,以接受多种有效方案,同时又要对功能性保持严格要求。

  • 经过18个月的pipeline建设、人工标注和专门的后训练模型,这一流程已能在不同语言、技术栈和任务类型上大体实现自动化。它已经为Java、Fortran和C++提供RL数据;对于Verilog和SystemVerilog,验证可能需要在EDA环境中运行synthesizer。Cosine正将这一方法扩展到软件工程之外,用于其通用主权模型。

  • 硬件问题仍没有确定答案。Pullen“天真地”认为,如果硬件已经在英国,他不知道还能对此做多少;实验已经在运行。Scarfe将模型描述为预计在年末前后推出,但Pullen没有独立确认这一时间表。

  • 出口管制冲击后,来自企业、政府和公民的需求都大幅上升。Pullen另行表示,关于5.6的消息让他亲身感受到性能差距带来的挫败,促使他说出“谢谢你,Donald Trump”,并作出最后承诺:“我们别无选择,只能把它做出来。”

Tim Scarfe

I was horrified, as many were, when Fable suddenly got banned.

Alistair Pullen

We have obtained the mandate to build the UK’s first sort of sovereign LLM.

Tim Scarfe

How can you do in millions what they are doing with billions?

Alistair Pullen

There isn’t a huge amount of room for error or wiggle room. It was not something that was on my bingo card in January. Numbers like 10 trillion are being knocked around. We’re compressing most of the internet at that point.

It’s really funny. After Claude deletes your production database, it’ll say, “Oh, you’re right to point that out.”

Agentic harnesses are getting less important over time. A model can probably do, with Bash only, basically any task these days. Also, thank you, Donald Trump.

For the first time, I feel like a second-class citizen because they are going faster than I am, and I really hate that. That boils my blood more than anything else. We are going to do everything we can to pull this off. We have no choice but to make it happen.

Tim Scarfe

Alistair, it’s great to meet you, mate. We are here in London, where it’s customary to say, “Hello, geezer.”

Alistair Pullen

Hello, geezer.

Tim Scarfe

So, where in London are we?

Alistair Pullen

We are in Hoxton right now. So, we’re in Shoreditch. We’re about half a mile away from where Cosine started in my apartment, which was in Hoxton Square, just over there. We haven’t come very far, but we have expanded a fair bit since then.

Tim Scarfe

And what is Cosine?

Alistair Pullen

Cosine is a frontier lab based here in the UK. Prior to about 3 months ago, we built best-in-class coding agents specifically for highly regulated and high-side environments. Think things like financial services, insurance, defense, and so on.

More recently, we have obtained the mandate to build the UK’s first sort of sovereign LLM, which is a much more ambitious vision and something on a scale much larger than we’ve done before. It’s very exciting to be working on it.

Tim Scarfe

So, tell me about that sovereign AI piece. I should say, by the way, I read the article about you in The Telegraph.

I was horrified, as many were, when Fable suddenly got banned.

Alistair Pullen

Yes.

Tim Scarfe

Because of this export control, and now everyone suddenly is thinking about sovereign AI. So, tell me the story.

Alistair Pullen

It ties into a bunch of different things. It ties into the backstory of Cosine, and one of the reasons we’re fortunately placed to be able to do sovereign AI is that we have a lot of expertise around model training, model building, all of the infrastructure and algorithms, and the data people that you need to do that kind of thing. We’ve been doing that for some time, so we already had all of those things in the organization.

Then, probably 9 or 10 weeks ago, we were inducted into the government’s Sovereign AI Unit—or backed by them, I should say. That is something they have put out to increase the number of sovereign AI initiative companies being built in the UK.

What that looks like in practice for us is an allocation of compute on the Isambard-AI supercomputer cluster out in Bristol. Honestly, that’s one of the things that’s unlocked our ability to even have the ambition to do something like this. Fundamentally, one of the biggest blockers for a startup of our size or smaller, to be honest, in being able to approach work like this is compute.

If you raised $50 million to $100 million, a good chunk of that would go on compute for a project like this. To have an allocation come from the Sovereign AI Unit is huge because it genuinely does enable it. We still use some private compute on the side, but fundamentally, all of it will be done on Isambard, which is super cool.

To be honest with you, it was not something that was on my bingo card in January, at the beginning of the year when we started out. We still do our conventional business of coding agents and the models that we’ve already built, but we’ve been able to take that vision and really take it to the extreme in a way that we wouldn’t have been able to otherwise.

Tim Scarfe

So, I’m not being funny, but the million-dollar question is—well, actually, more than that. Folks over there in the US have probably got on the order of hundreds of billions. You’ve got Mistral, which is on the order of, let’s say, 14—

Alistair Pullen

Single- to double-digit billions. Yeah.

Tim Scarfe

Something like that. How can you do in millions what they are doing with billions?

Alistair Pullen

Yeah, no, it’s a very fair question and one that I probably get more than anything else. At Cosine, we are not an inference company. That ties into the kinds of deployments and the way that we sell our product.

For your viewers, I should probably give a bit of background. Given the fact that we predominantly deploy into highly secure, high-side environments, most of the time now—nearly all of the time—we are not hosting the model ourselves. A customer isn’t hitting Cosine/API/v1 and then hitting a chat completions endpoint or something like that from us.

They are either taking the model weights that we give to them and deploying them on their own GPUs. We have a lot of that; that’s the most air-gapped, most secure deployment we do. Or they are renting GPUs in some hyperscaler cloud that they’re already a part of, whether it be Azure, AWS, or whatever, and then they’ll run the model there.

What that means in practice for Cosine is that we license the technology that we build. We don’t actually make a margin on tokens or anything like that. All of this ties into your question, meaning we don’t have to spend a lot of the money that the Americans are having to spend on data centers for inference purposes.

That’s not to say that you don’t also need a huge amount of compute for training. Obviously, you do, and a huge amount of the infrastructure they have in the US will also be used for training. But I think that one of the biggest reasons you’ve seen people like Anthropic struggle recently, and the reason they’ve signed the deals they have with the Colossus cluster and so on, is inference and not training.

You do need significantly less resource if you’re not going to do the inference bit. We’re fortunate in that the way that we sell the product means we don’t really have to. On the other side of that, we are taking some interesting research approaches in terms of how you pull something like this off.

We can talk more about that in a minute, I’m sure, in terms of how we are architecting the model, how we’re training it, and some algorithmic stuff. All of that is to say that we do have a credible shot at pulling off the full run, including the continued pre-training, the mid-training, the post-training, and all of those bits.

But, to be completely transparent with you, there isn’t a huge amount of room for error or wiggle room. There are obvious places where we have had to make trade-off decisions. That includes—and extends to—the scope of RL.

I’d always like to do larger RL runs, more generations, and more inference-time compute during the RL process to get more variety. We can’t do as much of that as we would like to if we had 10 times more compute, for instance. There are trade-offs, but fundamentally, given the way that we’ve scoped the project, I think it is viable in that very narrow scope.

We have some of the largest companies in the UK all feeding use cases and their desires for what they want the model to be able to do directly into us, so that we can train a model that’s really for them. I think that is potentially a feedback loop that hasn’t really been explored as much in the space.

Tim Scarfe

Obviously, I don’t want to say bad things about some of these companies, but the models from Mistral, from Cohere, and so on, they’re not competitive. Even the Chinese models, arguably, have only really started getting competitive the day before yesterday. So, you know—

Alistair Pullen

Months or so. Yeah.

Tim Scarfe

GLM-5.2. So, the vibes are good. Although on the ARC challenge, it didn’t do very well, but maybe that was just a red herring. I can talk about that in a minute, but yes. Very cool.

But you were almost implying that it’s because they weren’t trying to make it better. How can we make models that are as good as those frontier models?

Alistair Pullen

Crudely, I think there are a couple of key things—maybe 3 key things. I think one is architecture and raw model size. I think the second is active parameter count. The third is data.

I believe—and correct me if I’m wrong—the largest model that Mistral has made to date is the 675B Mistral Large 3. It’s sparse, very, very similar to DeepSeek’s architecture, if not the same. Fundamentally, that model exists in the way that it does because it fits a use case that they have seen.

It probably fits a GPU deployment profile that they have seen in the enterprises they’re trying to sell to in France or Europe. As a result, pragmatically, they’re like, “Right, this is probably the biggest that we can get away with given what certain companies have access to.”

As a result, you’re obviously going to cap out how far you can go in terms of model performance. There was a very interesting analysis done in a blog post, which I can’t remember the name of, but I can send it to you post-talk because I just found it very interesting. It was a breakdown of the probable sizes of models like Sonnet and Opus.

Tim Scarfe

Yeah, I saw that.

Alistair Pullen

Did you see that? It was so cool, the way that it was done, right? Through Vertex, and figuring out, given what we know about open-weight models, latency times, and stuff like that—

Tim Scarfe

The one I saw was where they came up with a bunch of questions, and they could infer based on the general knowledge that one has as well. Yeah, but that was a little bit sketchy.

Alistair Pullen

I’ve seen a more empirical one. I’ll send it to you post-talk because it just found it very interesting. That blog post alone played a large part in the architectural decisions we took for the sovereign model.

One of the things that was very clear from that is that the likelihood is—and, again, no one really knows outside of Anthropic—that something like Sonnet is, I believe, in the 1.3 to 1.5 trillion total-parameter range and probably has 100-plus billion active parameters. An Opus model is probably in the 1.5 to 1.8 trillion range and probably has 150 to 180 billion active parameters, depending on the data type we’re talking about, whether it’s FP8 or FP4.

Tim Scarfe

What about Fable?

Alistair Pullen

It wasn't up for long enough for me to try. What I wanted to do was give Fable that blog post, point it at an endpoint, and say, “Right, do the analysis on yourself and tell me how big you are.” I never got that far, though, because I don't think it was up for long enough.

Tim Scarfe

It was a ridiculous uplift, though, isn't it? I saw—I'm sure you saw on X—numbers like 10 trillion being knocked around. I don't know if that's true or not.

Alistair Pullen

I have no idea. I think it's obviously bigger than the other ones and obviously has way more active parameters, but I couldn't speculate. I genuinely don't know.

I think the net of that article was that Opus was in the region of 1.5 to 1.8 trillion, with around 150 billion active. Obviously, there's a lot of algorithmic and data work that goes into it, but I think if you don't at least match that architecture, then you're already going to struggle to reach that ceiling.

An example of this—and it's way more nuanced than this fairly basic argument I'm going to make—is if you look at something like DeepSeek V4 Pro: 1.6 trillion total. I can't remember the exact number, but it's going to be in the region of 30 to 50 billion active.

Tim Scarfe

Right. My view is that the reason for these architectural decisions is largely inference of the model. Sure, it's great that you have those headline 1.6 trillion parameters, but if no one can run it because they need 2 nodes of B300s just to fit it into memory and actually run it at decent tokens per second, then how many people can actually take advantage of that?

I think that's one of the reasons that Chinese, European, or American open source has not reached closed-source performance. There's that pragmatic question of, “Okay, the labs have a huge number of GPUs, and they have enough inbound demand to make sure those GPUs are utilized to a level where they're not that worried about having them up.” The open-source community doesn't really have the same argument.

If you're running it yourself, if you're going to run a model of that scale on your own hardware and it's not really being utilized that much by your organization—

Alistair Pullen

You're going to worry about how much money you're spending on those GPUs just sitting idle.

I think that, on that first point, architecturally, overall parameter count is obviously important. Active parameter count is also incredibly important. The last bit is data.

I think the labs have some element of an edge in data, both because they're able to procure so much from the brokers who sell it and because they have internal data functions that are very mature at this point. I'm not saying the other labs don't have that, but they're definitely not at the same scale, both in terms of spend and maturity.

To an extent—and this is definitely not true, but I think to an extent—the pre-training corpora: is there going to be that much difference once you're in the 30 trillion-token range? You kind of all have roughly the same stuff. We're compressing most of the internet at that point.

Mid-training is a similar story. I think post-training has been and remains one of the most interesting areas for these labs. Having worked with some of the labs on post-training data—because obviously we're very good at coding—it's been interesting to see how they've been procuring it, even the formats they've been using for the raw data and the different use cases they're interested in when they're putting requests out for, “We want this, we want that, we want the other thing.”

I think that's one of the key areas where they're differentiating: having really good post-training data and also just being able to run RL at ridiculous scale.

Tim Scarfe

Quick pause. Agents are getting smarter every day, but even the smartest agents get stuck without the right context and the right tools. That is where Notion comes in. With the recent launch of custom agents, Notion became the collaborative AI workspace where teams and agents work side by side. And now their new development platform is turning that workspace into infrastructure developers can build on. Now, this is exactly how I run MLST. The whole show lives in Notion. My guests, the publishing calendar, the commercial side, everything is in there. But what's changed is that it's now agentic. I just talk to my agent. It can be Claude or any agentic harness. And then it talks to Notion via the MCP or the CLI and it's just done. And then I can access it on my phone. It's an absolute game changer.

We'll get to the RL bit, because I know you've got an opinion that RL training is really important. There are a few things about what you just said. First of all, is the MoE thing just a trade-off for inference speed, or do you think there's actually some beneficial advantage in terms of factorization from having an MoE?

Alistair Pullen

I think, at least in my opinion, if we could have trillion-parameter dense models, we would.

Tim Scarfe

It would just be strictly better.

Alistair Pullen

I think it would just be better. But again, that's taking it to the logical extreme of: what would you need to run inference on that? What would you need to actually run a model of that size?

An interesting example of this—and it's not really a fair fight—is if you take, at small scale, something like a GPT-OSS-12B. That is an MoE; I believe it's 5 billion active, although I can't remember exactly. Then you take something like Devstral 2 123B, which I believe is a similar architecture to Llama 70B, so it's fully dense. I don't know if you've used them back to back before, but Devstral feels so much better than the GPT-OSS model.

They're architecturally quite different, particularly in the attention mechanism. Fundamentally, though, I think a huge part of that comes from the fact that one has 120 billion active parameters per token and the other has 5. We deployed both to customers last year, and the difference was night and day in terms of how they felt and what customers got out of the coding agent when they were running it.

Tim Scarfe

Oh, interesting. On the other stuff, you were talking about the data and the pre-training and the algorithmic work. Maybe the algorithmic stuff has converged only because we now have this basin of attraction where there are kernel optimizations and entire ecosystems around them, and maybe it's kind of converged.

The data thing is interesting, right? With LLMs, it's a little bit like, “What's the magic word?” If you frame the question in the right way, it has that representational friction and does interesting things. I'm guessing Anthropic does a whole bunch of data curation and pruning.

Another thing Anthropic has is Claude Code. They have the ecosystem, and—

Alistair Pullen

They have trajectories coming in all day, every day.

Tim Scarfe

Exactly. Those trajectories—because you've got this big thing that it's not about where you end up; it's about how you got there. Software engineering isn't about writing code. It's actually about creating a process.

Creating mental abstractions, doing experiments, refining those abstractions, and sharing them with the team. This process—iteratively, I'm running code, testing things, and refining my abstractions—and Anthropic has access to so much of that data. How much of an advantage is that?

Alistair Pullen

Obviously, it's a huge advantage. I don't know what their terms of service say, and I'm not saying that they train on all that data. I don't know whether they do or not.

One of the interesting things about having trajectories—and something that we obviously do internally—is that we collect our own trajectories from our own use of Cosine. Obviously, we don't have anyone else's because of the way we deploy it. For Cosine employees using Cosine, at least, we still get a fair number of trajectories—nothing like the order of magnitude that Anthropic gets.

The most useful thing about trajectories for us is seeing how users prompt models. There's one thing when you're putting together RL datasets and you can come up with these beautifully formed problem statements that are fed into the model. They're very well structured, very well formed, and very clear about what the expected outcome is.

The reality is that users don't prompt models in that way at all. They're like, “Fuck you. It doesn't work. Why the hell—are you dumb? Why have you done this, that, and the other thing?” If that's the distribution that the model is going to be exposed to in the real world, then you need training data that looks like that.

I would speculate that a lot of the alpha Anthropic gets out of the trajectories it receives is obviously helpful. I don't think they canonically know; it's not like there's a grader attributed to that trajectory. It's not like an RL process where you know that the trajectory was good.

Absolutely, I'm sure you can do some judging and see how the users responded, so you can say, “Okay, at this point the user was probably satisfied that the job was done.”

But it’s also fundamentally about seeing what the user is saying during the conversation and how they’re saying it. That is incredibly useful, and even at our scale, there’s an argument to be made about how representative it is of the entire development ecosystem. That’s a different question, but we do have an idea, generally speaking, across months and months of usage, of how engineers interact with these products and how they respond and all these things. That’s very useful for making things more realistic at training time.

Tim Scarfe

Yeah, 100%. You’ve spoken about slop online, and it’s one of my pet topics as well. Vibe coding works in the sense that quite often it does the thing that you tell it to do and the test will pass, but actually you’re building a spaghetti monster. You’re throwing more bad spaghetti after good spaghetti, and instead of doing a one-line fix that it’s supposed to do, it’ll give you 200 extra lines. There’s the whole understanding-debt thing; we can talk about that.

So what we actually want to happen—and neural networks do this to a certain extent—is that they learn statistical invariances that represent some kind of abstract structure, and that helps them generalize. Obviously, what we want them to do is learn problems in the abstract so that they can generalize to new, novel problems that they’ve never seen before. The idea is that we capture the thought process and then capture that generalization if we do it well enough. That’s the rough idea. How do you think about slop?

Alistair Pullen

Slop is also one of my pet hates. Obviously, any of your viewers who use Claude Code or OpenCode, or whatever agentic coding harness they like, see this ad nauseam. It’s a combination of model, vibe, and slop problems, and you hit the nail on the head in your question: the tests pass. Is it technically functionally correct? Sure. But at what cost is the big question.

Fundamentally, when you think about how these models are trained to do software engineering—and this is the realization we had when we built Outpost, and I’m sure you’ve seen the blogs about how we did it—normally, and again, we don’t have that much insight into how this works in the big labs, but normally, when you’re training a model to be better at software engineering, you have some kind of software engineering problem. You have a problem statement and some kind of test, often a unit test, but not always, depending on the task type, that is failing in the prior state and passing in the after state.

Then you give the agent the problem. It goes and does its trajectory, its rollout, and then, at the end, you run the unit test. If it passes, then, okay, you got it right. Great—you get a reward, and then the weights update.

Obviously, the problem with that is a fewfold, but fundamentally, it could have come up with the most insane way of doing something. That could be in terms of commands it ran that were unsafe, or code that’s absolute crap compared to what it should have actually done. All of those things get reinforced, whether you like it or not, when you give that reward based purely on correctness.

There are a number of things we have done and are continuing to do in the RL process to try to ameliorate this. In terms of slop specifically, there are a couple of key things. One is that correctness gates everything else. If you get the problem wrong, regardless of whether you did it in an elegant way, you don’t get rewarded. But beyond that, we do have other rewards that target the exact things we’ve been talking about.

Also, in some cases, but not all, we do have reference implementations for these things. If you are using a pull request from a permissively licensed open-source repo as some seed data, you do have the original patch the human made. You can actually do some level of, okay, let’s compare what the agent wrote, let’s compare what the human wrote, and does this seem reasonable? If it’s 500 lines longer, probably not. Maybe we shouldn’t give the full reward for this. So there’s stuff you can do on the pure reward level, but we’re also doing stuff on an algorithmic level, which is being looked at more and more in the space.

That has to do with credit assignment in trajectories. One of the big problems with RL as it stands—I think Andrej Karpathy said this over a year ago—is fundamentally this notion that you have a rollout of maybe 256,000 tokens in some extreme cases, and that culminates in a 1 or a 0, depending on what the model did. What we’re saying at the moment in many cases is, okay, all of those tokens are equally weighted in getting us to that answer. Yeah.

Tim Scarfe

Which, when you think about it, is insane, because that’s clearly not true. In so many cases, there will be small—or important—decisions in a trajectory that were forks in the road, and that could have resulted in a bad outcome, but the model decided to go down the right path and ended there. What we and others in the space are trying to do right now is, if you can find those ranges of high-entropy tokens, or places where a decision was made, finding that is half the problem. Then, once you know that this is an important thing that happened, determining whether it was good or bad relative to the final outcome is a different story. Yeah.

But if you can do that, your RL gets significantly more efficient because you’re not relying on the entire trajectory. The analogy I always come up with is, say you were doing your English A-level and you’d written a 2,500-word essay for your teacher. You’d written it as practice, and the teacher just gives you, “Right, okay, that’s a B. Thank you so much.” And you’re like, “I don’t know what made it a B.” The teacher says, “I’m not going to tell you what made it a B. It was a B.”

Then what you’re going to have to do is write hundreds of essays. You’ll get an A on some, a B on others, and a C on others. Eventually, you’re going to be like, “Okay, when I do this, I tend to get an A more, so I think this is probably a good thing to reinforce.”

Alistair Pullen

But it would be far easier if the teacher just sent you a circle around the sentence and said, “This is rubbish. Don’t say this.” That is fundamentally the principle we’re trying to bring into RL across the board, because you get so much more performance and get more out of the FLOPs that you have. You’re also teaching the model to learn the things that are actually important, and not just the filler, right?

Tim Scarfe

I know. I mean, the great thing about machine learning is that it just generalizes low down the abstraction mountain. So, from very superficial statistical generalizations, the bad thing about machine learning is that it generalizes. So, yeah, I completely agree with you.

We have a huge problem with benchmarks and machine learning. We’re obsessed with pass@1 and pass@5 accuracy, and we don’t seem to care about reliability, consistency, security, or abstraction-forming. That’s clearly the most important thing. François Chollet did the ARC challenge, and unfortunately, those were brute-forceable. Now he’s got this new version, which is so difficult to brute-force that you have to form abstractions to get any kind of good performance on it.

So you’re saying there’s a new form of RL, perhaps different from the DeepSeek type of RL, where rather than just being rewarded for getting the right answer, you’re forcing it to form reusable abstractions and go higher up the mountain?

Alistair Pullen

Yes, in short, you’ve explained that far better than I did, but yes, that is essentially what we’re trying to get to. One of the nice things is that I think, essentially, what we’re talking about here is credit assignment within a trajectory. That ports quite nicely to a bunch of different RL algorithms that are in vogue at the moment. You can use it with GRPO, you can use it with GSPO, and all the different flavors of that algorithm.

Fundamentally, having a rigorous and, importantly, unopinionated way of pointing at ranges of work that an agent has done and saying, “This is good; this is bad,” and so on—and having the advantage calculated across those different trajectories attributed to those ranges disproportionately to the rest of the tokens in the trajectory—means that your weight updates will be more targeted at making those characteristics either appear more frequently or less frequently.

Tim Scarfe

Do we still have an epistemic problem? Because the one problem with machine learning is that it doesn’t really have the notion of true and false. We can do feedback from code execution, and we can do a whole bunch of abstract lenses on actual processes that engineers are doing, but don’t we still have this gap that we don’t really know whether it was correct or not?

Alistair Pullen

Yes, it’s one of the hardest things.

Particularly, one of the obvious reasons coding has taken off as a use case is because you have verifiable rewards in some guise. I think one of the things that I’ve just said is that we’re trying to bring some of the fluffier, taste-related things and make them verifiable, but on a more floating scale. Obviously, for things like law and other nonverifiable domains, that is way, way harder.

I think that is one of the key reasons that we haven’t seen the same revolution in other industries as we’ve seen in coding, maths, or physics, because you can’t just statically compile some law and see whether you get a 1 or a 0. I don’t know what the answer to that is. I really don’t. Maybe there are new ways of codifying those domains, or maybe you just bring everything in-distribution, which I think is what’s happening these days. I think if you just make everything in-distribution and target every use case, and you have some level of either a human judge or a good LLM judge that has been trained or well-prompted by a human, you get close. But I still think that, essentially, in many cases, you need to enumerate a lot of these problem sets at train time and make sure the model’s good at them, because otherwise the dream of generalization across the board, I think, has already been shown not to really exist that much.

Tim Scarfe

I know, but we’re in such an interesting time because every new model comes out and Fable is so much better. We want to have systems that do more with less, which is what you’re saying. We want them to acquire these abstractions. It’s a really weird situation, right? Do you think we’ll ever get to a point where we can remove the human from the loop?

Because right now, I think the basis of AI psychosis is that you have very, very talented humans, and they know how to ask the question, and they have taste, and they go in the right direction. There’s this virtuous co-creation cycle. It’s very, very good. So we’re now in the realm of—not vibe coding, it’s agentic engineering. It’s very exciting. But do you think it could ever be done without humans?

Alistair Pullen

Yes, I think it can be done without humans. I don’t think we’re anywhere near there yet.

Tim Scarfe

What would that look like? Do you mean in well-specified problems? I’m not talking about style transfer. Anthropic built a C compiler, and that’s a well-specified problem. Say I give you a novel application and I can only vaguely specify it.

Guest

We’re going to need a human for a long time, aren’t we, if you want it to be good and maintainable and actually in the style of something that a senior engineer would write. For now, yes, you definitely need a human there. Probably post hoc, to be like, “Okay, here’s the mountain of stuff that you need to change,” and all the design decisions that, in your chain of thought, you thought were good but actually weren’t because of real reasons.

But I do think that we will get there. I think it’s going to be through a combination of model improvements, creating RL environments and problems that really look like the kinds of things you’re talking about, and harness engineering. I think it will be a combination of all those 3 things.

Tim Scarfe

Yes. And we’ll get to harness engineering, but in the meantime, we’ve got the spaghetti monster mitigation strategy, and I think one of the big problems is code review, right?

Alistair Pullen

Oh yes, totally.

Tim Scarfe

Because the AI psychosis has manifested in my understanding that, increasingly, I become less aware of what’s going on, and that’s actually really bad for maintaining my competence and for being able to evolve the software going forward.

Alistair Pullen

Ask the right questions. Yeah.

Tim Scarfe

Absolutely. Exactly. So how can we do this? Because now we’re generating ridiculous amounts of code, right? Is this a case of let’s use more AI to do the review, or do we still need humans in the review?

Alistair Pullen

I think we need more runtime validation of what AI is producing. What that looks like is, I think, code review will evolve somewhat. I think it will be more like proof that the thing it says it’s doing is actually doing that thing. Obviously, AI reading Git diffs is not useful. I think it can catch things, and I’ve seen it catch things in the past.

One analogy that I can tell you that’s really good when it comes to, say, our cybersecurity scanning product is that it’s analogous to code review because it’s basically reading a whole codebase using a swarm. One of the key things that we saw with that was that it would go through that process and pick up so many things across large codebases: “This could be a problem. This could be a problem. This could be a problem.”

I think one of the things that we see in that and in AI code review is that, sure, if you just look at that code in isolation and that function definition, it can look quite dodgy. But in reality, the code path is never hit, or there’s another function that’s called first that mutates this variable, which then means that it doesn’t do what you think it does, or there’s an environment variable that’s set at runtime that means this doesn’t happen. All of these things—you know, it’s just static analysis. You can’t do it.

One of the best ways that we mitigated that problem in that product was that we had what we called exploit validation. The swarm comes up with its list of things, and before any of them makes it to you, we spin up the application in a virtual machine, in a way as close to production as possible, and we tell the agent, “Well, you’ve seen the source code, so if it’s vulnerable, you should be able to figure out how to get through it. You should be able to craft your horrible ZIP file to exploit this thing that you think exists.” If you can’t, then you just take it out of the list because it’s clearly a false positive.

What we’ve been working on is applying the same logic to PRs. We’re not necessarily looking for cyber vulnerabilities, but we’re looking for this: You have allegedly built out this feature. You have this new screen that has a table in it or a form in it that does this. When you click on this button, it should result in a new entry in the DB, and it should show up in all the stuff you’d expect.

Instead of just looking at the diff—which, obviously, you can do, and for the most part you can get a lot of mileage out of that—also just show me it’s doing that. Prove that it’s done that in some reasonable way before it even makes it to me, because otherwise you end up in this situation.

I was just talking to a customer earlier today, and they were saying that when they first started adopting agentic coding tools, they were in this spot where either they would end up with this enormous backlog of code review, or you’d get people saying, “After a minute, looks good to me. Merge. Thank you so much.” You just get this YOLO merging into your main branch, and that’s bad as well.

I think there is going to be way less cognitive burden if, however you’re doing a review, you can see the code, but you can also see canonical proof that, at least on the happy path, the thing it’s saying it’s doing is actually happening. The other half of this, at least in the present day, is also really comprehensive end-to-end testing of everything you build.

That is something that really sucks to have to build out, but once you have it, it saves you from so many problems. I’m sure, as you know, you’ve seen it—I’ve seen it in personal projects and so on. You vibe-code for an afternoon, you build 10 new features, then all of a sudden the other 5 you had before stopped working. Why has this happened? It’s like, “Oh well, okay, the abstraction you had—I’ve just messed with it, and now it doesn’t work for that thing.”

So, yeah, it’s a combination of defensive stuff, like the end-to-end testing, and also proactively lifting mental burden from people by being like, “Look, here’s either a screen recording or some screenshots or whatever of me showing you that this is what I think it is.”

Tim Scarfe

I know. It’s really funny. After Claude deletes your production database, it’ll say, “Oh, you’re right to point that out. I’m so sorry for doing that. There’s nothing you can do about it, by the way.”

Alistair Pullen

I mean, this is another alignment problem, though, right? If we are accumulating understanding debt, the functional descriptions themselves are going to suffer from that because we don’t understand the functional description anymore. And it’s not just functional descriptions. There are intents, there is behavior, there are all of these different levels of describing a system, user stories, and stuff like that.

Unfortunately, these are different views of the blind elephant, right? They don’t necessarily have friction with reality. You see the problem here: we’re just losing touch with what it’s supposed to be doing. In many cases, actually, Claude and the models are writing the functional tests, and then they’re kind of hacking their own…

Oh, it didn't pass. Okay, I'll just change the test. Now it passes. Great. Here we go. You see it all the time.

Tim Scarfe

I know. It's a very difficult problem, but one that we need to fix. For me, I think a lot of it has to do with scoping and constraints, to at least cut down the size problem. But we should move on. What are your thoughts on agentic engineering?

You guys have an agentic harness. If I understand correctly, a couple of years ago, you actually forced everyone to start using that because you really wanted to optimize the hell out of it. You were talking about the RL piece, so maybe there's some co-evolution with the agentic harness and the RL. What's important in this agentic harness?

Alistair Pullen

I think that, broadly, agentic harnesses are getting less important over time.

Tim Scarfe

Oh, interesting. Why?

Alistair Pullen

The models are just getting so good.

Tim Scarfe

Oh.

Alistair Pullen

I think you can get the proof point from the fact that a model can probably do, with Bash only, basically any task these days—more slowly and with more tokens, but it can probably still do it. That's not to say that agentic harnesses aren't important, but I think, over time, where's the value coming from? It's coming from the model and not from the harness.

I think the way that we built ours—and we have been building agentic harnesses for a very long time—is important here. The first agentic model that we had was a fine-tuned GPT-4 Turbo model that we trained in January 2024. The coding-agent harnesses didn't exist at that point. Claude Code didn't exist. None of this stuff existed, so we had to build one out.

We did that symbiotically with the design of the model, which is something we still do today, because you get way more performance out of tightly coupling the two. Fundamentally, harness engineering is still something we care a lot about. These days, we actually care more about efficiency than anything else.

In a world where token costs and tokenomics—which is a word I heard for the first time today; awful word—are becoming increasingly important, particularly to enterprises that we sell to, we want our harness to use as few tokens as possible. Full stop. That's what we're trying to do.

Tim Scarfe

Yeah, we'll get to that in a second, because if the models can do epistemic quantification, you could, in principle, allocate a budget of tokens to get certain things done. But even before we get there, I want to push back on the harness engineering, because one thing I have found is that subagents are a game changer.

Alistair Pullen

Yes, absolutely.

Tim Scarfe

A lot of problems are too complicated for an LLM to do in a single pass. I'm sure you've had a similar experience. As a problem becomes more specified, as you reduce the ambiguity, the entropy goes down, the models get better, and the models are better when they have less rot in their context.

So what happens is, after doing a bunch of engineering, what engineers find is that they decompose problems into agentic subtasks, and then they have a fresh agent. The agent has a clear specification—

Alistair Pullen

Only do this one thing. Yeah.

Tim Scarfe

Exactly. But what you're doing logically as an engineer is factorizing a problem into smaller subproblems. You're getting agents to orchestrate, and you're not rotting the context in the main one. How do you see that evolving over time? Because now it's quite a manual process, but you do have this Swarm thing, maybe.

Alistair Pullen

Oh, thank you for bringing that up, because that was exactly what I was going to answer. Swarm, to me, is subagent orchestration taken to the logical extreme. We're kind of lucky to be able to do it because, obviously, Claude Code has, I believe, workflows, and Codex has subagents as well.

A swarm is what it sounds like on the tin. A swarm is genuinely a lot of subagents running at the same time in a hierarchical way. Because Cosine isn't trying to serve hundreds of millions of people a day, we are able to serve a swarm-like feature. Whereas I think if Anthropic had a swarm for Opus, even Colossus Swan would run out of tokens.

Swarm does exactly what you've just outlined automatically, basically. There is a video on my Twitter and also my LinkedIn of me taking our Lumen Outpost model, which is post-trained from Kimi K2.6. So definitely not an Opus or a Mythos or anything like that.

I asked it, "Okay, I want you to build me a mechanical-watch compiler." I am Swiss by birth, so I have a reason to do this. I basically asked, "I want you to build me an SDK in Python so that I can specify mechanical watches in code. I don't know horology, but I want to be able to do it anyway."

I want it to be physically congruent. I want you to use some kind of physics engine. I also want a 3D viewer so that I can see the thing running. It all needs to be possible in real life. You can't have things intersecting each other when that wouldn't be possible, and so on.

That is something that, out of the box, Kimi cannot do. There's no way, not even close. It would be terrible. In fact, even Gemini 3.5, Opus, and 5.5 can't really do it.

But as soon as you put them in a swarm—and what Swarm looks like for Cosine is that you have one orchestrator at the very top—it breaks down a problem into subproblems for basically product managers, or whatever you want to call them. We call them subplanners, but they own verticals of this.

Within that task, you would have had a subplanner to do the SDK, a subplanner to do the 3D viewer, a subplanner to write the documentation, and so on. Those subplanners could then delegate to workers, and they have a flat layer of as many workers as they like.

For that problem, we use subagents, which I think is more than you tend to see in a Claude Code session and so on. You'd probably hit your usage limit pretty quickly that way. But when you do that, it is possible, and you can do that entire project in one shot.

I'm contradicting myself quite badly because I've just said harnesses don't matter, but in that respect, they obviously do matter.

Tim Scarfe

Oh, indeed. I'm very excited about that. But it raises the question: first of all, when you start to have loads and loads of agents, you have more understanding debt and less interactivity, because, for me, the lack of interactivity is part and parcel of the understanding debt.

Sometimes you want to interject and say, "Oh, you've gone slightly wrong there. I want to change what this agent's doing." What many folks have found when they build these agent systems is that the agents interfere with each other. They kind of overwrite each other. They go into deadlock. How are you dealing with all that?

Alistair Pullen

So it's a hard problem, and we experience all those things. One of the key things that we did is give you the ability to interject with an agent at the lowest level. Say you had a worker that was two levels down from the top one; you can actually talk to that one, which is important.

With regard to other problems, in terms of treading on each other's toes, you can put write locks on files so that only one agent can edit a file at a time. You can also provide context to agents when they're using files. Say an agent is reading a file that it just read: We have stuff in the harness that says, "Okay, another agent has just edited this file, so don't be surprised if you see it slightly differently from how you saw it last time."

All these things help. They're not a panacea, but they certainly help. They make sure the agent is less surprised when it's like, "Oh, where did that come from? That wasn't in my last edit?"

Fundamentally, it comes back to the point I made earlier: yes, you will run this thing, and it will provide you with a huge amount of value very quickly, but you're still going to have to comb through it afterward and be like, "Actually, the reality is I don't like the abstraction you've done. I don't like the way you've done this." There is going to have to be some sweeping afterward, I think.

Tim Scarfe

Yeah, what are your thoughts on memory?

Alistair Pullen

Very hard to get right.

Tim Scarfe

Okay, tell me more.

Alistair Pullen

It's very hard.

Tim Scarfe

Well, a similar thing actually applies to the RL, because memory is not about the destination; it's about how you got there.

Alistair Pullen

Yes, memory is very hard to get right. We've tried a bunch of different approaches. Fundamentally, I think every approach to memory that exists right now is a bit of a hack, right? It's like a tool.

In many cases, it's a vector database or an embedded version of some tidbit of knowledge, but it's very hard for agents to know when to query. It's also fundamentally quite hard for the agent to know whether something was useful enough to write to memory. It's also difficult to keep these things up to date.

We've had many situations where an agent's been doing a trajectory, and when it's been doing something that was genuinely the right thing to do, it's used its memory, but the memory's been old and out of date. Then the agent's like, "Oh, well, the memory says you should do it this way," and it changes its tack. There, you're like an engineer, "No, please don't do that."

There are things that we’re looking at internally with regard to continual learning and stuff like that, to try to avoid memory being a tool and for it to just be something that’s in the latent space with the model. That is also very hard. But I think it is a more intuitive and elegant solution than it just being a tool. It’s also a tool that’s very hard to get right during RL because it is a huge surface area for foot-gunning, in terms of reward hacking, leakage, and being able to query something from the future that it shouldn’t have access to yet, despite all the guardrails that you can put in place. It’s just hard.

Tim Scarfe

Yeah, exactly. And in a sense, this is another area for AI psychosis, because I’ve written a memory CLI, and I would almost argue that now you don’t even need vector databases and so on. You can just have an inverted index, just SQLite, because the models are so good at asking in different directions. So, yeah, there is a huge problem: it needs to know to retrieve that. That’s a big one, but it actually works.

It only works for me because it creates this fractionated spaghetti mess again. So there’s another spaghetti mess in the memory CLI, but it works really, really well. It doesn’t work very well at the organizational level because my spaghetti monster doesn’t play with John’s spaghetti monster. If we could solve that problem, you’re drawing an interesting picture as well of how we can actually optimize the different layers of the sandwich together.

Alistair Pullen

Yeah. I think that as soon as someone gets it right, you’ll just know when you’re using it immediately. I haven’t seen a single implementation, whether it be Claude Code, to be honest, whether it be ours or ChatGPT’s or any of them, where I’m truly like, “Oh no, this isn’t just a hack. This isn’t just RAG.” This is the one remnant of RAG that still exists, really, in the more traditional sense, and I am certain that there is a better way out there somewhere.

Tim Scarfe

Oh, definitely. But I think another thing you’ve said is specialization, not generalization. For me, a lot of agentic engineering is emergent specialization. So it’s like, let’s take a big intelligence to crystallize a small intelligence to do the particular thing we’re doing.

But as we’re nearly out of time, the final question is synthetic data generation. So what are you guys doing about that?

Alistair Pullen

Tons. [laughter] I don’t know how much of it I can get through in 5 minutes, but I’ll do my best. There are a number of areas where we’ve done synthetic data generation in the past. We’re doing a lot more of it in the more forward-looking sense for the sovereign model, because the sovereign model can’t just be good at software engineering. It has to be useful across the board, and that means that we have to get good at synthetic data generation, particularly in the RL realm, for things that aren’t just coding.

The bread and butter, though, is coding. The way that we’ve done this in the past is with a very cool and sophisticated pipeline that we’ve built out over the course of about a year and a half now. One of the big cold-start problems in coding RL, particularly if you’re using open-source repositories as a sort of seed data—and even if you’re using closed-source, it actually doesn’t matter—is that nearly all of the PRs, commits, or whatever you want to refer to them as, don’t have a built-in grader.

Tim Scarfe

Right.

Alistair Pullen

The ones that do are often bug fixes. The classic example, I guess, if you’re nerdy enough to be in the space, is an SWE-bench-style problem. You have a GitHub issue, you have a PR that fixed it, and then, because it’s open source, you have some sort of regression test that was added. That’s your seed data.

The real world doesn’t look like that, unfortunately, and software engineering in the broad sense doesn’t look like that. Meaning that, to do RL well, you still need to fundamentally be able to do tasks that aren’t bug fixes, which is the vast majority of what engineers do. You still need to be able to tell whether the agent got it right or not, broadly speaking.

At Cosine, we take real work that was done. We’re not magicking up made-up problems for the model to solve, because fundamentally, if the model can come up with a problem, it can probably solve it. We take real problems that were solved, whether it be feature work, refactoring, or whatever it is, and what we’re synthesizing is ground truths, graders, or ways of measuring whether that thing has been done.

It is a bit of a minefield because, particularly with RL, obviously it’s not supervised. Fundamentally, we need to be able to test these things in a way that isn’t too tightly coupled to the original implementation. There are many ways to skin a cat, as we know. What that looks like in practice is that you need an implementation-agnostic enough way of testing it that’s still rigorous enough to check functional correctness. It is a very fine line to tread.

Alistair Pullen

We’ve done a lot of work around it, and we have a long pipeline built on it. We have custom post-trained models that live inside that pipeline that have essentially gotten good because we had to do a lot of manual labeling in places and stuff like that. What it has allowed us to do is have an autonomous pipeline, which is particularly important for enterprises.

We can point at essentially any programming language, any type of task, any stack, anything like that, and say, “Okay, I want RL data for this problem set,” and we can get a good chunk of it. For our Outpost model, when we were coming up with the languages that we wanted to get the model good at—things like Java, Fortran, C++, I could go on—we used that pipeline to gather the RL data for these things.

In many cases, and in some programming languages, there aren’t even test suites. That’s where it gets really hard. That’s where you have to get a bit inventive in terms of measuring whether the agent has gotten something right or not. I think it’s things like Verilog and SystemVerilog, where you have to actually run what’s called a synthesizer in your environment to be able to tell whether the chip actually works or not.

Tim Scarfe

An EDA.

Alistair Pullen

Yeah, exactly. Fortunately, I don’t run this pipeline. A chap called Ben does, and he knows far more about that than I do. But, yeah, that is broadly, within software engineering, how we’ve gotten very good at it, and it is something that we’re generalizing out into other use cases that aren’t just software engineering as well.

Tim Scarfe

Very cool. So, in closing, you might argue that the US government has handed you a commercial advantage here, because now it’s more important than ever to build sovereign AI. You guys have this model coming out towards the end of this year, so do you think you’re going to be able to do it? But also, are you still at risk from a supply-chain point of view? Because so much hardware is controlled by America. How’s this going to pan out for you guys?

Alistair Pullen

Naively, I think that if the hardware is already in the UK, I don’t know how much they can do about that. All of the infrastructure the model is going to be trained on already exists and is up in the UK because we’re doing it very soon, right? In fact, experimentation is already happening upstairs.

In terms of whether what’s happened recently has been a bit of a gift, given our positioning, absolutely, yes, without a doubt. It has been probably the busiest I have ever been since founding the company, in terms of people coming to us saying, “Okay, we now realize what you’re doing is really important. How can we be involved?” The consortium of companies that you read out is growing by the day.

The involvement and the urgency, importantly, from those companies, from government, and from just citizens as well has gone through the roof. I feel very fortunate and, to an extent, lucky that obviously we were well positioned to take advantage of this early. Also, we did put ourselves in that position, but also, thank you, Donald Trump.

Tim Scarfe

How did we not see this coming, though? Because it was such an “Oh, shit” moment for so many people.

Alistair Pullen

I think we did, though. I think a lot of people did. We certainly did, but it was always fobbed off as, “Oh, sure, okay, I suppose that could happen.” But I personally didn’t expect it to happen as soon as it did.

I’m also freshly surprised by the 5.6 news that I’m sure you’ve seen as well, where that’s going to be rolled out. Even for me, there’s a huge part of me being like, “Oh, man, that really sucks. I wanted to try that model, and I don’t know whether I’ll be able to now.” That might just be the existence for us now, unless we and others do work to get that level of performance out in some other way. That’s our job now, I guess.

Tim Scarfe

Yeah. I mean, for the first time, I feel like a second-class citizen because those folks over there in America have better AI than I do. They’re going faster than I am, and I really hate that.

Alistair Pullen

And believe me, that boils my blood more than anyone else. We are going to do everything we can to pull this off.

Tim Scarfe

You mentioned, “How are you going to do this?” It’s like, we’re just going to make it happen. We have no choice but to make it happen.

Tim Scarfe

Please do.

Alistair Pullen

Yes, we are going to do everything we can to make it happen.

Tim Scarfe

On behalf of everyone in the UK, please do.

Alistair Pullen

We’ll do our best. Thank you.

Tim Scarfe

It’s been a pleasure. Thank you so much.

Alistair Pullen

Thank you very much for having me.