spb/localvm-research Public License
Running LLMs larger than memory on a consumer Mac — falsification-driven research: margin-gated deferred refinement, out-of-core verification on Apple Silicon. TR-01 published.
Python 63.2%
JavaScript 23.5%
CSS 11.8%
Shell 0.9%
Makefile 0.5%
1{2 "experiment": "expH_ssd_feasibility",3 "author": "Simon-Pierre Boucher",4 "contact": "contact@spboucher.ai",5 "manifest": {6 "author": "Simon-Pierre Boucher",7 "contact": "contact@spboucher.ai",8 "project": "localvm-research",9 "collected_utc": "2026-08-12T03:41:40.574514+00:00",10 "chip": {11 "brand": "Apple M5 Max",12 "arch": "arm64",13 "cores_total": 18,14 "cores_performance": 6,15 "cores_efficiency": 12,16 "gpu_cores": 4017 },18 "memory": {19 "unified_bytes": 51539607552,20 "unified_gb": 48.0,21 "pagesize": 1638422 },23 "ssd": {24 "model": "APPLE SSD AP2048Z",25 "size": "2 TB",26 "smart_status": "Verified"27 },28 "os": {29 "product": "macOS",30 "version": "27.0",31 "build": "26A5388g",32 "kernel": "27.0.0"33 },34 "software": {35 "python": "3.14.4",36 "mlx": "0.32.0",37 "mlx_lm": null,38 "torch": "2.12.0",39 "numpy": "2.4.4"40 },41 "git": {42 "commit": "da10e00f0445ed6fb1d029f52e034038c7259909",43 "dirty_tree": false44 },45 "thermal_level_at_collect": null46 },47 "config": {48 "file_gib": 8.0,49 "repeats": 1,50 "budget_mib": 512,51 "quick": true52 },53 "test_file_bytes": 8589934592,54 "gpu_load_matmul_iterations": 1157,55 "thermal_level_after": null,56 "cells": [57 {58 "block_bytes": 4096,59 "pattern": "random",60 "nocache": true,61 "threads": 1,62 "gpu_load": false,63 "repeats": 1,64 "mb_per_s_mean": 68.07234616035791,65 "mb_per_s_median": 68.07234616035791,66 "mb_per_s_std": 0.0,67 "iops_mean": 16619.2251368061368 },69 {70 "block_bytes": 4096,71 "pattern": "random",72 "nocache": true,73 "threads": 8,74 "gpu_load": false,75 "repeats": 1,76 "mb_per_s_mean": 496.3661326173465,77 "mb_per_s_median": 496.3661326173465,78 "mb_per_s_std": 0.0,79 "iops_mean": 121183.1378460318780 },81 {82 "block_bytes": 16384,83 "pattern": "random",84 "nocache": true,85 "threads": 1,86 "gpu_load": false,87 "repeats": 1,88 "mb_per_s_mean": 271.131993548063,89 "mb_per_s_median": 271.131993548063,90 "mb_per_s_std": 0.0,91 "iops_mean": 16548.58359058001692 },93 {94 "block_bytes": 16384,95 "pattern": "random",96 "nocache": true,97 "threads": 8,98 "gpu_load": false,99 "repeats": 1,100 "mb_per_s_mean": 1960.6533223068227,101 "mb_per_s_median": 1960.6533223068227,102 "mb_per_s_std": 0.0,103 "iops_mean": 119668.78187907854104 },105 {106 "block_bytes": 65536,107 "pattern": "random",108 "nocache": true,109 "threads": 1,110 "gpu_load": false,111 "repeats": 1,112 "mb_per_s_mean": 814.5748552576947,113 "mb_per_s_median": 814.5748552576947,114 "mb_per_s_std": 0.0,115 "iops_mean": 12429.425891993633116 },117 {118 "block_bytes": 65536,119 "pattern": "random",120 "nocache": true,121 "threads": 8,122 "gpu_load": false,123 "repeats": 1,124 "mb_per_s_mean": 5491.534145583686,125 "mb_per_s_median": 5491.534145583686,126 "mb_per_s_std": 0.0,127 "iops_mean": 83794.16115697763128 },129 {130 "block_bytes": 262144,131 "pattern": "random",132 "nocache": true,133 "threads": 1,134 "gpu_load": false,135 "repeats": 1,136 "mb_per_s_mean": 2205.196208443168,137 "mb_per_s_median": 2205.196208443168,138 "mb_per_s_std": 0.0,139 "iops_mean": 8412.155946514771140 },141 {142 "block_bytes": 262144,143 "pattern": "random",144 "nocache": true,145 "threads": 8,146 "gpu_load": false,147 "repeats": 1,148 "mb_per_s_mean": 11420.092406740816,149 "mb_per_s_median": 11420.092406740816,150 "mb_per_s_std": 0.0,151 "iops_mean": 43564.19527717902152 },153 {154 "block_bytes": 1048576,155 "pattern": "random",156 "nocache": true,157 "threads": 1,158 "gpu_load": false,159 "repeats": 1,160 "mb_per_s_mean": 4730.353789106931,161 "mb_per_s_median": 4730.353789106931,162 "mb_per_s_std": 0.0,163 "iops_mean": 4511.216916186267164 },165 {166 "block_bytes": 1048576,167 "pattern": "random",168 "nocache": true,169 "threads": 8,170 "gpu_load": false,171 "repeats": 1,172 "mb_per_s_mean": 13297.702575428926,173 "mb_per_s_median": 13297.702575428926,174 "mb_per_s_std": 0.0,175 "iops_mean": 12681.677413395812176 },177 {178 "block_bytes": 4194304,179 "pattern": "random",180 "nocache": true,181 "threads": 1,182 "gpu_load": false,183 "repeats": 1,184 "mb_per_s_mean": 9251.755916950317,185 "mb_per_s_median": 9251.755916950317,186 "mb_per_s_std": 0.0,187 "iops_mean": 2205.790499913768188 },189 {190 "block_bytes": 4194304,191 "pattern": "random",192 "nocache": true,193 "threads": 8,194 "gpu_load": false,195 "repeats": 1,196 "mb_per_s_mean": 48436.56730429854,197 "mb_per_s_median": 48436.56730429854,198 "mb_per_s_std": 0.0,199 "iops_mean": 11548.177553248059200 },201 {202 "block_bytes": 4096,203 "pattern": "sequential",204 "nocache": true,205 "threads": 1,206 "gpu_load": false,207 "repeats": 1,208 "mb_per_s_mean": 209.20906655273933,209 "mb_per_s_median": 209.20906655273933,210 "mb_per_s_std": 0.0,211 "iops_mean": 51076.43226385237212 },213 {214 "block_bytes": 4096,215 "pattern": "sequential",216 "nocache": true,217 "threads": 8,218 "gpu_load": false,219 "repeats": 1,220 "mb_per_s_mean": 506.06101080108255,221 "mb_per_s_median": 506.06101080108255,222 "mb_per_s_std": 0.0,223 "iops_mean": 123550.05146510804224 },225 {226 "block_bytes": 16384,227 "pattern": "sequential",228 "nocache": true,229 "threads": 1,230 "gpu_load": false,231 "repeats": 1,232 "mb_per_s_mean": 758.7813571212968,233 "mb_per_s_median": 758.7813571212968,234 "mb_per_s_std": 0.0,235 "iops_mean": 46312.3386914854236 },237 {238 "block_bytes": 16384,239 "pattern": "sequential",240 "nocache": true,241 "threads": 8,242 "gpu_load": false,243 "repeats": 1,244 "mb_per_s_mean": 2017.8502260046444,245 "mb_per_s_median": 2017.8502260046444,246 "mb_per_s_std": 0.0,247 "iops_mean": 123159.80383329128248 },249 {250 "block_bytes": 65536,251 "pattern": "sequential",252 "nocache": true,253 "threads": 1,254 "gpu_load": false,255 "repeats": 1,256 "mb_per_s_mean": 2106.82095025044,257 "mb_per_s_median": 2106.82095025044,258 "mb_per_s_std": 0.0,259 "iops_mean": 32147.53647232727260 },261 {262 "block_bytes": 65536,263 "pattern": "sequential",264 "nocache": true,265 "threads": 8,266 "gpu_load": false,267 "repeats": 1,268 "mb_per_s_mean": 5736.668564602901,269 "mb_per_s_median": 5736.668564602901,270 "mb_per_s_std": 0.0,271 "iops_mean": 87534.61554875031272 },273 {274 "block_bytes": 262144,275 "pattern": "sequential",276 "nocache": true,277 "threads": 1,278 "gpu_load": false,279 "repeats": 1,280 "mb_per_s_mean": 4853.322654058267,281 "mb_per_s_median": 4853.322654058267,282 "mb_per_s_std": 0.0,283 "iops_mean": 18513.95665763194284 },285 {286 "block_bytes": 262144,287 "pattern": "sequential",288 "nocache": true,289 "threads": 8,290 "gpu_load": false,291 "repeats": 1,292 "mb_per_s_mean": 12770.756964429242,293 "mb_per_s_median": 12770.756964429242,294 "mb_per_s_std": 0.0,295 "iops_mean": 48716.57167216965296 },297 {298 "block_bytes": 1048576,299 "pattern": "sequential",300 "nocache": true,301 "threads": 1,302 "gpu_load": false,303 "repeats": 1,304 "mb_per_s_mean": 6932.3758070335025,305 "mb_per_s_median": 6932.3758070335025,306 "mb_per_s_std": 0.0,307 "iops_mean": 6611.228758843901308 },309 {310 "block_bytes": 1048576,311 "pattern": "sequential",312 "nocache": true,313 "threads": 8,314 "gpu_load": false,315 "repeats": 1,316 "mb_per_s_mean": 13539.766107199002,317 "mb_per_s_median": 13539.766107199002,318 "mb_per_s_std": 0.0,319 "iops_mean": 12912.527186583522320 },321 {322 "block_bytes": 4194304,323 "pattern": "sequential",324 "nocache": true,325 "threads": 1,326 "gpu_load": false,327 "repeats": 1,328 "mb_per_s_mean": 12008.923008092182,329 "mb_per_s_median": 12008.923008092182,330 "mb_per_s_std": 0.0,331 "iops_mean": 2863.1503601294332 },333 {334 "block_bytes": 4194304,335 "pattern": "sequential",336 "nocache": true,337 "threads": 8,338 "gpu_load": false,339 "repeats": 1,340 "mb_per_s_mean": 48118.56971925566,341 "mb_per_s_median": 48118.56971925566,342 "mb_per_s_std": 0.0,343 "iops_mean": 11472.361020864406344 },345 {346 "block_bytes": 4096,347 "pattern": "random",348 "nocache": false,349 "threads": 1,350 "gpu_load": false,351 "repeats": 1,352 "mb_per_s_mean": 4935.67178624295,353 "mb_per_s_median": 4935.67178624295,354 "mb_per_s_std": 0.0,355 "iops_mean": 1204997.99468822356 },357 {358 "block_bytes": 4096,359 "pattern": "random",360 "nocache": false,361 "threads": 8,362 "gpu_load": false,363 "repeats": 1,364 "mb_per_s_mean": 824.4112221360961,365 "mb_per_s_median": 824.4112221360961,366 "mb_per_s_std": 0.0,367 "iops_mean": 201272.2710293203368 },369 {370 "block_bytes": 16384,371 "pattern": "random",372 "nocache": false,373 "threads": 1,374 "gpu_load": false,375 "repeats": 1,376 "mb_per_s_mean": 13950.209889376401,377 "mb_per_s_median": 13950.209889376401,378 "mb_per_s_std": 0.0,379 "iops_mean": 851453.2403183839380 },381 {382 "block_bytes": 16384,383 "pattern": "random",384 "nocache": false,385 "threads": 8,386 "gpu_load": false,387 "repeats": 1,388 "mb_per_s_mean": 3209.6778471057946,389 "mb_per_s_median": 3209.6778471057946,390 "mb_per_s_std": 0.0,391 "iops_mean": 195903.18891026577392 },393 {394 "block_bytes": 65536,395 "pattern": "random",396 "nocache": false,397 "threads": 1,398 "gpu_load": false,399 "repeats": 1,400 "mb_per_s_mean": 27020.64294689821,401 "mb_per_s_median": 27020.64294689821,402 "mb_per_s_std": 0.0,403 "iops_mean": 412302.29105984815404 },405 {406 "block_bytes": 65536,407 "pattern": "random",408 "nocache": false,409 "threads": 8,410 "gpu_load": false,411 "repeats": 1,412 "mb_per_s_mean": 12456.088389795515,413 "mb_per_s_median": 12456.088389795515,414 "mb_per_s_std": 0.0,415 "iops_mean": 190064.82528374504416 },417 {418 "block_bytes": 262144,419 "pattern": "random",420 "nocache": false,421 "threads": 1,422 "gpu_load": false,423 "repeats": 1,424 "mb_per_s_mean": 40575.46917143643,425 "mb_per_s_median": 40575.46917143643,426 "mb_per_s_std": 0.0,427 "iops_mean": 154783.13129973004428 },429 {430 "block_bytes": 262144,431 "pattern": "random",432 "nocache": false,433 "threads": 8,434 "gpu_load": false,435 "repeats": 1,436 "mb_per_s_mean": 42975.88825195316,437 "mb_per_s_median": 42975.88825195316,438 "mb_per_s_std": 0.0,439 "iops_mean": 163940.0034025313440 },441 {442 "block_bytes": 1048576,443 "pattern": "random",444 "nocache": false,445 "threads": 1,446 "gpu_load": false,447 "repeats": 1,448 "mb_per_s_mean": 44945.08365905515,449 "mb_per_s_median": 44945.08365905515,450 "mb_per_s_std": 0.0,451 "iops_mean": 42862.97193437113452 },453 {454 "block_bytes": 1048576,455 "pattern": "random",456 "nocache": false,457 "threads": 8,458 "gpu_load": false,459 "repeats": 1,460 "mb_per_s_mean": 113147.53539277086,461 "mb_per_s_median": 113147.53539277086,462 "mb_per_s_std": 0.0,463 "iops_mean": 107905.89846875273464 },465 {466 "block_bytes": 4194304,467 "pattern": "random",468 "nocache": false,469 "threads": 1,470 "gpu_load": false,471 "repeats": 1,472 "mb_per_s_mean": 41189.77238374518,473 "mb_per_s_median": 41189.77238374518,474 "mb_per_s_std": 0.0,475 "iops_mean": 9820.407005249304476 },477 {478 "block_bytes": 4194304,479 "pattern": "random",480 "nocache": false,481 "threads": 8,482 "gpu_load": false,483 "repeats": 1,484 "mb_per_s_mean": 89062.25289557967,485 "mb_per_s_median": 89062.25289557967,486 "mb_per_s_std": 0.0,487 "iops_mean": 21234.095786948124488 },489 {490 "block_bytes": 4096,491 "pattern": "sequential",492 "nocache": false,493 "threads": 1,494 "gpu_load": false,495 "repeats": 1,496 "mb_per_s_mean": 9917.650078616765,497 "mb_per_s_median": 9917.650078616765,498 "mb_per_s_std": 0.0,499 "iops_mean": 2421301.2887247964500 },501 {502 "block_bytes": 4096,503 "pattern": "sequential",504 "nocache": false,505 "threads": 8,506 "gpu_load": false,507 "repeats": 1,508 "mb_per_s_mean": 869.1974309504308,509 "mb_per_s_median": 869.1974309504308,510 "mb_per_s_std": 0.0,511 "iops_mean": 212206.4040406325512 },513 {514 "block_bytes": 16384,515 "pattern": "sequential",516 "nocache": false,517 "threads": 1,518 "gpu_load": false,519 "repeats": 1,520 "mb_per_s_mean": 22948.963126444007,521 "mb_per_s_median": 22948.963126444007,522 "mb_per_s_std": 0.0,523 "iops_mean": 1400693.5501979985524 },525 {526 "block_bytes": 16384,527 "pattern": "sequential",528 "nocache": false,529 "threads": 8,530 "gpu_load": false,531 "repeats": 1,532 "mb_per_s_mean": 3265.8922507775833,533 "mb_per_s_median": 3265.8922507775833,534 "mb_per_s_std": 0.0,535 "iops_mean": 199334.24382187397536 },537 {538 "block_bytes": 65536,539 "pattern": "sequential",540 "nocache": false,541 "threads": 1,542 "gpu_load": false,543 "repeats": 1,544 "mb_per_s_mean": 32144.830936898197,545 "mb_per_s_median": 32144.830936898197,546 "mb_per_s_std": 0.0,547 "iops_mean": 490491.19471585384548 },549 {550 "block_bytes": 65536,551 "pattern": "sequential",552 "nocache": false,553 "threads": 8,554 "gpu_load": false,555 "repeats": 1,556 "mb_per_s_mean": 12507.318354170413,557 "mb_per_s_median": 12507.318354170413,558 "mb_per_s_std": 0.0,559 "iops_mean": 190846.53250382098560 },561 {562 "block_bytes": 262144,563 "pattern": "sequential",564 "nocache": false,565 "threads": 1,566 "gpu_load": false,567 "repeats": 1,568 "mb_per_s_mean": 42508.15604606725,569 "mb_per_s_median": 42508.15604606725,570 "mb_per_s_std": 0.0,571 "iops_mean": 162155.74663569353572 },573 {574 "block_bytes": 262144,575 "pattern": "sequential",576 "nocache": false,577 "threads": 8,578 "gpu_load": false,579 "repeats": 1,580 "mb_per_s_mean": 42124.31607022188,581 "mb_per_s_median": 42124.31607022188,582 "mb_per_s_std": 0.0,583 "iops_mean": 160691.51332939864584 },585 {586 "block_bytes": 1048576,587 "pattern": "sequential",588 "nocache": false,589 "threads": 1,590 "gpu_load": false,591 "repeats": 1,592 "mb_per_s_mean": 47520.16215601438,593 "mb_per_s_median": 47520.16215601438,594 "mb_per_s_std": 0.0,595 "iops_mean": 45318.758159651166596 },597 {598 "block_bytes": 1048576,599 "pattern": "sequential",600 "nocache": false,601 "threads": 8,602 "gpu_load": false,603 "repeats": 1,604 "mb_per_s_mean": 111891.81440715115,605 "mb_per_s_median": 111891.81440715115,606 "mb_per_s_std": 0.0,607 "iops_mean": 106708.34961619487608 },609 {610 "block_bytes": 4194304,611 "pattern": "sequential",612 "nocache": false,613 "threads": 1,614 "gpu_load": false,615 "repeats": 1,616 "mb_per_s_mean": 44097.23107906072,617 "mb_per_s_median": 44097.23107906072,618 "mb_per_s_std": 0.0,619 "iops_mean": 10513.59917618292620 },621 {622 "block_bytes": 4194304,623 "pattern": "sequential",624 "nocache": false,625 "threads": 8,626 "gpu_load": false,627 "repeats": 1,628 "mb_per_s_mean": 85723.8931130823,629 "mb_per_s_median": 85723.8931130823,630 "mb_per_s_std": 0.0,631 "iops_mean": 20438.168791075303632 },633 {634 "block_bytes": 4096,635 "pattern": "random",636 "nocache": true,637 "threads": 8,638 "gpu_load": true,639 "repeats": 1,640 "mb_per_s_mean": 482.32819455456456,641 "mb_per_s_median": 482.32819455456456,642 "mb_per_s_std": 0.0,643 "iops_mean": 117755.90687367298644 },645 {646 "block_bytes": 16384,647 "pattern": "random",648 "nocache": true,649 "threads": 8,650 "gpu_load": true,651 "repeats": 1,652 "mb_per_s_mean": 1898.0719320705184,653 "mb_per_s_median": 1898.0719320705184,654 "mb_per_s_std": 0.0,655 "iops_mean": 115849.11694766348656 },657 {658 "block_bytes": 65536,659 "pattern": "random",660 "nocache": true,661 "threads": 8,662 "gpu_load": true,663 "repeats": 1,664 "mb_per_s_mean": 5317.859323720137,665 "mb_per_s_median": 5317.859323720137,666 "mb_per_s_std": 0.0,667 "iops_mean": 81144.09368469447668 },669 {670 "block_bytes": 262144,671 "pattern": "random",672 "nocache": true,673 "threads": 8,674 "gpu_load": true,675 "repeats": 1,676 "mb_per_s_mean": 11435.548894125748,677 "mb_per_s_median": 11435.548894125748,678 "mb_per_s_std": 0.0,679 "iops_mean": 43623.15709734248680 },681 {682 "block_bytes": 1048576,683 "pattern": "random",684 "nocache": true,685 "threads": 8,686 "gpu_load": true,687 "repeats": 1,688 "mb_per_s_mean": 13418.907192403985,689 "mb_per_s_median": 13418.907192403985,690 "mb_per_s_std": 0.0,691 "iops_mean": 12797.267143634783692 },693 {694 "block_bytes": 4194304,695 "pattern": "random",696 "nocache": true,697 "threads": 8,698 "gpu_load": true,699 "repeats": 1,700 "mb_per_s_mean": 13800.65849336868,701 "mb_per_s_median": 13800.65849336868,702 "mb_per_s_std": 0.0,703 "iops_mean": 3290.333388654871704 }705 ]706}