Hugging Face Daily Papers · · 6 min read

The Other Half of the Memory Wall: Serving 35B MoEs from SSD with Trained Routing Prediction

Mirrored from Hugging Face Daily Papers for archival readability. Support the source by reading on the original site.

Mixture-of-experts (MoE) inference on consumer hardware is bounded by weight memory: a 35B-class model is 19.5GB at 4-bit, and sparsity shrinks the compute per token, not the bytes that must be held. Naive offloading to SSD does not help on its own, because layer N+1's experts must be chosen before layer N's output exists, so the reads cannot start early enough to hide behind compute. We present Edge0, a streaming MoE inference engine that closes the gap with a prerouter: a per-layer head predicts the next layer's routing one token ahead, and the prediction is consumed as the routing itself, so the staged expert set equals the routed set and nothing is dropped. An unmerged recovery LoRA, trained on the student path, pays back the quality lost to int4 quantization and routing replacement. On a single 24GB machine, Edge0 serves a 35B MoE at 20tok/s inside 3GiB of peak active memory, within a few points of its fp16 teacher on average across five public benchmarks. An 8B tier runs on the same framework, and the framework, checkpoints, and adapters are open source.</p>\n","updatedAt":"2026-09-17T10:31:58.514Z","author":{"_id":"63ec492b6ef3ce22b88a40e8","avatarUrl":"/avatars/e1ae41d144302aa64dd2f7e244d4511d.svg","fullname":"yumu","name":"bupalinyu","type":"user","isPro":false,"isHf":false,"isHfAdmin":false,"isMod":false,"followerCount":6,"isUserFollowing":false}},"numEdits":0,"identifiedLanguage":{"language":"en","probability":0.9189943075180054},"editors":["bupalinyu"],"editorAvatarUrls":["/avatars/e1ae41d144302aa64dd2f7e244d4511d.svg"],"reactions":[],"isReport":false}},{"id":"6aabd8f8f10310f5c4ac8345","author":{"_id":"658412f93a84a40185adaf37","avatarUrl":"https://cdn-avatars.huggingface.co/v1/production/uploads/658412f93a84a40185adaf37/FKXH7e1jj09KO1v-B5sER.jpeg","fullname":"Aamer Mihaysi","name":"O96a","type":"user","isPro":false,"isHf":false,"isHfAdmin":false,"isMod":false,"followerCount":1,"isUserFollowing":false},"createdAt":"2026-09-17T12:11:36.000Z","type":"comment","data":{"edited":false,"hidden":false,"latest":{"raw":"Does a wrong prediction stall the decode to fetch the right experts, or push forward with the wrong ones and eat the quality hit? That's the whole game with one-token-ahead routing prediction. If it's the latter, I want the accuracy curve, not the average — the tail. One bad prediction mid-generation silently degrades output while your latency numbers still look fine. And on a consumer box, a wrong SSD fetch can cost more than the prediction saved. What's the per-layer accuracy, and what does the latency distribution actually look like?","html":"<p>Does a wrong prediction stall the decode to fetch the right experts, or push forward with the wrong ones and eat the quality hit? That's the whole game with one-token-ahead routing prediction. If it's the latter, I want the accuracy curve, not the average — the tail. One bad prediction mid-generation silently degrades output while your latency numbers still look fine. And on a consumer box, a wrong SSD fetch can cost more than the prediction saved. What's the per-layer accuracy, and what does the latency distribution actually look like?</p>\n","updatedAt":"2026-09-17T12:11:36.787Z","author":{"_id":"658412f93a84a40185adaf37","avatarUrl":"https://cdn-avatars.huggingface.co/v1/production/uploads/658412f93a84a40185adaf37/FKXH7e1jj09KO1v-B5sER.jpeg","fullname":"Aamer Mihaysi","name":"O96a","type":"user","isPro":false,"isHf":false,"isHfAdmin":false,"isMod":false,"followerCount":1,"isUserFollowing":false}},"numEdits":0,"identifiedLanguage":{"language":"en","probability":0.9126590490341187},"editors":["O96a"],"editorAvatarUrls":["https://cdn-avatars.huggingface.co/v1/production/uploads/658412f93a84a40185adaf37/FKXH7e1jj09KO1v-B5sER.jpeg"],"reactions":[],"isReport":false},"replies":[{"id":"6aabe47e0e100a969807e432","author":{"_id":"63ec492b6ef3ce22b88a40e8","avatarUrl":"/avatars/e1ae41d144302aa64dd2f7e244d4511d.svg","fullname":"yumu","name":"bupalinyu","type":"user","isPro":false,"isHf":false,"isHfAdmin":false,"isMod":false,"followerCount":6,"isUserFollowing":false},"createdAt":"2026-09-17T13:00:46.000Z","type":"comment","data":{"edited":true,"hidden":false,"latest":{"raw":"we use prediction result as routing, so it is 100% accuracy.","html":"<p>we use prediction result as routing, so it is 100% accuracy.</p>\n","updatedAt":"2026-09-17T13:01:03.516Z","author":{"_id":"63ec492b6ef3ce22b88a40e8","avatarUrl":"/avatars/e1ae41d144302aa64dd2f7e244d4511d.svg","fullname":"yumu","name":"bupalinyu","type":"user","isPro":false,"isHf":false,"isHfAdmin":false,"isMod":false,"followerCount":6,"isUserFollowing":false}},"numEdits":1,"identifiedLanguage":{"language":"en","probability":0.8359800577163696},"editors":["bupalinyu"],"editorAvatarUrls":["/avatars/e1ae41d144302aa64dd2f7e244d4511d.svg"],"reactions":[],"isReport":false,"parentCommentId":"6aabd8f8f10310f5c4ac8345"}}]}],"primaryEmailConfirmed":false,"paper":{"id":"2609.18063","authors":[{"_id":"6aab6e211d9cc4dec796250c","user":{"_id":"63ec492b6ef3ce22b88a40e8","avatarUrl":"/avatars/e1ae41d144302aa64dd2f7e244d4511d.svg","isPro":false,"fullname":"yumu","user":"bupalinyu","type":"user","name":"bupalinyu"},"name":"Yu Lin","status":"claimed_verified","statusLastChangedAt":"2026-09-17T09:09:45.608Z","hidden":false},{"_id":"6aab6e211d9cc4dec796250d","name":"Yiming Wang","hidden":false},{"_id":"6aab6e211d9cc4dec796250e","name":"Runyuan Cai","hidden":false},{"_id":"6aab6e211d9cc4dec796250f","name":"Hanze Liu","hidden":false},{"_id":"6aab6e211d9cc4dec7962510","name":"Xiaodong Zeng","hidden":false}],"mediaUrls":["https://cdn-uploads.huggingface.co/production/uploads/63ec492b6ef3ce22b88a40e8/rC6RhuvirSlar0MGZ-qJB.mp4"],"publishedAt":"2026-09-16T00:00:00.000Z","submittedOnDailyAt":"2026-09-17T00:00:00.000Z","title":"The Other Half of the Memory Wall: Serving 35B MoEs from SSD with Trained Routing Prediction","submittedOnDailyBy":{"_id":"63ec492b6ef3ce22b88a40e8","avatarUrl":"/avatars/e1ae41d144302aa64dd2f7e244d4511d.svg","isPro":false,"fullname":"yumu","user":"bupalinyu","type":"user","name":"bupalinyu"},"summary":"Mixture-of-experts (MoE) inference on consumer hardware is bounded by weight memory: a 35B-class model is 19.5GB at 4-bit, and sparsity shrinks the compute per token, not the bytes that must be held. Naive offloading to SSD does not help on its own, because layer N+1's experts must be chosen before layer N's output exists, so the reads cannot start early enough to hide behind compute. We present Edge0, a streaming MoE inference engine that closes the gap with a prerouter: a per-layer head predicts the next layer's routing one token ahead, and the prediction is consumed as the routing itself, so the staged expert set equals the routed set and nothing is dropped. An unmerged recovery LoRA, trained on the student path, pays back the quality lost to int4 quantization and routing replacement. On a single 24GB machine, Edge0\n serves a 35B MoE at 20tok/s inside 3GiB of peak active memory, within a few points of its fp16 teacher on average across five public benchmarks. An 8B tier runs on the same framework, and the framework, checkpoints, and adapters are open source.","upvotes":7,"discussionId":"6aab6e211d9cc4dec7962511","githubRepo":"https://github.com/Edge0-AI/edge0","githubRepoAddedBy":"user","githubStars":1858,"organization":{"_id":"6a9a75862d11e1c1a13dec37","name":"Edge0","fullname":"Edge0","avatar":"https://cdn-avatars.huggingface.co/v1/production/uploads/64361bcaf81a16e74367d2e2/D5QI700pnaujz5PeWE6MX.jpeg"}},"canReadDatabase":false,"canManagePapers":false,"canSubmit":false,"hasHfLevelAccess":false,"upvoted":false,"upvoters":[{"_id":"63ec492b6ef3ce22b88a40e8","avatarUrl":"/avatars/e1ae41d144302aa64dd2f7e244d4511d.svg","isPro":false,"fullname":"yumu","user":"bupalinyu","type":"user"},{"_id":"652bdc9a6f88e29851b37108","avatarUrl":"https://cdn-avatars.huggingface.co/v1/production/uploads/noauth/329HTCMObu3OeJ8CiKbc0.jpeg","isPro":false,"fullname":"ꑭ 𝙰𝚖𝚊𝚛𝚘𝚜 𝙽𝚒𝚝𝚑𝚎 🇺🇦 ꑭ☀︎","user":"amarosnithe","type":"user"},{"_id":"63413355e5071b0c5cc91cda","avatarUrl":"https://cdn-avatars.huggingface.co/v1/production/uploads/63413355e5071b0c5cc91cda/P5if_w7mXfPGPq8QtALjF.png","isPro":false,"fullname":"cai","user":"chua","type":"user"},{"_id":"64361bcaf81a16e74367d2e2","avatarUrl":"https://cdn-avatars.huggingface.co/v1/production/uploads/64361bcaf81a16e74367d2e2/N4pdqBd4DqIx71t8IWaWD.png","isPro":false,"fullname":"wanglamao","user":"wanglamao","type":"user"},{"_id":"620783f24e28382272337ba4","avatarUrl":"https://cdn-avatars.huggingface.co/v1/production/uploads/620783f24e28382272337ba4/zkUveQPNiDfYjgGhuFErj.jpeg","isPro":false,"fullname":"GuoLiangTang","user":"Tommy930","type":"user"},{"_id":"6351e5bb3734c6e8a5c1bec1","avatarUrl":"/avatars/a784a51b369b197398575c3afbd5ceab.svg","isPro":false,"fullname":"Han-Bit Kang","user":"hbkang","type":"user"},{"_id":"62cd94c4aac2c91c95538fb9","avatarUrl":"/avatars/6ac1c7a07ff73364892bb5f2f2074e1b.svg","isPro":false,"fullname":"Lars Vagnes","user":"larsh0103","type":"user"}],"acceptLanguages":["en"],"dailyPaperRank":0,"organization":{"_id":"6a9a75862d11e1c1a13dec37","name":"Edge0","fullname":"Edge0","avatar":"https://cdn-avatars.huggingface.co/v1/production/uploads/64361bcaf81a16e74367d2e2/D5QI700pnaujz5PeWE6MX.jpeg"},"markdownContentUrl":"https://huggingface.co/buckets/huggingchat/papers-content/resolve/2609/2609.18063.md","query":{}}">
Papers
arxiv:2609.18063

The Other Half of the Memory Wall: Serving 35B MoEs from SSD with Trained Routing Prediction

Published on Sep 16
· Submitted by
yumu
on Sep 17
Authors:

Abstract

Mixture-of-experts (MoE) inference on consumer hardware is bounded by weight memory: a 35B-class model is 19.5GB at 4-bit, and sparsity shrinks the compute per token, not the bytes that must be held. Naive offloading to SSD does not help on its own, because layer N+1's experts must be chosen before layer N's output exists, so the reads cannot start early enough to hide behind compute. We present Edge0, a streaming MoE inference engine that closes the gap with a prerouter: a per-layer head predicts the next layer's routing one token ahead, and the prediction is consumed as the routing itself, so the staged expert set equals the routed set and nothing is dropped. An unmerged recovery LoRA, trained on the student path, pays back the quality lost to int4 quantization and routing replacement. On a single 24GB machine, Edge0 serves a 35B MoE at 20tok/s inside 3GiB of peak active memory, within a few points of its fp16 teacher on average across five public benchmarks. An 8B tier runs on the same framework, and the framework, checkpoints, and adapters are open source.

Community

Paper author Paper submitter about 4 hours ago

Mixture-of-experts (MoE) inference on consumer hardware is bounded by weight memory: a 35B-class model is 19.5GB at 4-bit, and sparsity shrinks the compute per token, not the bytes that must be held. Naive offloading to SSD does not help on its own, because layer N+1's experts must be chosen before layer N's output exists, so the reads cannot start early enough to hide behind compute. We present Edge0, a streaming MoE inference engine that closes the gap with a prerouter: a per-layer head predicts the next layer's routing one token ahead, and the prediction is consumed as the routing itself, so the staged expert set equals the routed set and nothing is dropped. An unmerged recovery LoRA, trained on the student path, pays back the quality lost to int4 quantization and routing replacement. On a single 24GB machine, Edge0 serves a 35B MoE at 20tok/s inside 3GiB of peak active memory, within a few points of its fp16 teacher on average across five public benchmarks. An 8B tier runs on the same framework, and the framework, checkpoints, and adapters are open source.

Does a wrong prediction stall the decode to fetch the right experts, or push forward with the wrong ones and eat the quality hit? That's the whole game with one-token-ahead routing prediction. If it's the latter, I want the accuracy curve, not the average — the tail. One bad prediction mid-generation silently degrades output while your latency numbers still look fine. And on a consumer box, a wrong SSD fetch can cost more than the prediction saved. What's the per-layer accuracy, and what does the latency distribution actually look like?

we use prediction result as routing, so it is 100% accuracy.

Upload images, audio, and videos by dragging in the text input, pasting, or clicking here.
Tap or paste here to upload images

· Sign up or log in to comment

Upvote
7

Get this paper in your agent:

hf papers read 2609.18063
Don't have the latest CLI?
curl -LsSf https://hf.co/cli/install.sh | bash

Models citing this paper

Datasets citing this paper

No dataset linking this paper

Cite arxiv.org/abs/2609.18063 in a dataset README.md to link it from this page.

Spaces citing this paper

Collections including this paper

No Collection including this paper

Add this paper to a collection to link it from this page.

Discussion (0)

Sign in to join the discussion. Free account, 30 seconds — email code or GitHub.

Sign in →

No comments yet. Sign in and be the first to say something.

More from Hugging Face Daily Papers