memory and model

M5 Ultra SSD: faster loading or faster local AI?

When shopping for an M5 Ultra Mac Studio, the much faster SSD1 sounds like another reason to upgrade. Then comes a tempting question: if storage is this fast, could you buy less memory and spend more on the SSD? The answer changes when you separate opening a model for the first time from continuing a conversation with one already loaded.

Requirements and key details
  • Model loading, prefill and decoding have different bottlenecks.
  • PLE SSD offload reads selected table entries on demand; it does not turn storage into unified memory.
  • Prioritize memory for the model you use daily, then size storage for model switching and the files you keep.

Where does a faster SSD actually save time?

Selecting a model in a chat app does not produce an answer immediately. First the runtime2 makes the stored model ready to use, then processes your question and documents, and finally generates tokens3. All three feel like waiting, but they are different jobs inside the computer.

SSD improvements matter most directly in the first stage. Someone switching between coding, image and chat models may repeat it many times a day. Someone who keeps a single model loaded may appreciate the shorter startup but notice little difference in the conversations that follow.

Three kinds of waiting in a local LLM
What you seeMain taskRole of the SSD
Opening the modelRead weights and prepare executionDirectly affects actual disk reads
Waiting for the first tokenPrefill and cache handlingCompute and context matter when weights are resident
The answer keeps appearingDecoding successive tokensResident inference mainly depends on memory and compute

Three kinds of waiting in a local LLM

Opening the model

Main task
Read weights and prepare execution
Role of the SSD
Directly affects actual disk reads

Waiting for the first token

Main task
Prefill and cache handling
Role of the SSD
Compute and context matter when weights are resident

The answer keeps appearing

Main task
Decoding successive tokens
Role of the SSD
Resident inference mainly depends on memory and compute
A workbench with a computer loading bar and archive folios taken from a shelf
Retrieving a model from storage and working with it once loaded are separate stages.

What a roughly 14GB/s result tells you

Tom's Guide measured Blackmagic reads of 13,902MB/s and writes of 14,283MB/s on its M5 Ultra with a 4TB SSD. Those are disk results for that configuration, not a guarantee across capacities or a multiplier for LLM4 generation speed.

Suppose you need to read 70GB. At a steady 7GB/s, the transfer takes ten seconds; at 14GB/s, five. This is an illustrative transfer-only calculation, not a loading benchmark. File handling, memory allocation and runtime preparation add work, so the app's total wait need not halve.

A faster second load is not necessarily the SSD showing its full speed. The operating system may have kept recently read file data in memory. That file cache is separate from a prompt cache, which reuses prior prompt computation. Treating both as a single cold-versus-warm condition confuses disk and inference5 performance.

If the model is loaded but answers are still slow

If the model is resident in unified memory6 without swapping or offload7, generation mostly moves data between memory and compute hardware, not the SSD. Retrieving a book from a fast archive does not determine how quickly you read it once it is on your desk. Disk bandwidth therefore cannot be converted directly into tokens per second.

If nothing appears for a while and then the answer streams quickly, look at input length first: prefill8 may be processing a long document or conversation. If the first token arrives promptly but the rest crawls, examine model size, quantization9, runtime and decoding10 acceleration. The same SSD upgrade is not a useful prescription for both.

This site's speed experience separates prefill from decoding. Its wait time is not a measurement of initially loading model files from the SSD. Use it to compare responses at your input length once the model is ready to run.

The important exception: keeping part of a model on SSD

Not every model fits fully in memory. With a supported model and runtime, PLE11 offload can leave large lookup tables on SSD and read only the required entries. Think of retrieving selected index cards rather than moving the entire collection each time. Storage performance matters during generation in this case because disk access remains part of the work.

MacStories ran Qwen3.8-Flash-Next oQ8e with PLE tables on SSD on an 80-GPU12-core M5 Ultra with 256GB. With oMLX 0.7.0.dev2 and MTP13 depth 3, prose generation had a median of 86.8 tok/s; sampled process memory during answers was about 187GB, not weights alone. This demonstrates a working configuration, not a controlled SSD-only comparison.

MTP and PLE offload play different roles. MTP proposes future tokens to reduce generation iterations; PLE offload changes where selected data is stored. They can coexist when the runtime supports that combination. This does not make PLE a universal model option or the same feature as ordinary n-gram14 speculative decoding15.

Reading a large file sequentially differs from fetching small scattered entries. Reuse through the operating system's file cache also matters. A twofold disk benchmark improvement is therefore not a basis for predicting twice the offloaded decoding speed.

A card-catalog drawer with only a few selected cards on the desk beside a computer and drive
PLE offload is closer to retrieving selected table entries than moving the whole model repeatedly.

Can 256GB plus a fast SSD replace 512GB of memory?

It can be an option for a particular model, but not a general replacement rule. Some models lack selective offload support; long-context KV caches and other loaded models need memory too. Comparing a model's file size with the nominal 256GB capacity does not settle whether the whole workload fits.

Operating-system swap is another case. Unlike selective PLE offload, memory pressure can repeatedly evict data that execution soon needs again. That can cause stalls and uneven response times. Faster storage may reduce the penalty, but does not reproduce the behavior of having enough memory.

Conversely, if your model and context already fit comfortably, moving to 512GB does not automatically double generation speed. Its value is room for larger models, longer contexts or multiple models. List what you will keep running every day before buying for the largest model you might someday try.

Spend on memory first—unless your bottleneck is elsewhere

If the daily model barely fits, prioritize memory. Faster loading solves little if the workload cannot run reliably. Allow room for the model, KV cache16 and other applications first, then choose storage for frequently used weights and working files.

If memory is already sufficient and you alternate between several large models, faster storage becomes more valuable: you repeatedly pay the loading cost. Frequent image-checkpoint17 changes are a similar case. Still, do not assume a larger SSD is automatically faster; look for measurements of the capacity you intend to buy.

An external SSD can make sense for archiving models you only occasionally try. Keep daily weights internally and less-used models elsewhere. External performance depends on the drive, enclosure, connection, cable and thermals together; a Thunderbolt 5 label does not establish parity with the internal SSD.

A spacious working desk with a computer and open papers, and separate archive storage on a shelf
Allow enough room for the work you keep active, then choose storage for the files you keep.

Already own a Mac? Check this before upgrading

Use one regular model and question. Observe model loading, time until the answer starts, and generation speed separately. Check memory pressure and swap in Activity Monitor. A single accumulated swap value is not enough: watch whether it rises during the task and coincides with response stalls.

For a side-by-side test, match model files, quantization, input length, runtime version and MTP settings. Record file-cache and prompt-cache conditions too. Once you distinguish painful model switching from slow long-document processing or insufficient memory, the right upgrade becomes much clearer.

The SSD does not have to be your main reason to choose M5 Ultra

It is natural to hope that better hardware will remove the friction you feel today. What matters is where that friction comes from. Long conversations with one model prioritize memory fit and response speed; frequent switching adds loading time to the decision. The right M5 Ultra configuration need not be the same for both people.

Start with the model you intend to use and experience its prefill and decoding. If that speed is sufficient and memory has room to spare, choose SSD capacity around storage needs and switching convenience. Spending on the part that actually keeps you waiting is more useful than buying the largest number.

Terminology notes

  1. SSDA data storage device that uses flash memory. It retains data without power and serves a different role from system memory.

    Back to the text
  2. RuntimeSoftware that loads model files and runs their computations. Supported formats, hardware, and optimizations vary by runtime.

    Back to the text
  3. TokenA unit into which a model divides input or output for processing. One token does not equal one character or a fixed duration.

    Back to the text
  4. Large language modelA language model trained on large text datasets to process and generate text. Capabilities and supported inputs vary by model.

    Back to the text
  5. InferenceThe process of using a trained model to compute an output for an input. Here, local inference means running the model on the user’s device.

    Back to the text
  6. Unified memoryAn architecture where the CPU and GPU share one physical memory pool. It does not increase total memory capacity; available capacity depends on the system.

    Back to the text
  7. OffloadingMoving some model data from GPU memory to system RAM or storage when capacity is limited. This adds data transfer.

    Back to the text
  8. PrefillThe stage where an LLM reads the input prompt and computes representations for its tokens. Longer prompts contain more tokens to process.

    Back to the text
  9. QuantizationRepresenting model values with fewer bits. Memory use, accuracy, or execution speed may change; the effects depend on the format and implementation.

    Back to the text
  10. DecodeFor an LLM, this is the stage that generates output tokens after input processing. For a VAE or audio codec, decoding can mean reconstructing the original form from a compressed representation or encoded data.

    Back to the text
  11. PLE embedding tableShort for Per-Layer Embedding, a structure that adds embedding information at particular model layers. The Qwen Flash-Next family uses n-gram tables; supported runtimes can offload these tables to RAM or SSD.

    Back to the text
  12. GPUA processor designed to handle many calculations in parallel. It performs model computations during AI inference.

    Back to the text
  13. MTPA training method or model component for predicting multiple future tokens. Whether it improves generation speed depends on implementation and runtime conditions.

    Back to the text
  14. N-gramA sequence of n consecutive tokens or items. N-grams may be used for context lookup or speculative generation, and may also form the entries of embedding tables in some models.

    Back to the text
  15. Speculative decodingA generation method that proposes output candidates for the main model to verify. Candidates may come from a separate draft model, an MTP head, or lookup of repeated context; speed effects depend on implementation and conditions.

    Back to the text
  16. KV cacheMemory that stores attention keys and values from earlier tokens for reuse during later token generation. Its size depends on context length and batch size.

    Back to the text
  17. CheckpointA file containing saved model weights and related state. Versions or tasks in one model family may use different checkpoints.

    Back to the text