Repository navigation
Replies: 3 comments 7 replies
|
Updated for 0.7.3 |
|
Because of my maintenance capacity, a Sushi external engine sits a bit lower on my priority list right now. Each external engine is another path I have to keep working across oMLX releases, and Splash already takes a fair amount of that. It's not about the implementation itself. I'll keep #4572 open and see how people respond to this discussion before moving it forward. If more people ask for Sushi support here, I'll take that into account and move it up in priority. Feel free to pause rebasing #4572 for now. I don't want you spending your time keeping it up to date on every release while it's waiting, and it can be rebased once it moves forward. In the meantime Sushi has its own OpenAI compatible server, so these packs can be used with it directly. I appreciate you opening the discussion first and laying out the questions clearly, and the time you put into the integration. |
|
I would like to propose oMLX gets a single ExternalEngine base (process launch and watchdog, OpenAI streaming proxy, stats — the parts Splash already has) which allows any OpenAI-compatible server to be added with a small JSON file in ~/.omlx/external_engines/, either launched per model or attached to a server that's already running. So Splash keeps its own code on top of the shared base; engines like Sushi or my engine Ijah (EXL3 based) would then just become config files, with no engine-specific code in oMLX to maintain. I have this working locally on 0.7.3, with tests. Happy to open a small PR for just the base and the config files if you'd consider it. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Problem
Sushi packs (e.g.
beamster/Qwen3.8-Flash-Next-Sushi-4bpw) store routed experts as EXL3 trellis tensors, which mlx-lm/mlx-vlm can't load. oMLX fails withReceived N parameters not in modelon them.Proposal
Add Sushi as a second external engine next to Splash, reusing the same pattern: oMLX launches
sushi serveon a loopback port and forwards chat requests to its OpenAI-compatible API.SushiEnginesubclassesSplashEngine(streaming, process groups and stats are shared).expert_quant.format == "exl3"is routed to Sushi throughexternal_engine_id(), alongside the existing GGUF → Splash fallback. Other models can opt in withexternal_engine: "sushi".Tested to be more memory efficient: on an M5 Max 128 GB, Qwen3.8 Flash Next 4bpw runs with a 500k context at >40 tok/s using about 70% of memory.
Questions for you
~/.sushi/models, raiseiogpu.wired_limit_mbvia the macOS admin dialog). Keep them, make them default-off, or split them into a follow-up PR?Implementation: #4572
All reactions