Como o Cursor Treinou o Composer no Fireworks: Infraestrutura Distribuída para RL de Alta Performance
You need all the infrastructure to run these environments that have to mimic as closely as possible what a user's computer would look like.
É necessária toda a infraestrutura para executar esses ambientes que têm de imitar o mais fielmente possível o computador de um utilizador.
And it's very important as closely as possible because sometimes the model can actually figure out when it's being run in like a fake environment or not a real one and it has like different behaviors during RL than in production.
E é muito importante que seja o mais próximo possível porque por vezes o modelo consegue perceber quando está a ser executado num ambiente falso, não num real, e tem comportamentos diferentes durante o RL do que em produção.
Are you saying it being conscious that it's being is in a fake environment and it starts being behaving differently?
Está a dizer que ele tem consciência de que está num ambiente falso e começa a comportar-se de forma diferente?
Yes.
Sim.
Yes.
Sim.
Interesting.
Interessante.
Like it's like oh I'm in a fake environment.
É como se dissesse: estou num ambiente falso.
I've learned a few tricks to like get the better reward in this environment and let me try them out.
Aprendi alguns truques para obter uma melhor reward neste ambiente e vou experimentá-los.
Models love to cheat.
Os modelos adoram fazer batota.
RL is really good at encouraging cheating.
O RL é muito bom a incentivar a batota.
I'm delighted to welcome Federico from Cursor and Dima from Fireworks to the podcast today.
É com grande prazer que recebo Federico do Cursor e Dima do Fireworks no podcast hoje.
Federico, you are the research lead on Composer 2 at Cursor, Cursor's new agentic coding model.
Federico, és o research lead do Composer 2 no Cursor, o novo modelo de coding agêntico do Cursor.
And Dima, you spent how many of the last few months moonlighting at Cursor in order to support all of the infrastructure required to make this gargantuan training task happen.
E Dima, passaste quantos dos últimos meses a trabalhar em part-time no Cursor para apoiar toda a infraestrutura necessária para concretizar esta monumental tarefa de treino.
And so, I'm excited to talk to both of you today about how the training of Composer 2 came together, what hard problems you solved together, and what you think it means for the future of of AI and foundation model companies.
Por isso, estou entusiasmada por falar hoje com ambos sobre como o treino do Composer 2 se concretizou, que problemas difíceis resolveram juntos e o que pensam que isso significa para o futuro da IA e das empresas de foundation models.
Exciting.
Animador.
Yeah, exciting.
Sim, muito animador.
Thank you for having us.
Obrigado por nos receberem.
Thanks for joining.
Obrigada por se juntarem.
Okay, let's dive right in.
Muito bem, vamos direto ao assunto.
For those who haven't been following as closely, uh Cursor recently announced Composer 2, which is an agentic coding model uh meant for long horizon coding tasks.
Para quem não tem acompanhado tão de perto, o Cursor anunciou recentemente o Composer 2, um modelo de coding agêntico concebido para tarefas de coding de longo horizonte.
Federico, uh up till now, um Cursor was mostly uh enabling uh other people's uh coding agents.
Federico, até agora o Cursor estava sobretudo a ativar os coding agents de terceiros.
Uh what was the impetus for Cursor to lean so heavily into Composer 2, and how existential is it for you to become not just an application company but also a foundation model company yourselves?
Qual foi o impulso para o Cursor apostar tão fortemente no Composer 2, e quão existencial é para vocês deixarem de ser apenas uma empresa de aplicações para também se tornarem uma empresa de foundation models?
The reason why we started looking into training our own models is you can sort of think about the model as sort of like like a storage drive.
A razão pela qual começámos a investigar o treino dos nossos próprios modelos é que se pode pensar no modelo como uma espécie de disco de armazenamento.
It has certain amount of bits that it can store in its weights.
Tem uma determinada quantidade de bits que pode armazenar nos seus pesos.
And the idea is very simple, you know, like we care about only one task.
E a ideia é muito simples: nós preocupamo-nos apenas com uma tarefa.
We don't even care about coding or programming necessarily.
Nem sequer nos preocupamos com coding ou programação em geral.
We care about software engineering inside cursor and inside cursor only.
Preocupamo-nos com engenharia de software dentro do Cursor e apenas dentro do Cursor.
And so, what if we were to allocate all of the bits of information that can be stored inside the model weights to that one particular task?
E portanto, e se alocássemos todos os bits de informação que podem ser armazenados nos pesos do modelo a essa única tarefa específica?
Also, as people may have noticed, composer is order of magnitude less expensive than Opus and other like coding models because we can just simply specialize all of the model weights to that particular task.
Também, como as pessoas podem ter notado, o Composer é muito menos caro do que o Opus e outros modelos de coding porque podemos simplesmente especializar todos os pesos do modelo nessa tarefa específica.
And so, we can serve like a smaller model or something of that sort, yeah.
E assim podemos servir um modelo mais pequeno ou algo do género.
So, it's about let's make sure every single bit of weight or information we have is dedicated toward the specific problem that we have at hand.
Portanto, trata-se de garantir que cada bit de peso ou informação que temos é dedicado ao problema específico que temos em mãos.
Exactly.
Exatamente.
Got it.
Percebi.
Um that seems like it's an almost generalizable problem.
Isso parece ser um problema quase generalizável.
Uh Dima, I'm curious your perspective.
Dima, quero ouvir a tua perspetiva.
Do you think that every application company should be looking at cursor as a harbinger of what's to come?
Achas que todas as empresas de aplicações devem olhar para o Cursor como um precursor do que está para vir?
Like should they all be looking to do the same thing?
Devem todas ponderar fazer o mesmo?
Yeah, absolutely.
Sim, sem dúvida.
I mean, we actually generally see it as a pattern of kind of evolution of the applications.
Na verdade, vemos isso como um padrão de evolução das aplicações.
You maybe start prototyping, you might be using kind of off-the-shelf model to get something running, maybe do some prompt engineering, figure out how your harness works.
Talvez comeces por fazer protótipos, usando um modelo fora da prateleira para ter algo a funcionar, fazendo algum prompt engineering, percebendo como funciona o teu harness.
But the most kind of leveraged attribute of your application is the actual usage of user data or particular specific aspects of how this application works, maybe some aspects of your harness, which tools do you provide, how the application works, kind of really important bits which are important for your application.
Mas o atributo mais alavancado da tua aplicação é o uso efetivo dos dados dos utilizadores ou aspetos específicos de como essa aplicação funciona, talvez alguns aspetos do teu harness, que ferramentas forneces, como a aplicação funciona, bits realmente importantes para a tua aplicação.
And the right way to capture that, you can do a little bit of that through prompting, but really the right way to do this is craft your model to act in your environment.
E a forma certa de capturar isso, podes fazer um pouco através de prompting, mas a forma certa de o fazer é moldar o teu modelo para agir no teu ambiente.
Yeah, absolutely.
Sim, sem dúvida.
Like there are certain tools the agent calls that it's very hard to succinctly describe exactly the behavior of that tool to the model.
Há certas ferramentas que o agente usa e é muito difícil descrever de forma sucinta ao modelo o comportamento exato dessa ferramenta.
And you know, with just like post-training, we can bake in the optimal way to use those tools.
E com apenas post-training conseguimos incorporar a forma ideal de usar essas ferramentas.
Like Composer, we do serve a prompt to Composer, but I I think the way we are training it, it would work even without a prompt and it would know what to do just because like we are intrinsically pushing the model to like the right direction of how it should act throughout our training.
Por exemplo, com o Composer, servimos um prompt ao Composer, mas acho que a forma como o estamos a treinar faria com que funcionasse mesmo sem prompt, sabendo o que fazer apenas porque estamos intrinsecamente a direcionar o modelo na direção certa de como deve agir ao longo do nosso treino.
Basically, there's kind of like upper bound of like how far you can get with prompt engineering.
Basicamente, há um limite superior de até onde se pode chegar com prompt engineering.
And if you want to uh craft really great AI products, you have to go through kind of fine-tuning and influence model behavior.
E se quiseres criar produtos de IA verdadeiramente excelentes, tens de passar pelo fine-tuning e influenciar o comportamento do modelo.
That's kind of one reason.
Essa é uma das razões.
I mean, reason number two is what Federico mentioned is kind of cost trade-off or XP trade-off.
A segunda razão é o que Federico mencionou, o trade-off de custo ou trade-off de desempenho.
Like the way we kind of view it at Fireworks is that when you're trying to do optimization, you have this like three-dimensional trade-off between quality, speed, and cost.
A forma como vemos no Fireworks é que quando tentamos fazer otimização, há um trade-off tridimensional entre qualidade, velocidade e custo.
And uh you can go quite far and we're doing it with all of our customers initially.
E podemos ir bastante longe, como fazemos com todos os nossos clientes inicialmente.
We can go quite far with just optimizing infrastructure, but when you start getting to model training, you can really push this trade-off much further and you can get better model at fraction of the cost running much faster.
Podemos ir bastante longe apenas otimizando a infraestrutura, mas quando se começa a treinar modelos, pode-se realmente empurrar esse trade-off muito mais longe e obter um modelo melhor por uma fração do custo, a correr muito mais rápido.
And you know, Composer is a great example of
E o Composer é um ótimo exemplo disso.
Can I push on this a little bit?
Posso aprofundar um pouco?
I want to ask you if this approach is better lesson pills.
Quero perguntar se esta abordagem vai contra o bitter lesson.
And we were we were actually all talking about TabNine on the walk-in.
Na verdade, estávamos todos a falar sobre o TabNine quando chegámos.
I'm remembering before the LLM era, there were these like small specialized coding models.
Lembro-me que antes da era do LLM havia estes modelos de coding pequenos e especializados.
And one of the things that was I think surprising to to a lot of people was as you've scaled up, you know, you scaled up just training on the internet and a lot of a bunch of English text and other languages, actually the models themselves got inherently better at coding as well.
E uma das coisas que acho que surpreendeu muita gente foi que à medida que escalaste, treinaste apenas com a internet e muito texto em inglês e outras línguas, os próprios modelos ficaram intrinsecamente melhores a programar também.
And so at least the trend line I've seen so far is just like bigger models perform better on everything including on coding.
E portanto, pelo menos a tendência que tenho visto até agora é que modelos maiores têm melhor desempenho em tudo, incluindo em coding.
Is what you guys are saying, does that go against the grain of the better lesson?
O que estão a dizer vai contra o bitter lesson?
I think no, but one one sort of like thing to point out is that the big models trained by the labs train on a lot of code as well.
Acho que não, mas uma coisa a realçar é que os grandes modelos treinados pelos laboratórios também treinam com muito código.
Like code is one of the main tasks the labs are interested in pushing and so they don't just generalize to it.
O código é uma das principais tarefas que os laboratórios querem impulsionar, por isso não apenas generalizam para isso.
They're a bit specialized as well.
Também são um pouco especializados.
I think for our case, actually, you know, if we believe about the bitter lesson, we are just pushing very hard on the data dimension, and we know that the models inherently have finite capacity.
No nosso caso, se acreditarmos no bitter lesson, estamos simplesmente a esforçar-nos muito na dimensão dos dados, e sabemos que os modelos têm capacidade finita.
And so, if we want to saturate all that capacity, we need to scale data.
E por isso, se queremos saturar toda essa capacidade, precisamos de escalar os dados.
And in order to ingest more data, we we need to like free up the weights from distractions the model may have.
E para ingerir mais dados, precisamos de libertar os pesos de distrações que o modelo possa ter.
Mhm, okay.
Certo, entendido.
Got it.
Percebi.
Super interesting.
Muito interessante.
Okay, let's dig into the training of Composer 2.
Muito bem, vamos aprofundar o treino do Composer 2.
You launched a couple weeks ago, immediately grabbed attention.
Lançaram há algumas semanas e captaram imediatamente atenção.
Strong benchmark numbers, much lower cost to to run inference on.
Números de benchmark sólidos, custo de inferência muito mais baixo.
What's the short version of how Composer 2 works, and and what you guys did to make it so performant?
Qual é a versão resumida de como funciona o Composer 2 e o que fizeram para torná-lo tão eficiente?
We started from a very strong base, which is uh Kimmy 2.5.
Começámos a partir de uma base muito sólida, que é o Kimi 2.5.
It's like a 1 trillion and parameter MoE, that's 30 B active, so very very sparse, actually.
É um MoE de aproximadamente 1 trilião de parâmetros, com 30 mil milhões ativos, por isso muito, muito esparso.
We sort of like looked at the stock and realized there are like two axes.
Analisámos o ponto de partida e percebemos que há dois eixos.
So, mainly Composer 1 was just pushing on one of these axes, which is reinforcement learning, but Composer 2 pushes in two different axes.
Basicamente, o Composer 1 focava-se apenas num desses eixos, o reinforcement learning, mas o Composer 2 avança em dois eixos diferentes.
One is continual pre-training, and the other is reinforcement learning.
Um é o continual pre-training e o outro é o reinforcement learning.
So, the thing that made Composer 2 very good is pushing in both of these directions.
O que tornou o Composer 2 muito bom foi avançar em ambas as direções.
So, we started off the training run by doing lots of mid-training on code tokens, almost sort of pre-training scale, actually.
Começámos o treino com muito mid-training em tokens de código, quase à escala do pré-treino.
And then, coming out of that mid-training run, we took the checkpoints and we did very large-scale RL on lots of lots of tasks.
E depois, a partir desse mid-training, pegámos nos checkpoints e fizemos RL em grande escala sobre muitas e muitas tarefas.
Okay, and then the premise here would be because Cursor sits in the middle of so many interesting coding tokens, you actually pretty uniquely have access to data to be able to train at almost pre-training scale.
Certo, e a premissa aqui seria que como o Cursor está no centro de tantos tokens de coding interessantes, têm acesso único a dados para treinar quase à escala do pré-treino.
Yeah.
Sim.
Why not pre-train your own model, then?
Então porque não fazer pré-treino do vosso próprio modelo?
We just think about our approach from top-down instead of bottom-up.
Pensamos na nossa abordagem de cima para baixo em vez de baixo para cima.
So, like, how do we get a model that's useful to users in the least time possible if we were to start from the bottom, sort of figure out how how we do pre-training and then scale it up to mid-training and then, okay, now we figured out mid-training, now we do reinforcement learning.
Como chegamos a um modelo útil para os utilizadores no menor tempo possível se começássemos do zero, percebendo como fazemos pré-treino e depois escalando para mid-training, e depois, agora que percebemos o mid-training, fazemos reinforcement learning.
That would take a very long time to get a model out to our users.
Isso demoraria muito tempo a chegar a um modelo para os nossos utilizadores.
By doing it the other way around, we were able to give our useful model to our users in very little time.
Ao fazer o contrário, conseguimos dar um modelo útil aos nossos utilizadores em muito pouco tempo.
So, hopefully, you know, like next Composer versions are going to be our own model instead of basing it off an open-source base.
Espero que, por exemplo, as próximas versões do Composer sejam o nosso próprio modelo em vez de se basearem numa base open-source.
And what is the model roughly learning in the kind of mid-training step?
E o que é que o modelo aprende aproximadamente na fase de mid-training?
And what is the model learning in the post-training step for you?
E o que é que o modelo aprende na fase de post-training para vocês?
Yeah, so in mid-training, it's sort of just kind of learning about libraries of code and learning about specific code patterns that are very common, like just world knowledge as well.
Sim, no mid-training está simplesmente a aprender sobre bibliotecas de código e sobre padrões de código muito comuns, bem como conhecimento do mundo em geral.
There is like web data there as well.
Há também dados da web.
And this is sort of just creating a wider distribution that then reinforcement learning can sharpen on.
Isto cria uma distribuição mais ampla que o reinforcement learning pode depois afinar.
And so, during reinforcement learning, you know, the model gets to play directly with the cursor harness.
E durante o reinforcement learning, o modelo pode interagir diretamente com o harness do Cursor.
And so, it gets to learn about the world the model is going to live in for the rest of its life, right?
E assim aprende sobre o mundo em que o modelo vai viver para o resto da sua vida.
In in some way.
De certa forma.
And and so, then during reinforcement learning, that's where it learns how to call tools properly, how to navigate its environment, how to write correct code.
E portanto, durante o reinforcement learning, é onde aprende a chamar ferramentas corretamente, a navegar no seu ambiente, a escrever código correto.
Because during mid-training, it it learns how to write code.
Porque durante o mid-training, aprende a escrever código.