AI Engineer World's Fair 2026

How We Built an Agent That Improves Itself — Zubin Aysola, Weights & Biases

Read the talk

How We Built an Agent That Improves Itself

Zubin Aysola explains how Weights & Biases turns ARIA’s production traces into offline evaluation tasks, compares candidate variants with the deployed agent, and uses the results to guide its next improvement.

From a talk by Zubin Aysola

At a glance

Ideas worth remembering

  • Use the deployed agent as the offline baseline, and keep research code synchronized with production so experiments measure relevant behavior.

  • Score both task completion and relative behavior: passing a task and choosing a better interaction style answer different questions.

  • Turn successful production interactions into tasks alongside failures, so future changes can reinforce behavior worth keeping.

  • ARIA’s demonstrated self-improvement loop reproduces a production SDK error, creates a regression task, and tests a targeted prompt or skill change.

  • Automating task construction and evaluation leaves people responsible for deciding what improvement means and which guardrails help.

When the agent and its benchmark change together

An agent harness changes what a model can accomplish: the tools it receives, the context it sees, and the way its work is packaged all affect performance. At Weights & Biases, Zubin Aysola’s team builds ARIA to do research inside the platform. Improving that agent creates a measurement problem almost immediately. Benchmarks, evaluations, and agent configurations all change together. A higher score can reflect a better agent, a different test, or a different way of judging the result.

Source frame: When the agent and its benchmark change together
Source frame: When the agent and its benchmark change together

The useful comparison spans two environments: the deployed agent handling real requests and the offline agent working through simulations. Those simulations need to reproduce enough of production to make improvements meaningful outside the benchmark. This is the familiar simulation-to-real-world problem applied to software agents: success in a constructed environment matters only insofar as it carries into actual use.

W&B Weave connects the two sides through tracing. Offline runs record ARIA’s behavior in simulated environments; production runs log the same kinds of information in the same format. That shared representation lets a production conversation become material for an offline experiment. Once ARIA can inspect traces and run those experiments itself, it can participate in the research loop used to improve its own behavior.

1:061:07
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:16 · section reference included

A production conversation becomes an experiment

The live demonstration begins with a project for ARIA researching itself. ARIA receives a codebase stored as a Weights & Biases artifact and a request to work against the offline evaluation framework. Its job is to inspect production traces, add tasks, run experiments, and try a new variant. The evaluations take time, so the research continues while the presentation moves on.

Source frame: A production conversation becomes an experiment
Source frame: A production conversation becomes an experiment

A second conversation gives the loop a concrete input: take a trace already logged in Weave, put it into the offline evaluations, and run both the candidate and production agents on it. The original interaction now serves two purposes. It records what happened in production, and it supplies a task on which competing versions can be compared. As the evaluations run, their traces appear in Weave too.

This is also the team’s recurring workflow: inspect production traces, evaluate changes in the offline sandbox, and work together to deploy new agent versions. Nightly CI evaluates the production configuration alongside candidate variants, providing a history of relative performance. That infrastructure needs attention of its own; Aysola notes that CI had broken and ARIA had helped fix it the previous night.

3:023:04
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

2:54 · section reference included

Keep the deployed agent inside the research loop

The team mostly improves prompts and skills rather than training the agent with reinforcement learning. Strong underlying models already perform useful platform tasks. The research discipline still borrows from simulation-based learning: define environments carefully, run the agent through them, inspect its trajectory, and adjust behavior against measured results.

Source frame: Keep the deployed agent inside the research loop
Source frame: Keep the deployed agent inside the research loop

The baseline is a byte-for-byte identical agent in production and simulation. Research and production use the same code, with a synchronization job every four hours intended to prevent the research environment from drifting away as people create new variants and skills. This removes one avoidable source of confusion: an offline improvement should be tested against the agent actually being deployed.

Evaluation commands produce scored trajectories: records of the agent’s rollout over time, accompanied by performance metrics. These give the team something more useful than a final answer alone. A person can inspect a rollout, or ARIA can review its own or another rollout, identify what went well or badly, and propose prompting changes that encourage the desired behavior.

The harness makes experimentation cheap to express. A model-agnostic software stack handles context preparation, compaction, and UI payload assembly. YAML defines different agent configurations, allowing multiple variants to run in parallel. An intuition about a better prompt or model becomes a candidate that can be compared with alternatives. The preference is straightforward: make it easy to run more experiments.

5:185:19
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

5:13 · section reference included

Build the environment before running the agent

ARIA’s sandbox gives it broad room to execute work. While preparing the presentation, Aysola asked it to create an environment for parallel executions of its own research loop—a capability he had not been certain it could perform. The attraction is that a general execution environment can support useful behavior that was not individually designed into a narrow tool interface.

Source frame: Build the environment before running the agent
Source frame: Build the environment before running the agent

A general sandbox still needs a repeatable evaluation setup. The pipeline begins with YAML, loads the live data required by the task, and constructs the environment. That setup can be expensive: tasks may involve full machine-learning training logs, substantial production data, or simulated GPU executions for research work. Parallelizing preparation can therefore matter before the agent even starts.

Why load configuration twice? Some runtime configuration cannot be encoded in the initial YAML specification. After creating the environment, the pipeline puts that runtime data back into the configuration, then runs the production-identical agent and scores the result. The diagram makes this dependency visible: execution waits for both the declared task and the environment’s runtime configuration.

Scoring has two distinct jobs:

  • Task completion: A pass/fail judgment asks whether the agent satisfied the task.
  • Relative behavior: A comparison asks which variant behaves better. For example, one variant may ask the user questions while another proceeds without asking; relative scoring helps compare those interaction styles.

The team also examines how evaluations drift from production. Identical agent code helps, but the environments and judgments still need scrutiny.

Finally, each run tears down its environment. Cleanup makes repeated parallel experiments possible without clobbering teammates’ work. The full unit of evaluation includes preparation and teardown, as well as the agent call and score.

How it fits togetherFrom declared task to scored execution

Declare the evaluation configuration.

Environment preparation supplies runtime configuration that the initial YAML cannot contain. Scoring and teardown follow the agent rollout.

8:128:13
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

8:04 · section reference included

Test user flows, then preserve useful behavior

An evaluation task describes a starting environment, user configuration, and desired ending condition. That makes the task a user flow with an outcome, rather than a prompt considered in isolation. Two concrete forms appear in the walkthrough:

  • Single-request tasks: A text instruction asks ARIA to perform work, such as the research request being converted from the live production trace.
  • Simulated conversations: A language model takes a user persona and asks questions in a specified order, creating multi-turn interactions with ARIA.
Source frame: Test user flows, then preserve useful behavior
Source frame: Test user flows, then preserve useful behavior

The team has 886 tasks, categorized by levels and exposed to the product team for review. Product judgment helps determine whether those tasks represent behavior worth measuring. Repeated runs then produce trajectories that can be examined across production and offline environments. Aysola sees conceptual guidance as an existing strength and project error analysis as an area to improve, so the suite includes difficult tasks that push those capabilities.

Failures supply new tasks, but successful production behavior does too. A good interaction is something to preserve and reinforce while changing the agent elsewhere. The evaluation flywheel therefore draws from both kinds of experience: capture behavior, turn it into a task, and use the task to guide the next variant.

10:4910:51
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

10:47 · section reference included

The demo finds an SDK error and creates a targeted candidate

Returning to the demo reveals the observable change: the production trace has become a new task, and ARIA has run and scored it. The research agent also generates a report linking its work. A conversation that previously existed as production history now has an offline evaluation counterpart, including a run of the production variant.

Source frame: The demo finds an SDK error and creates a targeted candidate
Source frame: The demo finds an SDK error and creates a targeted candidate

The regression task exposes a specific problem: improper use of the SDK call weave.log in the sandbox. ARIA reproduces the source trace, identifies a target for improvement, and runs agent variants against it. The closing inspection describes the candidate as a small prompt added to the system prompt or a skill to address that SDK error. The demonstrated change is therefore a targeted instruction change; the walkthrough does not establish a source-code patch or quantify a candidate-versus-production gain.

How does that error become something the agent can improve? The diagram follows the same interaction from a recorded failure to a repeatable task and competing executions. The important relationship is the shared test: the proposed instruction change is evaluated against the production variant on the regression task derived from the original trace.

This changes the day-to-day research workflow. Instead of repeatedly writing offline benchmarks by hand, Aysola moves between incoming production traces and the team’s offline evaluations, asking what changed in a skill or variant and inspecting the resulting runs. ARIA handles more of the task construction and execution; the researcher keeps choosing which behavior deserves attention.

How it fits togetherOne SDK error, two agent variants

Recorded interaction exposes improper weave.log usage in the sandbox.

The production trace supplies a regression task. The current agent and a candidate with a targeted instruction change are tested against that task.

13:0513:06
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

12:50 · section reference included

Automation leaves the improvement decision with people

“Auto mode” is tempting: let the agent write the implementation, run the evaluations, and do everything it can. Aysola describes relying on Claude to write his code, but the convenience does not remove the need to think through improvements. Automating execution frees time for the harder questions: what should become better, which behavior matters, and how should the system be constrained?

Source frame: Automation leaves the improvement decision with people
Source frame: Automation leaves the improvement decision with people

The same research capabilities extend to machine-learning work; Aysola mentions other demonstrations of ARIA training models on H200 GPUs. For this example, though, the practical gain is keeping production observation, offline experiments, and ongoing agent research together. ARIA runs evaluations on the researcher’s behalf while the researcher considers which guardrails will make the system more useful.

The final inspection returns to the actual execution: prediction and scoring work, tool calls, and the candidate’s small prompt change for the SDK error. That is the concrete meaning of an agent improving itself here. Production supplies an interaction to reproduce; simulation makes it testable; the agent proposes and evaluates a change. People still shape the improvement pattern that this machinery follows.

14:4214:44
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

14:42 · section reference included

Resources

From the talk

  • W&B WeaveReference2:09

    The tracing platform used in the walkthrough to connect production interactions with offline agent rollouts and evaluation results.

Read the complete timestamped transcript
  1. 0:16

    Okay. Hello. Thank you for showing up.

  2. 0:19

    Uh my name is Zuben Isola. Uh I work at

  3. 0:22

    Weights and Biases. I'm building the

  4. 0:24

    Arya agent which is something that we

  5. 0:25

    released to general availability on

  6. 0:28

    Monday. You might have seen Tim's talk

  7. 0:30

    uh one of the pe my peers at Weights and

  8. 0:31

    Biases who I work with uh on the main

  9. 0:33

    stage yesterday. So I'm going to give

  10. 0:35

    you a little bit of a deep dive into how

  11. 0:37

    we evaluate and build the Arya agent uh

  12. 0:39

    and in particular uh the evaluation

  13. 0:41

    framework that we use and how we use

  14. 0:42

    Arya to sort of self-reinforce itself in

  15. 0:44

    the loop of doing research for itself uh

  16. 0:47

    and talk about some weights and biases

  17. 0:49

    things. So yeah, this is a rip from some

  18. 0:51

    of the slides that I presented at

  19. 0:52

    Nurups, but uh I think there's some

  20. 0:54

    interesting things about like using uh

  21. 0:56

    agentic harnesses. I I imagine most

  22. 0:58

    people in the audience or at this

  23. 0:59

    conference are all excited to build

  24. 1:01

    agent harnesses or maybe use cloud code

  25. 1:03

    with skills in a variety of different

  26. 1:04

    packages, but there's, you know, pretty

  27. 1:06

    strong differences in the way that you

  28. 1:07

    package these AI agents if you use them

  29. 1:09

    with different tool calls, etc. on a

  30. 1:11

    variety of different benchmarks. And so

  31. 1:12

    inspired by that, we're doing some work

  32. 1:14

    at Weights and Biases to build our own

  33. 1:15

    agent harness to do research for you in

  34. 1:17

    the weights and biases platform. Um, you

  35. 1:19

    know, and then there's probably some

  36. 1:20

    other things that I don't need to

  37. 1:21

    convince people of as to like why we

  38. 1:23

    want software agents and why a software

  39. 1:25

    harness as opposed to like just letting

  40. 1:26

    the, you know, LM run free and call

  41. 1:28

    tools or whatever else. Uh, but that's

  42. 1:29

    not for here. Uh, but one big problem

  43. 1:32

    presents itself, which is basically the

  44. 1:34

    thing that I go to bed thinking about

  45. 1:36

    every day, which is, you know,

  46. 1:38

    benchmarks, evaluations, the agents, and

  47. 1:40

    how you configure them are all

  48. 1:41

    covariant. And so like if you're trying

  49. 1:43

    to apply principled evaluations to any

  50. 1:45

    sort of system that dynamically changes,

  51. 1:47

    you need to have good measurement to see

  52. 1:49

    how the system actually performs. And

  53. 1:51

    you really want to see how the system

  54. 1:52

    performs in both your production

  55. 1:53

    environment and your offline

  56. 1:55

    environment. Uh you know if you're RLP

  57. 1:57

    build from a long time ago, you might

  58. 1:59

    think about like the sim tore gap uh

  59. 2:01

    which is like basically how do we

  60. 2:02

    translate simulation environments into

  61. 2:03

    the real world environments etc. Uh and

  62. 2:06

    so there's sort of two things that I'll

  63. 2:07

    talk about uh and then give a live demo

  64. 2:09

    of which is weights and biases weave for

  65. 2:12

    agents which is basically in my opinion

  66. 2:13

    at least the best observability platform

  67. 2:15

    for both production and offline tracing

  68. 2:17

    of agents. So I use it predominantly

  69. 2:20

    from the offline side where I build

  70. 2:22

    simulation environments run the Arya

  71. 2:23

    agent over them and then track them in

  72. 2:25

    weave and my entire team does that as

  73. 2:27

    well. So I can see all of our

  74. 2:28

    performance in offline metrics. And then

  75. 2:30

    the other half of my team works on the

  76. 2:31

    production side of things, deploying the

  77. 2:33

    agent, logging the same things in the

  78. 2:34

    exact same format so that I can rip

  79. 2:36

    those production traces into our

  80. 2:38

    environments and then hill climb on them

  81. 2:39

    or resolve our errors. And it's a pretty

  82. 2:41

    nice flywheel. And then obviously the

  83. 2:43

    other thing that I'm here to talk about

  84. 2:44

    is Arya, the weights and devices agent

  85. 2:45

    itself, which is basically the thing

  86. 2:47

    that we use to now build itself because

  87. 2:49

    it's sophisticated enough that it can

  88. 2:50

    actually do that offline hill climbing

  89. 2:52

    uh by itself. So I'm going to just jump

  90. 2:54

    into a super quick live demo and then

  91. 2:55

    we'll talk through some other slides uh

  92. 2:57

    about how we built the offline

  93. 2:58

    evaluation framework. So if you hop into

  94. 3:00

    the weights and biases platform, this is

  95. 3:02

    a demo project that I called Arya

  96. 3:04

    researches Arya here. Uh and I'm just

  97. 3:06

    going to chat to Arya and ask it to

  98. 3:08

    basically do auto research for itself.

  99. 3:10

    And so this is a relatively long prompt

  100. 3:11

    that I had it generate in actually one

  101. 3:12

    of these other sessions. Um but if we

  102. 3:15

    look at it, what it's going to do is

  103. 3:16

    it's going to take my codebase that is

  104. 3:18

    logged as a weights and biases artifact

  105. 3:19

    uh which we can see over here. It's

  106. 3:22

    going to launch training jobs uh against

  107. 3:24

    this codebase which is our offline

  108. 3:25

    evaluation framework. It's going to

  109. 3:27

    review production traces that we have,

  110. 3:29

    add new tasks to hill climb against uh

  111. 3:31

    and do stuff like that. And so, you

  112. 3:33

    know, this thing's going to cook for a

  113. 3:34

    little bit. The evaluations take a

  114. 3:35

    little bit of time to run. And so, we'll

  115. 3:37

    see Arya uh basically try to write a new

  116. 3:39

    variant for itself. The other side of

  117. 3:41

    this equation, right, is the production

  118. 3:43

    side of things. And so, this is a

  119. 3:45

    sanitized view of internal customer

  120. 3:47

    traces or internal traces on Arya. So

  121. 3:49

    we'll actually see very quickly uh that

  122. 3:51

    Arya will actually pop up here the exact

  123. 3:53

    conversation that we're running um right

  124. 3:55

    here. But in this trace I'm going to use

  125. 3:58

    this as an opportunity to take one of

  126. 4:00

    these production traces that are logged

  127. 4:01

    in weave and put them into my offline

  128. 4:03

    evaluation framework so that I can hill

  129. 4:05

    climb on them. And so I'm just going to

  130. 4:06

    do that live. We'll ask you know for a

  131. 4:07

    relatively simple task. Um this is going

  132. 4:09

    to be a little interesting because it's

  133. 4:10

    going to be slightly self-referential

  134. 4:12

    but I'll go here. I'll pop up in a new

  135. 4:15

    Arya tab and I'll just ask it hey take

  136. 4:17

    this trace log it into our offline evals

  137. 4:22

    I don't think spelling matters too much

  138. 4:23

    and then run the candidate and

  139. 4:26

    production agent on it

  140. 4:29

    and we'll have it cook for that as well

  141. 4:31

    and we'll see those evaluations get

  142. 4:32

    logged into weave as they're running um

  143. 4:34

    so that's basically the tight version of

  144. 4:36

    what I do basically every day which is

  145. 4:38

    look at production traces in our weights

  146. 4:39

    and biases weave platform run

  147. 4:41

    evaluations in our codebase which is our

  148. 4:43

    offline client evaluation sandbox uh and

  149. 4:45

    then deploy new versions of the agent uh

  150. 4:47

    and work with my team to do that. And if

  151. 4:49

    we look at our production project, this

  152. 4:51

    is, you know, a bunch of traces that we

  153. 4:52

    have over the last seven weeks of our

  154. 4:53

    nightly uh like CI jobs that run where

  155. 4:55

    we evaluate the agent in its production

  156. 4:57

    format and other candidate variants that

  157. 4:58

    we cut. And so we can see our relative

  158. 5:00

    performance over time. Uh like you know,

  159. 5:02

    for a while the CI broke, we had Arya

  160. 5:04

    have to fix itself last night, but you

  161. 5:05

    know, we're getting about like 66%

  162. 5:07

    performance on some of the tasks, etc.

  163. 5:08

    And so we have a variety of tasks um

  164. 5:11

    that we train the agent to do. And so

  165. 5:13

    now I'm just going to jump into a

  166. 5:14

    material version of the presentation to

  167. 5:16

    go a little bit deeper into the theory

  168. 5:18

    behind building a simulation environment

  169. 5:19

    for offline hill climbing for basically

  170. 5:21

    building a software agent where

  171. 5:23

    traditionally you might expect that you

  172. 5:24

    are really robust if you're doing

  173. 5:26

    reinforcement learning but I mostly

  174. 5:28

    prompt engineer these days because the

  175. 5:29

    sophisticated models are relatively good

  176. 5:31

    at performing tasks at weights and

  177. 5:32

    biases and so we're really working on

  178. 5:34

    building skills for the software agent

  179. 5:35

    more than doing reinforcement learning.

  180. 5:37

    But I think applying the same

  181. 5:38

    methodology to how you build the agent.

  182. 5:40

    So the same robustness of how you

  183. 5:42

    simulate environments uh is really

  184. 5:43

    helpful for our work. So we benchmark a

  185. 5:46

    bite-wise identical version of the agent

  186. 5:48

    in our production environment and our

  187. 5:49

    simulated environment. There's a lot of

  188. 5:51

    text on these slides that I and Claude

  189. 5:52

    sort of slop out. Uh but you know we'll

  190. 5:54

    just go for the graphics. Um so I think

  191. 5:56

    the exciting part here is that both

  192. 5:58

    using the logging framework from weave

  193. 5:59

    as well as just in the way that we've

  194. 6:01

    designed the system our research and

  195. 6:02

    production code are exactly the same.

  196. 6:03

    And in fact, there's like a 4-hour sync

  197. 6:05

    job that happens between production to

  198. 6:07

    our research environment so that we

  199. 6:08

    don't get any drift when you, you know,

  200. 6:10

    researchers are cutting new variants of

  201. 6:11

    the agent, new skills, etc., and doing

  202. 6:12

    their hill climbing. And so, we have

  203. 6:14

    this nice little tight loop that

  204. 6:15

    basically mirror each other on two sides

  205. 6:16

    of the stack from our deployment layer

  206. 6:18

    and our offline benchmarking layer. Uh,

  207. 6:21

    and then, you know, we expose internally

  208. 6:23

    as a team a bunch of run eval commands

  209. 6:25

    to generate score trajectories. And so

  210. 6:27

    that's what we were talking about with

  211. 6:29

    this like large project where we have a

  212. 6:30

    bunch of trajectory examples where if I

  213. 6:32

    click into one of these, you know, we

  214. 6:33

    can see like our relative scores of a

  215. 6:35

    variety of different metrics when it

  216. 6:36

    loads. Um, but essentially what we get

  217. 6:39

    is these super robust traces of the

  218. 6:41

    agent rolling out over time. And there's

  219. 6:43

    a lot of signal to reap from this. And I

  220. 6:44

    think the thesis behind this is generate

  221. 6:46

    a ton of traces and then decide

  222. 6:48

    what you're going to do with said

  223. 6:49

    ton of traces as you try to figure out

  224. 6:51

    how the agent performs. you're measuring

  225. 6:53

    emergent properties and then trying to

  226. 6:55

    align the agent in particular

  227. 6:56

    directions. And so the two ways that

  228. 6:58

    that happens is I look manually at the

  229. 7:00

    tasks or like we would do in that first

  230. 7:02

    example, I would ask Arya to review the

  231. 7:04

    roll out that it generated for itself or

  232. 7:06

    review some other rollout and decide

  233. 7:08

    what went wrong or what went well and

  234. 7:09

    try to reinforce that behavior through

  235. 7:11

    prompting or anything else. Uh and then

  236. 7:14

    you know the actual method behind the

  237. 7:16

    agent is relatively simple. We want to

  238. 7:18

    test on a variety of the different

  239. 7:20

    models both models offered through

  240. 7:21

    corewave inference models offered

  241. 7:23

    through you know the foundation model

  242. 7:24

    players etc. And so we define you know a

  243. 7:26

    relatively agnostic software stack for

  244. 7:28

    how we treat compaction and how we

  245. 7:30

    prepare context and how we assemble UI

  246. 7:32

    payloads etc. And the again mental

  247. 7:34

    pattern behind this is to really try to

  248. 7:36

    make it very very simple to have lots of

  249. 7:39

    mutations of the exact same

  250. 7:40

    configuration. You want to basically

  251. 7:42

    YAML define different configurations of

  252. 7:43

    the agent to sort of get multiple

  253. 7:45

    parallel uh variants and then test them

  254. 7:47

    all and see what happens because

  255. 7:49

    ultimately you can have insight into how

  256. 7:51

    to make the problem better. But if we

  257. 7:52

    take an adage from old reinforcement

  258. 7:54

    learning training or just simple model

  259. 7:55

    training, it's just better to run more

  260. 7:57

    experiments than fewer. And so that's

  261. 8:00

    the thesis behind the agent harness

  262. 8:01

    itself too. And so then you know we talk

  263. 8:04

    about like the sandbox stack behind the

  264. 8:06

    agent. And I think that you know there's

  265. 8:08

    a lot of mentions of code mode here at

  266. 8:10

    this conference and other things like

  267. 8:11

    that. And one thing that we really want

  268. 8:12

    to see happen because we want to build

  269. 8:13

    the best product for our customers is to

  270. 8:15

    just have a sandbox environment that

  271. 8:17

    they can do anything they wanted. So for

  272. 8:19

    example prior to yesterday I wasn't

  273. 8:22

    entirely certain that Arya was going to

  274. 8:23

    be able to do a bunch of parallel

  275. 8:25

    executions of itself. And so I asked it

  276. 8:27

    both while I was writing this

  277. 8:28

    presentation and preparing for this to

  278. 8:30

    just create the sandbox environment uh

  279. 8:32

    for itself to run a bunch of parallel

  280. 8:34

    executions of its own research loop.

  281. 8:36

    Right. Uh, and so like having that

  282. 8:38

    unconstrained environment is really

  283. 8:39

    useful for getting the agent to do

  284. 8:41

    emergent things.

  285. 8:44

    And so, you know, I I'm not really sure

  286. 8:46

    what the six phrases per record uh

  287. 8:47

    means, but I think from a theory

  288. 8:50

    standpoint, we want to build then a good

  289. 8:53

    pattern for generating these simulation

  290. 8:54

    environments. And so we have a

  291. 8:56

    relatively agnostic DAG that you might

  292. 8:58

    think about in a traditional machine

  293. 8:59

    learning context, which is like we take

  294. 9:00

    a configuration, which are these YAML

  295. 9:02

    files. We hydrate them. So we load the

  296. 9:04

    live data that we need to. We set up an

  297. 9:06

    environment and the environments and

  298. 9:07

    weights and biases are relatively

  299. 9:09

    expensive because we have lots of

  300. 9:10

    production data that we might want to

  301. 9:12

    test against or other things like that.

  302. 9:13

    These are full machine learning training

  303. 9:14

    logs. We might have to simulate uh GPU

  304. 9:16

    executions if you're doing auto research

  305. 9:18

    etc. That's a relatively intensive

  306. 9:20

    process and so you might want to

  307. 9:21

    parallelize that. Then you would

  308. 9:22

    rehydrate because oftentimes there's

  309. 9:24

    runtime configurations that you can't

  310. 9:25

    encode in a YAML specification and so

  311. 9:28

    you hot patch that data back into the

  312. 9:30

    config config. Uh and then you run the

  313. 9:32

    agent and running the agent is trivial.

  314. 9:33

    You run it, as I mentioned at the

  315. 9:35

    beginning, in the bite-wise identical

  316. 9:36

    version that you have in production, and

  317. 9:38

    then you score it. And scoring is where

  318. 9:40

    I spend a lot of my time, which is

  319. 9:41

    basically trying to think about the

  320. 9:42

    robustness of how you measure results.

  321. 9:44

    Uh, and I imagine most people here are

  322. 9:46

    pretty good at thinking about things

  323. 9:47

    like that. And I think it's really worth

  324. 9:49

    spending the time once you have a

  325. 9:50

    configuration of how to run evaluations,

  326. 9:52

    thinking about the robustness of our

  327. 9:53

    emails. uh a Slack message that I

  328. 9:55

    probably can't show live on the screen

  329. 9:57

    that I got from one of my teammates

  330. 9:58

    today made me very happy where he

  331. 9:59

    basically just spent all of yesterday

  332. 10:00

    thinking about the health of our

  333. 10:02

    evaluations and the drift between our

  334. 10:04

    evaluations and production. Uh and I

  335. 10:05

    think that kind of mental model of like

  336. 10:07

    you know why are things working well why

  337. 10:08

    are things not working well? What are

  338. 10:10

    the gaps that we see in these two

  339. 10:11

    patterns is really useful. Um in our

  340. 10:13

    case weights and biases Arya scores

  341. 10:15

    itself in two patterns which is

  342. 10:16

    normatively which gives us basically did

  343. 10:18

    we pass a task or not and then

  344. 10:20

    relativistically where we can set styles

  345. 10:22

    based on one variant where it asks

  346. 10:24

    questions to the user and one variant

  347. 10:25

    where it doesn't ask questions to the

  348. 10:26

    user and we can sort of see which one

  349. 10:28

    behaves better uh with a relative

  350. 10:30

    scoring. So a pretty traditional

  351. 10:31

    formulation from a reinforcement

  352. 10:33

    learning standpoint. And then of course

  353. 10:34

    if you're running this in parallel you

  354. 10:36

    got to tear it down because you want to

  355. 10:37

    start it again and you don't want to

  356. 10:38

    clobber your teammates's work etc. Uh

  357. 10:40

    and so we'll see what happens in this

  358. 10:42

    project because a bunch of my teammates

  359. 10:43

    are running eval right now and so we'll

  360. 10:44

    see how Arya performs.

  361. 10:47

    Uh and then you know more traditionally

  362. 10:49

    on tasks I think the eval tasks are just

  363. 10:51

    YAML specifications that we define as a

  364. 10:53

    starting condition of an environment

  365. 10:55

    with a bunch of user configurations as

  366. 10:57

    well as then an ending condition that we

  367. 10:58

    sort of want to get to. Uh in our case

  368. 11:00

    tasks are flows from users. So we

  369. 11:02

    simulate them in three ways. Uh we do

  370. 11:04

    just simple text which is like hey

  371. 11:06

    here's an instruction to Arya. You might

  372. 11:08

    imagine that the task that it generates

  373. 11:09

    in this chat over here um where it's

  374. 11:12

    logging a specific trace from production

  375. 11:14

    uh into our local framework actually

  376. 11:16

    looks like you know just a simple

  377. 11:19

    question that I asked it basically which

  378. 11:20

    was that question of Arya doing auto

  379. 11:21

    research itself um we can just ask it to

  380. 11:24

    continue

  381. 11:26

    um as it does that and that task is just

  382. 11:29

    a single question to it there's other

  383. 11:31

    variants of the tasks that exist as well

  384. 11:33

    where we simulate a language model that

  385. 11:35

    has a persona from a user and we ask it,

  386. 11:38

    hey, pretend to be this user, ask

  387. 11:39

    certain questions in a particular order

  388. 11:40

    so that we can simulate multi-turn

  389. 11:42

    environments and interactions with our

  390. 11:43

    agent. Uh, and then you just run a bunch

  391. 11:45

    of these. So, we have 886 tasks. We

  392. 11:47

    categorize them by levels. We expose

  393. 11:48

    them to our product team so that they

  394. 11:49

    can decide whether or not the tasks are

  395. 11:51

    good enough or they reflect things that

  396. 11:52

    we care about from our benchmarks, etc.

  397. 11:54

    And then we just run them a bunch of

  398. 11:55

    times.

  399. 11:57

    Yeah. And then, you know, the ultimate

  400. 11:59

    thing here is that the trajectory is

  401. 12:00

    like the meat and the data that I live

  402. 12:02

    behind. And so I look at our production

  403. 12:04

    traces that exist in our traffic and our

  404. 12:05

    offline traces that exist. And I really

  405. 12:07

    try to exploit the behavior patterns

  406. 12:09

    from both of those. And so we build

  407. 12:11

    tooling ourselves to understand our

  408. 12:13

    traces. Uh we have like this behavior

  409. 12:14

    trace project etc that we run in both

  410. 12:16

    prod and offline.

  411. 12:19

    And yeah that's the eval flywheel. So

  412. 12:21

    you know fundamentally every production

  413. 12:23

    miss or every production goodness as

  414. 12:24

    well because I think it's useful to hill

  415. 12:26

    climb in a positive direction uh becomes

  416. 12:27

    a task for our agent framework. And so

  417. 12:29

    we use that to sort of define the agent

  418. 12:31

    and make it better.

  419. 12:33

    And these are, you know, our real scores

  420. 12:35

    straight from weave. So we have a bunch

  421. 12:37

    of different categories that we measure

  422. 12:38

    ourselves on. I think the agent is

  423. 12:40

    really good at conceptually guiding you.

  424. 12:41

    We want to make it better at doing some

  425. 12:43

    error analysis for projects. You know,

  426. 12:44

    we try to make these as difficult as

  427. 12:46

    possible for the agent to really test

  428. 12:47

    the metal of how this thing performs.

  429. 12:50

    And so I'll hop back to Arya now.

  430. 12:52

    There's sort of five minutes left um

  431. 12:53

    with sort of a demo of what it's

  432. 12:55

    actually doing. So right now it's going

  433. 12:56

    to run a bunch of code as it's trying to

  434. 12:58

    rip this production trace and log it

  435. 12:59

    into the framework. If I hop into this

  436. 13:02

    uh live demo that I just triggered with

  437. 13:03

    that nice long prompt, you know, Arya is

  438. 13:05

    going to tell me the research runs that

  439. 13:06

    it did. So we can click through some of

  440. 13:08

    these links. Uh I asked it to write a

  441. 13:10

    report using weights and biases reports

  442. 13:11

    from the uh run that it just had. If we

  443. 13:14

    scrub this, we can see that this is the

  444. 13:15

    most recent production trace that it

  445. 13:17

    just logged. It wrote itself a new task,

  446. 13:19

    ran it, and then scored it. And so this

  447. 13:21

    is like the production variant getting

  448. 13:22

    benchmarked on our specific task. If we

  449. 13:24

    look at the report that it generated,

  450. 13:25

    this is the demo that I asked it to do.

  451. 13:27

    Um, so you know, it ran a real womb

  452. 13:30

    agent trace, turned it into a WBF

  453. 13:32

    regression task. WBAF is the factory

  454. 13:34

    that I build, which is the weights and

  455. 13:36

    biases agent factory. That's the

  456. 13:37

    principle behind our offline

  457. 13:38

    benchmarking. It identified that the

  458. 13:40

    problem was that we weren't calling

  459. 13:41

    weave.log, one of our SDK calls properly

  460. 13:43

    in the sandbox. It replicates the source

  461. 13:45

    trace, which we can click into here, uh,

  462. 13:47

    and then runs a bunch of variants of the

  463. 13:49

    agent to see how it makes itself better.

  464. 13:50

    And so, you know, it added a hill climb

  465. 13:52

    target uh which was basically like

  466. 13:54

    here's what to do to fix it. Ran the

  467. 13:56

    trace and then we can see if it gives us

  468. 13:58

    a little explanation of exactly what

  469. 13:59

    happened at the end. Uh how did the prod

  470. 14:03

    versus candidate variant perform

  471. 14:07

    and you know this is now what I live in.

  472. 14:09

    And so I think the flywheel here is

  473. 14:11

    exceptionally compelling for me where

  474. 14:13

    instead of going back to my cloud code

  475. 14:14

    and writing offline benchmarks and

  476. 14:16

    trying to think about what I want the

  477. 14:17

    agent to do, I'm just going to live in

  478. 14:18

    this platform instead and hop between my

  479. 14:21

    production tracing project where I'm

  480. 14:22

    looking at traces roll in as they come

  481. 14:24

    through over time where AR is, you know,

  482. 14:26

    building itself and then hop back into

  483. 14:27

    my offline evaluation project to sort of

  484. 14:29

    see what my team is doing, what I'm

  485. 14:31

    doing, and what changes I want to make.

  486. 14:32

    what change did we make to the prod

  487. 14:35

    skill or to the agent variant

  488. 14:39

    etc. And you know to sort of like watch

  489. 14:42

    this thing roll out. I think a big

  490. 14:44

    challenge that we have is it's really

  491. 14:45

    easy to go like auto mode for some of

  492. 14:47

    these tasks where you want to just see

  493. 14:48

    the agent do everything. And I haven't

  494. 14:50

    written a line of code in maybe eight

  495. 14:51

    months because I just tell Claude to

  496. 14:53

    write all my code for me. And that's a

  497. 14:54

    really nice pattern, but it doesn't

  498. 14:56

    absolve yourself of the thought behind

  499. 14:57

    how we want to make improvements. And I

  500. 14:59

    think using these tools to improve

  501. 15:01

    themselves is very valuable because you

  502. 15:02

    get to spend more of your time in the

  503. 15:04

    gray of actually trying to think how we

  504. 15:06

    make this system better, right? And so

  505. 15:08

    if you're building an agent, I implore

  506. 15:09

    you to use weights and biases to both

  507. 15:10

    track that agent etc. Uh we have a

  508. 15:12

    really excellent model tracking platform

  509. 15:14

    as well. So some of the other demos that

  510. 15:16

    we've shown here are Arya training

  511. 15:17

    machine learning models on H200's

  512. 15:19

    running on core infrastructure and doing

  513. 15:21

    auto research for Karpathy's nano chat

  514. 15:23

    etc or full-scale production projects.

  515. 15:25

    But I think the exciting thing in this

  516. 15:26

    case for me is that I don't need to

  517. 15:28

    leave this platform in order to do my

  518. 15:30

    job now right. I have full observability

  519. 15:31

    from a production standpoint. I have

  520. 15:33

    full observability from an offline

  521. 15:34

    standpoint. And if we look at, you know,

  522. 15:35

    the things that Arya is saying, it's

  523. 15:37

    running lots of evaluations on my behalf

  524. 15:39

    to improve itself. And that auto mode

  525. 15:41

    that I just mentioned is really exciting

  526. 15:44

    because now I get to spend all of my

  527. 15:45

    time thinking about how I can make this

  528. 15:46

    system reinforce itself better. The

  529. 15:48

    tight little guard rails that I can put

  530. 15:49

    around it to make it a more useful tool

  531. 15:51

    for all of you and then inherently for

  532. 15:53

    me. Um, but yeah, that's a that's a

  533. 15:56

    quick demo. We can we can look at the

  534. 15:58

    production call trace that we have here

  535. 15:59

    from Arya. This is the evaluation that

  536. 16:01

    it just ran. So if we look into like the

  537. 16:03

    actual trace, we'll see that, you know,

  538. 16:04

    AR did a bunch of work. It ran this

  539. 16:06

    predict and score column. We have a

  540. 16:07

    bunch of tool calls that ran. Uh and you

  541. 16:09

    know, if we hop back into the chat,

  542. 16:10

    we'll see the actual variant that it

  543. 16:11

    ran. Um it looks like the candidate

  544. 16:13

    variant just had a tight little prompt

  545. 16:15

    that we injected into the system prompt

  546. 16:16

    or in one of the skills to sort of solve

  547. 16:18

    that exact SDK error uh and mitigate it.

  548. 16:21

    And that kind of replication from

  549. 16:22

    production to simulation to agent then

  550. 16:25

    defining the improvement pattern is the

  551. 16:27

    thing that I really would like to leave

  552. 16:28

    everybody with.

  553. 16:30

    So that's coreweave Arya. Uh welcome to

  554. 16:33

    weights and biases. I hope that was an

  555. 16:35

    interesting talk in sort of how we

  556. 16:36

    decide to build uh our offline

  557. 16:38

    evaluation metrics, how we reap data

  558. 16:39

    from production and the flywheel of

  559. 16:41

    trying to build these agents and the

  560. 16:42

    things that I think about on a

  561. 16:44

    day-to-day basis. Uh and yeah, let's get

  562. 16:46

    started. Thank you all so much.

  563. 17:04

    >> [music]