<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Information Bottleneck]]></title><description><![CDATA[AI research, compressed. Long conversations with the people building the frontier, and a working researcher's take on the ideas that survive the bottleneck - minus the hype.]]></description><link>https://www.the-information-bottleneck.com</link><image><url>https://substackcdn.com/image/fetch/$s_!nQnk!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9b10938-f656-4406-aa7a-36b5e263a5dc_950x950.png</url><title>The Information Bottleneck</title><link>https://www.the-information-bottleneck.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 14 Aug 2026 09:05:33 GMT</lastBuildDate><atom:link href="https://www.the-information-bottleneck.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[The Information Bottleneck]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[informationbottleneck@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[informationbottleneck@substack.com]]></itunes:email><itunes:name><![CDATA[Ravid Shwartz Ziv]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ravid Shwartz Ziv]]></itunes:author><googleplay:owner><![CDATA[informationbottleneck@substack.com]]></googleplay:owner><googleplay:email><![CDATA[informationbottleneck@substack.com]]></googleplay:email><googleplay:author><![CDATA[Ravid Shwartz Ziv]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Nathan Lambert: Inside Post-Training and the Open Model Fight]]></title><description><![CDATA[Nathan Lambert spent three years as post-training lead at Ai2, where he built the OLMo models, and he writes Interconnects, one of the most-read technical newsletters in AI.]]></description><link>https://www.the-information-bottleneck.com/p/nathan-lambert-inside-post-training</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/nathan-lambert-inside-post-training</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Sat, 08 Aug 2026 17:11:36 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/210368358/fa5b70e3c3fb9fb022f485b96b8c3db5.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-G3zanJBcPuo" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;G3zanJBcPuo&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/G3zanJBcPuo?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Nathan Lambert spent three years as post-training lead at Ai2, where he built the OLMo models, and he writes Interconnects, one of the most-read technical newsletters in AI. He left Ai2 in June and is now working on a new project. He&#8217;s also the author of the RLHF book. We talked a lot about open models, their capabilities, and why they are better than he expected. We get into what that means over the next two to five years, why he thinks recursive self-improvement is overblown, what the market for training environments actually looks like now, and why he expects Anthropic&#8217;s famously open internal culture to break after its IPO.</p><div><hr></div><p><strong>Key Topics</strong></p><ul><li><p>Open vs closed models and who actually captures the value</p></li><li><p>Anthropic and OpenAI as opposite cultures, and the talent concentration problem</p></li><li><p>Boom vs bubble, and why token spend hasn&#8217;t produced 10x better products</p></li><li><p>Continual learning, RSI skepticism, and what Nathan wants to work on next</p></li><li><p>What the open ecosystem needs economically to survive</p></li></ul><div><hr></div><p><strong>Timeline</strong></p><p><strong>00:00</strong> Intro<br><strong>00:27</strong> Open vs closed models, and who actually captures the value<br><strong>05:12</strong> China, harnesses, and where the real training leverage sits<br><strong>08:40</strong> Sovereign compute and the national security case for building models<br><strong>11:18</strong> Uncensored open weights and the bioweapon question<br><strong>14:29</strong> Anthropic vs OpenAI, ideology and politics<br><strong>19:35</strong> The Mythos ban and the Fable 5 delays<br><strong>24:30</strong> The AGI narrative, the talent drain, and antitrust<br><strong>28:12</strong> Why researchers join Anthropic, and the open Slack culture<br><strong>34:04</strong> Nathan&#8217;s next 12 months: character training and big RL runs<br><strong>37:55</strong> Continual learning, RSI, and why Nathan is skeptical<br><strong>43:19</strong> Boom or bubble, tokens vs GPUs<br><strong>45:12</strong> Why all that token spend never produced 10x products<br><strong>48:38</strong> Job displacement and the small-business future<br><strong>52:49</strong> Robotics, world models, and why multimodal lags<br><strong>57:44</strong> What the open ecosystem should actually do<br><strong>1:03:17</strong> Why NVIDIA isn&#8217;t building a frontier model<br><strong>1:07:34</strong> The RLHF book, and whether RLHF still matters<br><strong>1:11:06</strong> GRPO vs PPO and on-policy distillation</p><div><hr></div><p><strong>Music</strong></p><ul><li><p>&#8220;Kid Kodi&#8221; - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Daphne Koller - The Future of AI in Biology and Drug Discovery]]></title><description><![CDATA[Daphne Koller wrote the book that many of us learned probabilistic graphical models from, founded Coursera, and now runs insitro, which is trying to make drug discovery a machine-learning problem.]]></description><link>https://www.the-information-bottleneck.com/p/daphne-koller-the-future-of-ai-in</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/daphne-koller-the-future-of-ai-in</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Tue, 04 Aug 2026 04:12:07 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/209734077/cb95ff1ad7811e3e3f914f934c20f485.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-EACwotMLWog" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;EACwotMLWog&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/EACwotMLWog?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Daphne Koller wrote the book that many of us learned probabilistic graphical models from, founded Coursera, and now runs insitro, which is trying to make drug discovery a machine-learning problem.</p><p>We start with the bitter lesson. She agrees with most of it and then says where it stops working: biology doesn&#8217;t have enough data, structure is how people understand anything, and making a drug is a question about an intervention that hasn&#8217;t happened yet, not a pattern in data you already have.</p><p>Most of the episode is about why drug discovery is hard. Ninety percent of drugs that reach the clinic fail, and mostly not because the molecule was bad. The molecule usually does what it was designed to do. It just turns out the thing it was designed to do had nothing to do with the disease. Only 22% of diseases have any approved drug at all, and she calls that an upper bound on what we understand, not a lower bound.</p><p>She also gets into what agents are and aren&#8217;t good for in a wet lab, why cells don&#8217;t grow faster no matter how many GPUs you point at them, what it would take to have real foundation models for biology, and why almost all of biology is still out of distribution.</p><p>Plus GLP-1s and what human data keeps teaching us, whether AI can make the kind of leap that turned a bacterial immune system into CRISPR, and what she&#8217;d build if she were starting Coursera today.</p><div><hr></div><p><strong>Key Topics</strong></p><ul><li><p>The impact of scaling and data in machine learning</p></li><li><p>The importance of structure and causality in AI</p></li><li><p>Challenges in drug discovery and biological understanding</p></li><li><p>The role of foundation models in biology</p></li><li><p>Ethical considerations in AI and biomedical research</p></li></ul><div><hr></div><p><strong>Chapters</strong></p><p>00:00 Introduction to Machine Learning and Drug Discovery</p><p>02:00 The Bitter Lesson and Its Implications</p><p>06:48 Challenges in Drug Design and Discovery</p><p>11:48 Ethical Considerations in Human Research</p><p>17:20 The Drug Discovery Pipeline Explained</p><p>29:30 Integrating AI in Experimental Design</p><p>35:38 The Role of Human Judgment in Drug Design</p><p>37:14 Future of Drug Design: Efficiency vs. Automation</p><p>39:37 Challenges in AI and Data Availability for Biology</p><p>41:08 Foundation Models: Potential and Limitations</p><p>43:39 Causality in Biological Data: Importance and Challenges</p><p>45:18 Creativity vs. Understanding in Drug Design</p><p>48:17 Balancing Investments in Data, Algorithms, and Experiments</p><p>50:07 The Value of Simulations in Drug Discovery</p><p>52:03 Mathematical Frameworks in Biology: Utility and Limitations</p><p>54:14 The Future of Drug Discovery: Optimism and Innovations</p><p>56:28 The Impact of Coursera on Education</p><p>01:00:33 The Role of Universities in Lifelong Learning</p><p>01:04:06 Connecting Dots: The Fun of Variety in Work</p><p>01:05:46 Optimism for the Future of Drug Discovery</p><div><hr></div><p><strong>Music</strong></p><ul><li><p>&#8220;Kid Kodi&#8221; - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[RL Was Broken at Every Level - With Joseph Suarez (PufferAI)]]></title><description><![CDATA[Joseph Suarez on why deep RL stalled, and what fixing the code actually bought]]></description><link>https://www.the-information-bottleneck.com/p/rl-was-broken-at-every-level-with</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/rl-was-broken-at-every-level-with</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Thu, 30 Jul 2026 19:37:10 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/209156830/1cabf24a91d6029f250f83b9ad66eb3b.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-8Sv4QVbOAWA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;8Sv4QVbOAWA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/8Sv4QVbOAWA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>In this episode, Joseph Suarez from PufferAI explains why he thinks RL never had an algorithm problem, but it had a code problem. Every part of the standard RL stack was running about a thousand times slower than it should have been, and once that got fixed, problems that used to take months started getting solved in seconds on one GPU. We talk about what makes a simulator good for RL, why most of their sims run on CPU, what he wants to do with scientific simulation, and why he open sources all of it instead of writing papers.</p><div><hr></div><p><strong>Key topics</strong></p><ul><li><p>Types of RL and their applications</p></li><li><p>Challenges in scaling reinforcement learning</p></li><li><p>The role of simulators and hardware in RL</p></li><li><p>RL in gaming: from chess to complex games like NetHack and RuneScape</p></li><li><p>Future directions: scientific simulation and biological modeling</p></li></ul><div><hr></div><p><strong>Chapters</strong></p><p><strong>00:00 - </strong>Introduction to RL and Puff AI</p><p><strong>01:50 - </strong>Different settings for RL: Games, Robots, Finance</p><p><strong>04:10 - </strong>RL in LM and other domains</p><p><strong>07:00 - </strong>Challenges and solutions in RL scaling</p><p><strong>09:55 - </strong>Building fast, efficient simulators</p><p><strong>15:10 - </strong>RL for scientific research and simulation</p><p><strong>19:57 - </strong>RL in complex games: NetHack, RuneScape, Dwarf Fortress</p><p><strong>29:55 - </strong>Future of RL: Scientific discovery and beyond</p><div><hr></div><p><strong>Resources</strong></p><p>Puff AI - Official Site -  <a href="https://puffer.ai">https://puffer.ai</a></p><p>NetHack -  <a href="https://www.nethack.org/">https://www.nethack.org/</a></p><p>RuneScape -  <a href="https://www.runescape.com/">https://www.runescape.com/</a></p><p>Dwarf Fortress - <a href="http://www.bay12games.com/dwarves/">http://www.bay12games.com/dwarves/</a></p><p>OpenAI Gym - <a href="https://github.com/openai/gym">https://github.com/openai/gym</a></p><div><hr></div><p><strong>Music</strong></p><ul><li><p>&#8220;Kid Kodi&#8221; - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[The Model Found a Way Out  -  with Florian Brand (Prime Intellect)  ]]></title><description><![CDATA[Florian Brand builds evals at Prime Intellect.]]></description><link>https://www.the-information-bottleneck.com/p/the-model-cheated-with-florian-brand</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/the-model-cheated-with-florian-brand</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Mon, 27 Jul 2026 14:43:41 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/208695274/4e22fdab66c93770074dcb7b641e34f5.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-lrfMxsDGeW4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;lrfMxsDGeW4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/lrfMxsDGeW4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Florian Brand builds evals at Prime Intellect. The premise of the conversation is that writing a benchmark is the easy part now. Keeping the model from cheating it is the job, and it takes longer than the benchmark itself.</p><p>We get into why he thinks you can&#8217;t evaluate a model apart from the CLI it runs in, what happens to statistics when a single run costs five figures, and whether the feeling that a model just works can ever become a number.</p><p>He also has a few stories about agents finding their way around the scoring that are worth hearing cold.</p><div><hr></div><p><strong>Timeline</strong></p><ul><li><p>00:13 Intro</p></li><li><p>01:00 What evals are for</p></li><li><p>04:05 Agentic benchmarks</p></li><li><p>07:10 Kimi K2 and model diversity</p></li><li><p>08:23 Long-horizon coding tasks</p></li><li><p>10:29 Building a benchmark</p></li><li><p>12:15 MirrorCode</p></li><li><p>14:27 Rubrics and LLM judges</p></li><li><p>16:30 The cost of expert labelers</p></li><li><p>17:49 Long runs and variance</p></li><li><p>19:44 Evaluating the harness</p></li><li><p>24:29 Chinese labs building CLIs</p></li><li><p>30:00 More reward hacking</p></li><li><p>37:45 Tau-bench and economic tasks</p></li><li><p>39:43 Benchmaxxing and GLM 5.2</p></li><li><p>45:15 Statistics and cost</p></li><li><p>47:56 Frontier convergence</p></li><li><p>52:04 Misuse in open and closed models</p></li><li><p>55:35 Self-improvement</p></li><li></li></ul><div><hr></div><p><strong>Music</strong></p><ul><li><p>&#8220;Kid Kodi&#8221; - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul><p><strong>About</strong></p><p>The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[Pierre-Carl Langlais on Building Models from Data You Can Account For]]></title><description><![CDATA[Most labs build language models by scraping the web and filtering afterward.]]></description><link>https://www.the-information-bottleneck.com/p/pierre-carl-langlais-on-building</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/pierre-carl-langlais-on-building</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Thu, 23 Jul 2026 13:56:18 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/208193080/b28d119102152869c01bf6c865df7639.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-vgoO320MNT8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;vgoO320MNT8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/vgoO320MNT8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Most labs build language models by scraping the web and filtering afterward. Pierre-Carl Langlais runs it the other way around. At Pleias, the French-German lab he co-founded, the models are built from data he can actually account for, which in practice means open and public-domain sources plus a lot of synthetic data the lab generates itself. It sounds like a self-imposed handicap. It mostly isn&#8217;t. One of their models is a 600 million parameter system that runs live inside the Paris subway&#8217;s monitoring pipeline.</p><p>We cover the SYNTH pretraining dataset and why he thinks &#8220;ethical data&#8221; has to mean more than copyright-free. He explains why barely 2% of their Common Corpus appears in typical web crawls, and why that gap is really a preservation problem. From there, he gets blunt about benchmark maxing and whether GLM really earns its Opus-class reputation. He also argues that the quiet move by closed labs to hide reasoning traces is mostly about claiming ownership of model outputs. He&#8217;s skeptical of sovereign AI, and not shy about how Mistral drifted from frontier research toward French corporate consulting. We finish on NVIDIA&#8217;s persona datasets and the odd idea of training on the conditions that produced a text rather than the text itself.</p><h3>Timeline</h3><ul><li><p>(00:02) Welcome and introductions</p></li><li><p>(00:49) Why synthetic data matters, and the SYNTH set</p></li><li><p>(04:15) Three reasons to control your training data</p></li><li><p>(07:18) What &#8220;ethical data&#8221; actually means</p></li><li><p>(11:08) How Common Corpus got built, from Wikipedia to PDFs</p></li><li><p>(16:35) Agentic harnesses and synthetic data</p></li><li><p>(20:03) Evaluating data when you train on reasoning traces</p></li><li><p>(25:27) General versus specialized pretraining</p></li><li><p>(27:08) Benchmark maxing and the GLM question</p></li><li><p>(31:51) Getting diversity in, and the NVIDIA personas</p></li><li><p>(35:02) Hidden reasoning traces and the fight over model IP</p></li><li><p>(38:17) Mid-training and the &#8220;It&#8217;s All Training&#8221; thesis</p></li><li><p>(41:47) Can small models actually compete</p></li><li><p>(45:01) Cybersecurity and Europe&#8217;s strategic gap</p></li><li><p>(47:08) Do you need a big model to orchestrate the small ones</p></li><li><p>(52:08) Sovereign AI and the limits of national champions</p></li><li><p>(56:42) Scaling laws when you control the data</p></li><li><p>(01:00:41) The NVIDIA persona datasets</p></li><li><p>(01:04:52) What you actually do with synthetic personas</p></li><li><p>(01:08:22) Closing thoughts</p></li></ul><p><strong>Music</strong></p><ul><li><p>&#8220;Kid Kodi&#8221; - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul><p><strong>About</strong></p><p>The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[Dhruv Batra: The Browser Is a Robotics Problem - From Embodied AI at Meta to Web Agents at Yutori]]></title><description><![CDATA[Dhruv Batra spent years leading Embodied AI at Meta, training virtual robots to navigate photorealistic 3D scans of real buildings with pure reinforcement learning.]]></description><link>https://www.the-information-bottleneck.com/p/dhruv-batra-the-browser-is-a-robotics</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/dhruv-batra-the-browser-is-a-robotics</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Mon, 20 Jul 2026 15:41:28 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/207788591/6419f0ed61bacb531216168bdd697b21.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p></p><div id="youtube2-TAfcqUydqM0" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;TAfcqUydqM0&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/TAfcqUydqM0?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Dhruv Batra spent years leading Embodied AI at Meta,  training virtual robots to navigate photorealistic 3D scans of real buildings with pure reinforcement learning. Then he left to co-found Yutori and build agents for a very different environment: the web browser.</p><p>In this episode, Dhruv explains why he sees these as the same problem. Web agents, in his framing, are robots that act in a browser (pixels in, actions out), and the web turns out to be just as messy an environment as the physical world.</p><p>Along the way, we cover his definition of intelligence as &#8220;navigation in idea space,&#8221; why robotics is lagging LLMs, the sim-to-real gap and why you can&#8217;t fake friction coefficients, the teleoperation counterexample to the &#8220;it&#8217;s a sensor problem&#8221; argument, and his provocative claim that under the current paradigm, we solved machine learning and didn&#8217;t even realize it. He also makes the case for why the scaling hypothesis isn&#8217;t falsifiable, why JEPA-style arguments deserve to be grappled with, how Yutori trains its Navigator models with RL on <em>live</em> websites, and what happens to the ad-supported web when agents, not eyeballs, do the browsing.</p><h2>Timeline</h2><p><strong>00:01</strong> &#8212; Intro<br><strong>00:54</strong> &#8212; What embodied AI actually means<br><strong>06:47</strong> &#8212; Intelligence as navigation in idea space<br><strong>13:26</strong> &#8212; Habitat: training robots with pure RL, no maps<br><strong>20:04</strong> &#8212; Why robotics is behind LLMs<br><strong>28:24</strong> &#8212; Sim-to-real: what you can and can&#8217;t fake<br><strong>33:34</strong> &#8212; &#8220;We solved ML and nobody noticed&#8221;<br><strong>37:12</strong> &#8212; Leaving Meta, founding Yutori<br><strong>43:21</strong> &#8212; Web agents: screenshots in, actions out<br><strong>48:15</strong> &#8212; Why the web won&#8217;t rebuild itself for agents<br><strong>53:32</strong> &#8212; Training Navigator: RL on live websites<br><strong>1:01:04</strong> &#8212; Who pays for the web when agents browse?<br><strong>1:09:17</strong> &#8212; What Yutori means, closing thoughts</p><p><strong>Music</strong></p><ul><li><p>&#8220;Kid Kodi&#8221; - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul><p><strong>About</strong></p><p>The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[How to Turn Research Into Billion-Dollar Companies, with Ion Stoica]]></title><description><![CDATA[Ion Stoica has done what almost no academic ever does &#8212; repeatedly turned university research into billion-dollar companies.]]></description><link>https://www.the-information-bottleneck.com/p/how-to-turn-research-into-billion</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/how-to-turn-research-into-billion</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Thu, 16 Jul 2026 19:55:47 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/207329369/095ba6b39cbe1ec09976bf810097fa09.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-QkEYr5jW4BE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;QkEYr5jW4BE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/QkEYr5jW4BE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Ion Stoica has done what almost no academic ever does &#8212; repeatedly turned university research into billion-dollar companies. He co-founded Databricks (now valued at over $100 billion), Anyscale, Arena AI and Conviva, while his Berkeley lab produced the open source projects the entire AI industry runs on: Ray, vLLM, and SGLang.</p><p>In this episode, we ask him how it&#8217;s actually done. His answer is surprisingly unromantic: solve a problem people already care about, build an artifact good enough that they adopt it, and pay attention to the moment users start asking &#8220;who maintains this after the students graduate?&#8221; - that&#8217;s when a project becomes a company. He&#8217;s also insistent that the credit belongs to his students.</p><p>From there, the conversation goes deep into what he&#8217;s watching now: why the AI stack has become an order of magnitude more complex than the Hadoop/Spark era, why maximizing GPU utilization is &#8220;the name of the game&#8221; for any enterprise, and why coding agents will struggle with distributed systems long after they&#8217;ve mastered web apps. He shares a memorable reward-hacking story &#8212; a load balancer that maximized throughput by dropping requests &#8212; explains why the gap between open and closed models sits at about six months, and closes with his case for regulating AI by outcomes, not capabilities.</p><p><strong>Timeline</strong></p><ul><li><p>00:00 &#8212; Introduction: welcoming Ion Stoica</p></li><li><p>01:21 &#8212; The playbook: how research projects become companies</p></li><li><p>05:22 &#8212; Will vLLM and SGLang stay open source?</p></li><li><p>07:47 &#8212; The real bottleneck in the AI stack: complexity, not just hardware</p></li><li><p>14:31 &#8212; Should algorithms follow infrastructure, or the other way around?</p></li><li><p>16:13 &#8212; Can AI coding tools write distributed systems and GPU kernels?</p></li><li><p>21:09 &#8212; Verifiers, harnesses, and the limits of outsourcing understanding</p></li><li><p>25:41 &#8212; Reward hacking: the load balancer that dropped requests</p></li><li><p>25:58 &#8212; How should enterprises consume GPUs? Utilization as the name of the game</p></li><li><p>30:23 &#8212; GPU scarcity: will the compute crunch ever end?</p></li><li><p>35:27 &#8212; Hyper-optimization and the risk of locking in today&#8217;s architectures</p></li><li><p>37:17 &#8212; Open vs. closed models: why every company wants to own the stack</p></li><li><p>40:35 &#8212; The six-month gap, and the rising cost of training frontier models</p></li><li><p>43:58 &#8212; Kimi, Qwen, and who&#8217;s incentivized to keep open models alive</p></li><li><p>45:39 &#8212; Regulation: outcomes, not capabilities</p></li><li><p>47:41 &#8212; Self-regulation, concentration of power, and auditing open models</p></li><li><p>48:32 &#8212; Wrap-up</p></li></ul><p><strong>Music</strong></p><ul><li><p>&#8220;Kid Kodi&#8221; - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul><p><strong>About</strong></p><p>The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[Kaggle Grandmasters, Agent Skills, and Why Everyone Is Overfitting with Jean-Francois Puget (Nvidia) ]]></title><description><![CDATA[Jean-Francois Puget is a Director and Distinguished Engineer at NVIDIA, where he leads the Kaggle Grandmasters team, and he&#8217;s ranked third on Kaggle&#8217;s all-time list.]]></description><link>https://www.the-information-bottleneck.com/p/kaggle-grandmasters-agent-skills</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/kaggle-grandmasters-agent-skills</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Mon, 13 Jul 2026 12:29:35 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/206788648/9f40c28d4d98344ae44970185a20956a.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-OLKZraVG8JM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;OLKZraVG8JM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/OLKZraVG8JM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Jean-Francois Puget is a Director and Distinguished Engineer at NVIDIA, where he leads the Kaggle Grandmasters team, and he&#8217;s ranked third on Kaggle&#8217;s all-time list. We caught him on the day NVIDIA announced Nemotron Ultra and its new agent skills repo. We talk about what skills actually are, why they beat MCP tools on context cost, and how NVIDIA built an evaluation pipeline to separate skills that help from skills that don&#8217;t.</p><p>From there we talk about the thing JFP cares about most: evaluation. He explains why most LLM benchmarks reward overfitting, how his team discovered O3 could pick the right files to fix SWE-bench issues without reading them, and why the only benchmarks he trusts are the ones where you commit before you see the score, which is exactly how Kaggle works. He predicts a &#8220;bloodbath&#8221; for the wave of competitors letting coding agents chase leaderboard scores with no notion of validation.</p><p>We also get into what coding agents are actually good for (&#8221;a mix of a genius and a dumb person&#8221;), the multi-agent system at NVIDIA that built a working PyTorch clone that runs 10x slower than the real thing, his unfiltered take on frontier lab PR and the Mythos release, whether AI is a bubble, and the story of how his team won ARC-AGI with a 4-billion-parameter model at 20 cents a task, including jumping from third to first in the final hours of a seven-month competition.</p><p><strong>Timeline</strong></p><ul><li><p>00:00 &#8212; Intro</p></li><li><p>01:05 &#8212; NVIDIA&#8217;s announcements: Nemotron Ultra and the agent skills repo</p></li><li><p>07:21 &#8212; Skills vs MCP tools, and progressive disclosure</p></li><li><p>10:24 &#8212; Agents that write their own skills: a new form of learning</p></li><li><p>13:33 &#8212; When overfitting is fine (and when it isn&#8217;t)</p></li><li><p>15:47 &#8212; Why most LLM benchmarks reward overfitting</p></li><li><p>17:06 &#8212; The SWE-bench contamination story: O3 picks files without reading them</p></li><li><p>19:45 &#8212; How LLMs changed Kaggle, and the coming &#8220;bloodbath&#8221;</p></li><li><p>25:40 &#8212; What makes a good data scientist: evaluation and one-bit experiments</p></li><li><p>28:56 &#8212; Running Codex at scale: the top token consumers at NVIDIA</p></li><li><p>29:37 &#8212; Did coding agents kill AutoML?</p></li><li><p>30:16 &#8212; Genius and dumb at once: the limits of coding agents</p></li><li><p>35:21 &#8212; Humans in the loop, sandboxing, and the teenage hacker who never wrote code</p></li><li><p>37:42 &#8212; Mythos, frontier lab PR, and open source</p></li><li><p>40:08 &#8212; Why NVIDIA builds open models, and where it&#8217;s already frontier</p></li><li><p>43:48 &#8212; World models, robots, and the coffee test</p></li><li><p>49:20 &#8212; Why agents still can&#8217;t play Dota</p></li><li><p>50:24 &#8212; Is AI a bubble?</p></li><li><p>53:14 &#8212; Winning ARC-AGI with a 4B model at 20 cents a task</p></li><li><p>57:39 &#8212; Kaggle is a legal drugMusic:</p><p></p><p><strong>Music: </strong>&#8220;Kid Kodi&#8221; - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul><p><strong>About:</strong> The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[Speculative decoding, from zero to DSpark]]></title><description><![CDATA[Big models generate slowly and verify fast. Speculative decoding exploits the gap. A post about how it works, and how DSpark pushes it into a real serving system.]]></description><link>https://www.the-information-bottleneck.com/p/speculative-decoding-from-zero-to</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/speculative-decoding-from-zero-to</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Fri, 10 Jul 2026 14:40:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HIWb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Written with help from Muse Spark for drafting, editing, and figures. All the mistakes are its.</em></p><p>A new paper called <strong><a href="https://github.com/deepseek-ai/DeepSpec/blob/main/DSpark_paper.pdf">DSpark</a></strong> came out recently (From the DeepSeek team,), and I wanted to understand what it adds beyond regular speculative decoding. The basic trick is to draft several tokens cheaply, then verify them with the big model in one pass. DSpark builds on that with two ideas: better long drafts, and a smarter way to decide how many drafted tokens to verify in production.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.the-information-bottleneck.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Information Bottleneck! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HIWb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HIWb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!HIWb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!HIWb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!HIWb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HIWb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1235621,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.the-information-bottleneck.com/i/206378276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HIWb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!HIWb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!HIWb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!HIWb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e2e178-8f28-4f62-a7b0-dd5f67a776ca_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong><span>1. A full forward pass for every single token</span></strong></h2><p><span>An autoregressive language model produces text one token at a time. To generate token t+1 it needs a forward pass conditioned on everything up to token t.</span></p><p><span>To see whether that&#8217;s a problem, let&#8217;s follow one decoding step through the GPU and watch where the time goes. To generate one new token, the model has to produce its logits, the pre-softmax scores over the vocabulary. Getting them means </span><em><span>every weight matrix in the model</span></em><span> has to travel from the GPU&#8217;s main memory into the arithmetic units. That main memory is called </span><strong><span>HBM</span></strong><span> (High Bandwidth Memory), and it holds the model&#8217;s weights along with the KV cache, the stored attention state. For a 70B model in 16-bit, one token&#8217;s worth of logits costs about 140 GB of weight reads.</span></p><p><span>The arithmetic done with all that data is tiny by comparison: each weight participates in roughly one multiply-add per token. An H100 does on the order of a thousand </span><em><span>trillion</span></em><span> multiply-adds per second but reads only about 3 TB/s out of HBM. So the decoding step is </span><strong><span>memory-bound</span></strong><span>: its wall-clock time is set by how long the weight reads take, not by the math. The opposite regime, where the arithmetic itself is what you wait on, is called </span><strong><span>compute-bound</span></strong><span>. Decoding is nowhere near it, and that gap is the whole opportunity. In the memory-bound regime the arithmetic units are mostly idle: the multipliers finish their work instantly and then sit there while the next slab of weights streams in.</span></p><p><span>The loophole is that the weight reads are paid </span><em><span>per forward pass</span></em><span>, not per token. Push eight token positions through the same pass and the weights are read from HBM once, then multiplied against eight vectors instead of one. The memory traffic barely changes. You do eight times the arithmetic, but arithmetic was the idle resource anyway, so a pass over eight positions takes barely longer than a pass over one.</span></p><p><span>You already know this effect as the prefill/decode gap. </span><strong><span>Prefill</span></strong><span> is when the model ingests your prompt. All the prompt tokens are known up front, so they go through the model together, thousands of positions per pass, and the weight-read cost is split across all of them. </span><strong><span>Decoding</span></strong><span> generates one new token per pass and pays the full cost every single time.</span></p><p><span>Decoding can&#8217;t batch like prefill because the input at position t+1 </span><em><span>is</span></em><span> the token sampled at position t; it doesn&#8217;t exist until the previous pass finishes. But suppose someone handed you a </span><em><span>guess</span></em><span> for the next eight tokens. Now you do have all eight inputs, tentatively, and the big model can process them prefill-style in one pass. And the same pass gives the model its own next-token distribution at each of the eight positions. Those distributions are all it needs to go through the guess position by position and find where it stops being right. </span><strong><span>Verification is prefill-shaped. Generation is decode-shaped.</span></strong></p><p><span>Who writes the guess? A smaller, cheaper model. That&#8217;s speculative decoding: everything in this post converts slow generation into fast verification plus a cheap guess.</span></p><h2><strong><span>2. Draft cheap, verify in parallel</span></strong></h2><p><span>Speculative decoding runs as a loop: draft a few tokens, verify them, keep the good prefix, repeat. The version everyone uses is due to </span><a href="https://arxiv.org/abs/2211.17192"><span>Leviathan et al.</span></a><span> and </span><a href="https://arxiv.org/abs/2302.01318"><span>Chen et al.</span></a><span> A lightweight draft model proposes a block of &#947; candidate tokens. The target model runs </span><em><span>one</span></em><span> forward pass over the whole block and gets its own next-token distribution at every position. Then it walks the block left to right and decides, position by position, whether it agrees with the draft.</span></p><p><span>Say the last confirmed token is D. Call it the </span><em><span>anchor</span></em><span>: the confirmed token this round&#8217;s draft hangs off. The draft proposes E F G H. The target might accept E and F and reject G. A rejection isn&#8217;t wasted work: the target already computed a distribution at G&#8217;s position, so it samples a replacement G* from a corrected version of it. G* is called the correction token. Everything after the first rejection (H) is thrown away, because it was conditioned on a token that never happened.</span></p><p><span>If every draft token is accepted, the round earns one extra token for free: the pass also computed the target&#8217;s distribution at the position </span><em><span>after</span></em><span> the last draft token, so the target samples from it and appends the </span><strong><span>bonus token</span></strong><span>. </span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7sug!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7sug!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7sug!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7sug!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7sug!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7sug!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg" width="1456" height="560" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:560,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:113201,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.the-information-bottleneck.com/i/206378276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7sug!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7sug!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7sug!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7sug!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e133367-dafa-4950-9c0f-78fda7a49e7c_1600x615.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One speculative decoding round: draft several tokens, verify them in one target pass, keep the accepted prefix, then correct or continue.</figcaption></figure></div><p></p><h3><strong><span>The acceptance rule, and why the output is exact</span></strong></h3><p><span>The big claim of speculative decoding is that it&#8217;s </span><strong><span>lossless</span></strong><span>: the output tokens are distributed </span><em><span>exactly</span></em><span> as if the target model had generated them alone, temperature and all. This is a real guarantee, not an approximation, and it comes from a rejection-sampling rule. At position k, with draft distribution p&#7496; and target distribution p&#7511;, the drafted token x&#8342; is accepted with probability</span></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\nP(\\mathrm{accept}\\ x_k)=\\min\\left(1,\\frac{p^t(x_k)}{p^d(x_k)}\\right)&quot;,&quot;id&quot;:&quot;KPDAJDQFXG&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p></p><p><span>In other words: when the target assigns the drafted token at least as much probability as the draft did, p&#7511;(x&#8342;) &#8805; p&#7496;(x&#8342;), keep it always. When the draft over-sampled it, giving it more probability than the target does, keep it only in proportion p&#7511;/p&#7496;. On rejection, the replacement is sampled from the residual distribution norm(max(0, p&#7511; &#8722; p&#7496;)): max keeps the tokens where the target wanted more mass than the draft gave them, and norm rescales what&#8217;s left to sum to 1.</span></p><p><span>A nice consequence is that the per-position acceptance probability equals</span></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;P(\\mathrm{accept})=1-\\frac{1}{2}\\lVert p^d-p^t\\rVert_1&quot;,&quot;id&quot;:&quot;YHPYJSAWQA&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p><span>which says the drafter&#8217;s entire job is to stay </span><em><span>distributionally close</span></em><span> to the target. DSpark reuses this exact quantity later as a free training label.  (Why the rule is exact, and why this distance is total variation rather than KL: Appendix A1 and A2.)</span></p><h2><strong><span>3. The latency equation</span></strong></h2><p><span>How much time does it take to produce one token? Speculative decoding pays per round, one draft plus one verification, and gets a variable number of tokens back, so its cost is time-per-round divided by tokens-per-round. Let &#964; be the average number of tokens you get per round (accepted draft tokens plus the bonus/correction token), T</span><sub><span>draft</span></sub><span> the time to write the draft, and T</span><sub><span>verify</span></sub><span> the time for the target&#8217;s verification pass. Then the latency per generated token is</span></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;L=\\frac{T_{\\mathrm{draft}}+T_{\\mathrm{verify}}}{\\tau}&quot;,&quot;id&quot;:&quot;DRATMFNUAX&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p><span>That leaves three ways to go faster. You can draft faster, shrinking T</span><sub><span>draft</span></sub><span>. You can draft better, raising &#964; by getting the drafter to agree with the target more often and for longer. Or you can verify smarter, and stop spending T</span><sub><span>verify</span></sub><span> on draft tokens that were never going to survive. Most of the literature picks one of the three.</span></p><p><span>DSpark is unusual in going after two terms at once: &#964; with an architecture change (Parts 5 and 6), and T</span><sub><span>verify</span></sub><span> with a scheduler (Parts 7 to 9). The second attack only makes sense once you stop thinking about a single user and start thinking about a serving system with hundreds of concurrent requests. But first, the standard menu of drafter designs.</span></p><h2><strong><span>4. Two ways to build a drafter</span></strong></h2><p><strong><span>Autoregressive drafters</span></strong><span> (</span><a href="https://arxiv.org/abs/2401.15077"><span>EAGLE</span></a><span>, DeepSeek&#8217;s </span><a href="https://arxiv.org/abs/2412.19437"><span>MTP</span></a><span> (multi-token prediction)) are small language models that generate the draft one token at a time, each conditioned on the last. They produce coherent drafts, but the drafting cost scales linearly with the block size, T</span><sub><span>draft</span></sub><span> &#8733; &#947;. To keep the draft cheap they have to stay </span><em><span>shallow</span></em><span> (EAGLE-style drafters are often a single transformer layer) and keep &#947; small, which caps both the block length and how much the drafter can know.</span></p><p><strong><span>Parallel drafters</span></strong><span> (</span><a href="https://arxiv.org/abs/2401.10774"><span>Medusa</span></a><span>, and more recently </span><a href="https://arxiv.org/abs/2602.06036"><span>DFlash</span></a><span>) fill in all &#947; positions in a </span><em><span>single</span></em><span> forward pass. Feed in the anchor token plus a row of mask tokens, read out logits everywhere at once, diffusion-style. Now T</span><sub><span>draft</span></sub><span> is nearly independent of &#947;, so you can afford a much </span><em><span>deeper</span></em><span> drafter (DFlash uses 5 layers where EAGLE uses 1) and much longer blocks (&#947; = 16 costs about what &#947; = 4 costs).</span></p><p><strong><a href="https://arxiv.org/abs/2602.06036"><span>DFlash</span></a></strong><span>, the parallel drafter DSpark builds on, is worth describing in some detail because DSpark reuses its entire skeleton. The drafter is a small transformer, 5 layers in the paper. Its input for one drafting round is the embedding of the anchor token (the last token the target actually confirmed) followed by mask-token embeddings, placeholders for the positions to be filled in. All positions attend to each other bidirectionally, and one forward pass produces logits for every position in the block. The drafter doesn&#8217;t even own an embedding table or an output head. It borrows the target model&#8217;s, frozen.</span></p><p><span>Its central trick is how it sees the conversation, called </span><strong><span>KV injection</span></strong><span>. While the target processes the context, hidden states from a few of its layers are saved, projected down into the drafter&#8217;s width, and prepended to the keys and values of every drafter layer, so each draft position attends to the target&#8217;s own internal representation of everything said so far. All of it is computed once, at prefill, and reused every round. The drafter isn&#8217;t understanding the conversation with 5 layers of its own; it&#8217;s reading the big model&#8217;s notes, which is a big part of why it can imitate a model thousands of times larger. (Mechanics and a diagram: Appendix A3.)</span></p><p><span>So a parallel drafter is both faster to run and free to be deeper. That sounds like it should win outright, but it doesn&#8217;t&#8230;</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TtID!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TtID!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TtID!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TtID!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TtID!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TtID!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg" width="1456" height="522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:82269,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.the-information-bottleneck.com/i/206378276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TtID!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TtID!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TtID!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TtID!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe93d05cb-2e76-4744-a8e1-8235288a1288_1600x574.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Larger draft blocks help only when acceptance stays high; otherwise most late draft tokens are wasted....</figcaption></figure></div><h2><strong><span>5. Where parallel drafters break: the multi-modal collision</span></strong></h2><p><span>A parallel drafter predicts every position independently, in one shot. Position 3 can&#8217;t see what position 2 actually sampled, only the shared context. So when the context admits several equally good continuations, each position hedges across </span><em><span>all</span></em><span> of them.</span></p><p><span>Take the context </span><em><span>&#8220;Sure, &#8220;</span></em><span>. The target model is happy with either of course or no problem. A parallel drafter, sampling each position from its marginal, can happily emit of problem or no course: fragments of two valid answers stitched into an invalid one. This is the </span><em><span>multi-modal collision</span></em><span> problem, known since the non-autoregressive machine translation days (</span><a href="https://arxiv.org/abs/1711.02281"><span>Gu et al., 2018</span></a><span>). Each token is individually plausible, the combination is garbage, and the target rejects it.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A48j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A48j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg 424w, https://substackcdn.com/image/fetch/$s_!A48j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg 848w, https://substackcdn.com/image/fetch/$s_!A48j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!A48j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A48j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg" width="1456" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67182,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.the-information-bottleneck.com/i/206378276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!A48j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg 424w, https://substackcdn.com/image/fetch/$s_!A48j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg 848w, https://substackcdn.com/image/fetch/$s_!A48j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!A48j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881b34eb-57cd-4f7d-9a40-66529b00ccd3_1600x431.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A parallel drafter can mix pieces of different valid continuations, producing a sequence the target rejects....</figcaption></figure></div><p><span>The damage shows up as </span><strong><span>suffix decay</span></strong><span>: acceptance falls off rapidly with position in the block. The paper measures this with a nice metric, </span><em><span>position-wise conditional acceptance</span></em><span>: at position k, only count cases where positions 1&#8230;k&#8722;1 were all accepted, then ask how often k is accepted too. This strips out the compounding survival penalty and shows the drafter&#8217;s raw predictive quality at each depth.</span></p><p><span>Here are the curves (Qwen3-4B target, chat domain):</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hb4g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hb4g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png 424w, https://substackcdn.com/image/fetch/$s_!Hb4g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png 848w, https://substackcdn.com/image/fetch/$s_!Hb4g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png 1272w, https://substackcdn.com/image/fetch/$s_!Hb4g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hb4g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png" width="1456" height="650" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:650,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:362682,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.the-information-bottleneck.com/i/206378276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hb4g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png 424w, https://substackcdn.com/image/fetch/$s_!Hb4g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png 848w, https://substackcdn.com/image/fetch/$s_!Hb4g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png 1272w, https://substackcdn.com/image/fetch/$s_!Hb4g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52b5196b-a93e-4afc-b9bf-994e61f3d933_1706x762.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3><strong><span>Why DFlash still gets the longer accepted length</span></strong></h3><p><span>The curves make </span><a href="https://arxiv.org/abs/2503.01840"><span>Eagle3</span></a><span> look like the better drafter everywhere past position three. And yet, on accepted length, DFlash beats it on nearly every benchmark in the paper. The mismatch is explained by how verification scores a block.</span></p><p><span>Verification accepts a prefix and discards everything after the first rejection, so the expected haul per round compounds multiplicatively. Write the expected accepted count in terms of the conditional acceptance rates c&#8321;, c&#8322;, &#8230;:</span></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\mathbb{E}[\\mathrm{accepted}]\\approx c_1+c_1c_2+c_1c_2c_3+\\cdots&quot;,&quot;id&quot;:&quot;CZXDIEVQAB&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p><span>Every term contains c&#8321;, so raising c&#8321; by 10% grows the entire sum by 10%, while raising c&#8326; only moves the last couple of terms. A rejection at position 1 erases the whole block; a rejection at position 6 erases one or two tokens. Whatever a drafter is good at, being good at position 1 is worth several times more than being good anywhere else.</span></p><p><span>And position 1 is where the deep parallel drafter has its edge. No draft tokens exist yet at the first position, so both drafter types condition on the same thing, the verified context, and dependency modeling buys nothing there. What decides position 1 is raw capacity, and the latency budgets are lopsided: the autoregressive drafter runs once </span><em><span>per position</span></em><span> and must stay shallow (Eagle3 is one layer), while the parallel drafter runs once </span><em><span>per block</span></em><span> and affords five layers plus KV injection. </span></p><h2><strong><span>6. DSpark idea #1: bolt a bigram onto the parallel drafter</span></strong></h2><p><span>The obvious fix for suffix decay is to make the drafter autoregressive again, but then you&#8217;re back to T</span><sub><span>draft</span></sub><span> &#8733; &#947;. DSpark adds autoregression only where it costs almost nothing. The expensive part, the 5-layer KV-injected DFlash backbone, runs fully parallel as before: one pass, producing hidden states h&#8321;&#8230;h&#7527; and base logits U&#8321;&#8230;U&#7527; for every position. After that, a </span><strong><span>small sequential head</span></strong><span> passes over the block left to right and adds a correction to each position&#8217;s logits, and the correction depends on the tokens already sampled before it:</span></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;p_k(v\\mid x_0,x_{<k})=\\operatorname{softmax}\\left(U_k(v)+B_k(x_0,x_{<k},v)\\right)&quot;,&quot;id&quot;:&quot;UPGRMGKBSV&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p><span>In this formula, U&#8342; is what the parallel backbone already gave us: the base logits for position k, one score per candidate token v over the vocabulary (V &#8776; 10&#8309; tokens), so U&#8342;(v) is token v&#8217;s score. B&#8342;(x&#8320;, x&lt;k, v) is the sequential head&#8217;s correction to that score, and it&#8217;s the only term allowed to look at the block&#8217;s history: the anchor x&#8320; and the draft tokens x&lt;k already sampled at earlier positions.</span></p><p><span>The default B is a small </span><strong><span>Markov head</span></strong><span>. It throws away everything except the immediately preceding token: the correction becomes B(x&#8342;&#8722;&#8321;, &#183;) &#8712; &#8477;V, a full vector of logit corrections, one per candidate next token, selected by which token came just before. Written out as a table that&#8217;s a V&#215;V matrix, a row per possible previous token and a column per possible next token. In other words, a learned bigram model, stored factorized at rank 256: per position the sequential loop costs one table lookup plus one small matrix-vector product, invisible next to the target&#8217;s verification pass. And it is learned with the rest of the drafter rather than counted from a corpus (dimensions and training: Appendix A4).</span></p><p><span>Back to the collision. The backbone, in parallel, gives position 1 as {of, no} and position 2 as {course, problem}. The sequential loop samples position 1 first and gets of. When it moves to position 2, the bigram bias for &#8220;of&#8221; boosts course and suppresses problem, so the drafter no longer stitches &#8220;of problem&#8221; together. </span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Cjn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Cjn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8Cjn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8Cjn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8Cjn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Cjn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg" width="1456" height="467" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:467,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105317,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.the-information-bottleneck.com/i/206378276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8Cjn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8Cjn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8Cjn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8Cjn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4fb824b-663f-4731-a168-646e910cee28_1600x513.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">DSpark keeps the expensive drafter computation parallel, then adds a cheap sequential Markov head to improve within-block coherence.</figcaption></figure></div><p><span>Does one token of memory suffice? The authors also try an </span><strong><span>RNN head</span></strong><span>, a small gated recurrence that carries the whole within-block prefix instead of just the last token. It helps only marginally, and only at long blocks. I think that near-null result is the most useful thing in the paper: </span><strong><span>suffix decay in parallel drafters is mostly a problem of adjacent-token incoherence, not of missing long-range information.</span></strong></p><p><span>Through KV injection (Part 4), every draft position already sees the target&#8217;s representation of the whole conversation. The missing piece is what the neighboring positions sampled, and that doesn&#8217;t exist until </span><em><span>after</span></em><span> the forward pass is over. Only something that runs at sampling time can close that gap, and a bigram is the smallest such thing. </span></p><p><span>Across Qwen3-4B/8B/14B, DSpark&#8217;s macro-average accepted length comes out 27&#8211;31% above Eagle3 and 16&#8211;18% above DFlash, and a </span><em><span>2-layer</span></em><span> DSpark already beats the </span><em><span>5-layer</span></em><span> DFlash, so the gain comes from the dependency modeling and not from extra parameters. On the conditional-acceptance curves, DSpark opens where DFlash opens and stays flat where Eagle3 stays flat.</span></p><h2><strong><span>7. The serving problem: draft tokens compete for batch space</span></strong></h2><p><span>Everything so far was a single-user story: one request, one GPU, minimize that one user&#8217;s latency. In production the target model is shared. One copy serves hundreds of users at once, and each of its forward passes processes a </span><strong><span>batch</span></strong><span>. The batching is done by the serving </span><strong><span>engine</span></strong><span>, the software layer that owns the GPU and runs the model; </span><a href="https://arxiv.org/abs/2309.06180"><span>vLLM</span></a><span> and </span><a href="https://arxiv.org/abs/2312.07104"><span>SGLang</span></a><span> are the open-source examples, and DeepSeek runs its own. Each pass, the engine collects the pending tokens of many requests and pushes them through together: the amortize-the-weight-reads trick from Part 1, applied across users instead of across positions.</span></p><p><span>But the batch is a shared, finite resource. A small batch keeps the pass memory-bound, so extra tokens ride along at no cost (Part 1). Keep adding tokens though, and at some batch size the arithmetic units stop being the idle party; past that point, every additional token makes the pass measurably slower </span><em><span>for everyone in it</span></em><span>. This gives every engine a characteristic curve, </span><strong><span>SPS(B)</span></strong><span>: steps per second as a function of how many tokens the batch holds. It stays flat while the pass is memory-bound and falls once the batch pushes it into compute-bound territory, the two regimes from Part 1.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q8fp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q8fp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png 424w, https://substackcdn.com/image/fetch/$s_!Q8fp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png 848w, https://substackcdn.com/image/fetch/$s_!Q8fp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png 1272w, https://substackcdn.com/image/fetch/$s_!Q8fp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q8fp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png" width="1456" height="846" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:846,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:957166,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.the-information-bottleneck.com/i/206378276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Q8fp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png 424w, https://substackcdn.com/image/fetch/$s_!Q8fp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png 848w, https://substackcdn.com/image/fetch/$s_!Q8fp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png 1272w, https://substackcdn.com/image/fetch/$s_!Q8fp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe28ea67c-8aa5-42fb-93d2-fe2796f89207_1646x956.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Extra verification tokens are nearly free while the batch is memory-bound, but costly once the system becomes compute-bound.</figcaption></figure></div><p><span>Every draft token a request submits for verification takes up one token-slot in the batch, and a rejected token wastes its slot. On the flat part of the curve that waste is harmless, so even a 20% long shot is worth checking. On the steep part, the same token contributes 0.2 expected tokens while slowing down the several hundred others sharing the pass, and it isn&#8217;t worth the slot.</span></p><p><span>The right amount of verification also depends on the </span><em><span>content</span></em><span>. Drafters do well on structured text and badly on open-ended text: on Qwen3-4B the paper measures roughly 5.6 accepted tokens per round on math, 5.1 on code, 3.5 on chat. A single fixed length is therefore wrong in both directions at once, wasting slots on chat requests whose late tokens were never going to be reached and cutting short code requests that could have gone longer.</span></p><p><span>Before this paper, the </span>DeepSeek&#8217;s<span> production system drafted a single token per round, the MTP-1 setup, even though they had already built multi-token drafters (MTP-3, MTP-5). With a static 3-token draft, every request adds 3 tokens to every batch whether the load or the content justifies it, and at production concurrency many of those tokens are late-position chat tokens headed for rejection. The batches grow, every pass slows, and the slowdown across all users outweighs the extra accepted tokens: total throughput drops. Production stayed at the largest setting that never backfired, one token per round, at a price: at &#947; = 1 a round yields at most two tokens, the draft plus the bonus, so the ceiling is roughly a 2x speedup and everything Part 4 built for long parallel blocks goes unused.</span></p><p><span>The way out of that dilemma is to stop picking one length for everyone and instead decide per request, per step: </span><strong><span>given the load right now, how many of this request&#8217;s drafted tokens deserve a batch slot?</span></strong><span> The drafter has already produced its full &#947;-token block, so that cost is sunk; the only choice is which of those tokens get slots, and whatever is cut is dropped unseen. Deciding needs a per-token estimate of the chance a slot pays off, plus a rule turning those estimates and the SPS curve into lengths. </span></p><h2><strong><span>8. DSpark idea #2: choose verification lengths by expected throughput</span></strong></h2><p><span>The </span><strong><span>scheduler</span></strong><span> is the part of the engine (Part 7) that decides, before each forward pass of the target model, what goes </span><em><span>into</span></em><span> that pass: which requests participate, and (the new degree of freedom here) how many draft tokens each request contributes. It answers Part 7&#8217;s question once per step, for the whole batch at once.</span></p><p><span>For one verification step, there are R active requests, each with a freshly drafted &#947;-token block, and the scheduler has to pick a verification length &#8467;&#7523; &#8712; {0, &#8230;, &#947;} for every request r: verify the first &#8467;&#7523; draft tokens and drop the rest. A choice of lengths is judged by the expected token throughput of the whole system for this step:</span></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\max\\ \\Theta=\\tau\\cdot \\mathrm{SPS}(B),\\quad \\tau=\\sum_r\\left(1+\\sum_{j\\le \\ell_r}a_{r,j}\\right),\\quad B=\\sum_r(1+\\ell_r)&quot;,&quot;id&quot;:&quot;LSXSKJAOXS&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p><span>SPS(B) is the Part 7 cost curve; the engine measures it once at startup by timing passes at a range of batch sizes and keeps the results as a lookup table. &#964; is the expected number of output tokens the pass will produce for the whole batch, i.e. Part 3&#8217;s per-request &#964; summed across all R requests. The two +1s are both the anchor: even at &#8467;&#7523; = 0 a request still sends one token through the pass and gets one token back, the bonus or correction from Part 2. Each admitted draft token at position j then adds a&#7523;,&#11388; to &#964;: the probability that it survives verification and actually ends up in the output. Expected tokens per step times steps per second gives expected tokens per second. The one missing part is those survival probabilities (a</span><sub><span>r,j</span></sub><span>)</span></p><h3><strong><span>The confidence head</span></strong></h3><p><span>What does it mean for a slot to pay off? A draft token </span><strong><span>survives</span></strong><span> verification if the left-to-right check actually reaches it (every earlier token in the block was accepted) </span><em><span>and</span></em><span> accepts it too. &#8220;Reaches it&#8221; is the price of batched verification: the whole block is checked in one pass, but acceptance is prefix-only, so a rejection at position 3 means positions 4 and onward are discarded without ever being checked, however good their tokens were.</span></p><p><span>To do that, they use a confidence head, which outputs one scalar per position, c&#8342;, the </span><em><span>conditional</span></em><span> piece of survival: the probability that position k is accepted given that the check reached it. This is the same conditional acceptance rate the Part 5 curves measured, now predicted per token instead of averaged over a benchmark. The head itself is small. It reads the backbone hidden state plus the Markov embedding of the previous token and runs them through a single linear projection and a sigmoid. Its training label is free: the exact acceptance probability from Part 2 is computable at every training step and used directly as a soft label (Appendix A4).</span></p><p><span>Because the c&#8342; are conditionals, the chain rule turns them into full survival probabilities for free:</span></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;a_k=P(\\mathrm{prefix}\\ 1{:}k\\ \\mathrm{all\\ accepted})=\\prod_{i\\le k}c_i\n&quot;,&quot;id&quot;:&quot;VTUWYFFUGO&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p><span>These a&#8342;, computed per request, are exactly the a&#7523;,&#11388; the objective consumes, with one requirement: the arithmetic only works if the scores are </span><em><span>calibrated</span></em><span>, meaning a token scored 0.8 really is accepted about 80% of the time. Raw heads are overconfident; per-position temperature scaling shrinks the predicted-versus-observed gap from 3&#8211;8% to about 1% (Appendix A5).</span></p><p><span>Picking all R lengths at once sounds combinatorial, but the survival probabilities have a property that makes it easy. Within a request, a&#7523;,&#11388; = c&#7523;,&#8321;&#183;c&#7523;,&#8322;&#8943;c&#7523;,&#11388; is a product of numbers between 0 and 1, so tacking on another factor can only shrink it: a&#7523;,&#8321; &#8805; a&#7523;,&#8322; &#8805; &#8230; &#8805; a&#7523;,&#7527;. In other words,  surviving to j+1 requires surviving to j first, so it&#8217;s the stricter condition.</span></p><p><span>That ordering is what licenses a greedy algorithm. Extending request r&#8217;s length from j&#8722;1 to j adds exactly a&#7523;,&#11388; to &#964; and exactly one token to B, a gain and a cost both known in advance. So pour all candidate extensions from all requests into one pool, sort by a&#7523;,&#11388;, and admit from the top, recomputing &#920; after each admission (a table lookup). The within-request constraint (you can&#8217;t verify position 3 without positions 1 and 2) enforces itself: since each request&#8217;s survival probabilities are already in decreasing order, its position-2 candidate always sits above its position-3 candidate in the global sort.</span></p><p><span>When the batch is nearly empty, SPS(B) sits on its flat stretch, admitting another token raises &#964; almost for free, and the scheduler verifies long: 4&#8211;6 tokens per request in the paper&#8217;s numbers. As the batch fills, each admitted token drags SPS down, only tokens whose survival probability beats the drag get in, and the budgets shrink. Within one batch, a code request at 0.9 confidence keeps a long verification while a chat request whose confidence collapses by position 2 gets cut there, with no threshold set anywhere.</span></p><h3><strong><span>A version of this that breaks losslessness</span></strong></h3><p><span>Losslessness needs one more condition beyond the accept/reject rule of Part 2, and this one falls on the scheduler: whether token k gets admitted for verification must not depend on the value of token k. The proofs call this non-anticipation. Fixed verification length satisfies it trivially, but a length chosen by the greedy search above can violate it.</span></p><p><span>The violation runs through the confidence head, which reads the Markov embedding of the previous sampled token: c&#8322;, and therefore a&#8322;, is a function of which x&#8321; was drawn. The block is fully sampled before scheduling (Part 7), so a&#8322; is available; the question is whether the scheduler may consult it. Suppose it evaluates the whole admission path and takes the argmax: &#920; at lengths 0, 1, 2. The length-2 value used a&#8322;, which used x&#8321;. So the comparison that decides whether x&#8321; is admitted at all already depends on which x&#8321; was drawn, and draft tokens that lead to confident continuations get admitted more often than ones that don&#8217;t.</span></p><p><span>For example, with a two-token vocabulary: the target wants {A: 0.7, B: 0.3}, the drafter samples from {A: 0.5, B: 0.5}, and suppose drawing A leads to a high c&#8322; while drawing B leads to a low one, so the argmax scheduler admits the draft after drawing A and skips it after drawing B. When A is drawn (probability 0.5), it is admitted and accepted with probability min(1, 0.7/0.5) = 1. When B is drawn, nothing is admitted and the target samples fresh from {0.7, 0.3}. Total: P(output = A) = 0.5 + 0.5 &#215; 0.7 = </span><strong><span>0.85</span></strong><span> instead of </span><strong><span>0.7</span></strong><span>. </span></p><p><span>The clean algorithm&#8217;s solution is an </span><strong><span>early-stopping break</span></strong><span>: walk the sorted admission path and stop at the first admission that lowers &#920;. Then the decision about position k is finalized before anything computed from x&#8342; is ever consulted, and the proof goes through.</span></p><h2><strong><span>9. Making it run in a real engine</span></strong></h2><p><span>Inside DeepSeek&#8217;s actual engine, the Part 8 algorithm breaks in two places. The first is that the SPS curve isn&#8217;t smooth. Kernels are tuned for particular batch shapes, so pass time jumps at tile-size and dispatch boundaries rather than rising gradually. On a jagged curve the early-stopping break turns into a liability: &#920; can dip at a cliff and recover just past it, and a search that quits at the first dip strands the system at a local optimum.</span></p><p><span>The second is about timing. A modern engine assembles the next pass while the current one runs, and with CUDA-graph replay the next batch size has to be fixed </span><em><span>before</span></em><span> the current pass finishes. The Part 8 scheduler can&#8217;t meet that deadline, since it needs the current step&#8217;s confidence scores, and those don&#8217;t exist until the step is done. Run it synchronously and the GPU stalls between every pair of steps.</span></p><p><span>The deployed version works around both problems by computing the batch&#8217;s capacity a couple of steps ahead of time. The scheduler fixes K, the number of tokens the next pass can afford to verify, using confidence scores from </span><strong><span>two steps back</span></strong><span>, so it&#8217;s ready before the pass launches. The tokens that actually fill those K slots are still chosen at the last moment from the current step&#8217;s real confidence scores, by sorting the live candidates as in Part 8 and keeping the top K.</span></p><p><span>This design also settles the losslessness question from Part 8, where the danger was that computing the cut-off consulted downstream token values. Here the cut-off is K, fixed from two-step-old data before any of this step&#8217;s tokens existed, and the fresh ranking that fills the slots consults only tokens </span><em><span>earlier</span></em><span> in the block, never token k itself or anything after it. That is exactly what non-anticipation demands, so it holds by construction, the early-stopping break can go, and the search over the jagged curve can run globally to the true maximum. The same design choice that fixed the pipeline stall also restored exactness; my guess is the pipeline constraint came first and the losslessness argument was noticed after the fact.</span></p><h3><strong><span>The live-traffic numbers</span></strong></h3><p><span>Deployed on DeepSeek-V4-Flash and V4-Pro under real user traffic, against the incumbent MTP-1:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-nr3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-nr3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png 424w, https://substackcdn.com/image/fetch/$s_!-nr3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png 848w, https://substackcdn.com/image/fetch/$s_!-nr3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png 1272w, https://substackcdn.com/image/fetch/$s_!-nr3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-nr3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png" width="1456" height="713" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:713,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:500862,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.the-information-bottleneck.com/i/206378276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-nr3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png 424w, https://substackcdn.com/image/fetch/$s_!-nr3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png 848w, https://substackcdn.com/image/fetch/$s_!-nr3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png 1272w, https://substackcdn.com/image/fetch/$s_!-nr3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6b586b-5f0b-4284-bea0-6b742762bdb2_1900x930.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><span>The paper&#8217;s Figure 8 shows that at moderate concurrency the average verification budget sits at 4&#8211;6 tokens per request, and as concurrency rises the scheduler shrinks it, dropping low-confidence tokens before they occupy batch slots. </span></p><h3><strong><span>Next Steps</span></strong></h3><p><span>A few things the paper leaves open. The SPS table is profiled once and indexed by batch size alone, but real per-step cost also depends on the batch&#8217;s context-length mix, so a 1-D curve is an approximation. The confidence head is trained on the analytical acceptance labels under teacher-forced prefixes but deployed on sampled ones. That&#8217;s a train/inference mismatch. Calibration is fit on a held-out set, and live traffic drifts; whether the head stays calibrated online isn&#8217;t reported. And the drafter still burns a full &#947;-block forward on every request, even hopeless ones. The scheduler prunes </span><em><span>verification</span></em><span>, not </span><em><span>drafting</span></em><span>.</span></p><h2><strong><span>10. What to actually remember</span></strong></h2><p><span>The important thing about DSpark is not just that it makes speculative decoding faster. Earlier work mostly asked how to build a better drafter: make it cheaper, deeper, or more accurate. DSpark shows that this is only half the story. In a real serving system, the question is not &#8220;how many tokens can I draft?&#8221; but &#8220;which drafted tokens are worth spending target-model batch capacity on right now?&#8221; The paper&#8217;s two main ideas answer both sides of that question: a semi-autoregressive Markov head makes long parallel drafts much more coherent, and a throughput-aware scheduler decides how much of each draft to verify under the current load. </span></p><h2><strong><span>A. Appendix: the fine print</span></strong></h2><p><span>Details that back the main text but aren&#8217;t needed to follow it.</span></p><h3><strong><span>A1. Why the rejection rule is exact</span></strong></h3><p><span>Check any token v. It reaches the output two ways: drafted and kept, or rejected and resampled. If p&#7511;(v) &#8804; p&#7496;(v), the kept route alone contributes p&#7496;(v) &#183; p&#7511;(v)/p&#7496;(v) = p&#7511;(v) and the residual has zero mass on v. If p&#7511;(v) &gt; p&#7496;(v), the kept route contributes p&#7496;(v) and the resample supplies exactly the missing p&#7511;(v) &#8722; p&#7496;(v), because the overall rejection probability equals the residual&#8217;s normalizer. Either way: p&#7511;(v). The same accounting shows why the replacement can&#8217;t simply be drawn from p&#7511;: acceptance already gave every token min(p&#7511;, p&#7496;), so the rejection branch may supply only the shortfall. With p&#7511; = {A: 0.7, B: 0.3} and p&#7496; = {A: 0.5, B: 0.5}, resampling from the full p&#7511; would give P(A) = 0.5 + 0.2 &#215; 0.7 = 0.64 instead of 0.7, tilting the output toward the tokens the draft over-proposed.</span></p><h3><strong><span>A2. The distance is total variation, not KL</span></strong></h3><p><span>The distance in the acceptance formula is total variation, not KL. TV is symmetric, so there is no forward or reverse version of the statement, and </span><a href="https://en.wikipedia.org/wiki/Pinsker%27s_inequality"><span>Pinsker&#8217;s inequality</span></a><span> (TV &#8804; &#8730;(KL/2)) says pushing either KL down also pushes acceptance up. The paper&#8217;s distillation loss skips the surrogate entirely and minimizes the L1 term directly, so it is optimizing the acceptance rate itself.</span></p><h3><strong><span>A3. KV injection, in detail</span></strong></h3><p><span>Its central trick is how it sees the conversation, called </span><strong><span>KV injection</span></strong><span>. The drafter never reads the context as text, and it never runs its own forward pass over it. Instead it recycles work the target already did. When the target processes the context, every one of its layers produces a hidden state for every token: a vector encoding that token after the layer has mixed in information from everything before it. DFlash saves these hidden states from a handful of target layers; different depths carry different levels of abstraction, from surface features early to semantics late, so the drafter gets a cross-section rather than a single view. For each context token, the saved vectors are concatenated across the chosen layers and passed through a learned projection down into the drafter&#8217;s much smaller hidden size, giving one compact context vector per context token. All of this is computed once, during the target&#8217;s prefill, and reused on every drafting round after that.</span></p><p><span>These vectors enter the drafter through attention. Recall the split of roles there: queries ask, keys and values are what gets read. In every layer of the drafter, the context vectors are projected into keys and values and prepended to that layer&#8217;s own keys and values, so from a draft position&#8217;s point of view they behave like extra tokens it can attend to. The draft positions do the querying; the target&#8217;s representations do the answering. Each draft position therefore sees two things at once: the other positions in its block, and the target&#8217;s own internal summary of everything said so far, at several depths. The drafter isn&#8217;t trying to understand the conversation with 5 layers of its own. It&#8217;s reading the big model&#8217;s notes, and the notes were written by the very network it&#8217;s trying to imitate, which is a big part of why a 5-layer model can predict what a model thousands of times larger will say next.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Wua!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Wua!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Wua!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Wua!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Wua!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Wua!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg" width="1456" height="877" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:189363,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.the-information-bottleneck.com/i/206378276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4Wua!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Wua!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Wua!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Wua!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb1826a-5b81-458a-911a-d7f9aae5ac5a_1600x964.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><span>One construction detail: in the original DFlash the anchor plus &#947; masks go in and only the mask positions are predicted; DSpark trims this to anchor plus &#947;&#8722;1 masks and predicts at the anchor slot too, which saves a little compute at the same quality.</span></p><h3><strong><span>A4. The Markov head and the confidence head: dimensions and training</span></strong></h3><p><span>At this vocabulary size the bigram table would have ~10&#185;&#8304; entries, so it&#8217;s stored factorized: B = W&#8321;W&#8322;, with W&#8321; &#8712; &#8477;^{V&#215;256} and W&#8322; &#8712; &#8477;^{256&#215;V}. Row x&#8342;&#8722;&#8321; of W&#8321; is a 256-dimensional embedding of the previous token (the paper&#8217;s </span><em><span>Markov embedding</span></em><span>, which the confidence head in Part 8 also reads), and multiplying it by W&#8322; expands it back to a V-dimensional correction. Per position: one table lookup plus one 256-by-V matrix-vector product.</span></p><p><span>W&#8321; and W&#8322; are not counted from corpus statistics. They are learned by gradient descent along with the rest of the drafter, trained to imitate the frozen target&#8217;s outputs, with Part 2&#8217;s TV distance as part of the loss.</span></p><p><span>The confidence head&#8217;s training label is free. Part 2 showed that the acceptance probability at a position is exactly 1 &#8722; &#189;&#8214;p&#7496; &#8722; p&#7511;&#8214;&#8321;. Training the drafter already computes both distributions: the frozen target runs on the training data to provide supervision, which yields p&#7511; at every position, and p&#7496; is the drafter&#8217;s own output. So the true acceptance probability is available in closed form at every training step, and the confidence head is supervised directly with it as a soft label, without ever simulating an accept/reject decision.</span></p><h3><strong><span>A5. Calibrating the confidence head</span></strong></h3><p><span>A confidence head is </span><em><span>calibrated</span></em><span> if its numbers mean what they say: of all the tokens it scores 0.8, about 80% should actually be accepted. Simpler schemes don&#8217;t need this. A threshold rule like &#8220;drop everything below 0.4&#8221; only compares scores to a cutoff, so it works as long as better tokens get higher scores, even if every score is inflated. DSpark&#8217;s scheduler does arithmetic with the scores. It multiplies them into survival probabilities and sums those into an expected token count for the whole batch, so if the head says 0.9 where the truth is 0.7, the count is wrong and the scheduler ends up maximizing a throughput that doesn&#8217;t exist. Neural confidence estimates are, reliably, overconfident in exactly this way.</span></p><p><span>The fix is temperature scaling with one twist, which the paper calls Sequential Temperature Scaling. Because the scheduler consumes cumulative products, a&#8342; = c&#8321;&#8943;c&#8342;, the calibration targets the products rather than the raw scores: walking left to right, each position gets one temperature, fit on held-out data to shrink the gap between the predicted and the observed acceptance of the cumulative product, with earlier positions held fixed. Temperature scaling only rescales scores, it never reorders them, so the ranking the head learned survives. The average gap between predicted and observed acceptance drops from 3&#8211;8% to about 1%.</span></p><h3><strong><span>A6. The empty-system limit</span></strong></h3><p><span>In the limit of an empty system, the maximization says to verify the entire &#947;-token block, since an admitted token can only add to &#964;. Light-load speed is therefore capped by &#947; and by drafter quality rather than by the scheduler, which is part of why Part 6&#8217;s fight to keep acceptance high at long blocks matters. The one cost light load doesn&#8217;t forgive is T_{draft}, paid every round regardless of what gets verified.</span></p><p><span>Source: </span><a href="https://arxiv.org/abs/2607.05147"><span>Cheng et al., </span></a><em><a href="https://arxiv.org/abs/2607.05147"><span>DSpark: Confidence-Scheduled Speculative Decoding with Semi-Autoregressive Generation</span></a></em><span> (DeepSeek-AI &amp; Peking University, 2026). Figures in this post are stylized redraws of the paper&#8217;s Figures 1, 2, and 7; all numbers are from the paper. DeepSeek released the DSpark checkpoints for the V4 preview models along with </span><a href="https://github.com/deepseek-ai/DeepSpec"><span>DeepSpec</span></a><span>, a training repo where </span><a href="https://arxiv.org/abs/2503.01840"><span>Eagle3</span></a><span>, </span><a href="https://arxiv.org/abs/2602.06036"><span>DFlash</span></a><span>, and DSpark are all trained on the same data, so the baselines in this comparison are held fixed for once. Background reading: </span><a href="https://arxiv.org/abs/2211.17192"><span>Leviathan et al.</span></a><span> and </span><a href="https://arxiv.org/abs/2302.01318"><span>Chen et al.</span></a><span> (2023) on speculative sampling; </span><a href="https://arxiv.org/abs/1711.02281"><span>Gu et al. (2018)</span></a><span> on non-autoregressive generation and multi-modal collision; </span><a href="https://arxiv.org/abs/2401.15077"><span>Li et al. on the EAGLE series</span></a><span>; </span><a href="https://arxiv.org/abs/2602.06036"><span>Chen et al. (2026)</span></a><span> on DFlash.</span></p><h2><strong><span>References and links</span></strong></h2><ul><li><p><a href="https://arxiv.org/abs/2607.05147"><span>Cheng et al. (2026), </span></a><em><a href="https://arxiv.org/abs/2607.05147"><span>DSpark: Confidence-Scheduled Speculative Decoding with Semi-Autoregressive Generation</span></a></em></p></li><li><p><a href="https://arxiv.org/abs/2602.06036"><span>Chen et al. (2026), </span></a><em><a href="https://arxiv.org/abs/2602.06036"><span>DFlash: Block Diffusion for Flash Speculative Decoding</span></a></em></p></li><li><p><a href="https://arxiv.org/abs/2211.17192"><span>Leviathan et al. (2023), </span></a><em><a href="https://arxiv.org/abs/2211.17192"><span>Fast Inference from Transformers via Speculative Decoding</span></a></em></p></li><li><p><a href="https://arxiv.org/abs/2302.01318"><span>Chen et al. (2023), </span></a><em><a href="https://arxiv.org/abs/2302.01318"><span>Accelerating Large Language Model Decoding with Speculative Sampling</span></a></em></p></li><li><p><a href="https://arxiv.org/abs/2401.15077"><span>Li et al. (2024), </span></a><em><a href="https://arxiv.org/abs/2401.15077"><span>EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty</span></a></em></p></li><li><p><a href="https://arxiv.org/abs/2503.01840"><span>Li et al. (2025), </span></a><em><a href="https://arxiv.org/abs/2503.01840"><span>EAGLE-3: Scaling up Inference Acceleration of Large Language Models via Training-Time Test</span></a></em></p></li><li><p><a href="https://arxiv.org/abs/2401.10774"><span>Cai et al. (2024), </span></a><em><a href="https://arxiv.org/abs/2401.10774"><span>Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads</span></a></em></p></li><li><p><a href="https://arxiv.org/abs/2412.19437"><span>DeepSeek-AI (2024), </span></a><em><a href="https://arxiv.org/abs/2412.19437"><span>DeepSeek-V3 Technical Report</span></a></em><span> &#8212; includes the multi-token prediction (MTP) objective.</span></p></li><li><p><a href="https://arxiv.org/abs/1711.02281"><span>Gu et al. (2018), </span></a><em><a href="https://arxiv.org/abs/1711.02281"><span>Non-Autoregressive Neural Machine Translation</span></a></em></p></li><li><p><a href="https://arxiv.org/abs/2309.06180"><span>Kwon et al. (2023), </span></a><em><a href="https://arxiv.org/abs/2309.06180"><span>Efficient Memory Management for Large Language Model Serving with PagedAttention</span></a></em><span> &#8212; vLLM.</span></p></li><li><p><a href="https://arxiv.org/abs/2312.07104"><span>Zheng et al. (2023), </span></a><em><a href="https://arxiv.org/abs/2312.07104"><span>SGLang: Efficient Execution of Structured Language Model Programs</span></a></em></p></li><li><p><a href="https://github.com/deepseek-ai/DeepSpec"><span>DeepSeek-AI DeepSpec repository</span></a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.the-information-bottleneck.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Information Bottleneck! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AI Agents and The Golden Age of Asking Questions with Dimitris Papailiopoulos (MSR/UW-Madison)]]></title><description><![CDATA[In this episode, we talked with Dimitris Papailiopoulos, researcher at Microsoft Research&#8217;s AI Frontiers lab and professor at the University of Wisconsin, about doing research in the age of agents.]]></description><link>https://www.the-information-bottleneck.com/p/ai-agents-and-the-golden-age-of-asking</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/ai-agents-and-the-golden-age-of-asking</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Thu, 09 Jul 2026 21:41:17 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/206359539/65b65102ab56d7f6edc1390c2f0d1fc1.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-pkb8kTfI26E" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;pkb8kTfI26E&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/pkb8kTfI26E?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>In this episode, we talked with Dimitris Papailiopoulos, researcher at Microsoft Research&#8217;s AI Frontiers lab and professor at the University of Wisconsin, about doing research in the age of agents. Dimitris told us about the Sunday morning that changed how he works: he handed Claude Code and Codex a question he&#8217;d been sitting on for years, went about his day, and came back to an answer. After a few days of dread about what&#8217;s left for humans, he landed somewhere more optimistic, calling this the golden age of asking questions.</p><p>We talked about his &#8220;smallest transformer that can add&#8221; leaderboard, a symbolic GSM8K solver built from if-else statements, and what happened when he put two Claude Code instances in the same file system and told them to do something cool (one pair invented a communication protocol, the other played Battleship). We also got into diversity and slop in agent-generated ideas, why agents get stubborn after a million tokens, harness overfitting on Terminal-Bench, continual learning and world models, whether agents need vision, and where information theory actually helps in AI and where it&#8217;s a katana used to make coffee.</p><div><hr></div><p><strong>Timeline</strong></p><p>00:00 Intro<br>01:45 How agents changed the way Dimitris does research<br>04:30 A Sunday morning with Claude Code, Codex, and GSM8K<br>07:15 The dread, then the golden age of asking questions<br>08:20 Taste and verification, and how we train students now<br>09:53 Will models make human verification obsolete?<br>11:30 The smallest transformer that can add 10-digit numbers<br>13:40 Humans as initializers for gradient descent in idea space<br>15:32 Allen on diversity, slop profiles, and high temperature research<br>21:44 When Claudes meet: Battleship, invented protocols, and a grokking paper<br>25:53 Single agent vs multi-agent under fixed compute<br>30:28 Auto-research benchmarks and what agents actually accelerate<br>35:14 Inside the symbolic GSM8K solver (with a live progress check)<br>40:04 Idea overfitting and why agents refuse to change course<br>44:00 Learning from failure traces and harness overfitting<br>48:04 Continual learning, memory files, and world models<br>51:30 Why don&#8217;t labs personalize models on your own history?<br>57:52 Agent-to-agent communication: is Jira the right tool?<br>1:01:25 Multimodality: vision as a tool vs one unified model<br>1:05:40 Information theory and AI, or making coffee with a katana<br>1:11:23 Closing thoughts: ask bigger questions</p><div><hr></div><p>Music:</p><ul><li><p>&#8220;Kid Kodi&#8221; - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul><div><hr></div>]]></content:encoded></item><item><title><![CDATA[Why All Models Learn the Same Thing with Phillip Isola (MIT)]]></title><description><![CDATA[Phillip Isola, professor at MIT, joins us to talk about representation learning: what makes a representation good, why different models seem to converge on similar representations, and whether pre-training is really over.]]></description><link>https://www.the-information-bottleneck.com/p/why-all-models-learn-the-same-thing-a2c</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/why-all-models-learn-the-same-thing-a2c</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Thu, 02 Jul 2026 05:26:14 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/204577032/96a371c8e8fc8b217751ae1e33047c02.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Phillip Isola, professor at MIT, joins us to talk about representation learning: what makes a representation good, why different models seem to converge on similar representations, and whether pre-training is really over.</p><p>We discuss the platonic representation hypothesis and its limits, why clustering structure matters more than global geometry, and Phillip's new neural thickets paper arguing that post-training is easier than people think because pre-trained weights already sit near solutions to downstream tasks. Phillip also explains why he thinks LLMs are already world models, why he's betting on RNNs making a comeback, and why his most exciting current direction is artificial life: putting LLM agents in open environments with no fixed task and studying them like new organisms.</p><div><hr></div><p>Timeline:</p><p>00:00 Intro song<br>00:13 Intro<br>01:05 What is representation learning and why it matters<br>04:09 What makes a representation good: minimality and sufficiency<br>10:03 How cross entropy and contrastive learning shape representations<br>14:35 Dimensionality reduction and why dimension isn't the right complexity measure<br>16:35 Compression and geometric clustering during training<br>19:27 The platonic representation hypothesis and what actually converges<br>22:53 Local neighborhoods vs global structure: the Aristotelian follow-up<br>24:33 When convergence is strong: truth vs the space of possibility<br>28:09 Is there true similarity in the world? The Bouba-Kiki effect<br>30:56 World models vs autoregressive LLMs<br>32:14 Diffusion LLMs as a special case of autoregressive models<br>33:42 What architectures win in five years: the case for RNNs<br>36:11 Grad student descent, or do we actually have principles?<br>40:51 Feathers and wings: what to take from biology<br>43:17 How close are we to brain-like models? Marr's three levels<br>47:01 Are better models becoming less human-like?<br>49:38 Is pre-training all you need? The neural thickets paper<br>54:18 LoRA, low rank fine-tuning, and why post-training is easier than we thought<br>56:01 RL environments and what our benchmarks actually test<br>1:01:11 Artificial life: LLM agents as new organisms<br>1:07:20 What's overlooked in AI research right now<br>1:08:36 Why stay in academia, and doing science in the age of Opus</p><div><hr></div><p>Music:</p><ul><li><p>"Kid Kodi" - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p><div><hr></div></li></ul><p>About: The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[Editing a Compressed Memory]]></title><description><![CDATA[Linear attention compresses memory into one fixed-size matrix. The hard part is editing it without scrambling everything else.]]></description><link>https://www.the-information-bottleneck.com/p/editing-a-compressed-memory</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/editing-a-compressed-memory</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Mon, 29 Jun 2026 18:48:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Pof3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Written with help from Claude for drafting, editing, and figures. All the mistakes are its.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Pof3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pof3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Pof3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Pof3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Pof3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pof3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6344361,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://informationbottleneck.substack.com/i/204059098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Pof3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Pof3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Pof3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Pof3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2377031-d7c8-4103-968c-6efb5d46ac77_2816x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.the-information-bottleneck.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Information Bottleneck! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>A Transformer remembers by keeping everything. Every token it has read stays in the KV cache, and any later token can look back at any earlier one exactly. That is why attention is so good at recall, and why its memory and compute grow with the length of the context.</p><p>Linear attention makes the opposite bet. It throws the cache away and keeps a single fixed-size matrix: a running summary that every new token updates and every query reads. Memory stops growing and decoding gets cheap. But a fixed-size summary cannot hold an unbounded number of facts cleanly, so writing something new can disturb what is already stored. Almost all the recent progress here (DeltaNet, Gated DeltaNet, KDA, and now Gated DeltaNet-2) is about making that write more surgical.</p><p>This post builds the whole thing from the ground up. You do not need to know any of these models going in; just linear algebra and a rough sense of what attention does. <strong> Shape of the argument</strong></p><ol><li><p>A fixed-size state is an <strong>associative memory</strong> built by summing key&#8211;value outer products, and reading it is content-addressed lookup.</p></li><li><p>Because it is fixed-size, overlapping keys <strong>interfere</strong>. That is the one limitation everything else fights.</p></li><li><p>Giving an old key a <strong>new value</strong> is the hard case. Adding leaves the stale value behind; replacing the matrix destroys every other fact; the <strong>delta rule</strong> does the surgical thing.</p></li><li><p>The delta rule looks sequential but <strong>trains in parallel</strong> as one small triangular solve per chunk.</p></li><li><p><strong>Decay</strong>, then <strong>per-channel decay (KDA)</strong>, then <strong>decoupled erase/write gates (GDN-2)</strong> are three refinements that keep that solve intact.</p></li></ol><div><hr></div><h2>Which memory we mean</h2><p>&#8220;Memory&#8221; means three different things in a language model. This post is about one of them.</p><ul><li><p><strong>The weights.</strong> The query/key/value projection matrices and the gates, learned during training and fixed afterward. Long-term knowledge, changed only by more training. Not this.</p></li><li><p><strong>The KV cache</strong> (softmax). The full list of past keys and values, so any query can look back exactly. Lossless, grows with context, reset each sequence. Linear attention removes this.</p></li><li><p><strong>The recurrent state</strong> (linear attention). One fixed-size matrix summarizing every token so far. Lossy, fixed size, reset each sequence. <strong>This is the memory we mean.</strong></p></li></ul><p>So this is <strong>in-context memory</strong>: holding the current input within a single forward pass, so token 5,000 can use what token 3 said. New prompt, empty state, nothing saved. It is <strong>not</strong> retrieval/RAG, not continual learning, not &#8220;remembering you across sessions&#8221;; it is the job plain attention does with its KV cache, just compressed into a fixed matrix instead of a growing list.</p><div><hr></div><h2>Where the state comes from</h2><p>Each token has a representation, and three fixed learned matrices turn it into a query, a key, and a value:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;q_t = W_q\\,x_t, \\qquad k_t = W_k\\,x_t, \\qquad v_t = W_v\\,x_t.&quot;,&quot;id&quot;:&quot;FAXFPXLXAC&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>The key is a token&#8217;s address, what it is about; the value is the content stored there; the query is what the current token is asking for, matched against the keys to decide what to pull out. A token writes itself in as a key&#8211;value pair and later reads with a query. The vectors depend on the input, but the three projection matrices are fixed weights, shared across every position and sequence.</p><p>Ordinary attention computes each output as a softmax-weighted sum over the past:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;o_t = \\sum_{i\\le t}\\frac{\\exp(q_t^\\top k_i)}{Z_t}\\,v_i, \\qquad Z_t=\\sum_{j\\le t}\\exp(q_t^\\top k_j).\n&quot;,&quot;id&quot;:&quot;XFWNTCZHJM&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>The exponential is what forces the cache. The score <code>exp(query &#183; key)</code> does not split into a part that depends only on the query times a part that depends only on the key, so the weight on each value is tied to that specific key, and the normalizer sums over every past key. There is no running summary you can keep instead: you have to store every key&#8211;value pair and revisit them for each new query. That is the KV cache: memory grows linearly with sequence length, and producing all outputs scales quadratically with it.</p><p>Linear attention drops the softmax and uses a score that factorizes, in the simplest case just the dot product of query and key. Once it factorizes, the sum rearranges:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;o_t = \\sum_{i\\le t}(k_i^\\top q_t)\\,v_i = \\Big(\\sum_{i\\le t} k_i v_i^\\top\\Big)^{\\!\\top} q_t = S_t^\\top q_t, \\qquad S_t=\\sum_{i\\le t}k_i v_i^\\top.&quot;,&quot;id&quot;:&quot;QSWNCCQEUQ&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>All of history collapses into one matrix of fixed size (key-dimension by value-dimension), and the query reads it in a single multiply. Memory no longer grows with context and the per-token cost is constant. This fixed state is the object the rest of this post is about; it exists precisely because the softmax is gone.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r7d9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e915411-489c-4558-b31e-c8444281c469_1434x871.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r7d9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e915411-489c-4558-b31e-c8444281c469_1434x871.png 424w, https://substackcdn.com/image/fetch/$s_!r7d9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e915411-489c-4558-b31e-c8444281c469_1434x871.png 848w, https://substackcdn.com/image/fetch/$s_!r7d9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e915411-489c-4558-b31e-c8444281c469_1434x871.png 1272w, https://substackcdn.com/image/fetch/$s_!r7d9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e915411-489c-4558-b31e-c8444281c469_1434x871.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r7d9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e915411-489c-4558-b31e-c8444281c469_1434x871.png" width="1434" height="871" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e915411-489c-4558-b31e-c8444281c469_1434x871.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:871,&quot;width&quot;:1434,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65483,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://informationbottleneck.substack.com/i/204059098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e915411-489c-4558-b31e-c8444281c469_1434x871.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!r7d9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e915411-489c-4558-b31e-c8444281c469_1434x871.png 424w, https://substackcdn.com/image/fetch/$s_!r7d9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e915411-489c-4558-b31e-c8444281c469_1434x871.png 848w, https://substackcdn.com/image/fetch/$s_!r7d9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e915411-489c-4558-b31e-c8444281c469_1434x871.png 1272w, https://substackcdn.com/image/fetch/$s_!r7d9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e915411-489c-4558-b31e-c8444281c469_1434x871.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Two ways to remember a sequence. Softmax keeps a growing KV cache, a key&#8211;value row per token; linear attention keeps one fixed-size matrix that every token writes into. The cache scales with length; the matrix does not.</figcaption></figure></div><p></p><p>That fixed size is the appeal and the problem at once. Packing an unbounded history into one matrix is cheap, but it means many facts share the same finite space. The next section shows what that does to a read.</p><div><hr></div><h2>Why a fixed-size memory interferes</h2><p>We have the fixed-size state. Before writing into it, look at what reading it gives you. Reading is applying a query to the memory:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;S^\\top q = \\sum_i v_i\\,(k_i^\\top q).\n&quot;,&quot;id&quot;:&quot;PFMSZZJGTE&quot;}" data-component-name="LatexBlockToDOM"></div><p>Each stored value is weighted by how aligned its key is with the query, the dot product of the two. That is content-addressed recall: values whose keys match what you asked for, weighted by the match.</p><p>To expose the problem, take the cleanest possible query, one that exactly equals a key you already stored. This is the case that <em>should</em> return its value perfectly, so any mess is the memory&#8217;s fault, not a mismatched query. Splitting off that term:</p><p></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;S^\\top k_j = \\underbrace{v_j\\,(k_j^\\top k_j)}_{\\text{what you want}} \\;+\\; \\underbrace{\\sum_{i\\ne j} v_i\\,(k_i^\\top k_j)}_{\\text{leakage from every other fact}}.\n&quot;,&quot;id&quot;:&quot;ITHKSEBMIO&quot;}" data-component-name="LatexBlockToDOM"></div><p>If the stored keys were orthonormal, every cross term would be zero and the read would be clean. They are not. Each nonzero overlap leaks a fraction of some other value into the answer. And here is the structural reason they cannot all be orthogonal: the state is a single matrix, so the key space has only as many dimensions as the key vector is wide, and a space of that dimension holds at most that many mutually orthogonal directions. Store more associations than that and some keys <em>must</em> share directions; even below the limit, random unit keys have small but nonzero overlaps that add up.</p><p>As the context carries more associations, the term you want stays about the same size while the leakage is a sum over everything else, so it grows. Signal-to-noise falls with context length: a long document forces many distinct facts to share one fixed box and they smear together. That is why this whole family struggles on long, many-needle retrieval, and why the improvements below all aim at that pressure point.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RfsW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3155d38-aad2-469e-be97-daad80ddedda_1434x779.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RfsW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3155d38-aad2-469e-be97-daad80ddedda_1434x779.png 424w, https://substackcdn.com/image/fetch/$s_!RfsW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3155d38-aad2-469e-be97-daad80ddedda_1434x779.png 848w, https://substackcdn.com/image/fetch/$s_!RfsW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3155d38-aad2-469e-be97-daad80ddedda_1434x779.png 1272w, https://substackcdn.com/image/fetch/$s_!RfsW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3155d38-aad2-469e-be97-daad80ddedda_1434x779.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RfsW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3155d38-aad2-469e-be97-daad80ddedda_1434x779.png" width="1434" height="779" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3155d38-aad2-469e-be97-daad80ddedda_1434x779.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:779,&quot;width&quot;:1434,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:53896,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://informationbottleneck.substack.com/i/204059098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3155d38-aad2-469e-be97-daad80ddedda_1434x779.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RfsW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3155d38-aad2-469e-be97-daad80ddedda_1434x779.png 424w, https://substackcdn.com/image/fetch/$s_!RfsW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3155d38-aad2-469e-be97-daad80ddedda_1434x779.png 848w, https://substackcdn.com/image/fetch/$s_!RfsW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3155d38-aad2-469e-be97-daad80ddedda_1434x779.png 1272w, https://substackcdn.com/image/fetch/$s_!RfsW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3155d38-aad2-469e-be97-daad80ddedda_1434x779.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Reading a stored key returns its value plus a small leak from every other key. The wanted term stays the same size while the leakage is a sum over everything else, so it grows as more facts share the fixed state.</figcaption></figure></div><h3>Why softmax doesn&#8217;t have this problem</h3><p>The leakage is <em>not</em> caused by folding the sum into the state matrix. The summed form and the matrix form are the same number; folding only fixes the size and the cost, not the value. The leakage is already there in the raw dot-product score.</p><p>Softmax runs those same dot products through an exponential and normalizes. The exponential sharpens them: the matching key saturates near one and the mismatched keys are crushed toward zero, so the wrong values effectively drop out of the read even when the keys overlap. Same overlaps, clean answer.</p><p>But that is exactly the property that cannot be summarized. The exponential of a dot product does not split into a query part times a key part, so there is nothing to precompute: you are forced to keep every key and recompute the exponential against each one, which is the growing cache. So it is an either/or: a sharp score reads cleanly but cannot be folded into a fixed state, while a foldable score gives the fixed state but leaks. <strong>Interference is not the cost of compressing; it is the cost of using a score weak enough to be compressible.</strong></p><div><hr></div><h2>Updating a value when a key comes back</h2><p>As the model reads a sequence, a later token sometimes produces a key close to one an earlier token already wrote, but carrying a different value. The state already holds a binding in that direction, and the new value should take its place. This is the update case, and it is the one ordinary outer-product memory gets wrong.</p><p>For example, a passage sets <code>x = 5</code> and later sets <code>x = 7</code>. Both tokens produce nearly the same key (the direction standing for &#8220;the value of x&#8221;), but with different values. When a later token reads x, the answer should be 7. Plain addition cannot give that: it never removed the old binding, so the slot holds 5 and 7 at once and the read returns a blend. The same shape shows up whenever a key recurs with a new value: an entity whose state changes (&#8221;Alice is in Paris&#8230; now Tokyo&#8221;), a correction (&#8221;blue&#8230; actually green&#8221;), a form field revised.</p><p>Two clarifications, since &#8220;update&#8221; can mislead. The prompt itself is fixed; the forward pass only reads it left to right, and &#8220;update&#8221; means a later position&#8217;s binding should win over an earlier one. &#8220;x = 5&#8221; stays in the text; it just should not win the read. And keys are not matched by name: two tokens are &#8220;the same key&#8221; when their key vectors point in roughly the same direction, so their writes land on the same spot in the state. A repeated mention produces a nearby key, the later write hits that slot, and the read afterward should reflect the new value.</p><p>So every write is one of two cases. <strong>Add:</strong> the key points somewhere new, a fresh fact, which is most tokens; plain accumulation is fine, and that is what vanilla linear attention does. <strong>Overwrite:</strong> the key lands on a direction already in the state, and the slot has to be updated to the new value, not stacked on top of the old one.</p><h3>Why not just replace the whole matrix?</h3><p>Because the state is shared by every association at once. Three ways to write an update to one key, into a memory that also holds a second fact:</p><ul><li><p><strong>Replace</strong> the whole matrix with the new key&#8211;value outer product: fixes the target key perfectly and <em>deletes everyone else</em>. Read the second key afterward and you get near zero. You wanted to change one slot and you erased the notebook.</p></li><li><p><strong>Add</strong> the new outer product: keeps the second fact, but leaves the old binding in place, so reading the target key returns old-plus-new, the stale value smeared into the fresh one.</p></li><li><p><strong>Delta:</strong> read what the key currently points to, subtract just that, then write the new value. Only the target slot changes; the other fact is untouched.</p></li></ul><p>Add keeps the other fact but smears the target. Replace fixes the target but wipes the other fact. Only the third (read, subtract, write) gets both right. That third option is the delta rule.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WpEo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WpEo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png 424w, https://substackcdn.com/image/fetch/$s_!WpEo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png 848w, https://substackcdn.com/image/fetch/$s_!WpEo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png 1272w, https://substackcdn.com/image/fetch/$s_!WpEo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WpEo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png" width="1456" height="727" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60184,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://informationbottleneck.substack.com/i/204059098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WpEo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png 424w, https://substackcdn.com/image/fetch/$s_!WpEo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png 848w, https://substackcdn.com/image/fetch/$s_!WpEo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png 1272w, https://substackcdn.com/image/fetch/$s_!WpEo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f377-f16e-4696-8a9c-a730daaa0a12_1528x763.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Updating one key three ways. Add leaves the old value smeared into the new one; replacing the whole matrix fixes the target but destroys every other fact; the delta rule edits only the target slot and leaves the rest intact.</figcaption></figure></div><div><hr></div><h2>The delta rule</h2><p>The update that does this is the <strong>delta rule</strong> (Widrow &amp; Hoff, 1960), used for linear attention in DeltaNet (Yang et al., 2024). It writes the new value relative to what is already stored, not absolutely. First read what the memory currently returns for the key:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\text{old value} \\;=\\; S_{t-1}^\\top k_t.\n&quot;,&quot;id&quot;:&quot;NEXIJNPVZU&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>This is whatever sits in that key&#8217;s direction right now. We never have to know in advance whether the key was used before; we just read it back. Then move the slot from that old value toward the target, by a fraction &#946; (the write strength):</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;S_t = S_{t-1} + \\beta_t\\,k_t\\big(\\,\\underbrace{v_t - S_{t-1}^\\top k_t}_{\\text{new} \\,-\\, \\text{old}}\\,\\big)^{\\!\\top}, \\qquad \\beta_t\\in[0,1].&quot;,&quot;id&quot;:&quot;AURBMXMAJY&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>The bracket is the gap between the new value and the old one, and adding it back pushes the value stored at that key toward the target. One update covers both cases with no branching: if the key points somewhere new, the read is about zero, the gap is just the new value, and it reduces to a plain add; if the key lands on a direction that already holds a value, the read returns that old value, and the update subtracts it and writes the new value in its place. The memory tells the rule which case it is in.</p><p>Multiplying the correction out shows what it does to the whole state:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;S_t = \\big(I - \\beta_t k_t k_t^\\top\\big)S_{t-1} + \\beta_t k_t v_t^\\top.\n&quot;,&quot;id&quot;:&quot;WCXOPIWIYR&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>The second term writes the new value along the key. The first term removes a &#946; fraction of whatever the state held along that key, and only along that key: the projection onto the key direction leaves everything orthogonal to it untouched. That is exactly why, in the previous widget, replacing the whole matrix wiped the bystander but the delta update did not; it only edits that one key&#8217;s line of the state.</p><h3>Why &#946; is not just 1</h3><p>A write strength of 1 is a hard overwrite: erase the old binding completely, write the new value. So why not use it everywhere? &#946; is produced per token by the model, and two things argue against pinning it to 1. Real keys are not exactly orthogonal, so erasing hard along one key also disturbs neighbors that partly share its direction, and a smaller &#946; makes a gentler edit with less collateral damage. And not every write should fully replace: sometimes the right move is to nudge a value, accumulate evidence, or write weakly under uncertainty. So &#946; between 0 and 1 is a dial: 1 overwrites, 0 leaves the slot alone, in between is a partial move. (In the online-learning view it is a per-step learning rate, and a rate of 1 everywhere is rarely what you want.)</p><p>One caveat the next widget makes concrete: the clean overwrite is exact only when the key is orthogonal to the others. When keys overlap, editing along one drags on whatever shares its direction, the same interference from before, now showing up in the write.</p><div><hr></div><h2>Training it in parallel</h2><p>Training needs every output over the whole sequence at once, then a gradient. Plain linear attention gives them cheaply because the state is a running sum, so the outputs collapse into two matrix multiplies (with a causal mask zeroing the future):</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;O = (QK^\\top \\odot M)\\,V,\n&quot;,&quot;id&quot;:&quot;TESUIUOIGO&quot;}" data-component-name="LatexBlockToDOM"></div><p>Why this is fast: it is all dense matmuls, and a GPU runs a matmul as thousands of multiply-adds in parallel on its tensor cores, every output position at the same time. Nothing waits for anything else.</p><p>The delta rule breaks this. Its erase factor (the one from the operator form above) makes each state genuinely depend on the previous one, so you cannot write the answer as one sum of independent terms. Done literally you process tokens one at a time, each a tiny rank-one update that uses a sliver of the GPU while the rest sits idle.</p><p>DeltaNet&#8217;s contribution (Yang et al., 2024) was to recover the matmul form by working in <strong>chunks</strong>. A chunk is a contiguous block of C tokens; a length-L sequence is split into L/C of them. The expensive work happens inside a chunk, all as matmuls, and only a small summary state is passed from one chunk to the next.</p><h3>The trick: solve for the values that were actually written</h3><p>Every step adds a rank-one term whose left factor is a key, so the state is always the start state plus one such term per token:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;S_t = S_0 + \\sum_{s\\le t} k_s\\,u_s^\\top.\n&quot;,&quot;id&quot;:&quot;BQHVWWLPWR&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>The written value here is not the raw value, but the correction from the delta rule (target minus old value, scaled by &#946;). The keys are known; these written values are the unknowns. The point is that if we can get all of them in a chunk at once, with a single matrix solve instead of a token-by-token walk, the whole chunk becomes parallel matmuls. So we solve for them jointly.</p><p>The written value at each step depends on the current read, and that read expands into known keys and earlier written values:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;S_{t-1}^\\top k_t = S_0^\\top k_t + \\sum_{s\\lt t}(k_s^\\top k_t)\\,u_s.\n&quot;,&quot;id&quot;:&quot;NTXQUWUYCY&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>In words: reading a key against the state-so-far is the start-state read, plus every earlier written value weighted by how much its key overlaps the current one. Substituting gives a relation among the written values alone:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;u_t = \\beta_t\\big(v_t - S_0^\\top k_t\\big) - \\beta_t\\!\\sum_{s\\lt t}(k_s^\\top k_t)\\,u_s.\n&quot;,&quot;id&quot;:&quot;YFDJFXHQTY&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>Each written value depends only on earlier ones, which makes this a triangular system. Stack the written values into a matrix, collect the pairwise key overlaps into a matrix T, and the whole set of equations becomes a single solve:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;(I + T)\\,U = \\mathrm{diag}(\\beta)\\,(V - K S_0), \\qquad U = (I+T)^{-1}\\mathrm{diag}(\\beta)(V - K S_0).\n&quot;,&quot;id&quot;:&quot;OXRWZQPHTQ&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>Because the matrix being inverted is unit lower-triangular, the inverse is one forward substitution on a small C-by-C matrix. Everything else is dense matmuls: build the overlap matrix from pairwise key dot products, then form the carried state and the outputs:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;S_C = S_0 + K^\\top U, \\qquad O = Q S_0 + \\mathrm{tril}(Q K^\\top)\\,U.\n&quot;,&quot;id&quot;:&quot;ZAFCZJGMHD&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>The sequential token loop is gone, replaced by matmuls plus one small triangular solve. Writing a product of rank-one factors as a single low-rank update this way is a classical move from numerical linear algebra, the WY representation (Bischof &amp; Van Loan, 1985) and its UT-transform variant (Joffrain et al., 2006); DeltaNet borrows it to collapse the chunk into matrix operations.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ft4g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ft4g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png 424w, https://substackcdn.com/image/fetch/$s_!ft4g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png 848w, https://substackcdn.com/image/fetch/$s_!ft4g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png 1272w, https://substackcdn.com/image/fetch/$s_!ft4g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ft4g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png" width="1456" height="657" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:657,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75481,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://informationbottleneck.substack.com/i/204059098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ft4g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png 424w, https://substackcdn.com/image/fetch/$s_!ft4g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png 848w, https://substackcdn.com/image/fetch/$s_!ft4g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png 1272w, https://substackcdn.com/image/fetch/$s_!ft4g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda1be37d-7d6b-4ba5-92ba-a64a2abc23eb_1589x717.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Training a chunk in parallel. Inside a chunk everything is dense matmuls plus one small triangular solve; only the carried state passes to the next chunk, the single sequential step.</figcaption></figure></div><p></p><h3>Why the chunk size is small</h3><p>The chunk size sets how often the state is handed off: there are L/C chunks, so that many sequential state updates. The two extremes make this concrete. A chunk of one token is the original fully sequential recurrence. A single chunk covering the whole sequence is one handoff, done in one parallel block. (This is the opposite of what it might sound like: a bigger chunk means fewer, larger steps, not more.)</p><p>So why not use one giant chunk and be fully parallel? Because the chunk builds and solves a C-by-C matrix, so its cost and memory grow quadratically in the chunk size. At the full length you are back to the quadratic cost of full attention, and the matrix no longer fits in the fast on-chip memory the matmul engine reads from. Too small, and you pay too many sequential steps and underfill each matmul. The kernels use 64.</p><div><hr></div><h2>Adding decay: Gated DeltaNet</h2><p>Everything up to here is DeltaNet: a fixed-size associative memory, edited by the delta rule, trained in parallel. The last three sections are refinements, each adding expressive power with a small change that leaves the chunk algorithm intact.</p><p>The delta rule overwrites one slot at a time but cannot let old context fade on its own. Gated DeltaNet (Yang, Kautz &amp; Hatamizadeh, 2025, arXiv:2412.06464) multiplies the state by a scalar decay before each edit:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;S_t = \\alpha_t\\big(I - \\beta_t k_t k_t^\\top\\big)S_{t-1} + \\beta_t k_t v_t^\\top.\n&quot;,&quot;id&quot;:&quot;MQTPTBOBHV&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>Tracking the cumulative product of the decays, an earlier write contributes to a later read scaled by how much decay has accumulated in between. In the chunk algorithm this is just a per-row reweighting of the same matrices plus an extra factor in the causal mask; the triangular solve is unchanged. Decay is close to free to add. What it cannot do is forget different features at different rates, since it is one number.</p><div><hr></div><h2>Decay per channel: KDA</h2><p>KDA, the linear-attention layer in Kimi Linear (Kimi Team, 2025, arXiv:2510.26692), replaces that single decay with a per-channel decay vector, a different forget rate for every key channel:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;S_t = \\big(I - \\beta_t k_t k_t^\\top\\big)\\,D_t\\,S_{t-1} + \\beta_t k_t v_t^\\top.\n&quot;,&quot;id&quot;:&quot;WGKHPYPLLX&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>Now every channel is scaled differently at every step, which looks like it should break the chunk form. It does not, because of a change of variables: factor the cumulative per-channel decay out of the state, and it cancels from the recurrence, leaving a plain delta product in reweighted key and erase factors:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\bar k_r = \\gamma_r^{-1}\\!\\odot k_r, \\qquad \\bar e_r = \\gamma_r \\odot (\\beta_r k_r).\n&quot;,&quot;id&quot;:&quot;OFKOLCQLRS&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>After this substitution the chunk equations have the same shape as before; only the entries carry the decay factors. KDA buys richer forgetting at no structural cost.</p><p>The per-channel rates are not hand-set hyperparameters; they are learned and data-dependent, produced from each token by a small projection (the Gated DeltaNet parameterization, a softplus of a learned linear map passed through an exponential). A per-head term and a per-channel bias set each channel&#8217;s baseline forget rate, and the per-token projection pushes that rate up or down, so the model learns both the typical decay profile and how to modulate it on the fly. The active edit, though, is still a single write-strength scalar, which scales both the erase and the write at once.</p><div><hr></div><h2>Splitting the edit: Gated DeltaNet-2</h2><p>Erasing acts on the key side: which coordinates of the old read to remove. Writing acts on the value side: which coordinates of the new value to keep. These are different axes of the state, so GDN-2 (Hatamizadeh, Choi &amp; Kautz, 2026, arXiv:2605.22791) gives each its own channel-wise gate, an erase gate on the key and a write gate on the value:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;e_t = b_t \\odot k_t, \\quad z_t = w_t \\odot v_t, \\qquad S_t = \\big(I - k_t e_t^\\top\\big)\\,D_t\\,S_{t-1} + k_t z_t^\\top.\n&quot;,&quot;id&quot;:&quot;NOTBKSFLKZ&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>Compared with KDA, the write direction is unchanged (the left factor is still the key), but the read it subtracts is now channel-selected by the erase gate, and the value it writes is channel-selected by the write gate.</p><h3>Forward: same machine</h3><p>Run the same change of variables, now folding the erase gate into the reweighted factor, and the recurrence is again a plain (now asymmetric) delta product. The chunk pipeline keeps the same shape: the same overlap matrix, the same triangular inverse, the same state and output equations. The only difference is what fills them: the erase gate enters the key-side rows, the write gate the value-side rows, and the overlap matrix is now built from an asymmetric pair rather than a symmetric one.</p><h3>Backward: one real difference</h3><p>Training propagates a loss gradient back through the chunk. Write the solve as the triangular inverse applied to the written values. Backprop needs the gradient with respect to that inverse, which accumulates as a product of the incoming gradient with the written values:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\mathrm dA = \\mathrm dU\\,Z^\\top, \\qquad (\\mathrm dU\\,Z^\\top)_{rs} = \\langle \\mathrm du_r,\\; z_s\\rangle.\n&quot;,&quot;id&quot;:&quot;QYMZUIXFCR&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>The whole question is whether the gate can be pulled out of that inner product. In KDA the written value is a scalar times the value, so it slides straight out, and you can compute the gate-free products once as a matmul and scale afterward:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\langle \\mathrm du_r,\\; \\beta_s v_s\\rangle = \\beta_s\\,\\langle \\mathrm du_r,\\; v_s\\rangle.\n&quot;,&quot;id&quot;:&quot;MCSBAVCNBQ&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>In GDN-2 the written value is a per-channel product, so the gate sits <em>inside</em> the sum over channels and there is nothing to pull out:</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\langle \\mathrm du_r,\\; w_s \\odot v_s\\rangle = \\sum_c \\mathrm du_{r,c}\\,w_{s,c}\\,v_{s,c}.\n&quot;,&quot;id&quot;:&quot;CLQUUXNJTX&quot;}" data-component-name="LatexBlockToDOM"></div><p></p><p>No single number multiplies the whole inner product; the gate reweights each channel before it is summed, so no row or column scaling recovers it from the gate-free version. The erase side has the same issue. The gate therefore has to be folded into the matmul itself, not applied as a scaling after. The forward pass is essentially KDA&#8217;s; the backward kernel is the part that must be rewritten to carry both gates inside its accumulation, and that gate-aware backward is the real implementation cost of the split.</p><p>Setting both gates to the same scalar recovers KDA exactly; tying the decay to a scalar as well gives Gated DeltaNet; dropping the decay gives the delta rule. Each model is the next with some gate held to a scalar.</p><div><hr></div><h2>Where this nets out</h2><p>Step back and it is all one idea, taken in stages. Linear attention compresses an unbounded history into a fixed matrix, fast but lossy. The delta rule edits that matrix surgically instead of piling onto it. The chunked triangular solve makes the edit trainable at scale. Decay, per-channel decay, and decoupled erase/write gates each give the edit finer control over what to keep and what to remove, without giving up the fixed-size state or the parallel training. None of them recover the softmax cache's perfect recall; they make the compression smarter.</p><p>That is also where the measured gains land. In the Gated DeltaNet-2 paper the improvement over KDA is modest on language modeling but clear on long-context, multi-key retrieval, the regime where many associations are forced to share one fixed state and interference is worst. The ablation is honest about the split: a channel-wise erase gate with a scalar write recovers most of the gain, so the erase side is doing more work than the write side.</p><p>This is also why pure linear attention rarely replaces softmax outright. Exact recall is often worth the cost of the growing cache, so most production models stay softmax, and these layers show up where memory and throughput dominate: long context, high-throughput serving, constrained hardware. The common deployment is hybrid: interleave a few full or sliding-window attention layers for exact recall with many cheap linear layers. Recent open-weight models make this concrete. Qwen3-Next and Kimi Linear both stack three linear blocks (a Gated DeltaNet variant) per full-attention block, a 3:1 ratio, and MiniMax-01 mixes lightning (linear) and softmax attention in a similar pattern.</p><div><hr></div><h2><em>Sources: </em></h2><ul><li><p><em>DeltaNet chunkwise algorithm (Yang, Wang, Zhang, Shen, Kim, NeurIPS 2024)</em></p></li><li><p><em>Gated DeltaNet (Yang, Kautz, Hatamizadeh, ICLR 2025, arXiv:2412.06464); </em></p></li><li><p><em>KDA / Kimi Linear (Kimi Team, 2025, arXiv:2510.26692); </em></p></li><li><p><em>Gated DeltaNet-2 (Hatamizadeh, Choi, Kautz, 2026, arXiv:2605.22791).</em></p></li></ul><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.the-information-bottleneck.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Information Bottleneck! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AI for Science with Qichao Hu (Molecular Universe / SES AI)]]></title><description><![CDATA[Most AI-for-science companies are selling shovels. Qichao Hu wants the gold.]]></description><link>https://www.the-information-bottleneck.com/p/ai-for-science-with-qichao-hu-molecular</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/ai-for-science-with-qichao-hu-molecular</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Mon, 29 Jun 2026 04:32:25 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/204060433/1c7fb411bcb21f037040a5eb9381f441.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-a1U__y9sV5U" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;a1U__y9sV5U&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/a1U__y9sV5U?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>In this episode, we talk with Qichao, the founder and CEO of Molecular Universe, the AI-for-science platform that grew out of SES AI, a high-energy-density battery developer he&#8217;s run for fourteen years. His core distinction is that companies from the AI world build tools, such as foundation models that predict properties, while companies from the science world care about the final product, such as the new battery or material that actually ships. Molecular Universe sits firmly on the science side, and the difference shows up everywhere from what they publish to what they refuse to.</p><p>We get into the actual workflow of materials discovery and where AI compresses it. A single trial in a traditional lab can take a year with maybe a 40% success rate; the goal is to run a thousand candidates in parallel and turn that year into a week. Qichao walks through improving low-temperature fast-charging for EV batteries: from hypothesis generation through molecule-, material-, and device-level property prediction, down to autonomous labs that synthesize and test the top candidates without a human touching a pipette.</p><p>The hardest problem, it turns out, isn&#8217;t predicting molecular properties or measuring device performance, but it&#8217;s the black box connecting the two. In batteries, that&#8217;s the solid-electrolyte interface, which the field has been hand-waving about since the seventies. And the thing standing in the way of cracking it isn&#8217;t a clever training trick but data: companies sitting on twenty years of records are finding it too messy, incomplete, and poorly labeled to train on, and are having to start collecting from scratch with new protocols and robots.</p><div><hr></div><p><strong><span>Timeline</span></strong></p><ul><li><p><strong><span>00:13</span></strong> &#8212; Intro and welcome;</p></li><li><p><strong><span>01:19</span></strong> &#8212; Shovel vs. gold</p></li><li><p><strong><span>05:18</span></strong> &#8212; Why the world&#8217;s smartest scientist doesn&#8217;t automatically give you a better battery</p></li><li><p><strong><span>07:25</span></strong> &#8212; The discovery workflow</p></li><li><p><strong><span>09:37</span></strong> &#8212; Exploration vs. exploitation</p></li><li><p><strong><span>11:54</span></strong> &#8212; Safety and filtering: screening novel molecules against banned and toxic-substance lists</p></li><li><p><strong><span>17:55</span></strong> &#8212; How hypotheses get generated, and where frontier LLMs help</p></li><li><p><strong><span>20:29</span></strong> &#8212; From hypothesis to ~400 formulations: property prediction, ranking, and handing off to autonomous labs</p></li><li><p><strong><span>26:37</span></strong> &#8212; &#8220;A foundation model for everything&#8221; &#8212; and the black box between molecular properties and device performance</p></li><li><p><strong><span>30:01</span></strong> &#8212; World models and physics</p></li><li><p><strong><span>33:09</span></strong> &#8212; The great unknown in batteries</p></li><li><p><strong><span>37:08</span></strong> &#8212; Simulation vs. reality: calibrating massive simulated datasets with a sliver of experimental data</p></li><li><p><strong><span>41:47</span></strong> &#8212; Lab robotics: how fast the hardware has caught up, and what a floor of autonomous labs looks like</p></li><li><p><strong><span>43:50</span></strong> &#8212; The real bottlenecks</p></li><li><p><strong><span>50:21</span></strong> &#8212; Pre-training from scratch vs. post-training LLMs, and why training tricks haven&#8217;t reduced the need for good data</p></li><li><p><strong><span>52:42</span></strong> &#8212; Evaluation</p></li><li><p><strong><span>55:42</span></strong> &#8212; Publish the B+ model, keep the A model</p></li><li><p><strong><span>58:05</span></strong> &#8212; Five years out</p></li><li><p><strong><span>1:00:37</span></strong> &#8212; Closing thoughts and wrap</p></li></ul><div><hr></div><p>Music:</p><ul><li><p>&#8220;Kid Kodi&#8221; - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul><div><hr></div><p>About: The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[Infrastructure for AI at Scale - With Benny Chen (Fireworks AI)]]></title><description><![CDATA[We talk a lot on this show about RL, agents, and the move between pre-training and post-training, but not enough about the layer everything actually runs on.]]></description><link>https://www.the-information-bottleneck.com/p/infrastructure-for-ai-at-scale-with-434</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/infrastructure-for-ai-at-scale-with-434</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Wed, 24 Jun 2026 04:03:28 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/203348460/56341ba56719a283ef06930e93981f87.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>We talk a lot on this show about RL, agents, and the move between pre-training and post-training, but not enough about the layer everything actually runs on. Benny Chen, co-founder of Fireworks AI, one of the largest inference platforms around, walks us through what it takes to serve models at scale: sourcing GPUs, writing the kernels, the runtime, and the routing layer that lets a customer hit one endpoint and forget the rest.</p><p>We talk why the real bottleneck is power, not chips, and why that favors Nvidia and Google. Why MoE keeps winning even when dense models look better on paper and why he'd rather run fungible capacity at 95% than specialized chips at 60%. We also talk about quantization limits, where RL efficiency has to go next, and his case that AI is still <em>under</em>-hyped. We also get into cross-region training, sparse autoencoders and why interpretability hasn't taken off in open source, whether open models can close the gap, and a frank read on Anthropic's go-to-market.</p><div><hr></div><p><strong>Timeline</strong></p><ul><li><p>00:00 &#8212; Intro: the part of AI nobody talks about</p></li><li><p>01:20 &#8212; What "infrastructure for AI" actually means: the layers, from GPUs up to routing</p></li><li><p>02:59 &#8212; Why not just buy your own GPUs and do it yourself?</p></li><li><p>05:17 &#8212; The scale Fireworks runs at</p></li><li><p>06:35 &#8212; Hardware inflation, GPU costs, and the real risk hiding in commit duration</p></li><li><p>10:14 &#8212; Nvidia vs AMD vs TPUs, and why power is the bottleneck</p></li><li><p>11:57 &#8212; Mixing GPU types and generations; fungibility vs. specialization</p></li><li><p>14:22 &#8212; Once you have the GPUs, what's the next layer to build?</p></li><li><p>17:04 &#8212; Dense vs. MoE, and why the hardware picks the winner</p></li><li><p>21:07 &#8212; Quantization: is FP4 the floor? TurboQuant and INT vs. FP</p></li><li><p>24:28 &#8212; How tied are the algorithms to the hardware?</p></li><li><p>25:12 &#8212; DeepSeek, DeepGEMM, and next-token prediction as reconstruction loss</p></li><li><p>28:50 &#8212; Why RL is still wildly inefficient compared to pre-training</p></li><li><p>30:08 &#8212; Speculative decoding, AI-generated kernels, and auto-research</p></li><li><p>34:00 &#8212; The AGI question: why text gets automated but vision may stay expensive</p></li><li><p>37:07 &#8212; Hype check: why Benny thinks AI is still under-hyped</p></li><li><p>41:28 &#8212; Training vs. inference at the infrastructure level</p></li><li><p>44:12 &#8212; Scaling across data centers: cross-region training with Cursor</p></li><li><p>45:40 &#8212; Sparse autoencoders, interpretability, and why open source is human-constrained</p></li><li><p>49:04 &#8212; Will open models catch up &#8212; on quality and on compute?</p></li><li><p>51:41 &#8212; Are we plateauing? Opus 4.7 vs. 4.6 and the coming data wars</p></li><li><p>54:41 &#8212; Physical limits, HBM, and whether chips keep getting faster</p></li><li><p>58:17 &#8212; The belief about inference everyone gets wrong</p></li><li><p>59:31 &#8212; Anthropic, mythos, and a frank take on go-to-market</p></li><li><p>1:04:41 &#8212; Wrap-up</p><div><hr></div></li></ul><p>Music:</p><ul><li><p>"Kid Kodi" - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul><p>About: The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[Broken Peer Review, AI, and Worms — with Oded Rechavi]]></title><description><![CDATA[Oded Rechavi is a biologist at Tel Aviv University and the co-founder of QED, a company building AI to review scientific work.]]></description><link>https://www.the-information-bottleneck.com/p/broken-peer-review-ai-and-worms-with-dd6</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/broken-peer-review-ai-and-worms-with-dd6</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Sun, 21 Jun 2026 03:53:01 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/203342162/b2619814df4ecbf569293268a3543914.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-B_i0IaFjb-A" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;B_i0IaFjb-A&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/B_i0IaFjb-A?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Oded Rechavi is a biologist at Tel Aviv University and the co-founder of QED, a company building AI to review scientific work. He's also spent years studying worms.</p><p>We start with what's wrong with peer review and grant funding: why it takes years to publish, why reviewers are often your own competitors, and why the whole thing is locked to an economic model that rewards publishing more papers, not better ones. Oded explains why he doesn't call QED "peer review" at all, and what it would take to actually validate science instead of just stamping it.</p><p>Then we get into the biology. C. elegans has exactly 959 cells, every one of them named, and a fully mapped brain. Oded's lab studies how a worm's experiences get passed to its offspring through RNA rather than DNA &#8212; meaning what happens to a worm in its lifetime can change its descendants. We also talk about using ancient DNA to reassemble the Dead Sea Scrolls, what AI can and can't do for biology, and why he wants to build an "Ironman suit" for researchers rather than replace them.</p><div><hr></div><p>00:00 Intro</p><p>01:35 Why scientific publishing is broken</p><p>04:02 Years to publish, and what it costs science</p><p>07:20 Bad reviewers, conflicts of interest, and the money</p><p>10:47 Why preprints don't fix it</p><p>15:37 How AI conferences handle review</p><p>22:07 Conferences vs. journals &#8212; does slow review help?</p><p>25:22 Building QED: review, not peer review</p><p>30:02 Tracking a paper from idea to submission</p><p>33:11 What writing a grant actually involves</p><p>35:00 The ERC reviewer crisis</p><p>37:06 Tailoring feedback to your field</p><p>41:48 Switching to biology</p><p>44:30 Every cell has a name: inside C. elegans</p><p>46:28 Inheritance without DNA</p><p>48:16 What the worm "thinks" changes its offspring</p><p>51:58 Reassembling the Dead Sea Scrolls with ancient DNA</p><p>56:07 Psychedelics and worms</p><p>58:36 Can AI run the research itself?</p><p>1:04:49 Automation vs. validation</p><p>1:07:12 The origin of life</p><p>1:08:49 Why people reject AI-written work</p><p>1:16:18 Will humans still have a role?</p><p>1:17:39 Wrap-up</p><div><hr></div><p>Music:</p><ul><li><p>"Kid Kodi" - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li></ul><div><hr></div><p>About: The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[Will AI Take Our Jobs? With Alex Imas (Google/University of Chicago)]]></title><description><![CDATA[Will AI take our jobs?]]></description><link>https://www.the-information-bottleneck.com/p/will-ai-take-our-jobs-with-alex-imas-420</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/will-ai-take-our-jobs-with-alex-imas-420</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Tue, 16 Jun 2026 14:49:38 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/203342163/c372b0468f4788fd59c1075d5bb02ae4.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-6Z76VRxp98I" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;6Z76VRxp98I&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/6Z76VRxp98I?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Will AI take our jobs? We put the question to Alex Imas, the new Director of AGI Economics at Google DeepMind and a professor at Chicago Booth, whose entire job now is studying how frontier AI reshapes the economy. His short answer: probably some of them, but the popular story is mostly wrong about which jobs and how fast.</p><p>Alex makes the case that a job is a bundle of tasks, not a single thing AI either does or doesn't do, and that the number of people who should actually care about is how much consumer demand responds to falling prices. Get that wrong and you predict mass layoffs. Get it right and you sometimes predict more hiring. We get into why the automation panic is two centuries old, why he thinks blue-collar work is in more danger than white-collar, and why the people already winning are the ones adopting AI fastest.</p><p>We also cover the AGI versus ASI distinction and why it changes everything for the economy, what happens when there's no moat and open models stay six to eight months behind, the three-tier pricing future he sees coming after the 2026 compute crunch, and what any of this means if you're deciding whether to send your kids to college.</p><ul><li><p>The episode was recorded before Alex joined Google</p></li></ul><div><hr></div><p><strong>Timestamps</strong></p><p>00:00 Meeting Alex Imas</p><p>00:44 Will AI take our jobs?</p><p>03:35 Is this an AI question or an economics question?</p><p>06:18 The economy is already behind the AI we have</p><p>07:43 Why AI adoption is K-shaped</p><p>12:51 Was Andrew Yang right?</p><p>13:45 The automation panic is 200 years old</p><p>16:46 Dario's six-month claim, and why we don't see it yet</p><p>17:22 A job is not a task</p><p>22:38 The three numbers that actually predict the labor market</p><p>22:42 The chess engine analogy and the centaur phase</p><p>25:45 Recursive self-improvement and the hamburger problem</p><p>30:06 Should AI labs be the ones answering alignment questions?</p><p>31:17 The "invisible hand wave" and why nobody wants fully autonomous AI</p><p>33:27 AGI vs ASI, and why the difference is everything</p><p>35:28 Commodities vs relational goods</p><p>41:14 Star Trek, replicators, and predicting with sci-fi</p><p>45:20 Inequality and the Upper West Side VCs</p><p>46:21 Your money manager was automated in the 1960s</p><p>50:47 Are OpenAI and Anthropic overvalued? The moat problem</p><p>54:29 What has to be true for the losses to make sense</p><p>55:43 Cognitive atrophy and monopoly fears</p><p>57:00 The 2026 compute crunch and the three-tier pricing future</p><p>1:01:52 The Apple vs Android analogy</p><p>1:03:54 A rich-country perspective</p><p>1:04:16 Protecting the skills that actually matter</p><p>1:07:02 Will not using AI become a status symbol?</p><p>1:08:53 Does capitalism even survive?</p><p>1:13:44 Redistribution becomes the political battleground</p><p>1:18:16 Blue collar vs white collar: who's really at risk</p><p>1:21:18 Advice for parents in an AI world</p><p>1:22:43 Saving for retirement when the Valley says don't</p><p>1:25:06 Will non-elite colleges survive?</p><div><hr></div><p>Music:</p><ul><li><p>"Kid Kodi" -Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p><div><hr></div></li></ul><p>About: The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[Why AI Benchmarks Are Lying to You - with Wenhu Chen (Meta/University of Waterloo)]]></title><description><![CDATA[In this episode, we sit down with Wenhu Chen, research scientist at Meta MSL, assistant professor at the University of Waterloo, and the person behind MMLU-Pro and MMMU.]]></description><link>https://www.the-information-bottleneck.com/p/why-ai-benchmarks-are-lying-to-you-667</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/why-ai-benchmarks-are-lying-to-you-667</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Sat, 13 Jun 2026 20:05:34 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/203342164/5e42ebd48e6aa4977d0c1ce4b7ed9340.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-rB4pvsm2AkA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;rB4pvsm2AkA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/rB4pvsm2AkA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p><strong>I</strong>n this episode, we sit down with <strong>Wenhu Chen,</strong> research scientist at Meta MSL, assistant professor at the University of Waterloo, and the person behind MMLU-Pro and MMMU. If you've read a frontier model release in the last two years, you've seen his benchmarks. That makes him one of the best people to answer the question everyone dances around: when a model jumps from 40% to 90% on your benchmark, how much of that is real? In this episode, we dig into why benchmarks have become the loss function of the entire field - design a bad one, and thousands of brilliant researchers will spend months hill-climbing in the wrong direction. Wenhu is surprisingly candid about the limits of his own creations: contamination is everywhere, saturation turns frontier benchmarks into unit tests, and popular alternatives, such as LM Arena, mostly measure tone and length rather than capability. His answer is to evaluate models where they've never been: private codebases, hospital data, and the messy, live internet.</p><p>We also talk about ClawBench, his new benchmark that deploys agents to over 140 real production websites to do things people actually want done, such, such as ordering food, booking tickets, and applying for jobs. The best model in the world completes about a third of these tasks. We unpack why: bot detection, models that refuse to click "pay," agents that give up the moment an environment doesn't match their training, and harnesses that can swing results by 20% without changing the model at all.</p><p>Along the way, we cover the overlooked science of evaluating pre-training, data flywheels, and synthetic environments for agent training, and whether RL teaches models to reason or just surfaces what's already there. We close with Wenhu's predictions: exploration and adaptability will improve rapidly, but security will become the field's hardest problem as agents gain real permissions in the real world.</p><div><hr></div><p><strong>Timestamps</strong></p><p>00:00 &#8211; Intro<br>00:55 &#8211; What good evaluation means, and how it's changed since the early GPT days<br>03:35 &#8211; Benchmarks as the field's loss function<br>05:50 &#8211; Contamination: the problem nobody fully solves<br>08:08 &#8211; MMLU-Pro scores: real progress or training on the test set?<br>11:05 &#8211; Can you measure creativity?<br>12:34 &#8211; Why human judges and arenas are unreliable &#8212; and what to use instead<br>19:22 &#8211; What a good benchmark actually looks like<br>22:34 &#8211; Chain of thought: signal or scratchpad?<br>26:01 &#8211; Auto-research and hill-climbing agents<br>28:52 &#8211; Harnesses: 20% swings without touching the model<br>32:28 &#8211; Safety, model release, and an "FDA for models"<br>36:53 &#8211; The overlooked science of pre-training evaluation<br>43:49 &#8211; Designing pre-training benchmarks when one run costs a billion dollars<br>49:45 &#8211; ClawBench: agents on 140+ live websites, and why the best model gets 33%<br>54:42 &#8211; How MMLU-Pro and MMMU-Pro were born from public complaints<br>59:16 &#8211; Pixel agents vs. APIs: will MCP kill computer use?<br>1:02:11 &#8211; Training agents: data flywheels and synthetic environments<br>1:05:43 &#8211; SFT vs. RL, and does RL teach reasoning or reveal it?<br>1:09:21 &#8211; What gets solved next year &#8212; and what doesn't<br>1:14:32 &#8211; Undervalued ideas, and what's next for ClawBench</p><div><hr></div><p>Music:</p><ul><li><p>"Kid Kodi" - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p><div><hr></div><p>About: The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Jürgen Schmidhuber - Part 2: JEPA, the Road to AGI, and Who Really Invented Modern AI]]></title><description><![CDATA[In the second half of our conversation with J&#252;rgen Schmidhuber, we focus on the key ideas he's pursued since the early 1990s and discuss why he believes these concepts are only now being rediscovered.]]></description><link>https://www.the-information-bottleneck.com/p/jurgen-schmidhuber-part-2-jepa-the-769</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/jurgen-schmidhuber-part-2-jepa-the-769</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Sun, 07 Jun 2026 18:13:28 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/203342165/c0e6561c04f116bf55fb92d44b357174.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-_03y-bf6bds" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;_03y-bf6bds&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/_03y-bf6bds?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>In the second half of our conversation with J&#252;rgen Schmidhuber, we focus on the key ideas he's pursued since the early 1990s and discuss why he believes these concepts are only now being rediscovered.</p><p>We start with JEPA. J&#252;rgen argues that the method LeCun named in 2022 is the same family he published in 1992 as Predictability Maximization. From there he traces the adversarial lineage back further still, to his 1990 world-model paper and 1991 Predictability Minimization &nbsp;- &nbsp;the curiosity-driven minimax games he sees as the real origins of GANs.</p><p>We also talk about why these ideas took thirty years to land, why today's trillion-dollar data-center buildout is driven by AGI fear, and why he thinks Apple may come out ahead.</p><p>The back half turns to what he sees as the real frontier: physical AI. Today's systems are superhuman behind the screen but helpless at a leaky pipe, and until a robot can use human tools, there's no AGI. He discusses self-replicating, self-improving machines as "a new kind of life," reframes continual learning and test-time training as ideas from his 1991 fast-weight work, and detours through Solomonoff's universal prior, Hutter's AIXI, and the G&#246;del machine.</p><p>We close on the subject J&#252;rgen is famous for: scientific credit. He makes his case for rigorous attribution, casts himself as a "speaker for the dead" championing forgotten pioneers like Ivakhnenko, and reflects candidly on whether the fights are personal.</p><div><hr></div><p><strong>Timeline</strong></p><p>00:30 &#8212; What JEPA is, and the 1992 Predictability Maximization story</p><p>04:54 &#8212; Implementing PMAX: autoencoders, Siamese networks, Infomax</p><p>09:10 &#8212; Predictability Minimization, factorial codes, and the roots of GANs</p><p>16:00 &#8212; Why it took 30 years: the economics of compute</p><p>20:52 &#8212; Data, the web, and 1990 as the origin point</p><p>23:09 &#8212; Hardware inflation, the trillion-dollar buildout, and the coming crash</p><p>34:05 &#8212; Physical AI: the plumber problem and self-replicating machines</p><p>41:14 &#8212; Which 90s ideas are being scaled right now</p><p>45:26 &#8212; Continual learning and test-time training as "old hats"</p><p>55:19 &#8212; Measuring intelligence: Solomonoff, AIXI, and the G&#246;del machine</p><p>1:05:26 &#8212; Self-replication and von Neumann</p><p>1:09:51 &#8212; Will he see AGI in his lifetime?</p><p>1:10:42 &#8212; Credit, integrity, and being a "speaker for the dead"</p><div><hr></div><p>Music:</p><ul><li><p>"Kid Kodi" - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li><li><p>"Palms Down" - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li><li><p>Changes: trimmed</p></li><li><div><hr></div></li></ul><p>About: The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[Jürgen Schmidhuber - World Models, RL, and the Year that changed AI (Part 1)]]></title><description><![CDATA[In this episode, we host J&#252;rgen Schmidhuber - the man, the legend, one of the godfathers of modern AI.]]></description><link>https://www.the-information-bottleneck.com/p/jurgen-schmidhuber-world-models-rl-88d</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/jurgen-schmidhuber-world-models-rl-88d</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Thu, 04 Jun 2026 12:59:25 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/203342166/158b5efd5da4499609dad961c04b7fb9.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div id="youtube2-UUq4ixTmye8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;UUq4ixTmye8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/UUq4ixTmye8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>In this episode, we host J&#252;rgen Schmidhuber - the man, the legend, one of the godfathers of modern AI. His lab worked out many ideas behind today&#8217;s systems (LSTM, world models, artificial curiosity, Transformer variants, and even GAN-style setups) decades before they became fashionable, and he&#8217;s just as well known for making sure people remember who did what first. This is the first of two conversations with him.</p><p>We go back to his lab in the early 90s and ask how one small group came up with so many of the ideas that are now being scaled to a thousand billion dollars, back when compute was ten million times more expensive. A lot of the episode comes down to one distinction he keeps making: prediction vs. decision-making. His take is that LLMs are very good prediction machines that imitate the web, but that&#8217;s only half the problem. To actually act in the world, you need a controller that uses a world model to plan. He talks about his 1990 work on world models and artificial curiosity, where the controller gets rewarded for running experiments that improve its own model (an adversarial setup years before GANs), why planning millisecond by millisecond doesn&#8217;t scale, and why you need sub-goals instead.</p><p>We also talk about compression as the core of understanding, from falling apples to Kepler to Einstein, and why we still don&#8217;t have a robot that can do what a plumber does, even though the AI behind the screen keeps getting better. Then the conversation moves to credit assignment: how &#8220;to Schmidhuber&#8221; became a verb, what he thinks is broken about the award system, and a long exchange on PMAX vs. JEPA. He ends on the real origins of deep learning and a prediction about self-replicating machines in space.</p><div><hr></div><p><strong>Timeline</strong></p><p>00:00 &nbsp;Intro<br>00:55 &nbsp;1991 in Munich, and why that lab mattered<br>02:38 &nbsp;"I'm not very smart" &nbsp;and why compute getting 10&#215; cheaper every 5 years changed everything<br>04:25 &nbsp;Chess as an AI proxy<br>08:27 &nbsp;Artificial curiosity in the 90s vs. today's RL exploration<br>09:10 &nbsp;Why RL is harder than supervised learning<br>20:48 &nbsp;Coding agents vs. robots, and how a baby learns its own hands<br>26:20 &nbsp;Compression as understanding<br>33:40 &nbsp;What's actually missing on the road to AGI<br>37:30 &nbsp;Why millisecond-by-millisecond planning is stupid<br>47:44 &nbsp;Convergence to LLMs, GPUs, and how far we still are from the Bremermann limit<br>51:49 &nbsp;Unsupervised learning, factorial codes, and predictability minimization<br>58:12 &nbsp;Credit assignment: the fights with LeCun and the Nobel critique<br>1:02:13 &nbsp;On his last name becoming a verb<br>1:05:17 &nbsp;The award system's missing peer review<br>1:07:03 &nbsp;Closed labs and the decline of open research<br>1:13:23 &nbsp;Audience questions<br>1:34:02 &nbsp;Closing: who really invented deep learning?</p><div><hr></div><p>Music:</p><ul><li><p>"Kid Kodi" - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li><li><p>"Palms Down" - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li><li><p>Changes: trimmed</p><div><hr></div></li></ul><p>About: The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p>]]></content:encoded></item><item><title><![CDATA[AI for Science and the Thermodynamics of Generative AI - with Max Welling (UvA, CuspAI)]]></title><description><![CDATA[In this episode, we sit with Max Welling, Professor of Machine Learning at the University of Amsterdam, co-founder and CTO of CuspAI, and a foundational figure behind variational autoencoders (VAEs), equivariant networks, and Bayesian deep learning.]]></description><link>https://www.the-information-bottleneck.com/p/ai-for-science-and-the-thermodynamics-4bc</link><guid isPermaLink="false">https://www.the-information-bottleneck.com/p/ai-for-science-and-the-thermodynamics-4bc</guid><dc:creator><![CDATA[Ravid Shwartz Ziv]]></dc:creator><pubDate>Fri, 29 May 2026 03:58:30 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/203342167/bb85f505148307f27bc503c06a73c8be.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p></p><p>In this episode, we sit with Max Welling, Professor of Machine Learning at the University of Amsterdam, co-founder and CTO of CuspAI, and a foundational figure behind variational autoencoders (VAEs), equivariant networks, and Bayesian deep learning. We talk about AI for science, the physics underneath generative models, and what's still missing on the road to real intelligence.</p><p>Max starts with what impresses him and what worries him about the LLM era, then makes the case that the next leaps will come from physical AI and from science itself. We dig into how machine learning actually works in the lab, world models and whether priors like geometry and symmetry should be built in or simply learned, and whether transformers will still rule a decade from now. At the end, we talk about CuspAI's climate mission, AI risk and regulation, Max&#8217;s new book, and where neuroscience might inspire the next wave of ML.</p><div><hr></div><p><strong>Timeline</strong></p><ul><li><p><strong>00:00</strong> &#8212; Intro</p></li><li><p><strong>00:47</strong> &#8212; Are we happy with the LLM era?</p></li><li><p><strong>03:14</strong> &#8212; Embodiment and physical AI</p></li><li><p><strong>08:05</strong> &#8212; Does "AGI" even matter as a term?</p></li><li><p><strong>11:34</strong> &#8212; Verifiers, RL, and why math/coding are tractable</p></li><li><p><strong>13:17</strong> &#8212; What actually shifted to make materials discovery work</p></li><li><p><strong>14:42</strong> &#8212; From molecules to biology and wet labs</p></li><li><p><strong>16:26</strong> &#8212; Working with real labs: timescales, friction, and the "Mira" agent</p></li><li><p><strong>20:29</strong> &#8212; Balancing simulators vs. experiments: the exploration&#8211;exploitation trade-off</p></li><li><p><strong>23:44</strong> &#8212; Active learning for experimental design</p></li><li><p><strong>24:23</strong> &#8212; Why active learning hasn't been central to LLMs</p></li><li><p><strong>25:24</strong> &#8212; A general loop for ML-for-science across domains</p></li><li><p><strong>27:10</strong> &#8212; Foundation models for chemistry: a "mother ship" plus a zoo of fine-tuned models</p></li><li><p><strong>30:04</strong> &#8212; Quantum mechanics, interpretation, and AI as a creative theorist</p></li><li><p><strong>31:54</strong> &#8212; World models and Yann LeCun's view; priors vs. learning</p></li><li><p><strong>34:57</strong> &#8212; Should world knowledge be explicit? (responding to Stefano Ermon)</p></li><li><p><strong>36:41</strong> &#8212; Vision: equivariance vs. transformers, and the role of optimization</p></li><li><p><strong>40:32</strong> &#8212; Best model for molecular properties in 10 years? Will transformers survive?</p></li><li><p><strong>43:16</strong> &#8212; CuspAI's climate focus and what motivated it</p></li><li><p><strong>47:10</strong> &#8212; One platform for every material class &#8212; what transfers and what doesn't</p></li><li><p><strong>48:42</strong> &#8212; Where does the risk of human extinction really come from?</p></li><li><p><strong>51:06</strong> &#8212; The "pause AI" debate and the arms-race reality</p></li><li><p><strong>52:40</strong> &#8212; Regulating powerful models: government vs. self-regulation</p></li><li><p><strong>55:16</strong> &#8212; Who should design AI regulation?</p></li><li><p><strong>56:29</strong> &#8212; The new book</p></li><li><p><strong>1:00:31</strong> &#8212; Compression, the information bottleneck, and renormalization</p></li><li><p><strong>1:03:30</strong> &#8212; The role of foundational principles in modern AI</p></li><li><p><strong>1:04:06</strong> &#8212; Waves in computing, the brain, and the next wave of innovation</p></li><li><p><strong>1:07:11</strong> &#8212; Neuroscience and ML: are we in a better position now?</p></li><li><p><strong>1:09:17</strong> &#8212; Conferences, the ICLR keynote, and finding the right people</p><div><hr></div><p>Music:</p><ul><li><p>"Kid Kodi" - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li><li><p>"Palms Down" - Blue Dot Sessions - via Free Music Archive - CC BY-NC 4.0.</p></li><li><p>Changes: trimmed</p></li></ul><div><hr></div><p>About: The Information Bottleneck is hosted by Ravid Shwartz-Ziv and Allen Roush, featuring in-depth conversations with leading AI researchers about the ideas shaping the future of machine learning.</p></li></ul>]]></content:encoded></item></channel></rss>