← All AI Engineer talks

AI Engineer Europe 2026

Your Coding Agent Should Do AI System Engineering

Read the talk

Your Coding Agent Should Do AI Systems Engineering

From custom GPU kernels to an autonomous research lab, coding agents become more useful when they can test their work, publish compatible artifacts, and inspect the underlying data.

From a talk by Ben Burtenshaw

Before you start: Familiarity with model training, Git branches, and the role of GPUs will help; the article explains kernels and the agent workflows as they appear.

What comes after everyday coding assistance?

As coding agents become part of everyday software development, what harder engineering problems should we tackle with them? Ben Burtenshaw’s proposal is to move closer to the silicon: use agents for systems engineering and machine learning engineering. That requires more than capable code generation. It also requires standard repositories that make the resulting work accessible and reusable, including repositories on the Hugging Face Hub.

The progression has three levels of increasing autonomy. First, a person works interactively with an agent to write a CUDA kernel. Next, an agent takes a prompt and fine-tunes an LLM using hosted compute. Finally, a team of agents proposes, implements, and monitors research experiments. Each level gives the agent more responsibility while retaining a concrete engineering task whose outcome can be checked.

Slide titled “the bosses” lists three coding-agent challenges beside three video game characters.
Three challenges: custom kernels, LLM finetuning, and a multi-agent autoresearch lab.
0:240:37
Suggest correction

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

0:24 · section reference included

Writing a kernel is only the first problem

Custom GPU kernels once looked like an especially difficult target for coding agents. They involve specialized languages, and generated code must reach the relevant hardware before anyone can test correctness or benchmark performance. Burtenshaw points to GPU MODE, a recent AMD hackathon, and KernelBench as evidence that agents can nevertheless produce valid, optimized kernels. That opens a second problem: how do those kernels get distributed and integrated into inference engines?

A kernel performs the actual GPU work behind a model operation. Its implementation can use languages and hardware features specific to the target device. A custom kernel exploits those features for a particular mathematical operation so that model execution can become faster. The difficulty extends beyond writing the code: installation must reconcile GPU hardware, software dependencies, hardware generations, and CUDA versions. A useful generated kernel therefore needs both a tested implementation and a manageable compatibility story.

1:582:09
Suggest correction

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

1:58 · section reference included

Where GPU time goes

Kernel optimization starts by separating three costs:

CostWork involved
ComputeArithmetic, including matrix multiplication
MemoryMoving tensors, often from slower to faster memory
OverheadPython execution, PyTorch dispatch, and other coordination

The most visible mathematical work is not necessarily the bottleneck. A GPU can have arithmetic capacity available while it waits for the next tensors to arrive.

Burtenshaw illustrates the imbalance with roughly one petaflop/s of compute and three terabytes/s of memory bandwidth for an H100. These are illustrative figures without a specified precision, sparsity setting, or hardware variant; whether memory dominates depends on the workload. The point is that fast arithmetic does not eliminate the time spent supplying its inputs.

“Efficiency in Deep Learning” slide shows a three-column table for Compute, Memory, and Overhead, with the Memory column highlighted in yellow.
Compute, memory, and overhead, with tensor communication highlighted.

FlashAttention is the example of an optimized kernel organized around this problem. The relevant principle is arithmetic intensity: perform more useful computation per memory read and write. Bring tensors into faster memory, do as much work as possible while they are there, and then write the results back. Custom kernels can improve performance by reducing the movement required for a given amount of computation.

3:443:58
Suggest correction

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

3:44 · section reference included

Making kernels reusable

Hugging Face Kernels supplies a distribution layer maintained by kernel writers. A TOML configuration declares supported hardware and required software versions, including CUDA compatibility. The kernel becomes a Hub repository, making kernel publication analogous to model publication. Consumers can inspect compatibility information to determine whether an artifact supports their GPU or laptop. This makes optimization work something another user—or another agent—can discover and use.

The next ingredient is teaching the agent how to work inside that system. Skills are file-based context: examples and instructions that can be opened, closed, versioned, and source-controlled. An agent can load kernel-writing or kernel-use examples when the task calls for them. In Burtenshaw’s description, that moves a task from zero-shot toward few-shot: the agent receives concrete examples instead of having to infer the entire workflow from a bare request.

Ownership matters as much as format. Hugging Face’s approach puts skills inside projects so the project maintainers can maintain the instructions alongside the software. A separate Hugging Face Skills repository accommodates more experimental workflows. For kernels, the skill includes reference examples and scripts for testing and benchmarking. Those scripts connect generated code to evidence about whether it works and how it performs.

5:145:25
Suggest correction

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

5:14 · section reference included

Measure the kernel, then evaluate the skill

Burtenshaw reports a 94% speed-up for an agent-generated kernel for Qwen3-8B on H100. The companion benchmark scopes that result to isolated RMSNorm operations: an average 1.94× speedup versus PyTorch, using BFloat16 on H100 80GB HBM3 across eight tensor shapes. It is not a measured 94% improvement in complete model inference, and Burtenshaw explicitly says it is not a state-of-the-art result.

The opportunity is the compatibility matrix. A model may have well-optimized kernels on one hardware generation but leave performance available on another. That matters when the hardware you can afford—or the hardware cheaply available from your cloud provider—is not the model’s ideal target. Agents make it more practical to investigate these specific gaps.

The skill itself also needs evaluation. UPskill generates skills and evaluations, then lets users compare models on the same skill. In the comparison Burtenshaw describes, GPT-OSS is slightly less accurate with similar token use, while Kimi and Haiku are more accurate with fewer tokens. These are local skill-evaluation observations, not a general ranking of the models or proof that every generated kernel passed execution tests on a GPU. The practical use is to iterate on a frequently used skill and identify a less expensive model that can handle it adequately.

7:528:08
Suggest correction

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

7:52 · section reference included

From an interactive kernel task to prompted fine-tuning

The second level gives the agent a larger task: fine-tune a model from a prompt. Burtenshaw points to Merve’s earlier talk and a Claude fine-tuning walkthrough. His spoken example asks for Qwen3-6B to be fine-tuned on a chain-of-thought dataset. That model name is the example as spoken, not a verified checkpoint identifier; improving chain-of-thought behavior is the intended outcome, not a measured result supplied here. HF CLI skills connect the workflow to the Hub, including hosted GPU execution.

An Unsloth-based route, maintained with Hugging Face, uses optimized training implementations and is presented as a cheaper alternative. The accompanying promotional credits were an occasional offer, not a standing guarantee. The transition from the first level is straightforward: skills now guide a complete training workflow instead of an interactive kernel-writing session.

9:269:39
Suggest correction

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

9:26 · section reference included

Turning an experiment loop into a research team

AutoLab extends the idea to coordinated research. Its starting point is Andrej Karpathy’s autoresearch, which Burtenshaw situates in the lineage of nanoGPT and nanochat. An agent using Claude Code modifies the training script and runs successive experiments. The repository identifies the direct training-code basis as simplified nanochat. Its validation bits-per-byte metric measures predictive quality—lower is better—under a fixed training budget, rather than raw execution speed. The run shown improves its best result over the course of the experiment sequence.

A single agent must alternate between finding an idea, implementing it, and checking the result. AutoLab distributes those responsibilities:

RoleResponsibility
ResearcherFind papers and formulate hypotheses
PlannerMaintain the experiment queue
WorkersImplement hypotheses as training changes
ReporterMonitor jobs and maintain the dashboard

The researcher can use HF Papers or arXiv. HF Papers supplies a CLI for searching and retrieving papers, so literature discovery can become an agent task. The resulting hypotheses enter a queue; workers turn them into changes such as a different architecture or parameter setting, and the reporter follows the jobs.

10:2110:30
Suggest correction

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

10:21 · section reference included

Connecting experiments to Git, compute, and metrics

The lab works inside a Git repository. It preserves an original training script, maintains the evolving training code, and uses branches for experiment changes. A data structure on main holds the scores. The demonstration uses OpenCode; Burtenshaw also describes Codex and Claude implementations in the repository, with a separate Gas Town experiment. The architecture is a way to organize work, rather than something inherently tied to one agent interface.

Researchers and planners feed work into the system, while workers launch HF Jobs on the required hardware and submit patches back to the repository. The complete diagram connects those roles to remote execution and the return path for code changes. Experiment outputs therefore have places to go: code returns through Git, and results feed the shared record.

Architecture diagram shows a Main Branch above an open code group containing Planner, Researcher, Reporter, parallel workers, and HF Job boxes, with a Submit patch path returning to the branch.
A multi-agent AI lab connects planning, research, reporting, workers, and HF Jobs to a main branch.

The reporter uses Trackio. In the demonstrated setup, Burtenshaw describes its underlying metrics data as Parquet, accessible independently of the dashboard. Current Trackio documentation describes a broader persistence interface, so the historical storage description should not be treated as a current schema contract. The architectural benefit remains: an agent can inspect the data directly and build a different view, such as a Gantt chart, when the default dashboard is not the right tool.

12:0912:23
Suggest correction

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

12:09 · section reference included

Bounding and reviewing a research pass

In OpenCode, the selected AutoLab configuration supplies the skills and agent roles. The request bounds the work instead of simply asking the system to improve the model:

  1. Run one autonomous research pass in the repository using the defined roles.
  2. Have the planner propose up to two fresh experiments, each making a single change.
  3. Use a reviewer to reject duplicate or stale ideas.
  4. Keep storage in a shared HF bucket to avoid repeatedly uploading and downloading training scripts.

The bucket supplies a common storage location; the experiment limits define how much new work this pass should propose.

Opening the planner sub-agent shows how that request becomes actionable. Its configured template includes the current state, the job history, successful experiments identified by the reviewer, and the hyperparameters available to change. The planner uses this context to define proposals for the shared job list. These are candidate experiments at this stage, not completed improvements.

The reviewer then receives the candidate jobs through a similar template, with a working reference and the latest score for comparison. It considers both failed and successful experiments when deciding what belongs in the next queue. Its tables communicate decisions back to the other agents, but Burtenshaw cautions that this example is verbose: the useful content is the shared comparison context and decision, not the amount of tabular output.

13:4013:50
Suggest correction

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

13:40 · section reference included

Seeing what the agents are doing

The agents can run in parallel for hours, pushing their runs to Trackio. Monitoring has to expose more than a final score. The demonstrated workflow includes filterable events and warnings from different agents; Burtenshaw also describes notifications, including email, as a way to request intervention. Freeform tables let the reporter include information that does not fit a single fixed reporting structure.

On the compute side, the jobs are visible in Hugging Face. Labels let users sort and inspect what the agents are running. Reading the underlying metrics data produces another view: a Gantt chart of experiments over time, with overlapping bars and scores beside them. The chart connects a named agent’s activity to when it ran and the result it obtained, making the parallel execution easier to inspect than a job list alone.

“Multi Agent Autoresearch Lab” chart shows named horizontal experiment bars against Time (UTC), with scores beside the bars and colors for scheduler, optimizer, and architecture.
A Gantt chart displays overlapping autoresearch experiments and their scores.
15:2215:37
Suggest correction

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

15:22 · section reference included

Give agents experiments they can verify

The condition that makes a small automated lab useful is a verifiable experiment. Training a model or writing a CUDA kernel gives the agent an outcome it can measure and compare. That makes it possible to connect proposals, implementation, execution, and evaluation into a research process that can teach its operator something.

The infrastructure should leave its underlying primitives accessible. A dashboard is useful, but the metrics data should remain available when an agent needs a different visualization. An abstract API is useful, but an inaccessible layer behind it can become a ceiling on what the agent can do. The design task is to expose the tools well, without requiring every useful action to pass through a predetermined interface.

The Hub supplies the storage, tracking, and compute needed to connect these workflows. Together with standard repositories and maintained skills, those foundations let engineering effort move from setting up each task toward testing harder ideas. Burtenshaw closes by pointing to the posts and attached repositories for the examples: the next step is to work through an actual experiment with an outcome that can be checked.

16:4516:59
Suggest correction

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

16:45 · section reference included

Resources

From the talk

Updates since the talk

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] Hi everyone.

  2. 0:16

    As you heard, I'm Ben from Hugging Face, and the talk that I'm gonna present to you today is called Your Coding Agent Should Do AI Systems Engineering.

  3. 0:24

    So there are two main takeaways that I want you to get from this talk. One, and, and probably the fun part, is that we can use coding agents to tackle the hardest engineering problems in AI, so systems engineering and machine learning engineering.

  4. 0:37

    And maybe the boring part is that in order to do this, we're gonna need standard repos, um, we're gonna need those on the hub, and in many cases, we already have them.

  5. 0:47

    So I think in this case, I'm preaching to the choir here, but in case you haven't noticed, coding agents have been accepted. Many of s- of, of us have been using them for a few years.

  6. 0:58

    But in the last few months, they seem to have cro- crossed a sort of acceptance gradient where a broader group of people are using them. So with this in mind, how do we keep our careers, our engineering kinda contemporary, and how do we keep challenging ourselves in new areas?

  7. 1:14

    And my proposal is that we need to go kinda closer to the silicon and tackle harder problems, and, and that's where AI systems engineering comes in. I've broken this talk down into three progressively c- more complex steps, and more autonomous steps as well, and I've defined those like three bosses from games.

  8. 1:34

    The first one is a hybrid approach where you interactively use an agent to solve a, a... to, to write a CUDA kernel. The second is a zero-shot task where an agent takes a prompt and trains an LLM on Hugging Face.

  9. 1:51

    The third is a multi-agent auto research setup, like a kind of automated AI lab.

  10. 1:58

    So let's get started on, on the first boss, right? This is writing CUDA kernels. So for a while, writing custom kernels was seen as this unattainable goal for the humble agent.

  11. 2:09

    They required complex DSLs. They required integration with rele- relevant hardware to be benchmarked and to be tested, and it was s- seen as something that couldn't be, uh, achieved by agents.

  12. 2:21

    However, that in most cases was wrong. If you look at kernel hackathons like those on GPUMode, the recent AMD hackathon, if you look at papers like KernelBench, you'll see that agents are able to write valid and optimized CUDA kernels.

  13. 2:37

    And, and that's really cool and something that totally inspires me. I, I'm a part of GPUMode, I contribute to that, and, and something that I think everyone should be doing.

  14. 2:45

    However, what do we do with them? How do we distribute them, and how do we get them into our inference engines so that we actually are using these optimized kernels that we're generating?

  15. 2:54

    And that's part of the question of this part of the talk.

  16. 2:58

    Let's take a step back now and just, uh, say what a kernel is, right? So when you run an AI model on a GPU, the actual work is executed through a kernel.

  17. 3:09

    This will be defined in a relevant language for that hardware, and it will use relevant features to that hardware that may not be r- available on other hardware.

  18. 3:18

    We can write custom kernels that will take advantage of that hardware for a specific math operation, kinda squeeze everything we can out of it, so that the model will infer faster.

  19. 3:29

    In general, this requires a lot of expertise about writing CUDA kernels, about the hardware, uh, and it's also a bit of an installation hell as you deal with a pretty large install matrix from hardware to software to generations and versions of, say, CUDA and these kind of issues.

  20. 3:44

    So in short, it's hard. Efficiency in deep learning, so efficiency in kernels, is split into three main sections. One, compute, two, memory, and three, overhead. Compute is the flops.

  21. 3:58

    This is... These are the matrix multiplications and, and the, the real math of the process. Memory is the time spent moving data or tensors around memory, typically from slow to fast memory.

  22. 4:09

    And overhead is basically everything else, the Python environment, PyTorch dispatch of those kernels, these kinds of things. In general, most people might assume that the compute is the bottleneck here because it's doing most of the math, right?

  23. 4:24

    Th- that's not correct. So in most cases, memory is usually the bottleneck, and that's because a modern GPU, let's take a H100, for example, can do a petaflop a second of computation, but its memory bandwidth is three terabytes.

  24. 4:38

    So in short, the GPU is often waiting idle for this tensors to come back for it's... for them to be computed.

  25. 4:47

    There are custom kernels, custom optimized kernels that exist, uh, p- FlashAttention being the poster child of these, and in general, what they do is increase arithmetic intensity. They basically make the GPU do more sums at once per read and write.

  26. 5:01

    So we move the tensors across, we do as much math as possible in the GPU in one go, and then we write it back. In short, people like to say, "We keep the GPUs warm."

  27. 5:10

    And that's the objective of writing a custom CUDA kernel.

  28. 5:14

    Hugging Face has a library called Kernels, which is maintained by kernel writers, and we're beginning to scale up to a kind of agentic workloads. So at its core, this is a way of distributing kernels.

  29. 5:25

    It has a TOML file, like any kind of project, which says which hardware it works on, which versions of CUDA and other kind of softwares it requires to work, and it's a...

  30. 5:35

    it's now also a repo on the hub, just like models. So if you are a kernel writer or you're an aspiring kernel writer with an agent that you wanna set up, you can now be a kernel publisher just like a model publisher.

  31. 5:46

    And my point is that this is like a kind of super fervent ground for, uh, AI engineers looking to kind of scale their career.

  32. 5:55

    If you check out these repos on the hub, you'll see that there's compatibility for different hardware. You can configure that so you'll know, like, "Okay, this works on my GPU or on my laptop."

  33. 6:03

    Uh, and, and this is what it looks like here

  34. 6:07

    Right. Let's take a look at what this looks like for an agent and how we're helping an agent to do this. So

  35. 6:14

    first, we're gonna go to how we do this, so skills. So I, I, I'm sure everyone here is familiar with skills, and, and I'm sure there have been a number of talks that really go deep into skills.

  36. 6:24

    I don't like to... I like to keep them pretty simple, and, and really they're just kind of file-based context with all the wonders of files. We can open them and close them, we can version them, we can source control them, and these kinds of things.

  37. 6:36

    And agents can also do the same. They can open them when they need them. They can use them when they don't. And so in the context of kernels, that means that we can give examples of how to write and how to use kernels in skills, and they can open those and use them when they need.

  38. 6:49

    I like to say that it takes a task from being zero-shot to being few-shot, which in ML is quite a familiar concept, right? We're just giving the agent examples of how to do things, uh, and, and we can be quite verbose and descriptive about that.

  39. 7:03

    At Hugging Face, we're focusing on integrating skills into their projects. So what you'll find is that inside each project, there's managed skills by that project, which we think is the best way to do this because it means that those projects, uh, the, the maintainers of those projects are maintaining their skills, right?

  40. 7:20

    That means that they're not necessarily the most, like, YOLO skills because they're kind of, like, well-maintained and, and robust. And we have another repo for those kind of more experimental skills, which is called Hugging Face Skills.

  41. 7:32

    Go and check that out, uh, if you want to try some of these examples you'll see today.

  42. 7:37

    In kernels, this is what the skill looks like. It focuses on benchmarking, so it has scripts that allow you to, uh, benchmark and test the skill... Uh, sorry, to test the kernel and see, uh, how performant it is, and references with examples of, of how to do this.

  43. 7:52

    We benchmarked this skill, and we used, uh, we generated a, a kernel for Qwen3-8B for H100, and we found that we had a 94% speed-up. This isn't a state-of-the-art speed-up on this model by any means.

  44. 8:08

    It's really just about compatibility and a compatibility matrix. So in many cases, these models and their kernels won't be optimized for the respective hardware or generation of hardware that you want to use them on.

  45. 8:18

    So you have some low-hanging fruit here where you can just come and pick up some, some optimizations for that specific hardware. Maybe because your hardware's cheap on your cloud provider, uh, but it's not necessarily the most ideal for the, for that model that you're using.

  46. 8:31

    So my recommendation would be to come here and, like, pick up some easy speed-ups.

  47. 8:36

    How do we know that these skills are any good and, and, and that we should be sharing them and telling people to use them? We use an open source library called UPskill that we're also maintaining.

  48. 8:45

    This is a, is a gateway to using cheaper and open models with skills. Y- it basically just generates skills, generates an eval for the skill, and then allows you to compare different models on the same skill.

  49. 8:59

    So you can see things like this. So okay, GPT-OSS is slightly less accurate using the same tokens. Kimi is more accurate using less tokens. Haiku is a bit more accurate using less tokens, and these kinds of things.

  50. 9:13

    So if you've got a skill and you're using it regularly and you're thinking to yourself, "Okay, how can I save a few pennies here and, and get a different model on the go?"

  51. 9:21

    Then try out UPskill, and it'll allow you to iterate on your skill and, and improve it.

  52. 9:26

    Right, let's move on to Boss2. I'm gonna go through this one pretty quickly. This is about fine-tuning models. If you're really into this, there was a talk yesterday by my colleague, Merve, that went into this deeply, and there's also a blog post here where we got Claude to do this.

  53. 9:39

    This was from back in November, December time now. Go and check this out. Basically, you can just say fine-tune Qwen3-6B on this dataset. This is a chain of thoughts dataset, and you'll improve the model's chain of thoughts.

  54. 9:50

    This is fully integrated to the hub now, so you can even run the GPUs on, on the hub, and it uses, uh, HF CLI skills, so it's all very available.

  55. 9:59

    I would try this one out. You can also try this one out. This is, uses unsloth, so it's even cheaper. This runs with, like, optimized models, and it's maintained by unsloth and by us, and it's another blog post, and there's also often free credits that you can get, uh, around these blog posts.

  56. 10:13

    So I'd go and check these out. Okay, let's move on to the, the big one. [sighs]

  57. 10:21

    Uh, this is AutoLab multi-agent research, which is a project that kind of, um, basically keeps me up at night.

  58. 10:30

    Andrej Karpathy, a few weeks ago, maybe a month ago now, released a project called AutoResearch, which was based on his other projects, NanoGPT and, and NanoChat, and it took the NanoGPT architecture and got Claude Code to create improve-- to write improvements to that training script so that it would improve the training process.

  59. 10:49

    So we can see here the experiments going over, and for each experiment, there's a change in the training script, which increases the efficiency measured in bits per bytes of that run.

  60. 10:59

    And we can see that the efficiency ends at its best at the end of the process. I, like everyone, thought this was super cool, and I had to start implementing it straight away.

  61. 11:07

    But one of the things that stood out to me was I found it kind of weird that we had one agent working in a single way, iterating, going and finding improvements, and then implementing them, and it would make sense to kind of distribute this.

  62. 11:19

    So that's what I did. I distributed the task amongst a research team with four types. We have a researcher that basically looks up papers. For this, we use HF Papers, but we can also use Archive Papers.

  63. 11:32

    HF Papers is cool because it has a CLI, so you can just pull and search papers from the hub, and it acts as a litris- literature scout. So it just looks up for papers with ideas, and it formulates those as hypotheses.

  64. 11:43

    We then have a planner, which takes those hypotheses and maintains like a queue of jobs.

  65. 11:49

    We then have a set of workers, and they pick up those hypotheses, and their job is to implement them as training scripts. So in many cases, just like change the architecture or change a parameter or something.

  66. 11:59

    And then we have a repo- a reporter agent that goes and monitors all these jobs and maintains a dashboard that we can use.

  67. 12:09

    So this is what it looks like. If you see here that we have... We- we're working in a, in a GitHub project, right? So, uh, in a Git project, sorry, and we have a main branch that we maintain with our train scripts that we're updating in each branch, and then, like, a train original that we, that we

  68. 12:23

    keep. And then we have a data structure on the main branch that we use to just keep the scores. Then we implemented this in OpenCode, uh, for this example, but in the repo, which you can also go and check out, the, uh, it's also implemented in Codex and Claude, if you wanna try those.

  69. 12:38

    I also implemented it in Gastown, but that's kind of Wild West stuff, so I did it in, like, a separate project. Um, but basically it works, um, really anywhere because it's more just a conceptual implementation, right?

  70. 12:49

    And first, you have your planner creating hypotheses. You have your researchers looking at paper, and then your reporter picking all of this up, handing to workers, as I said.

  71. 12:58

    Those workers integrate with HF Jobs, so they start these jobs off on the hub that run with the hardware that they need, and then they submit these patches that go back.

  72. 13:06

    The reporter operates in Trackio, which is a da- an open source dashboard that we use for all metrics. Trackio is useful with agents because it uses a completely open data layer, basically Parquet.

  73. 13:17

    So if you don't want the dashboard or your agent doesn't want the dashboard for any reason, it can just get into the Parquet and just do whatever you want.

  74. 13:25

    So if you need a Gantt chart or some other visualization, it can just go and, and do that. So I would say it's, like, the best agent dashboard tool because it is basically just a data store.

  75. 13:34

    You know? It's basically just a data structure. Okay, so let's just walk through this now.

  76. 13:40

    So this is, uh, implemented in OpenCode. If you don't know OpenCode, you have, like, agent configuration. So in this one I just set, uh, AutoLab, which was the name of, of the agent configuration that I have.

  77. 13:50

    It has skills. This is the prompt, so it says, like, "Run one autonomous local research, or auto-research pass in the repo using defined roles." I tell it to use planner, uh, to propose up two fresh single change experiments, use reviewer to reject duplicates or stale ideas.

  78. 14:07

    I also tell it to use, like, a HF bucket because I want all of the storage to be in the same bucket so that I don't have to upload or download the training scripts every time.

  79. 14:16

    And then we go and we select one of the sub-agents. There's a nice, uh, interface in OpenCode, but it's similar in other tools. So I select the planner, and then you'll see that the planner receives this prompt, and it uses a specific template which I defined in my configuration of, like, it's gonna have current state, it's gonna

  80. 14:32

    have a, a, a list of the jobs so far, things that have worked which were defined by the reviewer, current hyperparameters that it can change, and it's basically just defining these jobs, which we'll go into the, the job list as I mentioned.

  81. 14:46

    We then switch over to a reviewer agent, which will receive all of these jobs. It has a similar kind of struc- structure based on a template, uh, a reference to where it should be working from and the latest score that it should be using.

  82. 14:58

    It gets an overview of all the failed and successful experiments, which it will then, like, use to base its decisions of what goes into the next queue on, and it creates this little table which we don't really need to look at.

  83. 15:09

    It- it's really just for the agents to, um, interact with each other and to get this information back. To be honest, that's a little bit of a verbose example, and, uh, we maybe don't need this many tables, and you could probably trim that bit down.

  84. 15:22

    But in general, I'd recommend that if you think this is cool, go and try that out in the repo. After that, so this agent runs in parallel, sometimes for hours, and this is the Trackio dashboard that we use, and these are all the runs that are pushed to Trackio.

  85. 15:37

    As I said, the main advantage here is that this is fully open source and it's just a data layer, but we get all of these kinds of visualizations. Trackio can also have, like, events and warnings, so we can have all of these events being reported by different agents, and we can filter those down.

  86. 15:54

    We can also even tie those up to, like, notifications, so you can get emails from Trackio if you want, if, like, your agents are kinda going rogue or something and, uh, you need help.

  87. 16:03

    But best of all, Trackio just has this, uh, like, just freeform structure, so you can just throw tables in that don't necessarily fit with any other structure.

  88. 16:12

    And then on the hub side, all of these jobs are just run inside Hugging Face, so you can explore those jobs. And in most cases, you can tell the agents to use, uh, like, labels, and you can sort those labels and review through what they're doing.

  89. 16:26

    Or you can just look at it like this, as I mentioned. You can a- access that underlying data layer and just create a Gantt chart because this was a kinda convenient way to look at what the agents were doing over time.

  90. 16:37

    So you can see, like, this Amber agent went off, and this was the score that it got. But you could visualize this however you want because you have access to this data layer.

  91. 16:45

    The kinda TLDR of the whole thing is that, yeah, you can go and just have your kind of own AI lab, and you can try it out. And if you have a verifiable experiment, like training a model or doing, uh, k- or writing CUDA kernels, then it is pretty easy to, to implement and set up and, and

  92. 16:59

    to learn some stuff. So let's now look at the, the takeaways, I'd say. So the... In, in simple terms, I'd say that agents work really well with primitives and, and open primitives, and we want tools that are fully open, things like Trackio, things like kernels, that we can expose to agents and they can kind of control in

  93. 17:17

    their own way. Even though abstracted APIs are, are really useful, if we have a layer that we can't necessarily get behind, that, that is a ceiling. So we don't always need to extract.

  94. 17:27

    It, it's more about exposing well. And the other takeaway is that the hub is, is ready, the Hugging Face hub is ready for these kind of workloads. We have the, the fundamentals in place like storage, tracking, and compute, which I think will allow us to scale our engineering to, yeah, new levels.

  95. 17:44

    If you found any of this interesting, I've shared it all o- on X, I've shared it all on Hugging Face, and y- there's a blog post about basically each one of the examples that I just shared with you, and they all have repos attached to them, so you can go and try that out for yourself.

  96. 17:58

    If you find anything that's broken, like, please tell me off. If you think that this was completely wrong, come and find me afterwards and, and sort of bully me.

  97. 18:04

    Uh, that's fine. Uh, uh, but most of all, thank you. [audience applauding] [upbeat music]