mlx-bun 0.4.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1453 -88
- package/THIRD_PARTY_NOTICES.md +882 -0
- package/bin/mlx-bun.convert.mjs +4 -0
- package/bin/mlx-bun.fuse.mjs +4 -0
- package/bin/mlx-bun.generate.mjs +4 -0
- package/bin/mlx-bun.lora.mjs +4 -0
- package/bin/mlx-bun.mjs +13 -21
- package/bin/mlx-bun.server.mjs +4 -0
- package/bin/mlx-bun.upload.mjs +4 -0
- package/dist/web/app.js +9584 -0
- package/package.json +50 -53
- package/src/cli/ane-install.ts +76 -0
- package/src/cli/args.ts +179 -0
- package/src/cli/engine-entry.ts +68 -0
- package/src/cli/inference.ts +214 -0
- package/src/cli/job-entry.ts +97 -0
- package/src/cli/library-host.ts +117 -0
- package/src/cli/main.ts +57 -0
- package/src/cli/memory-engine.ts +163 -0
- package/src/cli/memory.ts +36 -0
- package/src/cli/mlx-lm-aliases.ts +309 -0
- package/src/cli/model-choice.ts +33 -0
- package/src/cli/model-selection.ts +84 -0
- package/src/cli/module-host.ts +11 -0
- package/src/cli/module-verbs.ts +50 -0
- package/src/cli/numerical-policy.ts +12 -0
- package/src/cli/perplexity.ts +89 -0
- package/src/cli/serve-host.ts +423 -0
- package/src/cli/serve-isolated.ts +217 -0
- package/src/cli/serve-options.ts +106 -0
- package/src/cli/serve-state.ts +205 -0
- package/src/cli/serve.ts +500 -0
- package/src/cli/served-model-host.ts +102 -0
- package/src/cli/server-entry.ts +148 -0
- package/src/cli/serving-unit.ts +177 -0
- package/src/{tui.ts → cli/terminal.ts} +13 -8
- package/src/cli/worker-adapters.ts +34 -0
- package/src/cli/worker-entry.ts +272 -0
- package/src/cli/worker-unit.ts +179 -0
- package/src/engine/adapter-operation.ts +26 -0
- package/src/engine/cache-services.ts +114 -0
- package/src/engine/completion.ts +39 -0
- package/src/engine/generation-gateway.ts +358 -0
- package/src/engine/index.ts +59 -0
- package/src/engine/kv-budget.ts +120 -0
- package/src/engine/media-preparation.ts +232 -0
- package/src/engine/model-binding.ts +24 -0
- package/src/engine/model-host.ts +513 -0
- package/src/engine/model-serving.ts +89 -0
- package/src/{serve → engine}/preparation.ts +10 -8
- package/src/{serve → engine}/session-completion-engine.ts +6 -6
- package/src/engine/telemetry.ts +109 -0
- package/src/hub/downloads.ts +116 -0
- package/src/jobs/db.ts +16 -7
- package/src/jobs/events.ts +29 -0
- package/src/jobs/executable.ts +5 -0
- package/src/jobs/host.ts +51 -0
- package/src/jobs/in-process.ts +55 -0
- package/src/{contracts/jobs.ts → jobs/protocol.ts} +7 -9
- package/src/jobs/runner.ts +150 -231
- package/src/jobs/service.ts +75 -0
- package/src/jobs/sse.ts +59 -23
- package/src/jobs/worker-memory.ts +46 -0
- package/src/jobs/worker-process.ts +163 -0
- package/src/jobs/worker-supervisor.ts +258 -0
- package/src/modules.ts +58 -0
- package/src/publishing/catalog-hub.ts +18 -0
- package/src/publishing/credentials.ts +31 -0
- package/src/publishing/upload.ts +37 -0
- package/src/residency/leased-adapters.ts +21 -0
- package/src/residency/local-records.ts +16 -0
- package/src/residency/model-residency.ts +405 -0
- package/src/residency/record-index.ts +28 -0
- package/src/residency/resident-estimate.ts +50 -0
- package/src/{anthropic.ts → server/anthropic.ts} +3 -81
- package/src/server/cache-routes.ts +36 -0
- package/src/{serve → server}/chat-request.ts +12 -10
- package/src/{serve → server}/chat-stage.ts +27 -22
- package/src/{client.ts → server/client.ts} +28 -2
- package/src/{serve → server}/completion-executor.ts +42 -42
- package/src/server/decision-body.ts +55 -0
- package/src/server/decision-routes.ts +134 -0
- package/src/server/decision-wire.ts +228 -0
- package/src/{serve → server}/discovery-routes.ts +42 -83
- package/src/server/generated-token-history.ts +57 -0
- package/src/{serve → server}/http.ts +25 -13
- package/src/{serve → server}/inference-request.ts +5 -5
- package/src/server/job-routes.ts +20 -0
- package/src/server/media-prompt.ts +63 -0
- package/src/server/memory-completion-client.ts +46 -0
- package/src/server/model-routes.ts +192 -0
- package/src/{serve → server}/openai-wire.ts +3 -2
- package/src/{serve → server}/pipeline.ts +1 -1
- package/src/server/prompt-builder.ts +13 -0
- package/src/server/prompt-contracts.ts +17 -0
- package/src/server/proxy-routes.ts +187 -0
- package/src/server/publishing-routes.ts +41 -0
- package/src/{serve → server}/request-plan.ts +8 -8
- package/src/{serve → server}/request-prep.ts +82 -68
- package/src/{serve → server}/responses-client.ts +30 -13
- package/src/{responses.ts → server/responses.ts} +12 -93
- package/src/server/routes.ts +205 -0
- package/src/server/start.ts +72 -0
- package/src/server/status-routes.ts +108 -0
- package/src/{serve → server}/text-completion-stage.ts +25 -4
- package/src/server/text-prompt.ts +12 -0
- package/src/{serve → server}/token-streams.ts +36 -38
- package/src/server/worker-routes.ts +311 -0
- package/src/storage/paths.ts +61 -0
- package/src/web/assets.ts +37 -0
- package/src/web/{src → browser}/api.ts +5 -23
- package/src/web/browser/chat-host.ts +17 -0
- package/src/web/browser/installed-panels.ts +6 -0
- package/src/web/browser/main.ts +55 -0
- package/src/web/browser/markdown.ts +279 -0
- package/src/web/browser/memory-panel.ts +9 -0
- package/src/web/browser/palette.ts +64 -0
- package/src/web/browser/protocol.ts +13 -0
- package/src/web/browser/shell.ts +467 -0
- package/src/web/{src → browser}/status.ts +32 -36
- package/src/web/build.ts +51 -0
- package/src/web/public/app.html +1054 -0
- package/src/web/{sw.js → public/sw.js} +4 -3
- package/src/web/{vendor → public/vendor}/hljs-theme.css +2 -2
- package/src/web/{vendor → public/vendor}/hljs.js +2 -2
- package/THIRD_PARTY_LICENSES.md +0 -51
- package/docs/README.md +0 -94
- package/docs/archive/hlg-sampling.md +0 -350
- package/docs/archive/investigations/audio-input-plan.md +0 -356
- package/docs/archive/investigations/chunk-finetune-experiment.md +0 -84
- package/docs/archive/investigations/colibri-glm52-port.md +0 -1486
- package/docs/archive/investigations/colibri-oracle-pin.md +0 -1284
- package/docs/archive/investigations/curve-bisector-routing.md +0 -123
- package/docs/archive/investigations/decode-roofline-lookagain.md +0 -348
- package/docs/archive/investigations/diffusion-gemma-port.md +0 -602
- package/docs/archive/investigations/dspark-handoff.md +0 -224
- package/docs/archive/investigations/expert-offload-single-user-moe.md +0 -292
- package/docs/archive/investigations/faithful-l1-consolidation.md +0 -310
- package/docs/archive/investigations/hlg-sampling-investigation.md +0 -970
- package/docs/archive/investigations/indexshare-performance-spike.md +0 -357
- package/docs/archive/investigations/kernel-perf-review-2026-07.md +0 -171
- package/docs/archive/investigations/lab-build-journal.md +0 -157
- package/docs/archive/investigations/minicpm5-decode-megakernel.md +0 -489
- package/docs/archive/investigations/openjarvis-fit.md +0 -198
- package/docs/archive/investigations/openwiki-evaluation.md +0 -249
- package/docs/archive/investigations/optimization_plan.md +0 -346
- package/docs/archive/investigations/orpo-base-uf-experiment-and-directions.md +0 -120
- package/docs/archive/investigations/orpo-flash-cce-pin-leak.md +0 -167
- package/docs/archive/investigations/orpo-uf-testing-handoff.md +0 -126
- package/docs/archive/investigations/pareto-specialized-runtime-findings.md +0 -92
- package/docs/archive/investigations/pi-builtin-investigation.md +0 -308
- package/docs/archive/investigations/pre-colibri-stabilization.md +0 -329
- package/docs/archive/investigations/qwen38-27b-campaign-log.md +0 -1092
- package/docs/archive/investigations/segmented-backward-handoff.md +0 -148
- package/docs/archive/investigations/starter-model-port-handoff.md +0 -342
- package/docs/archive/investigations/steel-flash-cce-handoff.md +0 -489
- package/docs/archive/investigations/the-dreaming-handoff.md +0 -141
- package/docs/archive/investigations/trainer-validation-experiment.md +0 -173
- package/docs/archive/planning/chat-ui-vision-memory-first.md +0 -199
- package/docs/archive/planning/chat-ui-vision.md +0 -50
- package/docs/archive/planning/chunk-task-roadmap.md +0 -77
- package/docs/archive/planning/curve-sampler-research-plan.md +0 -331
- package/docs/archive/planning/journal.md +0 -316
- package/docs/archive/planning/memory-docs-and-dag-plan.md +0 -194
- package/docs/archive/planning/pi-integration-review.md +0 -178
- package/docs/archive/planning/release-notes-v0.0.10.md +0 -57
- package/docs/archive/planning/release-notes-v0.0.11.md +0 -239
- package/docs/archive/planning/release-notes-v0.0.12.md +0 -80
- package/docs/archive/planning/release-notes-v0.0.13.md +0 -77
- package/docs/archive/planning/release-notes-v0.0.9.md +0 -122
- package/docs/archive/planning/release-notes-v0.2.0.md +0 -49
- package/docs/archive/planning/release-notes-v0.3.0.md +0 -35
- package/docs/archive/planning/web-ui-pass-plan.md +0 -213
- package/docs/archive/planning/website-readme-pass-plan.md +0 -224
- package/docs/design/batching.md +0 -1841
- package/docs/design/decode-speed-program.md +0 -2349
- package/docs/design/dreaming-nightly-pipeline.md +0 -684
- package/docs/design/generic-model-support.md +0 -705
- package/docs/design/kv-cache.md +0 -824
- package/docs/design/orpo-training.md +0 -680
- package/docs/design/speculative-decoding.md +0 -1990
- package/docs/design/turboquant.md +0 -2212
- package/docs/design/unified-engine-frontier-plan.md +0 -1880
- package/docs/design/web-chat-redesign.md +0 -695
- package/docs/planning/PRODUCT_ROADMAP.md +0 -594
- package/docs/planning/ResearchTopics.md +0 -119
- package/docs/planning/release-notes-v0.4.0.md +0 -45
- package/docs/planning/video-series.md +0 -421
- package/docs/reference/benchmarks.md +0 -3613
- package/docs/reference/cli.md +0 -585
- package/docs/reference/distribution.md +0 -355
- package/docs/reference/environment.md +0 -398
- package/docs/reference/glossary.md +0 -39
- package/docs/reference/library-api.md +0 -674
- package/docs/reference/memory.md +0 -260
- package/docs/reference/models.md +0 -334
- package/docs/reference/server-api.md +0 -1775
- package/docs/reference/server-config.md +0 -846
- package/docs/reference/training.md +0 -462
- package/docs/reference/troubleshooting.md +0 -158
- package/src/admission-plan.ts +0 -18
- package/src/audio/conformer.ts +0 -647
- package/src/audio/decode.ts +0 -133
- package/src/audio/features.ts +0 -202
- package/src/audio/transcode.ts +0 -67
- package/src/backends/mlx/assistant-target.ts +0 -46
- package/src/backends/mlx/autoregressive-draft-rows.ts +0 -120
- package/src/backends/mlx/autoregressive.ts +0 -108
- package/src/backends/mlx/batch-group.ts +0 -1790
- package/src/backends/mlx/cache-attachment.ts +0 -67
- package/src/backends/mlx/cache-layout.ts +0 -31
- package/src/backends/mlx/checkpoint-state.ts +0 -53
- package/src/backends/mlx/continuation-persistence.ts +0 -106
- package/src/backends/mlx/continuation-request.ts +0 -43
- package/src/backends/mlx/continuation.ts +0 -77
- package/src/backends/mlx/diffusion.ts +0 -39
- package/src/backends/mlx/draft-target.ts +0 -32
- package/src/backends/mlx/evaluation.ts +0 -105
- package/src/backends/mlx/fill-append.ts +0 -45
- package/src/backends/mlx/full-kv-row-append.ts +0 -32
- package/src/backends/mlx/full-kv-row-donor.ts +0 -54
- package/src/backends/mlx/full-transitioning-kv-rows.ts +0 -65
- package/src/backends/mlx/gateway-binding.ts +0 -130
- package/src/backends/mlx/graph.ts +0 -38
- package/src/backends/mlx/kv-codec.ts +0 -9
- package/src/backends/mlx/kv-maintenance.ts +0 -133
- package/src/backends/mlx/kv-tensor-rows.ts +0 -212
- package/src/backends/mlx/memory-client.ts +0 -189
- package/src/backends/mlx/methods.ts +0 -90
- package/src/backends/mlx/model-prompt.ts +0 -164
- package/src/backends/mlx/model-serving.ts +0 -79
- package/src/backends/mlx/prefill-cohort.ts +0 -89
- package/src/backends/mlx/prefill-rows.ts +0 -200
- package/src/backends/mlx/prefill.ts +0 -33
- package/src/backends/mlx/projected-context-rows.ts +0 -72
- package/src/backends/mlx/request-policy.ts +0 -20
- package/src/backends/mlx/request-state-policy.ts +0 -41
- package/src/backends/mlx/rollback.ts +0 -89
- package/src/backends/mlx/row-sampling.ts +0 -49
- package/src/backends/mlx/serial-executor.ts +0 -242
- package/src/backends/mlx/speculative-group.ts +0 -359
- package/src/backends/mlx/speculative-round.ts +0 -161
- package/src/backends/mlx/speculative.ts +0 -114
- package/src/backends/mlx/state-rows.ts +0 -104
- package/src/backends/mlx/state-views.ts +0 -46
- package/src/backends/mlx/target-layout-capability.ts +0 -35
- package/src/backends/mlx/text-engine.ts +0 -73
- package/src/backends/mlx/transitioning-kv-rows.ts +0 -165
- package/src/chat-template.ts +0 -382
- package/src/cli.ts +0 -3168
- package/src/config.ts +0 -399
- package/src/contracts/completion.ts +0 -16
- package/src/contracts/execution.ts +0 -60
- package/src/contracts/generation.ts +0 -103
- package/src/contracts/host.ts +0 -7
- package/src/contracts/pi-provider.ts +0 -30
- package/src/contracts/pi.ts +0 -259
- package/src/contracts/prefix-cache.ts +0 -23
- package/src/contracts/resources.ts +0 -25
- package/src/contracts/sampling.ts +0 -23
- package/src/contracts/scheduling.ts +0 -45
- package/src/contracts/tsconfig.json +0 -14
- package/src/dataset/generators.ts +0 -1087
- package/src/dataset/index.ts +0 -12
- package/src/dataset/job.ts +0 -81
- package/src/dataset/llm.ts +0 -71
- package/src/dataset/registry.ts +0 -528
- package/src/diffusion/diffusion-generate.ts +0 -507
- package/src/download.ts +0 -505
- package/src/embed.ts +0 -77
- package/src/engine/admission.ts +0 -59
- package/src/engine/cancellation.ts +0 -38
- package/src/engine/engine.ts +0 -56
- package/src/engine/execution-coordinator.ts +0 -70
- package/src/engine/execution-plan.ts +0 -53
- package/src/engine/resources.ts +0 -53
- package/src/engine/scheduler.ts +0 -72
- package/src/engine/session.ts +0 -247
- package/src/eval/README.md +0 -130
- package/src/eval/ifeval.ts +0 -81
- package/src/eval/kl-prompts.ts +0 -29
- package/src/eval/kl.ts +0 -590
- package/src/eval/perplexity.ts +0 -164
- package/src/eval/quality-db.ts +0 -92
- package/src/eval/reference-logits.ts +0 -207
- package/src/eval/runner.ts +0 -124
- package/src/eval/score.ts +0 -49
- package/src/eval/tasks/bfcl.ts +0 -535
- package/src/eval/tasks/gsm8k.ts +0 -98
- package/src/eval/tasks/hashhop.ts +0 -139
- package/src/eval/tasks/humaneval.ts +0 -275
- package/src/eval/tasks/ifeval.ts +0 -525
- package/src/eval/tasks/mmlu.ts +0 -157
- package/src/eval/ultrafeedback.ts +0 -60
- package/src/evaldb.ts +0 -199
- package/src/expert-io.ts +0 -393
- package/src/expert-offload-build.ts +0 -77
- package/src/expert-offload.ts +0 -76
- package/src/expert-residency.ts +0 -1134
- package/src/expert-usage.ts +0 -415
- package/src/fill/echo-index.ts +0 -188
- package/src/fill/fill-session.ts +0 -452
- package/src/fill/proposal.ts +0 -68
- package/src/fill/schema-rows.ts +0 -506
- package/src/fill/tool-boundary.ts +0 -103
- package/src/fit.ts +0 -249
- package/src/generate.ts +0 -1346
- package/src/grammar.ts +0 -591
- package/src/harness-pi.ts +0 -184
- package/src/hf-push.ts +0 -628
- package/src/hub-rest.ts +0 -242
- package/src/index.ts +0 -63
- package/src/inference/denoising.ts +0 -17
- package/src/inference/draft-acceptance.ts +0 -41
- package/src/inference/draft-output.ts +0 -49
- package/src/inference/graph.ts +0 -33
- package/src/inference/prefill.ts +0 -39
- package/src/inference/rollback.ts +0 -7
- package/src/jobs/index.ts +0 -31
- package/src/jobs/job-entry.ts +0 -107
- package/src/jobs/task-client.ts +0 -19
- package/src/jobs/types.ts +0 -2
- package/src/kv-scheme.ts +0 -257
- package/src/kv-store.ts +0 -1099
- package/src/lab/README.md +0 -18
- package/src/lab/curve/curve-designer.html +0 -303
- package/src/lab/curve/curve-sampler.ts +0 -122
- package/src/lab/expert-trace/expert-trace.ts +0 -69
- package/src/lab/paged-kv/paged-kv-rows.ts +0 -83
- package/src/lab/paged-kv/paged-kv.ts +0 -270
- package/src/library.ts +0 -40
- package/src/lora.ts +0 -408
- package/src/md-modules.d.ts +0 -49
- package/src/media-fetch.ts +0 -442
- package/src/memory/article.ts +0 -558
- package/src/memory/chunk-validation.ts +0 -150
- package/src/memory/chunk.ts +0 -318
- package/src/memory/cluster.ts +0 -351
- package/src/memory/coverage.ts +0 -134
- package/src/memory/crosslink.ts +0 -0
- package/src/memory/db.ts +0 -253
- package/src/memory/entity.ts +0 -203
- package/src/memory/gate.ts +0 -187
- package/src/memory/history.ts +0 -152
- package/src/memory/ingest.ts +0 -335
- package/src/memory/model.ts +0 -183
- package/src/memory/normalize.ts +0 -671
- package/src/memory/parse.ts +0 -22
- package/src/memory/pipeline.ts +0 -275
- package/src/memory/prompts.ts +0 -65
- package/src/memory/query.ts +0 -334
- package/src/memory/reconcile.ts +0 -734
- package/src/memory/redirect.ts +0 -108
- package/src/memory/reindex.ts +0 -325
- package/src/memory/resolve.ts +0 -307
- package/src/memory/rest.ts +0 -245
- package/src/memory/route.ts +0 -272
- package/src/memory/schedule.ts +0 -165
- package/src/memory/stages.ts +0 -777
- package/src/memory/synthesize.ts +0 -1638
- package/src/memory/tools.ts +0 -749
- package/src/memory/vault.ts +0 -1194
- package/src/memory/wikify.ts +0 -1064
- package/src/mlx/array.ts +0 -388
- package/src/mlx/autograd.ts +0 -304
- package/src/mlx/checkpoint.ts +0 -149
- package/src/mlx/compile.ts +0 -168
- package/src/mlx/custom-vjp.ts +0 -188
- package/src/mlx/ffi.ts +0 -512
- package/src/mlx/materialize.ts +0 -23
- package/src/mlx/metal-kernel.ts +0 -159
- package/src/mlx/ops.ts +0 -1021
- package/src/mlx/quantized-rows.ts +0 -36
- package/src/mlx/token-bitmask.ts +0 -52
- package/src/mlx/turboquant-kv-decode.ts +0 -82
- package/src/mlx/turboquant-kv-inverse.ts +0 -122
- package/src/mlx/turboquant-ops.ts +0 -861
- package/src/mlx/turboquant-tables.ts +0 -237
- package/src/mmap.ts +0 -90
- package/src/model/artifact-identity.ts +0 -73
- package/src/model/batched-kv.ts +0 -235
- package/src/model/batched-mask.ts +0 -279
- package/src/model/batched-quant.ts +0 -212
- package/src/model/batched-quantized-kv.ts +0 -144
- package/src/model/batched-rotating-quant.ts +0 -353
- package/src/model/batched-rotating-state.ts +0 -149
- package/src/model/batched-rotating.ts +0 -338
- package/src/model/batched-row-storage.ts +0 -179
- package/src/model/batched-ssm.ts +0 -52
- package/src/model/batched-turboquant-kv.ts +0 -93
- package/src/model/compiled-decode.ts +0 -712
- package/src/model/decoded-kv-donor.ts +0 -12
- package/src/model/delayed-quantized-kv.ts +0 -72
- package/src/model/delayed-rotating-quantized-kv.ts +0 -93
- package/src/model/delayed-turboquant-kv.ts +0 -55
- package/src/model/diffusion-gemma.ts +0 -1026
- package/src/model/factory.ts +0 -189
- package/src/model/fingerprint.ts +0 -33
- package/src/model/flash-attention.ts +0 -694
- package/src/model/full-prefill-padding.ts +0 -56
- package/src/model/full-prefill-row.ts +0 -105
- package/src/model/gemma4-base.ts +0 -2351
- package/src/model/gemma4.ts +0 -1315
- package/src/model/generated/gemma4-12b.ts +0 -429
- package/src/model/generated/gemma4-26b.ts +0 -448
- package/src/model/generated/gemma4-e4b.ts +0 -717
- package/src/model/generated/index.ts +0 -18
- package/src/model/glm52-atlas.ts +0 -511
- package/src/model/glm52-cache.ts +0 -792
- package/src/model/glm52-config.ts +0 -262
- package/src/model/glm52-container.ts +0 -305
- package/src/model/glm52-coupling.ts +0 -388
- package/src/model/glm52-dsa.ts +0 -606
- package/src/model/glm52-expert-layout.ts +0 -253
- package/src/model/glm52-layout.ts +0 -152
- package/src/model/glm52-memory.ts +0 -500
- package/src/model/glm52-mla.ts +0 -792
- package/src/model/glm52-moe.ts +0 -223
- package/src/model/glm52-pilot.ts +0 -537
- package/src/model/glm52-reference.ts +0 -445
- package/src/model/glm52-residency.ts +0 -557
- package/src/model/glm52-resident-weights.ts +0 -135
- package/src/model/glm52-streamed-experts.ts +0 -453
- package/src/model/glm52-streamed-metal.ts +0 -610
- package/src/model/glm52-weights.ts +0 -503
- package/src/model/glm52.ts +0 -1132
- package/src/model/implementation.ts +0 -69
- package/src/model/kv-attention-view.ts +0 -67
- package/src/model/minicpm5.ts +0 -376
- package/src/model/profile.ts +0 -443
- package/src/model/qwen-append.ts +0 -12
- package/src/model/qwen-conv.ts +0 -52
- package/src/model/qwen3-delta-state.ts +0 -74
- package/src/model/qwen3-delta.ts +0 -451
- package/src/model/qwen3-moe.ts +0 -404
- package/src/model/qwen3-mrope.ts +0 -252
- package/src/model/qwen3.ts +0 -277
- package/src/model/qwen3_5-checkpoint.ts +0 -164
- package/src/model/qwen3_5.ts +0 -819
- package/src/model/rotating-kv-donor.ts +0 -35
- package/src/model/rotating-kv-layout.ts +0 -262
- package/src/model/rotating-row-transaction.ts +0 -35
- package/src/model/speculative-rotating-kv.ts +0 -101
- package/src/model/ssm-prefill-padding.ts +0 -39
- package/src/model/support.ts +0 -102
- package/src/model/trellis-balanced-scatter.ts +0 -51
- package/src/model/trellis-linear.ts +0 -672
- package/src/model/trellis-shared-m.ts +0 -151
- package/src/model/trellis-shared-scatter.ts +0 -144
- package/src/model/trellis-splitk-prefill.ts +0 -158
- package/src/model/trellis-tiled-prefill.ts +0 -136
- package/src/model/trellis-vector-expand.ts +0 -62
- package/src/model/trellis-wide-prefill.ts +0 -94
- package/src/model/turboquant-codec.ts +0 -83
- package/src/model/universal/archs.ts +0 -332
- package/src/model/universal/dense.ts +0 -612
- package/src/model/universal/modules.ts +0 -170
- package/src/model/universal/rope.ts +0 -381
- package/src/native/expert_io.c +0 -523
- package/src/native/frame_extract.swift +0 -140
- package/src/native-pack.ts +0 -162
- package/src/pi-provider.ts +0 -53
- package/src/pi-session.ts +0 -81
- package/src/pi-terminal.ts +0 -274
- package/src/pi-web.ts +0 -1932
- package/src/preflight.ts +0 -158
- package/src/prompt-cache.ts +0 -460
- package/src/quantize/allocator.ts +0 -627
- package/src/quantize/atomic-output.ts +0 -38
- package/src/quantize/calibration.ts +0 -181
- package/src/quantize/config-writer.ts +0 -145
- package/src/quantize/index.ts +0 -84
- package/src/quantize/job.ts +0 -162
- package/src/quantize/quantizer.ts +0 -666
- package/src/quantize/rotate.ts +0 -603
- package/src/quantize/safetensors-writer.ts +0 -249
- package/src/quantize/sensitivity.ts +0 -216
- package/src/quantize/trellis.ts +0 -586
- package/src/quantize/weight-transform.ts +0 -292
- package/src/registry.ts +0 -602
- package/src/runtime-config.ts +0 -81
- package/src/safetensors.ts +0 -158
- package/src/sampler.ts +0 -1011
- package/src/serve/admin-routes.ts +0 -184
- package/src/serve/assets/curve-terrain.html +0 -105
- package/src/serve/assets/training-inference-map.html +0 -575
- package/src/serve/aux-routes.ts +0 -132
- package/src/serve/batch-scheduler.ts +0 -8
- package/src/serve/checkpoint-identity.ts +0 -64
- package/src/serve/generation-gateway.ts +0 -496
- package/src/serve/isolate.ts +0 -609
- package/src/serve/kv-budget.ts +0 -14
- package/src/serve/lab-routes.ts +0 -341
- package/src/serve/lane-registry.ts +0 -45
- package/src/serve/model-admin-routes.ts +0 -155
- package/src/serve/model-binding.ts +0 -43
- package/src/serve/model-host.ts +0 -511
- package/src/serve/parent-application.ts +0 -56
- package/src/serve/prompt-response-trace.ts +0 -147
- package/src/serve/response-lease.ts +0 -24
- package/src/serve/session-search.ts +0 -326
- package/src/serve/static-routes.ts +0 -101
- package/src/server.ts +0 -1314
- package/src/spec/assistant-rows.ts +0 -92
- package/src/spec/assistant-source.ts +0 -126
- package/src/spec/cache-identity.ts +0 -22
- package/src/spec/deepspec-rows.ts +0 -29
- package/src/spec/deepspec-source.ts +0 -145
- package/src/spec/dflash-source.ts +0 -149
- package/src/spec/drafter.ts +0 -304
- package/src/spec/dspark/ab-stats.ts +0 -136
- package/src/spec/dspark/calibration.ts +0 -112
- package/src/spec/dspark/data-dflash.ts +0 -156
- package/src/spec/dspark/data.ts +0 -201
- package/src/spec/dspark/deepspec-module.ts +0 -776
- package/src/spec/dspark/generate-dflash.ts +0 -245
- package/src/spec/dspark/generate.ts +0 -290
- package/src/spec/dspark/loader.ts +0 -23
- package/src/spec/dspark/loss.ts +0 -213
- package/src/spec/dspark/module-dflash.ts +0 -560
- package/src/spec/dspark/module.ts +0 -540
- package/src/spec/dspark/quantize-drafter.ts +0 -91
- package/src/spec/dspark/sample.ts +0 -112
- package/src/spec/generate.ts +0 -276
- package/src/spec/glm52-mtp-graph.ts +0 -29
- package/src/spec/glm52-mtp-rows.ts +0 -132
- package/src/spec/glm52-mtp-source.ts +0 -317
- package/src/spec/glm52-mtp-state.ts +0 -33
- package/src/spec/ngram-source.ts +0 -204
- package/src/spec/projected-draft-rows.ts +0 -73
- package/src/spec/qwen-mtp-module.ts +0 -171
- package/src/spec/qwen-mtp-rows.ts +0 -219
- package/src/spec/qwen-mtp-source.ts +0 -383
- package/src/spec/qwen-mtp-state.ts +0 -30
- package/src/spec/serve-loop.ts +0 -585
- package/src/spec/source.ts +0 -215
- package/src/spec/two-model-rows.ts +0 -61
- package/src/spec/two-model.ts +0 -113
- package/src/ssd-cache.ts +0 -372
- package/src/ssd-durability.ts +0 -211
- package/src/tokenizer.ts +0 -335
- package/src/tool-approvals.ts +0 -131
- package/src/tool-call.ts +0 -695
- package/src/train/dataset.ts +0 -484
- package/src/train/diffusion-lora.ts +0 -216
- package/src/train/export.ts +0 -32
- package/src/train/flash-cce.ts +0 -1234
- package/src/train/forward.ts +0 -266
- package/src/train/fuse.ts +0 -243
- package/src/train/index.ts +0 -46
- package/src/train/job.ts +0 -205
- package/src/train/lora-params.ts +0 -254
- package/src/train/loss.ts +0 -1591
- package/src/train/merge.ts +0 -195
- package/src/train/optimizer.ts +0 -183
- package/src/train/prefix-shared.ts +0 -490
- package/src/train/rank.ts +0 -137
- package/src/train/segmented.ts +0 -1828
- package/src/train/steel-qmm-header.ts +0 -1461
- package/src/train/trainer.ts +0 -1221
- package/src/train/watch.ts +0 -542
- package/src/vision/diffusion-vision.ts +0 -620
- package/src/vision/embedder.ts +0 -168
- package/src/vision/preprocess.ts +0 -247
- package/src/vision/prompt.ts +0 -373
- package/src/vision/qwen3vl-preprocess.ts +0 -409
- package/src/vision/qwen3vl-prompt.ts +0 -196
- package/src/vision/qwen3vl-tower.ts +0 -555
- package/src/vision/siglip.ts +0 -599
- package/src/vision/video-frames.ts +0 -148
- package/src/web/app.html +0 -2143
- package/src/web/app.js +0 -5703
- package/src/web/skills/memory/SKILL.md +0 -120
- package/src/web/skills/web-research/SKILL.md +0 -46
- package/src/web/skills.ts +0 -97
- package/src/web/src/adapters-panel.ts +0 -288
- package/src/web/src/assistant.ts +0 -451
- package/src/web/src/chat.ts +0 -1057
- package/src/web/src/composer.ts +0 -959
- package/src/web/src/dataset.ts +0 -132
- package/src/web/src/finetune.ts +0 -267
- package/src/web/src/hub.ts +0 -428
- package/src/web/src/main.ts +0 -98
- package/src/web/src/markdown.ts +0 -0
- package/src/web/src/memory-panel.ts +0 -572
- package/src/web/src/model-picker.ts +0 -159
- package/src/web/src/palette.ts +0 -346
- package/src/web/src/protocol.ts +0 -26
- package/src/web/src/quantize.ts +0 -167
- package/src/web/src/rag.ts +0 -274
- package/src/web/src/sessions.ts +0 -469
- package/src/web/src/shell.ts +0 -804
- package/src/web/src/ui-catalog.ts +0 -78
- package/src/web/vendor/README.md +0 -61
- package/src/web-assets.ts +0 -47
- package/src/web-tools.ts +0 -478
- package/src/weights.ts +0 -255
- /package/src/{serve → server}/completion-sink.ts +0 -0
- /package/src/web/{icon.svg → public/icon.svg} +0 -0
- /package/src/web/{manifest.webmanifest → public/manifest.webmanifest} +0 -0
- /package/src/web/{vendor → public/vendor}/hljs-LICENSE +0 -0
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
# v0.0.11 release notes
|
|
2
|
-
|
|
3
|
-
Everything since v0.0.10. The big themes: mlx-bun grows a second modality
|
|
4
|
-
(audio), a constrained-decoding stack (structured output / grammar),
|
|
5
|
-
speculative decoding, a novel KV-cache quantization scheme (TurboQuant),
|
|
6
|
-
completed dynamic batching, crash-isolated serving, and a ground-up
|
|
7
|
-
rewrite of the web chat UI. The decode-default story also resets: after
|
|
8
|
-
benchmarking every custom performance kernel in a paired A/B against the
|
|
9
|
-
bit-exact baseline and finding none of them won, they were deleted —
|
|
10
|
-
naked `mlx-bun serve` now runs the faithful, mlx-lm-parity kernel set by
|
|
11
|
-
default.
|
|
12
|
-
|
|
13
|
-
## Audio input (Gemma e4b)
|
|
14
|
-
|
|
15
|
-
- OpenAI-style `input_audio` parts are served end-to-end: WAV/AAC
|
|
16
|
-
transcode, a USM mel-spectrogram extractor, and a Conformer tower
|
|
17
|
-
ported bit-exact (rel-RMSE 2.4e-8) against the oracle.
|
|
18
|
-
- Build-out ran phase-by-phase (A0–A5): a `bun:ffi` conv2d binding for
|
|
19
|
-
the front-end, the multimodal prompt builder wired to the LM, and
|
|
20
|
-
capability discovery for audio surfaced consistently across
|
|
21
|
-
`/v1/models`, `/library`, and the pi websocket handshake — mirroring
|
|
22
|
-
how vision capability is advertised.
|
|
23
|
-
|
|
24
|
-
## Structured output / grammar-constrained generation
|
|
25
|
-
|
|
26
|
-
- `response_format` (`json_object`, `json_schema`, `text`) and
|
|
27
|
-
`guided_grammar`/`guided_regex`/`guided_choice`/`structured_outputs`
|
|
28
|
-
are wired into both `/v1/chat/completions` and `/v1/completions`, built
|
|
29
|
-
on `xgrammar`: a `GrammarController` masks logits inside the decode
|
|
30
|
-
loop, with a per-`TokenizerInfo` compiler cache and a `MLX_BUN_GRAMMAR=0`
|
|
31
|
-
kill switch.
|
|
32
|
-
- The batched lane got its own per-row matcher path so grammar-constrained
|
|
33
|
-
requests don't force a request onto the serial lane, and grammar
|
|
34
|
-
composes with `--draft-model` (the verify walk respects the mask).
|
|
35
|
-
- Two defects found and fixed during the build: the oMLX-parity
|
|
36
|
-
JSON-system-prompt degrade path (used when a client can't do function
|
|
37
|
-
calling) had gone unreachable behind a dropped hint, and the WASM
|
|
38
|
-
grammar controllers were leaking on every early-400 reject path
|
|
39
|
-
(SSRF-blocked media, vision/audio validation failures, bad
|
|
40
|
-
`logit_bias`, etc.) — both fixed, with disposal now covering all paths.
|
|
41
|
-
|
|
42
|
-
## Speculative decoding
|
|
43
|
-
|
|
44
|
-
- `--draft-model` lands in serve: a two-model, serial-lane speculative
|
|
45
|
-
decoding path verified token-for-token against mlx-lm's own
|
|
46
|
-
`--draft-model` oracle (`DraftSource` seam, rewind rule, batched-verify
|
|
47
|
-
lm-head).
|
|
48
|
-
- An ngram / jump-forward draft kind ships alongside the model-based
|
|
49
|
-
drafter for cases with no small model available.
|
|
50
|
-
- A DeepSpec (DSpark) drafter-quant research track is underway
|
|
51
|
-
(Phase 1 landed) targeting the larger models; per
|
|
52
|
-
`benchmarks/RESULTS.md`, the first live pair (12B target +
|
|
53
|
-
bf16 DeepSpec drafter, 26–33% acceptance) measured net **slower**
|
|
54
|
-
than serial on a loaded box — spec decoding stays **off by default**
|
|
55
|
-
pending a quantized-drafter pair that clears the 1.3× bar.
|
|
56
|
-
|
|
57
|
-
## TurboQuant KV-cache quantization
|
|
58
|
-
|
|
59
|
-
- `--kv-quant turbo[:kXvY]` adds a rotation-based per-group KV
|
|
60
|
-
quantization scheme (sign-FWHT + Lloyd-Max for values), proven
|
|
61
|
-
bit-exact against the vendored vllm-metal reference
|
|
62
|
-
(`goldens/turboquant.json`).
|
|
63
|
-
- Per `benchmarks/RESULTS.md`, the k8v3 default holds a lower KL-vs-bf16
|
|
64
|
-
than affine uniform kv4 while compressing KV **2.56×** (measured on
|
|
65
|
-
MiniCPM5-1B, paired quality/KL harness). It's a memory/context lever,
|
|
66
|
-
not a speed lever — v1 dequant-on-fetch is slower per decode step at
|
|
67
|
-
long context, so it stays **opt-in, not default**, per the project's
|
|
68
|
-
"levers must earn defaults" rule.
|
|
69
|
-
|
|
70
|
-
## Batching: Phase D completed
|
|
71
|
-
|
|
72
|
-
- Aggregate `--kv-budget <GB>` admission with FIFO queuing, vectorized
|
|
73
|
-
homogeneous sampling (penalties/`logit_bias`/`min_p`/XTC all run
|
|
74
|
-
per-row in the batch), and extend-join so a request can join an
|
|
75
|
-
in-flight batch mid-flight instead of waiting for a full drain.
|
|
76
|
-
- Per-row RoPE lands for Tier-0 universal architectures, lifting the
|
|
77
|
-
batching gate for those models (e.g. Llama).
|
|
78
|
-
- Batched mixed-precision quantized KV — the first stack to compose
|
|
79
|
-
per-row KV quantization with batching.
|
|
80
|
-
- `--batch` default changes from 1 to 8 (see Breaking changes below).
|
|
81
|
-
|
|
82
|
-
## Runtime isolation
|
|
83
|
-
|
|
84
|
-
- `--isolate` runs the engine as a crash-isolated child process behind a
|
|
85
|
-
reactor parent, restarting with backoff on a crash — the product rule
|
|
86
|
-
is **"the AI may crash, the UI never may"** (`docs/design/runtime-isolation.md`).
|
|
87
|
-
- `--model-pool` extends this to a child-per-model pool: LRU residency,
|
|
88
|
-
spawn-overlap switching (no dead time swapping models), and
|
|
89
|
-
`POST /admin/drain` for graceful eviction.
|
|
90
|
-
|
|
91
|
-
## Optional paged KV cache
|
|
92
|
-
|
|
93
|
-
- `--paged-kv` adds a vLLM-style block-table paged KV cache
|
|
94
|
-
(`PagedKVCache` + `BlockPool`) feeding the unchanged stock SDPA via
|
|
95
|
-
block gather. Default off; v1 scope is serial `--batch 1`, the
|
|
96
|
-
Gemma4 family, bf16 — it refuses to silently combine with
|
|
97
|
-
`--batch N>1`, `--kv-quant`, or `--draft-model`.
|
|
98
|
-
|
|
99
|
-
## Prompt cache overhaul
|
|
100
|
-
|
|
101
|
-
- Prefix-sharing v1: `take()` now returns non-consuming, ref-counted
|
|
102
|
-
clones instead of consuming/trimming the donor entry, so multiple
|
|
103
|
-
agents or sessions can reuse one prefill without cannibalizing each
|
|
104
|
-
other's cache.
|
|
105
|
-
- The SSD cold tier is promoted from an add-on to a first-class property
|
|
106
|
-
of the cache store, with `--ssd-demote-idle <seconds>` (default 300,
|
|
107
|
-
requires `--ssd-cache`) freeing GPU memory by demoting idle entries;
|
|
108
|
-
`/stats` gains `ssd_cache.demotions`.
|
|
109
|
-
- A stable-boundary snapshot fix restores prompt-cache hits for
|
|
110
|
-
multi-turn agent traffic beyond the sliding window — this was
|
|
111
|
-
previously a silent cache miss on turn 2+ of long conversations.
|
|
112
|
-
- The SSD write-behind flush is now idle-gated, so background disk
|
|
113
|
-
writes stop contending with decode at long context; the earlier A7
|
|
114
|
-
RSS regression on the ssd-cache path closed with zero-copy write views
|
|
115
|
-
and a streamed copy-restore.
|
|
116
|
-
|
|
117
|
-
## Web chat UI: ground-up redesign (Phases 0–3)
|
|
118
|
-
|
|
119
|
-
- Streaming render rewritten to be block-memoized (no more O(n²)
|
|
120
|
-
re-parse of the growing message), with a typed module split.
|
|
121
|
-
- New surfaces: a memory panel, adapter routing, a system-prompt editor,
|
|
122
|
-
an approval gate, client-side RAG over chat history (BM25, no server
|
|
123
|
-
round-trip), a Model Hub, Canvas, per-message sampling controls,
|
|
124
|
-
self-healing tool calls, a command palette, full-text search, and
|
|
125
|
-
chat export.
|
|
126
|
-
- An app-aware assistant (v1) that can see and navigate its own UI —
|
|
127
|
-
spotlight/selector resolution now treats a model-invented or malformed
|
|
128
|
-
selector as a miss instead of throwing inside the websocket handler.
|
|
129
|
-
- PWA support, plus a round of visual-QA fixes: the phone nav band,
|
|
130
|
-
light-theme code legibility, a composer placeholder regression, memory
|
|
131
|
-
panel markdown chrome, the theme-toggle Auto button, a clipped status
|
|
132
|
-
pill, and tab flex-shrink pinned to zero on phones.
|
|
133
|
-
|
|
134
|
-
## Security: media-fetch SSRF hardening
|
|
135
|
-
|
|
136
|
-
- `image_url`/`audio_url` fetches now refuse private/loopback/link-local/
|
|
137
|
-
CGNAT destinations and non-`http(s)` schemes by default, re-validate
|
|
138
|
-
through up to 5 redirect hops, enforce a 10s wall-clock timeout, and
|
|
139
|
-
cap bodies at 64MB.
|
|
140
|
-
- LAN use needs the new escape hatch: `--allow-private-media` /
|
|
141
|
-
`MLX_BUN_ALLOW_PRIVATE_MEDIA=1`.
|
|
142
|
-
|
|
143
|
-
## Fixed
|
|
144
|
-
|
|
145
|
-
- 12B `/v1/completions` probe parity: adopted the oracle's step-0
|
|
146
|
-
prefill convention (drain to len−1, step 0 from an `L=1` forward of the
|
|
147
|
-
last prompt token). Per `benchmarks/RESULTS.md`, live HTTP probes are
|
|
148
|
-
now byte-identical to `mlx_lm.server`/optiq serve for MiniCPM5-1B,
|
|
149
|
-
gemma-4-e4b, and gemma-4-12B, on completion and chat probes, in both
|
|
150
|
-
the `--batch 8` default lane and `--batch 1`.
|
|
151
|
-
- BPE detokenization now mirrors mlx-lm's bare-space hold-back and
|
|
152
|
-
never-finalize semantics exactly.
|
|
153
|
-
- Cache invariant enforced on every tier; an FFI destructor deadlock
|
|
154
|
-
fixed; write-behind made non-blocking; per-row batch cache extraction
|
|
155
|
-
fixed.
|
|
156
|
-
- `generate()` now yields a macrotask between prefill chunks, keeping the
|
|
157
|
-
isolation path (and the server generally) responsive during long
|
|
158
|
-
prefills.
|
|
159
|
-
- Benchmark harness: the `--batch 1` serial control arm now runs by
|
|
160
|
-
default (it had been skippable, which undermined validating the new
|
|
161
|
-
batch-8 default); `--engine` is additive instead of mutually exclusive
|
|
162
|
-
with the serve pass; the batch-path test now asserts cumulative
|
|
163
|
-
`/stats` `submitted_rows` instead of a stale `cachedTokens=0` premise.
|
|
164
|
-
- `any_whitespace` grammar knob landed; batch-grammar gates re-anchored
|
|
165
|
-
to compact separators.
|
|
166
|
-
|
|
167
|
-
## Infra / benchmark harness redesign
|
|
168
|
-
|
|
169
|
-
- `benchmark.sh` + `scripts/bench-modes.ts` now spawn real CLI paths
|
|
170
|
-
instead of bench-local server wrappers, folding bit-parity and
|
|
171
|
-
peak-memory checks into the same serve cells (one pass instead of
|
|
172
|
-
several). New columns: cold-start and restart-survival; new workload:
|
|
173
|
-
`xl` (~4k prefix); a feature-matrix benchmark mode.
|
|
174
|
-
- Repo cleanup: `lab/` consolidation, a binary-tracking hygiene gate, and
|
|
175
|
-
a git history rewrite that took the repo from 182MB to 20MB, removing
|
|
176
|
-
the last multi-MB binaries from the index.
|
|
177
|
-
- New design docs: `unified-engine-frontier-plan`, `dspark-serving-program`
|
|
178
|
-
(the DeepSpec/DSpark spec-decode research program), `structured-output`,
|
|
179
|
-
`web-chat-redesign` (+ app-aware-assistant, superset-doctrine, and
|
|
180
|
-
visual-QA-bar notes), `paged-kv-cache`, `batching-perf-path` /
|
|
181
|
-
`batching-v2-plan`, `runtime-isolation`.
|
|
182
|
-
- Doc drift swept: env-lever table entries (`MLX_BUN_DSPARK_MINCONF`,
|
|
183
|
-
`MLX_BUN_BATCH_NO_PIPELINE`, `MLX_BUN_EXPERT_OFFLOAD`), ngram
|
|
184
|
-
draft-kind coverage in README/server-api, doc-map sync, an openwiki
|
|
185
|
-
investigation write-up. STATUS.md was rewritten to current-state-only
|
|
186
|
-
several times through the release to keep handoff notes accurate.
|
|
187
|
-
- A new ground rule was recorded in CLAUDE.md: changes to the served
|
|
188
|
-
surface must update the user-facing reference docs in the same commit.
|
|
189
|
-
- A direct optiq mixed-KV bit-parity golden replaced an indirect
|
|
190
|
-
ours-vs-ours comparison; a bit-exact L1 parity harness was added for
|
|
191
|
-
the Qwen3-30B-A3B MoE port, with uniform quantized KV confirmed
|
|
192
|
-
bit-exact against mlx-lm's own `--kv-bits` and a stock-mlx-lm baseline
|
|
193
|
-
added to the bench.
|
|
194
|
-
- Dependency/CI bumps: pi, `actions/checkout`, and the site build moved
|
|
195
|
-
off a deprecated Node runtime.
|
|
196
|
-
|
|
197
|
-
## Breaking / behavior changes
|
|
198
|
-
|
|
199
|
-
- **`--batch` default changes from 1 to 8.** Serving now batches by
|
|
200
|
-
default whenever concurrent requests arrive; pass `--batch 1` to force
|
|
201
|
-
strict serial (needed if you require arrival-order-independent,
|
|
202
|
-
bit-identical numerics).
|
|
203
|
-
- **The default decode path changed.** Naked, no-flag serving now runs
|
|
204
|
-
the faithful, bit-exact-vs-mlx-lm kernel set — what `--l1` used to
|
|
205
|
-
mean. `--l1`/`--l2`/`--l3` are now pure aliases over per-feature flags
|
|
206
|
-
rather than distinct performance tiers. Every custom-kernel path that
|
|
207
|
-
didn't beat this baseline in a paired A/B was deleted in the same
|
|
208
|
-
pass: the fused-decode kernel, fused-gelu/fused-swiglu/fused-mlp/
|
|
209
|
-
steel-linear Metal kernels, the flash-decode "perf" kernel and its
|
|
210
|
-
frozen-oracle test scaffolding, `--l3`, and `FaithfulMiniCPM5` /
|
|
211
|
-
`MLX_BUN_CPM5_FAITHFUL`. None of these flags or code paths exist
|
|
212
|
-
anymore. `MLX_BUN_FAITHFUL` is also gone (superseded by the faithful
|
|
213
|
-
kernels being the default) — the server's unset `--kv-quant` now
|
|
214
|
-
defaults to bf16 instead of `kv_config`, so getting the old default
|
|
215
|
-
composition requires an explicit `--kv-quant`.
|
|
216
|
-
- **New CLI/API surface:** `--kv-quant turbo[:kXvY]` (TurboQuant),
|
|
217
|
-
`--paged-kv` (off by default; refuses to combine with `--batch N>1`,
|
|
218
|
-
`--kv-quant`, or `--draft-model`), `--draft-model` (speculative
|
|
219
|
-
decoding), `--isolate` and `--model-pool` (runtime isolation),
|
|
220
|
-
`--kv-budget <GB>` (aggregate KV admission), `--ssd-demote-idle
|
|
221
|
-
<seconds>` (default 300, requires `--ssd-cache`),
|
|
222
|
-
`--allow-private-media` / `MLX_BUN_ALLOW_PRIVATE_MEDIA=1`, and the
|
|
223
|
-
`response_format` / `guided_grammar` / `guided_regex` / `guided_choice`
|
|
224
|
-
/ `structured_outputs` request fields (kill switch:
|
|
225
|
-
`MLX_BUN_GRAMMAR=0`).
|
|
226
|
-
- **Media fetches are restricted by default.** `image_url`/`audio_url`
|
|
227
|
-
now refuse private/loopback/link-local/CGNAT destinations and
|
|
228
|
-
non-`http(s)` schemes — previously they fetched anything. LAN media
|
|
229
|
-
needs the new escape hatch above.
|
|
230
|
-
- **`PromptCache.take()` semantics changed.** Cache hits now return
|
|
231
|
-
non-consuming, ref-counted clones instead of consuming/trimming the
|
|
232
|
-
donor entry — code holding onto the old consuming behavior should
|
|
233
|
-
re-check callers.
|
|
234
|
-
|
|
235
|
-
Full details and measured numbers: STATUS.md, `benchmarks/RESULTS.md`,
|
|
236
|
-
and the design docs referenced above. Credit where due: TurboQuant's
|
|
237
|
-
codec is verified bit-exact against the vendored vllm-metal reference,
|
|
238
|
-
and the speculative-decoding path is verified token-for-token against
|
|
239
|
-
mlx-lm's own `--draft-model` implementation.
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
# v0.0.12 release notes
|
|
2
|
-
|
|
3
|
-
mlx-bun 0.0.12 completes the native Colibri/GLM-5.2 program: a Python-free,
|
|
4
|
-
direct-container runtime that can serve the approximately 357 GiB artifact on
|
|
5
|
-
a 32 GiB Apple Silicon Mac by keeping a bounded working set in memory and
|
|
6
|
-
streaming routed experts from fast storage.
|
|
7
|
-
|
|
8
|
-
## GLM-5.2 direct-container serving
|
|
9
|
-
|
|
10
|
-
- Loads `mateogrgic/GLM-5.2-colibri-int4-with-int8-mtp` directly. No converted
|
|
11
|
-
copy and no Python process are involved in the serving path.
|
|
12
|
-
- Preserves checkpoint precision and true top-8 routing. The port is gated
|
|
13
|
-
against pinned Colibri at tiny, production-component, real-model, MTP, cache,
|
|
14
|
-
and first-sparse DSA boundaries.
|
|
15
|
-
- Native int8 MTP is enabled by default and uses the serial speculative lane.
|
|
16
|
-
It produced a measured 1.306x warm end-to-end win over MTP-off on the 32 GiB
|
|
17
|
-
reference machine while preserving all target tokens.
|
|
18
|
-
- Compressed MLA/DSA/MTP cache persistence, restart restore, compressed-byte
|
|
19
|
-
admission, ordinary continuous batching, mixed-length join/leave/cancel, and
|
|
20
|
-
cross-row expert union are included. Per-row batched MTP remains a later
|
|
21
|
-
feature; MTP requests truthfully report `serial+spec`.
|
|
22
|
-
- Chat completions, text completions, Anthropic Messages, OpenAI Responses,
|
|
23
|
-
SSE, tools, structured output, stops, sampling, usage, and serial logprobs
|
|
24
|
-
are supported. Embeddings, vision/audio, LoRA, and training are explicitly
|
|
25
|
-
reported unsupported for this model instead of being emulated.
|
|
26
|
-
|
|
27
|
-
## Memory and acquisition contract
|
|
28
|
-
|
|
29
|
-
- `mlx-bun get` now computes the exact remaining payload before the first
|
|
30
|
-
payload request, credits verified shared blobs and resumable prefixes, and
|
|
31
|
-
refuses an acquisition that cannot leave a fixed 1 GiB safety reserve.
|
|
32
|
-
- The GLM header-only preflight runs before resident weights or expert slabs
|
|
33
|
-
open. With the stock DSA overlay installed, 4,096 context / 128 generation
|
|
34
|
-
tokens and MTP on produce a 19.89 GiB plan under a 25 GiB process ceiling,
|
|
35
|
-
leaving 5.11 GiB of process/macOS headroom on a 32 GiB machine.
|
|
36
|
-
- `fit`, `/fit`, `/stats`, and the status page now distinguish the complete
|
|
37
|
-
artifact on disk from resident weights, main/MTP slabs, compressed KV, and
|
|
38
|
-
reserves. They also expose main/MTP residency, hit rate, SSD bytes, policy
|
|
39
|
-
telemetry, and repin events.
|
|
40
|
-
|
|
41
|
-
## Performance: measured, not predicted
|
|
42
|
-
|
|
43
|
-
- Warm quality-preserving throughput on the M1 Max 32 GiB reference machine is
|
|
44
|
-
0.1577 decode tok/s / 0.1487 end-to-end tok/s with MTP on. The same-machine
|
|
45
|
-
direct-Colibri control is approximately 0.27 tok/s.
|
|
46
|
-
- The 2 tok/s figure remains an aspiration, not a release gate or `fit`
|
|
47
|
-
prediction. The measured warm end-to-end result is 13.45x below it.
|
|
48
|
-
- Replicated telemetry measured 1,974,949,363,712 logical expert bytes per
|
|
49
|
-
128-token warm turn (15.429 decimal GB/token) and a 1.66% cache hit rate.
|
|
50
|
-
Startup auto-pin, live LFRU, PILOT hints, two-step prediction, and coupling
|
|
51
|
-
did not improve paired end-to-end performance and remain off by default.
|
|
52
|
-
- The checkpoint's 21-full/57-shared DSA schedule is implemented and exact.
|
|
53
|
-
Paired 2K/8K tests did not establish an MTP-on product-speed win, so this
|
|
54
|
-
release makes no DSA speed claim. The public Colibri artifact does not ship
|
|
55
|
-
the stock DSA indexer overlay; without it the runtime follows the artifact's
|
|
56
|
-
available attention path.
|
|
57
|
-
|
|
58
|
-
## Distribution and operator experience
|
|
59
|
-
|
|
60
|
-
- First-run native pack v0.2.0 adds the bounded native expert-I/O helper. The
|
|
61
|
-
npm/bunx fresh-cache path downloads, verifies, and extracts all five runtime
|
|
62
|
-
files; the signed/Homebrew bundle includes the same helper beside the binary.
|
|
63
|
-
- The pinned 32 GiB quickstart, volume selection, interrupted-download recovery,
|
|
64
|
-
model lineage, licenses, resource plan, measured performance, and limitations
|
|
65
|
-
are documented in README and the reference guides.
|
|
66
|
-
- The interactive Atlas report reproduces Colibri's expert topic-affinity
|
|
67
|
-
result: 29/30 leave-one-prompt-out classifications (96.7%) and 1,065 strong
|
|
68
|
-
specialists among 13,236 replicated experts.
|
|
69
|
-
|
|
70
|
-
## Stability fixes since v0.0.11
|
|
71
|
-
|
|
72
|
-
- Closed pre-Colibri correctness and lifecycle findings, including expert-slab
|
|
73
|
-
post-close and lazy-graph reuse hazards, with forced native/MLX churn gates.
|
|
74
|
-
- Fixed selected-logprob readback stalling and revalidated the audio splice
|
|
75
|
-
boundary against the oracle.
|
|
76
|
-
- Corrected current Hugging Face LFS checksum-field handling and retained the
|
|
77
|
-
older spelling for compatibility.
|
|
78
|
-
|
|
79
|
-
Full provenance and exact numbers are in `benchmarks/RESULTS.md`, `STATUS.md`,
|
|
80
|
-
and `docs/design/colibri-glm52-port.md`.
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# v0.0.13 release notes
|
|
2
|
-
|
|
3
|
-
Everything since v0.0.12. One theme: **Qwen 3.8**. The current-generation
|
|
4
|
-
Qwen (released August 2026) is brought up on the published OptiQ
|
|
5
|
-
artifact at the repo's standard bar — bit-exact logit parity with
|
|
6
|
-
mlx-lm — with its thinking controls served faithfully. Vision, video,
|
|
7
|
-
and native Qwen MTP remain separately gated follow-ups.
|
|
8
|
-
|
|
9
|
-
## Qwen3.8-27B (text, bit-exact)
|
|
10
|
-
|
|
11
|
-
- `mlx-community/Qwen3.8-27B-OptiQ-4bit` serves on the existing
|
|
12
|
-
qwen3_5 hybrid graph (gated DeltaNet + gated attention) — the
|
|
13
|
-
architecture audit found byte-identical geometry to the verified
|
|
14
|
-
port, and parity confirmed it: **every logit at every prompt
|
|
15
|
-
position plus 32 greedy decode steps, bit-exact vs stock mlx-lm**
|
|
16
|
-
(the parity harness grew a full prefill-grid golden and
|
|
17
|
-
manifest-driven step counts in the process).
|
|
18
|
-
- The config's new `output_gate_type: "swish"` field is inert in every
|
|
19
|
-
implementation (transformers ground truth included) — a load-time
|
|
20
|
-
guard now fails loudly if a future checkpoint carries a value we
|
|
21
|
-
haven't verified.
|
|
22
|
-
- Fit reality: the artifact is 20.35 GB of shards. 32 GB machines
|
|
23
|
-
serve it comfortably; 24 GB machines need `--memory-budget` and
|
|
24
|
-
should prefer the uniform 4-bit conversion until the planned
|
|
25
|
-
~4 bpw TurboQuant×weights artifact lands (PLAN 14z).
|
|
26
|
-
|
|
27
|
-
## Thinking controls (Qwen 3.8's serving surface)
|
|
28
|
-
|
|
29
|
-
- Thinking is on by default and streams as OpenAI `reasoning` deltas;
|
|
30
|
-
`chat_template_kwargs.enable_thinking: false` selects instruct mode.
|
|
31
|
-
- `reasoning_effort` is now a real depth control on templates that read
|
|
32
|
-
it: OpenAI levels map onto Qwen's `low`/`medium`/`xhigh` (with
|
|
33
|
-
`xhigh` accepted as a first-class request value), and the variable is
|
|
34
|
-
only passed to templates that declare it — the Qwen 3.8 template
|
|
35
|
-
raises on unknown level names, so the server never forwards unmapped
|
|
36
|
-
strings.
|
|
37
|
-
- `preserve_thinking` (new in Qwen 3.8, default on) is forwarded:
|
|
38
|
-
history keeps its think blocks, which also improves prompt-cache
|
|
39
|
-
reuse in agent loops.
|
|
40
|
-
- Tool calling: Qwen 3.8's XML call format
|
|
41
|
-
(`<tool_call><function=name><parameter=…>`) parses through the
|
|
42
|
-
existing Qwen-style parser into OpenAI `tool_calls`, multiline
|
|
43
|
-
parameters included.
|
|
44
|
-
|
|
45
|
-
## Qwen native MTP is deliberately not shipped yet
|
|
46
|
-
|
|
47
|
-
- Qwen 3.8 ships a multi-step MTP head trained alongside the model;
|
|
48
|
-
mlx-community publishes it split out
|
|
49
|
-
(`mlx-community/Qwen3.8-27B-MTP-bf16`). Review found that the target's
|
|
50
|
-
48 recurrent DeltaNet caches cannot roll back rejected verify rows,
|
|
51
|
-
while the shared speculative loop requires exactly that operation.
|
|
52
|
-
The initial implementation therefore never reached a draft round.
|
|
53
|
-
- MTP artifacts are detected and refused at startup with the exact reason,
|
|
54
|
-
before the 20 GB target is opened. Shipping a switch that silently disables
|
|
55
|
-
itself—or corrupts recurrent state when forced—would be worse than a clear
|
|
56
|
-
deferral. The follow-up needs recurrent-state snapshot/restore or a verify
|
|
57
|
-
schedule that never advances state beyond the accepted prefix.
|
|
58
|
-
|
|
59
|
-
## GLM-5.2 client compatibility
|
|
60
|
-
|
|
61
|
-
- Fixed-context GLM serving now treats request `max_tokens` as an upper bound:
|
|
62
|
-
when a client sends a family-wide value larger than the planned remaining
|
|
63
|
-
context, the server caps it instead of rejecting an otherwise valid first
|
|
64
|
-
prompt. The reported 2,788-prompt + 8,192-cap failure now admits a 1,308-token
|
|
65
|
-
completion ceiling within the 4,096-token plan. Prompts that consume the
|
|
66
|
-
whole context remain rejected before generation.
|
|
67
|
-
|
|
68
|
-
## Also in this release
|
|
69
|
-
|
|
70
|
-
- The parity harness's step-0 check now covers the full prefill logit
|
|
71
|
-
grid for all Qwen targets — masking/position bugs can no longer hide
|
|
72
|
-
behind a last-position comparison.
|
|
73
|
-
- A GPU command-buffer failure mode on memory-saturated machines was
|
|
74
|
-
root-caused (Metal completion-thread exception, uncatchable by
|
|
75
|
-
design) and documented in PLAN 14g, along with the finding that some
|
|
76
|
-
mlx-c paths surface C++ errors as process panics instead of
|
|
77
|
-
catchable errors (hardening item).
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
# v0.0.9 release notes (DRAFT — Josh edits + publishes)
|
|
2
|
-
|
|
3
|
-
Everything since v0.0.8 (2026-06-24). The big themes: the mlx-lm drop-in
|
|
4
|
-
surface is now materially complete, ORPO is paper-faithful, mlx-bun runs its
|
|
5
|
-
first generically-supported architectures at verified bit-exact parity, and an
|
|
6
|
-
adversarial review swept the whole engine — fixing 12 confirmed bugs and
|
|
7
|
-
overturning a load-bearing performance assumption.
|
|
8
|
-
|
|
9
|
-
## Drop-in compatibility with mlx_lm.server (the headline)
|
|
10
|
-
|
|
11
|
-
- **Endpoints:** `POST /v1/completions` (raw text completion, stream +
|
|
12
|
-
non-stream), `GET /health` (byte-exact body), `GET /v1/models` now lists all
|
|
13
|
-
registry models (+ `/v1/models/<id>`).
|
|
14
|
-
- **Request fields:** `min_p`, `xtc_probability`/`xtc_threshold`, `logit_bias`,
|
|
15
|
-
`presence_penalty`/`frequency_penalty` (+ `*_context_size` windows),
|
|
16
|
-
`logprobs`/`top_logprobs` with mlx-lm's EXACT semantics (same distribution,
|
|
17
|
-
same response shape, same [0,11] validation). All L1-faithful ports of
|
|
18
|
-
`sample_utils.py`.
|
|
19
|
-
- **Flags/defaults:** port 8080 + loopback host (matching mlx_lm.server;
|
|
20
|
-
`--host 0.0.0.0` = LAN opt-in), `--temp` alias, `--max-tokens`,
|
|
21
|
-
serve `--adapter <dir>` mounts at startup.
|
|
22
|
-
- **New CLI verbs:** `fuse` (fold LoRA into base — mlx-lm math, untouched
|
|
23
|
-
modules bit-identical), `convert` (wraps the mixed-precision quantizer,
|
|
24
|
-
`--target-bpw` exposed), `perplexity` (mlx_lm.perplexity methodology),
|
|
25
|
-
`upload` (native HF push).
|
|
26
|
-
- Deliberately not ported: `role_mapping` (unreachable — every supported model
|
|
27
|
-
ships a chat template). Remaining: `cache_prompt`, `evaluate` (planned as an
|
|
28
|
-
lm-eval shim), `--draft-model`, awq/dwq/gptq (plan:
|
|
29
|
-
docs/design/mlx-lm-tool-parity-plan.md).
|
|
30
|
-
|
|
31
|
-
## ORPO: paper-faithful by default
|
|
32
|
-
|
|
33
|
-
- **`sft_scope: full | response`** (default `full`): the chosen-NLL is now the
|
|
34
|
-
token-mean CE over the full prompt+response — matching the ORPO paper, TRL,
|
|
35
|
-
and xfactlab/orpo — implemented across every path (naive/chunked/fused/
|
|
36
|
-
flash-CCE/prefix-shared/segmented). `response` reproduces old runs
|
|
37
|
-
BIT-EXACTLY (regression-pinned). The odds-ratio terms stay response-only in
|
|
38
|
-
both modes (matches TRL). CLI: `mlx-bun train --sft-scope`.
|
|
39
|
-
- The rest of the ORPO stack was adversarially verified correct against
|
|
40
|
-
primary sources (odds-ratio math, gradients vs finite differences,
|
|
41
|
-
prefix-sharing gradient flow, tokenization/label-shift).
|
|
42
|
-
|
|
43
|
-
## Generic model support (Tier-0)
|
|
44
|
-
|
|
45
|
-
- **New:** `src/model/universal/` — a config-driven UniversalDense module with
|
|
46
|
-
explicit descriptors for llama, qwen2, qwen3, gemma, gemma2, phi3, olmo2,
|
|
47
|
-
glm4, granite, starcoder2, smollm3 (+ mlx-lm's remapping: mistral etc.).
|
|
48
|
-
bf16 (unquantized) checkpoints now load. Rope factory (llama3/yarn/longrope)
|
|
49
|
-
verified bit-exact vs the oracle.
|
|
50
|
-
- **First three archs verified at L1 parity** (bit-exact per-step logits):
|
|
51
|
-
Llama-3.2-1B-Instruct-4bit, Qwen2.5-0.5B-Instruct-4bit, gemma-2-2b-it-4bit.
|
|
52
|
-
- Dispatch ladder: dedicated → generated → generic → reject-with-helpful-error.
|
|
53
|
-
Targeted models keep their optimized paths; a model can graduate.
|
|
54
|
-
Design: docs/design/generic-model-support.md.
|
|
55
|
-
|
|
56
|
-
## Fixed (the adversarial-review wave)
|
|
57
|
-
|
|
58
|
-
- **`--l2` tier contract restored:** the L2 preset was enabling an
|
|
59
|
-
envelope-gated perf kernel (not bit-exact vs optiq). Bare `--l2` is now
|
|
60
|
-
genuinely optiq-bit-exact; the perf kernel is `--l3`/explicit opt-in.
|
|
61
|
-
`generate --l2/--l3` no longer silently degrades to L1.
|
|
62
|
-
- Batched same-millisecond seed collision (identical concurrent completions);
|
|
63
|
-
streaming per-layer KV-quant conversion (the missing half of optiq's
|
|
64
|
-
tight-RAM fix); segmented compiled-decode mid-step failure KV corruption;
|
|
65
|
-
`MLX_BUN_TRAIN_ATTN=flash` now refused on Gemma (unrevalidated crash path);
|
|
66
|
-
eval-loss error swallowing; wrong tokens_per_sec metric; silent steel-kernel
|
|
67
|
-
fallbacks now warn; flash-attention tests extended (D=256, sliding-window,
|
|
68
|
-
non-tile T).
|
|
69
|
-
- Memory (the Dreaming): batching default flipped to serial (measured 1.7–1.9×
|
|
70
|
-
faster for the real workload); `memory status` truth; third-person voice fix
|
|
71
|
-
merged.
|
|
72
|
-
- CLI audit (14 findings): `fit --ctx` help matched code, `embed` auto-pick
|
|
73
|
-
fixed, pi flag leakage into first message fixed, `--l1/2/3` + `generate` +
|
|
74
|
-
`train-watch` documented, `setup` is a real alias, doc lies corrected.
|
|
75
|
-
|
|
76
|
-
## Performance truth (research, groundwork for the next release)
|
|
77
|
-
|
|
78
|
-
- The "decode is at the memory floor" claim was **overturned** with measured
|
|
79
|
-
rooflines: only the 12B is at the bandwidth wall (~92%); CPM5/e4b/26B sit at
|
|
80
|
-
58–70% with the host-side graph build as the top recoverable term. Ranked
|
|
81
|
-
fix plan in-repo; wins land next release.
|
|
82
|
-
- The batching engine was audited (numerics solid, engine naive) — hotfixes +
|
|
83
|
-
containment landing; plan: docs/design/batching-v2-plan.md.
|
|
84
|
-
- Registry duplicates root-caused (snapshot-per-commit accumulation);
|
|
85
|
-
dedupe + `gc` landing.
|
|
86
|
-
|
|
87
|
-
## Infra
|
|
88
|
-
|
|
89
|
-
- CI gate added (typecheck + model-free tests on push/PR) — previously nothing
|
|
90
|
-
ran on push.
|
|
91
|
-
- Repo hygiene: scratch artifacts untracked, megakernel research relocated,
|
|
92
|
-
STATUS.md rewritten as a true current-state front door, doc map regenerated.
|
|
93
|
-
|
|
94
|
-
## Late additions (landed after the first draft)
|
|
95
|
-
|
|
96
|
-
- **Batching engine v2 (steps 1–3):** Qwen3.5/SSM models no longer fail under
|
|
97
|
-
`--batch` (capability gate + serial drain); per-row failure containment; no
|
|
98
|
-
serial-lane starvation; pipelined batched decode + sane cache cadence; the
|
|
99
|
-
huge admit transient fixed; all GPU work under one lock.
|
|
100
|
-
- **Model management:** `ls` deduplicates to one row per repo (snapshot
|
|
101
|
-
history via `ls --all-revisions`); new `mlx-bun gc` reclaims superseded
|
|
102
|
-
snapshots (24.7 GB found on the dev machine) with a safety guard for
|
|
103
|
-
unique files; `get` accepts substring queries; download lockfile, streamed
|
|
104
|
-
resume verification, gated-repo auth hints; vision capability detected from
|
|
105
|
-
config (the unified-vision 12B now shows `vision`). New doc:
|
|
106
|
-
docs/reference/models.md.
|
|
107
|
-
- **Pi integration:** web-chat memory tools actually callable; `harness pi`
|
|
108
|
-
registers exactly the served model; tool-calling fixed for Tier-0 generic
|
|
109
|
-
models (Gemma sentinels no longer applied to non-Gemma tokenizers); vision
|
|
110
|
-
advertised to pi; `mlx-bun pi` no longer leaks unknown flags into the first
|
|
111
|
-
message.
|
|
112
|
-
- **Website + README:** six-goals restructure, drop-in guide, memory guide,
|
|
113
|
-
the lab page, full CLI reference from a tracked source; deploy now triggers
|
|
114
|
-
on reference-doc edits. NOTE the release sequence: push and publish in the
|
|
115
|
-
same sitting — the site deploys from the push.
|
|
116
|
-
- **Test infra:** batched-serving goldens are machine-keyed (the M1-Max
|
|
117
|
-
"failures" were M4-Pro fixtures; all code exonerated — mlx-lm reproduces
|
|
118
|
-
mlx-bun token-for-token per machine); CI gate (typecheck + model-free tests).
|
|
119
|
-
- **Research (the lab):** decode-roofline re-measurement overturned the "at
|
|
120
|
-
the floor" assumption (docs/archive/investigations/decode-roofline-lookagain.md);
|
|
121
|
-
curve-sampler distinctness theorem + witness numbers + preregistered
|
|
122
|
-
protocol (docs/planning/curve-sampler-research-plan.md).
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# mlx-bun v0.2.0
|
|
2
|
-
|
|
3
|
-
Version 0.2.0 is the first release with the complete Qwen3.8 serving path:
|
|
4
|
-
text, images, video, thinking controls, tool calls, and native MTP speculation.
|
|
5
|
-
It also ships the serving and memory work completed since v0.0.13.
|
|
6
|
-
|
|
7
|
-
## Highlights
|
|
8
|
-
|
|
9
|
-
- Qwen3.8 image input now runs through the dedicated vision tower and mRoPE
|
|
10
|
-
path. Video content parts decode through the bundled AVFoundation helper,
|
|
11
|
-
sample frames at 2 fps, and use the gated Qwen video pipeline.
|
|
12
|
-
- Qwen native MTP can mount from a separate companion or an artifact's `mtp/`
|
|
13
|
-
directory. Rejected drafts restore recurrent DeltaNet state correctly.
|
|
14
|
-
- The default continuous scheduler now shares request planning, sampling,
|
|
15
|
-
usage accounting, cache selection, and protocol events with the strict
|
|
16
|
-
serial executor. `--batch 1` remains the explicit serial pin.
|
|
17
|
-
- Memory admission treats `max_tokens` as a ceiling. If the prompt fits, the
|
|
18
|
-
server caps generation to the safe remaining context instead of rejecting a
|
|
19
|
-
broad client default.
|
|
20
|
-
- `convert --rotate-weights` folds supported rotations before quantization.
|
|
21
|
-
The offline pipeline also gained streamed shard handling, 3-bit GPTQ, and
|
|
22
|
-
atomic output publication.
|
|
23
|
-
|
|
24
|
-
## Reliability and performance fixes
|
|
25
|
-
|
|
26
|
-
- Large Qwen models now enter the same wired-memory scope as mlx-lm during
|
|
27
|
-
serial and continuous execution. This removes the token-zero residency
|
|
28
|
-
stall on machines whose recommended working set grew beyond the old cutoff.
|
|
29
|
-
- DeltaNet prefill and batch-row extraction now copy owned cache state instead
|
|
30
|
-
of pinning whole chunk buffers.
|
|
31
|
-
- SSD prompt-cache snapshots stay dirty until atomic storage completes.
|
|
32
|
-
`POST /admin/cache/flush` and normal SIGINT/SIGTERM shutdown provide an
|
|
33
|
-
explicit durability boundary.
|
|
34
|
-
- Rotating-cache batch joins now dispatch by cache capability and preserve the
|
|
35
|
-
correct rotating signature.
|
|
36
|
-
- Qwen and GLM MTP sampling no longer passes a rank-3 logits tensor into the
|
|
37
|
-
rank-2 sampler.
|
|
38
|
-
|
|
39
|
-
## Distribution
|
|
40
|
-
|
|
41
|
-
- macOS on Apple Silicon remains the supported platform.
|
|
42
|
-
- Source and npm installs require Bun 1.4.0 or newer.
|
|
43
|
-
- Direct downloads and Homebrew use the signed, notarized self-contained
|
|
44
|
-
archive.
|
|
45
|
-
- npm and `bunx` use native pack v0.3.0, which includes MLX, the bounded expert
|
|
46
|
-
I/O helper, and the AVFoundation frame extractor.
|
|
47
|
-
|
|
48
|
-
Upgrade with `brew upgrade joshuarossi/tap/mlx-bun`, `bun update -g mlx-bun`,
|
|
49
|
-
or rerun the direct installer.
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# mlx-bun v0.3.0
|
|
2
|
-
|
|
3
|
-
This release adds the Qwen inference performance work, fixes long-generation
|
|
4
|
-
memory retention, and makes configured serving benchmarks reproducible.
|
|
5
|
-
|
|
6
|
-
- Packed Trellis decode and prefill kernels, interleaved weight readers,
|
|
7
|
-
joint TurboQuant K/V operations and inverse rotation optimizations.
|
|
8
|
-
- Opt-in Qwen uniform KV4 speculation with MTP and bounded paired target/draft
|
|
9
|
-
RAM prefixes. Exact history, model identity and adapter namespace govern
|
|
10
|
-
reuse; paired speculative state does not persist across server restarts.
|
|
11
|
-
- Model-owned structural token appends, serving ownership and parser fixes,
|
|
12
|
-
and a bounded range cache for sustained generation.
|
|
13
|
-
- SSD flushes recognize prefixes covered by snapshots committed later in the
|
|
14
|
-
same flush, preserving errors for genuinely missing state.
|
|
15
|
-
- Native runtime pack 0.4.0, bundling MLX 0.32.2 and the matching MLX-C API.
|
|
16
|
-
Persistent cache compatibility includes the runtime and GPU identity.
|
|
17
|
-
- Serving benchmark controls for explicit draft, KV and prompt-cache settings,
|
|
18
|
-
with saved commands, request hashes, complete-request timing and raw results.
|
|
19
|
-
|
|
20
|
-
The required packed Qwen target completes the fresh Luke Kanban task with
|
|
21
|
-
thinking enabled and the published profile. Its configured KV4/MTP serving
|
|
22
|
-
suite passes every phase on the M4 Pro. Full measurements, machine labels and
|
|
23
|
-
limits are in the [benchmark record](https://github.com/joshuarossi/mlx-bun/blob/v0.3.0/docs/reference/benchmarks.md).
|
|
24
|
-
No matched successful original/final Kanban timing is available, so this
|
|
25
|
-
release claims no percentage reduction in full-task completion time.
|
|
26
|
-
|
|
27
|
-
Optimization defaults remain gated. The standard-suite MiniCPM/Qwen timed
|
|
28
|
-
output differences against the reference and the larger Qwen 4/8-bit
|
|
29
|
-
artifact's prefill memory failures on the 24 GB Mac remain under investigation.
|
|
30
|
-
The SSD restart failures from that suite are fixed and all four affected
|
|
31
|
-
default/mixed serving repeats pass on their first attempt.
|
|
32
|
-
|
|
33
|
-
The [server configuration reference](https://github.com/joshuarossi/mlx-bun/blob/v0.3.0/docs/reference/server-config.md)
|
|
34
|
-
documents experimental switches and their supported combinations. Requires
|
|
35
|
-
Apple Silicon, macOS 14 or later, and Bun 1.4.0 or later for npm installs.
|