Holo4: A Model That Clicks, Codes and Calls Tools — Transcript
Full transcript
- 0:00Okay, so imagine you've built an agent
- 0:02that can use a computer. It looks at a
- 0:04screen. It can click. It can type. But
- 0:07now you drop that into a server with no
- 0:09screen. It's just going to get stuck.
- 0:11It's got nothing to look at. It was
- 0:13built for visual kinds of things. If you
- 0:15flip it around, if you've got an agent
- 0:17that's great at calling tools and APIs,
- 0:20but you then ask it to pull a report out
- 0:22of some old app or something like that
- 0:24that has no API, it's also stuck, right?
- 0:27It doesn't have the ability to look at
- 0:28the UI. it doesn't have the ability to
- 0:30actually act on that. And so far up
- 0:32until now, people have generally tended
- 0:34to make models to do one side of that
- 0:37line or the other. So either being able
- 0:39to do the visual kind of stuff and act
- 0:42on things, click on things, that kind of
- 0:44thing, or being able to actually do the
- 0:46API related stuff, the non-visual kind
- 0:49of stuff. Unfortunately though, the
- 0:51problem is that real work doesn't stay
- 0:53on one side or the other of that line.
- 0:55More and more as people using agents to
- 0:57do a whole variety of different tasks,
- 1:00it often means that it's got to click
- 1:01through some legacy UI. It's then got to
- 1:04be cleaning a CSV file. It's then got to
- 1:06be posting it to a Slack or to some
- 1:08other API. And right now, the way that
- 1:11people have sort of handled this is you
- 1:13tend to have lots of different models.
- 1:14You chain models together. So you've got
- 1:17one visual model that you force
- 1:18everything as screenshots. You've got
- 1:20another model which is doing your
- 1:21orchestration and dealing with MCPS,
- 1:24etc. So in this video I want to talk
- 1:25about a model from a company in Paris
- 1:27called H Company and they're the lab
- 1:29behind Hollow Models. They've just
- 1:31released Hollow 4 and that's what I want
- 1:33to go through here. This is basically an
- 1:35openw weight model trained to click to
- 1:38write to run code to call MCPs to do API
- 1:42tools etc. And most importantly to be
- 1:44able to orchestrate and choose between
- 1:47those actions as it goes along. And I
- 1:49kind of feel there are two really
- 1:50interesting parts here. There's the
- 1:52model itself, which we'll look at, but
- 1:54the other part is how you train a model
- 1:56to make that choice. And I should point
- 1:59out they've actually got a family of
- 2:00hollow models here. So, we'll have a
- 2:02look at those. We'll have a look at how
- 2:03they fit into an agent, how they're
- 2:06built, and also perhaps where they're
- 2:07falling short, etc. All right, so let's
- 2:09recap what an actual agent loop is. You
- 2:12basically give the agent a task. The
- 2:14model looks at what's going on and it
- 2:16decides on one action, right? Then the
- 2:20harness, which is just the code around
- 2:22it, executes that action. It does the
- 2:24click. It runs code. It calls the tool.
- 2:27And then obviously it captures what
- 2:29happened, whether that's a new
- 2:30screenshot, whether that's just some
- 2:32return from an API. And it feeds that
- 2:35back into the model along with the
- 2:37memory of the previous steps around it.
- 2:40And this loop just goes round and round.
- 2:42Right? This is fundamentally the base of
- 2:44what's going on here. I guess the key
- 2:46thing here is that the model itself
- 2:47never actually touches anything. It only
- 2:49decides. The harness actually does all
- 2:51the doing. And that matters more and
- 2:54more nowadays. When we look at
- 2:55benchmarks, we see that models can score
- 2:58really differently depending on the
- 3:00harness that are actually running with
- 3:02it. Now for Hollow 4, they've actually
- 3:04optimized this to work with three main
- 3:06lanes of sort of actions here. The first
- 3:09are GUIs, right? Graphical user
- 3:11interfaces. The model looks at a
- 3:12screenshot, then says, "Click here, type
- 3:15this." And you can kind of think of it
- 3:17as the agent using the computer, a web
- 3:20device, a browser. The way that you do
- 3:22it, it works on anything that a human
- 3:24can use, but it's going to be slow and
- 3:26it can often break when someone moves a
- 3:28button or changes the UI, etc. The
- 3:30second lane is code. So, the model
- 3:33writes a script, runs it in a sandbox or
- 3:35a shell, and it gets an output back.
- 3:37That's fast, that's precise, but it only
- 3:40works when you can actually write some
- 3:42software to do the particular task,
- 3:44right? It can't just easily write a
- 3:46Python code to know which button to
- 3:48press on a visual output. The third lane
- 3:51relates a bit to the second lane, but
- 3:52this is where you've got tools. So, MCP
- 3:55servers, APIs, that kind of thing. The
- 3:58model calls a function and it gets back
- 4:01structured data. And in many ways, this
- 4:03is the most reliable of the three here.
- 4:04But obviously the challenge is it only
- 4:06works if there is an MCP or an API or
- 4:10some kind of tool that is actually going
- 4:12to do what you want it to do. Now the
- 4:14challenge has been for many people
- 4:15running agents, especially local agents
- 4:18that these three different lanes often
- 4:21require either different models or
- 4:23different setups with your agent
- 4:25harness. If you got something that's
- 4:27doing screenshots, that's going to eat a
- 4:29huge amount of context compared to just
- 4:31JSON files or a few lines from a
- 4:34terminal output, etc. And for exactly
- 4:36that reason, most people have tended to
- 4:38ignore running something that could
- 4:40actually do visual stuff just because
- 4:42it's often not practical to do locally.
- 4:44And going back to the example I talked
- 4:46about in the intro, something like
- 4:48exporting a report from some kind of
- 4:49legacy app through a guey. You want it
- 4:52to go through an e-commerce site and
- 4:53find different things that are not
- 4:55available through their API. Then you
- 4:57want to take that, clean it up for a CS
- 4:59file with a Python script and then post
- 5:01it to an API like a Slack, etc. is
- 5:04really the type of goal that Hollow 4 is
- 5:06sort of working on here. They talk about
- 5:08this as being working across interfaces.
- 5:11It's not just that it supports MCP as a
- 5:14feature. It's trained to pick the right
- 5:17lane between those images, code, or
- 5:19tools. And in many ways, that's what
- 5:21sets it apart. The earlier hollow models
- 5:24that they already trained were using
- 5:26function calling. The big difference
- 5:27here, though, is that they've trained
- 5:29this model to do all three together.
- 5:32Graphical user interfaces is a first
- 5:34class option, code is a first class
- 5:36option, and tools are a first class
- 5:39option. They're not just add-ons. Now,
- 5:41the big question for me was, would you
- 5:43use this as your only model or alongside
- 5:45of another one? And the answer is
- 5:47perhaps kind of both. HR runs all their
- 5:49benchmarks with hollow as the sole model
- 5:51doing both the planning and the acting.
- 5:54But you could also put this underneath a
- 5:57bigger model for doing orchestration or
- 5:59a different model if you wanted to do
- 6:00that. H actually has their own harness
- 6:03and SDK called high agents which runs
- 6:06their hosted agents and can plug into
- 6:08things like clawed code over MCP. So
- 6:10your main model plans the job and hands
- 6:12the screen heavy work to hollow and I do
- 6:15think that may make sense for certain
- 6:17use cases where you just want to use
- 6:19this for doing the gooey stuff for doing
- 6:21all the computer use agents kind of
- 6:23stuff. All right, so let's look at what
- 6:25age company actually shipped here.
- 6:27They've got two main models here. the
- 6:29Holo 427B which is a dense model built
- 6:32on the Quen 3.827B
- 6:35and then they've also got the Hollow 4
- 6:3735B A3B. Right? So that's basically a
- 6:39mixture of experts model with 3B active.
- 6:42That one is actually still built on the
- 6:44Quen 3.6 model. Along with those two
- 6:46models, they've also released Holotron
- 6:49Nano, which is the same recipe for
- 6:51actually making the first two, but
- 6:53applied to Nvidia's Neotron 3 Nano Omni
- 6:56there. So, I made a video about that
- 6:58Neotron 3 Nano Omni. A mouthful of a
- 7:01name there, but you can check that out
- 7:03if you want to see more some of the
- 7:04reasons why people are using that
- 7:06smaller model. All right, so the weights
- 7:08for all of these are on HuggingFace.
- 7:09They've got a bunch of different
- 7:10quantizations, etc. They've also got
- 7:12their own API if you want to run it
- 7:14through that. The full Bflat 16bit
- 7:17version here is 54 gigs. So, I'm going
- 7:20to be running this on my Dell Pro Max
- 7:22machine with an RTX Pro 6000 in here.
- 7:25So, a big shout out and thanks to Dell
- 7:26for sponsoring the compute for this. One
- 7:29of the challenges that you want to think
- 7:30about wherever you're going to choose to
- 7:32run this is that screenshots fill up
- 7:34your KV cache very fast. So, you need to
- 7:37make sure that you're leaving plenty of
- 7:39headroom specifically for that. Okay.
- 7:42So, if we look at the benchmarks in
- 7:43here, we can see that they're actually
- 7:44comparing both the 27B dense version and
- 7:48the mixture of experts version and the
- 7:50original Quen 3.8 827B
- 7:53along with a bunch of models that were
- 7:55sort of frontier perhaps a week, two
- 7:57weeks ago. And I got to say I feel for a
- 7:59lot of these companies when you
- 8:00basically benchmark what you're about to
- 8:02release and then the Frontier Labs go
- 8:04and release something completely new.
- 8:06But honestly, I feel like the Frontier
- 8:08ones are more just for a guide of what
- 8:10sort of state-of-the-art for this thing.
- 8:12Obviously, none of those we can run
- 8:14locally. And obviously, if you're paying
- 8:15for API usage with images on those, that
- 8:18can get very expensive very quickly. So,
- 8:21if we look at things like OS World,
- 8:22they're really not that far behind the
- 8:24Frontier models. In fact, you can see
- 8:26the 27B here is actually a little bit
- 8:28ahead of what now is the old GPD 5.5
- 8:32model. Now, when it comes to OSWorld,
- 8:34yes, they're quite a bit behind. But
- 8:36again, don't just look at the accuracy
- 8:38scores here. Really pay attention to the
- 8:41costs, right? because while Opus 5.5 and
- 8:44Astra are coming out on top, you can see
- 8:46that the cost of running those compared
- 8:48to the 27B is like seven times more
- 8:52here. The other big takeaway I would say
- 8:54from the benchmarks here is it's really
- 8:56kind of fascinating just how far behind
- 8:58the mixture of expert model is. So when
- 9:00we look at something like OS World, we
- 9:02can see that the 35BE
- 9:05is scoring less than half what the 27B
- 9:09dense model is. And while it's not as
- 9:11dramatic as that for the other
- 9:12benchmarks in here, there really is a
- 9:14clear advantage to using the dense model
- 9:16for these kinds of tasks. And I guess it
- 9:18makes more sense that if we compare sort
- 9:20of active parameters, we're comparing 27
- 9:23billion to 3 billion. And it just does
- 9:26seem that for images and getting
- 9:28representations out of images, the 27
- 9:31billion dense model just does that so
- 9:34much better here. All right, so just
- 9:35quickly, how do they actually train the
- 9:37model to choose a latent like this?
- 9:39because this is one of the parts that I
- 9:40find really interesting here. So, H
- 9:42company built what they're calling an
- 9:44agentic task factory. It's a set of
- 9:46pipelines that build like interactive
- 9:48environments and tasks that can be
- 9:51checked automatically. So, things like
- 9:52screenshots of real websites,
- 9:55open-source software using specific
- 9:57webs, specific MCP servers, and even
- 10:00things like desktop environments. And
- 10:02the interesting thing there is that some
- 10:04of those environments are kind of hybrid
- 10:06meaning that you could take the state of
- 10:08that for example like a website or
- 10:10something and you could actually do it
- 10:11through either a guey way by looking at
- 10:14the website through screenshots or you
- 10:16could do it perhaps by an MCP way or by
- 10:18using some code to look for something on
- 10:21the website. So over many of these
- 10:23different tasks then the model can
- 10:25actually solve the task by clicking or
- 10:28by calling a tool and then reinforcement
- 10:30learning sits over all of that and
- 10:32rewards the model for whatever works the
- 10:34best in that situation. So that's how
- 10:37the model learns that clicking through
- 10:38five menus is perhaps going to be the
- 10:41slow way when there's an API sitting
- 10:43there. And also vice versa that perhaps
- 10:46using a screenshot to get a bunch of
- 10:48detailed information when there is no
- 10:50detailed API available is going to be
- 10:52the way that the RL reinforces it and
- 10:54makes the model better at things like
- 10:56that. So the training itself is
- 10:58supervised fine-tuning on about 127
- 11:00billion tokens then creating two
- 11:03separate RL experts which get merged
- 11:05back into the one model. On top of that
- 11:07the other thing that they did was
- 11:08rebuild their actual harness to actually
- 11:10fit in with this. They were then able to
- 11:12basically tag sort of what failed and
- 11:15have engineers review those that look at
- 11:17like how could we improve the harness to
- 11:19actually work with this kind of output
- 11:21from the model. So it's interesting here
- 11:23that some of the biggest wins were
- 11:24reliable memory that can track sort of
- 11:26hundreds of steps and it can relate
- 11:29those steps together perhaps in a better
- 11:31way because it's being trained on these
- 11:33three different lanes. All right, so
- 11:35that same recipe was used for the Quen
- 11:373.8 dense model, the 3.6e and the
- 11:40Neotron. And I think it's pretty clear
- 11:42that what they're really focusing on
- 11:43here is really strong post-training
- 11:45pipeline rather than overcustomizations
- 11:48for any one specific model. They're
- 11:50really setting themselves up here for
- 11:52when the Quen 4 models come out. And
- 11:54Alibaba has actually recently confirmed
- 11:56that there is going to be a Quen 4 27B.
- 12:00So, I think everyone's got to be looking
- 12:01forward to that. You could imagine a
- 12:03hollow 4.5 or five that actually
- 12:05improves on all of this even more. All
- 12:07right, so let's take a quick look and
- 12:09demo at how this actually works. Okay,
- 12:11so you can see here this is going to use
- 12:15the guey element of this. So, it's
- 12:17basically going to the hugging face
- 12:18page. We've given it the task of open
- 12:21the Holo 4 collection and list out the
- 12:24models precisions. And you can see that
- 12:26sure enough, it's gone to different
- 12:28elements there. It's actually finding
- 12:30the collections, the Holo 4 collection.
- 12:33And it will go on for quite a while to
- 12:35do this. But you'll notice at the bottom
- 12:37that everything going through here is
- 12:40actually a guey task in there. So, let
- 12:43me just stop this one and let's look at
- 12:45some of the other ones. I've built a UI
- 12:48that's using a little mini harness at
- 12:50the back end and that harness we can
- 12:52give it an MCP if we turn it on. We can
- 12:55give it access to tools, access to code,
- 12:58etc. So, I'm going to try going through
- 13:00the first task. So, here it's basically
- 13:03got a madeup admin panel so that this is
- 13:06running locally. You can actually see
- 13:08that this is a list of orders there and
- 13:11it's using the guey in this one. We've
- 13:13got the MCP turned off. So, it doesn't
- 13:15have the ability to use the MCP anything
- 13:18here. So, it's literally having to
- 13:21navigate that web page and go through
- 13:24and get stuff. Now, it's getting it and
- 13:26then it's actually using code to put it
- 13:28all together. All right. So, you can see
- 13:31finally it comes back with the answer
- 13:33out. In this case, we can see that it
- 13:35basically downloaded the CSV file. It
- 13:38then ran Python on the CSV file. It then
- 13:40gave us our answer back. Now it started
- 13:42out with the guey there. If we look at
- 13:44the bottom, we can see it went 1 2 3
- 13:46guey steps. Then it went to code and
- 13:48then it gave us our final answer out.
- 13:51Let's look at the exact same thing
- 13:52though. Now if we give it an MCP on. So
- 13:56now we've got the MCP is actually on. So
- 14:00it doesn't need to go to all the UI
- 14:02stuff now, right? It can actually just
- 14:04go and say, "Hey, we've got a tool
- 14:06export orders." And it will go through.
- 14:09It's going to basically get the same
- 14:12kind of thing and we've got the answers
- 14:14out at the end as well here going
- 14:17through this. And you can see that
- 14:19obviously that was a lot less steps and
- 14:21none of them were gooey in this case. It
- 14:23was basically just the tool and then
- 14:25code and then output there. If you
- 14:28wanted to basically just do everything
- 14:30where it's doing various clicks as it
- 14:32goes through, you can see it did a click
- 14:34on the overdue. It did a click on the
- 14:36export CSV file. Again, we had multiple
- 14:39guies there and then it's running code
- 14:41before. It's going to go back to the
- 14:42model and give us our final response
- 14:45out. Here's an example that I put
- 14:46together where it's basically now just
- 14:49using code. So, it's able to go through
- 14:52a file, pull out different information,
- 14:55reconcile the two different order
- 14:57exports here, and list any mismatches
- 15:00that it's finding in there. And the main
- 15:02thing to notice here is that it's just
- 15:05using code this time. It's basically
- 15:06just putting that all together and then
- 15:08at some point here it's going to give us
- 15:10our final result out. And you can see
- 15:12actually we got some environment issues
- 15:14going on there where it's actually ran
- 15:15into some problems with that. You can
- 15:18see that eventually it's starting to use
- 15:19pandas. And then finally we get our
- 15:22answer out. Now it took quite a long
- 15:24time there. Right, that was a minute 37
- 15:26seconds. I've obviously cut some bits
- 15:28out for the recording, but you can see
- 15:30that it's done each of these steps. And
- 15:33that's the whole thing with this model
- 15:34is that it can choose to just do the
- 15:37guey and use just the graphical user
- 15:40interface and then process those
- 15:42screenshots and then work out where to
- 15:44actually click on the UI. It can do the
- 15:47code like we've seen in this one. And it
- 15:50can use tools like the MCP if they're
- 15:52available and it sees those in the tool
- 15:55repository going into the model etc.
- 15:57Okay, so just to finish up, another cool
- 15:59thing that they've published are the
- 16:00actual trajectories of what's going on
- 16:03in here. So you can actually come in and
- 16:05have a look at how these trajectories
- 16:06actually went. Now, the big question to
- 16:08sort of finish up on is should you use
- 16:10this? Well, I certainly think it's worth
- 16:12checking out here. Unfortunately, the
- 16:14biggest issue with this, I would say, is
- 16:16the license that while it's open weight
- 16:18and you can check this out, this is
- 16:20actually a non-commercial license,
- 16:22right? Even though the Quen base model
- 16:24underneath this is Apache 2.0 0 and even
- 16:27though their hollow 3.1 models were
- 16:30Apache 2.0, unfortunately, this doesn't
- 16:32fall into that category. So, you can
- 16:34experiment, you can prototype, you can
- 16:36do research with this, but if you want
- 16:38to ship a product, you're going to have
- 16:39to go through H's API, or you're going
- 16:42to need to contact them directly. Now,
- 16:44one thing that I do think that they
- 16:45deserve some credit for is that every
- 16:47trajectory behind these benchmark scores
- 16:50that they've put out are actually open.
- 16:52So you could actually go through and
- 16:54learn a lot from those if you were
- 16:56trying to make your own model for doing
- 16:57this. So for me the takeaway here is
- 17:00that agents choosing between clicking,
- 17:02coding, calling, using guies, those
- 17:04sorts of things is where things are
- 17:06heading. Hollow 4 shows us that that
- 17:09ability comes from these training
- 17:11environments, comes from reinforcement
- 17:13learning, comes from basically
- 17:15incorporating the model to work with a
- 17:17specific harness as well. It also shows
- 17:19us some interesting things about the
- 17:21dense versuse gap in there. Anyway, as
- 17:24always, I've put the links to the blog
- 17:26and the models and even the trajectory
- 17:28viewer in the description there. Let me
- 17:30know in the comments what you think. I'm
- 17:32really curious to hear from you guys.
- 17:33How many of you are actually doing sort
- 17:36of computer use or browser agents,
- 17:39things like that, versus just sticking
- 17:41to basically tools, code, MCPS, APIs,
- 17:45that kind of thing. I've covered some
- 17:46browser use agents in the past and I've
- 17:48certainly been pitched a bunch of them,
- 17:50but I haven't always been convinced how
- 17:51actually useful they are over just using
- 17:54a normal model and a custom harness.
- 17:56Anyway, as always, if you found the
- 17:58video useful, click like and subscribe,
- 18:00and I will talk to you in the next
- 18:01video. Bye for now.
About this transcript
This page contains the full transcript of Holo4: A Model That Clicks, Codes and Calls Tools by Sam Witteveen, generated from the public captions YouTube serves with the video. The transcript has 3,549 words across 494 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to choose a caption track available on the video.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, caption language selection, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.