Hacker Newsnew | past | comments | ask | show | jobs | submit | i386's commentslogin

Its an entire misunderstanding of how the layout system works.


Most people working at the top of these large organizations don’t know how to make anything net new anymore. They pushed all the people that do out when padding their nests.


exo is Mac only.


no it isn't


I’d love a bug report - we can get it working for you!


That isn’t true. llama RPC is incredibly slow but staged splits in skippy are orders of magnitude faster.


This was done on my home lab simulating 5ms latency and jitter between machines. Splits work quite well if you your nodes are over WAN at metro latency’s but not super fast on global WAN.

The idea is that you could take several machines without dedicated RDMA or NVLINK fabric and use them to serve a large model on hardware you own then share it with others.

I’m currently working on GLM 5.2 on my lab environment with around 10 tok/s on the same split.


What hardware (CPU/GPU/memory) and network was used for this? What quantization for GLM 5.2? How much tuning of the split was needed?


The lab features two Mac Studios: an Apple M3 Ultra (32 CPU cores, 80 GPU cores, 256 GB unified memory) and an Apple M1 Ultra (20 CPU cores, 48 GPU cores, 128 GB unified memory), both connected via 1Gbit Ethernet.

We use a customized Q2 quantization that preserves sensitive tensors at Q8.

To reduce compute time per layer, we are developing a custom GLM DSA Metal graph.

While we are not yet approaching MTP, we plan to port our existing MTP implementations from versions 4.7 and 5.1 to 5.2.

Since GLM's MTP acceptance rate is very high for a single predicted token, we are exploring token prediction techniques to widen the predicted tokens and utilize parallelism for verification.


Equivalent M3 machines no longer for sale from Apple (only up to 96 GB) but can be had on eBay for around $14,000 each


It's notable that they're so valuable because they feature 800Gbps of memory bandwidth. About twice what's available on the top end of M5, and exactly what makes llm inference fast.


> because they feature 800Gbps of memory bandwidth. About twice what's available on the top end of M5

Ouch, about half of the memory bandwidth of a dedicated GPU though :/ Running LLMs on Apple hardware still doesn't make any sense to me.


M5 max has 614GB/s, you mean the m4?


Oh, I was looking at every M5 except for the 40-core M5 Max. They have 460.


That sounds cool, but it's still pretty meaningless without information about what your home lab looks like. A few DGX Sparks wired up with their fancy super fast network is much different than a few laptops on wifi.


I’m one of the contributors to Mesh LLM and happy to answer any questions. I authored the skippy engine that allows you to split large models across nodes.


What is the incentive for me to join the public mesh? Do you have any fairness guarantees, e.g. if I contribute 1/8th of the VRAM required to run a particular model, do I get at least 1/16th of the inference share, or anything similar to this?


Great question! We’ve had a lot of discussions about the direction we want to take this, and how to best generate some kind of incentive / fairness reward.

And we’ve found ourselves hesitating on a direction because, at least for now, the primary use case in a useable env is private hosts you own in a mesh; which makes any sort of reward/ incentive structure somewhat unnecessary (for this setup).

When the public mesh becomes large enough and we get around to extending the existing “mesh governance” features is likely when we’ll add something like you’ve described.

For now, the public mesh is totally open with no restrictions or limitations.


Hey, this is a super cool project. It's great to see a lot of the IPFS stuff resurfacing again.

A few questions:

1.) How does this handle privacy? If you're distributing compute this way then all actors in the compute graph will also know the sequence being computed.

2.) Any safeguards against malicious actors poisoning model activations?


To be honest, both are very tough problems we don't have a good answer for yet. If that is something that concerns you, look into building a private mesh with trusted peers.


Thanks for answering, that makes sense. Also - your setup seems like it could greatly benefit from speculative decoding. Have you guys given any thought to how that might work in this system?

P.s. for #2, you can probably do something like RAFT-styled interleaved computation. But this could get tricky unless you commit to a sharding scheme that makes it easier.


This is super impressive, We have a lab with lots of different epycs and different models - to bring them together this way is amazing. Well done!


Thank you! AMD is a weak spot in our testing right now. If you’re willing to contribute or let us borrow some compute time, drop in on the Discord.


I have never really delved into kv cache implementation, do they run effectively separate caches per layer?

If so I can see it all dividing nicely, computation and data size wise and the only slowdown would be in search layer waiting for it's turn. If you pipelined it you could run multiple queries.

Is anyone doing best-of-n with a n stage pipeline running each query offset by one?


Each stage has its own KV for the layers it hosts. You are on the money there, when one stage is waiting it's free for more parallelism. I am planning on exploiting this for more token verification through ngram spec decoding.


This is surprisingly similar to what I'm trying to build (at least at the network level), down to the use of iroh. I have not attempted model splitting though, and the angle is slightly different. Major props for this, it seems like a great project. The more we can push local inference, the better for everyone. Interested to see if there's collaboration opportunities. https://github.com/dsegovia90/cocompute


> A model gets partitioned by layer ranges into stages: layers 0 to 15 on one node, 16 to 31 on the next, and so on down the pipeline.

Numbers in this example are arbitrary. How does it actually work? What if the model’s number of layers is 33, or 34?

Is there a document explaining all constraints of this implementation?


It depends on the size / structure of the model… but generally you can check out the MeshLLM huggingface org for pre-computed model splits.

We have a job that will take popular models, and dice them up and post on HF.

When that specific model is served, the layers will be shovelled around the available nodes on the mesh.


Do you have instructions how to dice models myself? Every model in your org is a measly 4bit. I kinda hoped it is as simple as taking a GGUF and throwing at Mesh LLM but I fear it's not going to be that straightforward :)


Is it a fully custom inference engine or are you reusing parts of an existing stack? (llama.CPP, vLLM, etc.)


Our skippy library is a patch queue on top of llama that allows us to access internal information, such as activations, and filter tensors on model load.


This really should be in the blogpost. It’s both useful info and basic courtesy to be explicit about which underlying inferencing engine you are using


We didnt post it, we use a library (iroh) who featured us - so we are here answering any Q’s instead :)


The obvious burning question is how performance looks over different network conditions on some standard models. Have you done much benchmarking? Is it mainly latency affected or is overall throughput less than the capacity of the GPUs due to being distributed?


Yeah, this is one area we’re struggling with due to the sheer volume of variations and conditions, but I’ve been thinking of collecting some real-time statistics around latency, prefill/decode, and model distribution… that way we can update some kind of live + aggregated performance numbers for interested parties.


I wonder how security is done in this engine, since it's accepting input from anyone. llama.cpp's RPC layer seems to says that you shouldn't run it in public (I assume because it is lower level and may result in RCE on your GPU)


Curious about: does it have fault tolerance if one of the machines goes down mid-inference? Can it dynamically reroute, or does it just retry?


It can dynamically route. If a machine drops out of split, the topology is recalculated and the request is automatically retried.


Would this benefit from integrating with the Colibri project announced here just days ago?


How does this differ from exo?


There’s a breakdown on our docs page you can check out!

https://meshllm.cloud/docs/pages/exo-comparison/


PMs at Microsoft have incredibly bad taste


I mean, they chose to work for Microsoft.


I kinda fucking love it. He’s doing something. It’s interesting. There’s no scam. Let live!


You can try this new model live using mesh-llm right now: https://www.anarchai.org/dashboard


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: