SPB Git

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%
17.6 KB · 706 lines json
Raw Blame History
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}