MacBook Pro + RTX 5090
The practical way to run one local model larger than either machine can hold alone.
Run llama-server on the Mac with Metal and expose the 5090 as a CUDA RPC worker. This logically combines their usable memory for one GGUF model. Treat it as a capacity upgrade, not a speed multiplier.
Answer
This is not transparent shared memory. llama.cpp places different layers and KV-cache allocations on each device, then moves activations over TCP. It can fit a model too large for 128 GB or 32 GB alone, but every generated token still waits on both machines.
For models already fitting on one machine, single-box inference is often faster. A mixed Apple/NVIDIA benchmark over 10GbE saw decode slow down while capacity and prompt processing improved. No exact benchmark for this precise MacBook + 5090 pair was found.
Hardware
| Need | Recommendation | Why |
|---|---|---|
| Mac network | Thunderbolt-to-10GbE adapter | OWC TB4 10G or Sonnet Solo10G; macOS-supported |
| Desktop network | 10GbE PCIe NIC | Intel X550-T1/T2 or a well-supported equivalent |
| Cable | Cat 6A, direct between machines | No switch required; simple, private, full duplex |
| Desktop OS | Native Linux + NVIDIA driver/CUDA toolkit | Lowest-friction CUDA build and service management |
| Optional upgrade | 25GbE via SFP28 | Only after benchmarking; costs more and may not fix decode latency |
Skip 1GbE and Wi‑Fi. Apple documents Thunderbolt IP for Mac-to-Mac; do not build this plan around a direct Thunderbolt Mac-to-PC link. 10GbE is the reliable cross-platform sweet spot.
Setup
- Wire a private link. Set the Mac to
192.168.50.1/24and the Linux desktop to192.168.50.2/24. Leave gateway and DNS blank on this interface. Confirm withping, then measure withiperf3; target roughly 9+ Gbit/s. - Build the same llama.cpp commit on both machines. RPC protocol mismatches can fail silently. Clone on both, record
git rev-parse HEAD, and check out that exact SHA. - Build/start the 5090 worker.
# RTX 5090 Linux desktop
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
-DGGML_CUDA=ON -DGGML_RPC=ON
cmake --build build -j
./build/bin/rpc-server --host 192.168.50.2 --port 50052 \
--device CUDA0 --cache
- Build the Mac client and inspect device names.
# MacBook Pro
git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
-DGGML_METAL=ON -DGGML_RPC=ON
cmake --build build -j
./build/bin/llama-cli --rpc 192.168.50.2:50052 --list-devices
- Serve a GGUF with layer splitting. Use the exact remote/local names printed above (normally
RPC0andMetal).
./build/bin/llama-server \
--rpc 192.168.50.2:50052 \
--device RPC0,Metal \
--model /path/to/model.gguf \
--n-gpu-layers all --split-mode layer \
--ctx-size 32768 --host 127.0.0.1 --port 8080
Start with automatic memory-proportional placement. If needed, tune with --tensor-split 30,100 in device order, leaving several GB free on the 5090 and more headroom on macOS. Reduce context/parallel slots if KV cache pushes either device out of memory.
Expectations
- Good for
- Large quantized GGUFs that exceed either machine’s memory; private experimentation; single-user serving.
- Not good for
- Making models that already fit run faster; production reliability; exposing an endpoint to the internet.
- Security
- llama.cpp labels RPC proof-of-concept, fragile, and insecure. Bind it only to the private link and firewall port 50052 to the Mac.
- Benchmark
- Compare Mac-only, 5090-only, and combined with the same model, quant, context, batch, and prompt. Record prompt tok/s, generation tok/s, RAM/VRAM, and link throughput.
Alternatives: Cake is the most interesting experimental Metal/CUDA sharding project, but is less mature and uses selected safetensors models. Upstream exo currently accelerates Apple Silicon but runs Linux nodes on CPU, so it does not meaningfully use the 5090.
Sources
- llama.cpp RPC documentation — heterogeneous CUDA/Metal/CPU topology, split behavior, warnings.
- llama.cpp build guide.
- Independent mixed Metal/CUDA 10GbE benchmark.
- NVIDIA RTX 5090 specifications — 32 GB GDDR7.
- OWC Thunderbolt 10GbE adapter.
- Sonnet 10/25GbE Thunderbolt options.
- Cake and exo alternatives.