@tryhamster/gerbil 1.6.0 → 1.6.2
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/dist/{architectures-Ol7yUmKf.mjs → architectures-CpmH4Gha.mjs} +86 -82
- package/dist/architectures-CpmH4Gha.mjs.map +1 -0
- package/dist/browser/index.js.map +1 -1
- package/dist/cli.mjs +8 -8
- package/dist/cli.mjs.map +1 -1
- package/dist/frameworks/express.mjs +1 -1
- package/dist/frameworks/fastify.mjs +1 -1
- package/dist/frameworks/hono.mjs +1 -1
- package/dist/frameworks/next.d.mts +2 -2
- package/dist/frameworks/next.mjs +1 -1
- package/dist/frameworks/trpc.mjs +1 -1
- package/dist/{gerbil-_68_JSGV.d.mts → gerbil--YDNklsY.d.mts} +2 -2
- package/dist/{gerbil-_68_JSGV.d.mts.map → gerbil--YDNklsY.d.mts.map} +1 -1
- package/dist/{gerbil-DsgYlkgf.mjs → gerbil-BcBaLPai.mjs} +2 -2
- package/dist/{gerbil-DsgYlkgf.mjs.map → gerbil-BcBaLPai.mjs.map} +1 -1
- package/dist/gerbil-CTkp26G3.mjs +4 -0
- package/dist/gpu/hooks.d.mts +1 -1
- package/dist/gpu/index.d.mts +1 -1
- package/dist/gpu/index.mjs +3 -3
- package/dist/{gpu-DfUBMUGe.mjs → gpu-BZVtzX9N.mjs} +54 -9
- package/dist/gpu-BZVtzX9N.mjs.map +1 -0
- package/dist/{index-BdbeBDTz.d.mts → index-CZVIHkaH.d.mts} +23 -2
- package/dist/index-CZVIHkaH.d.mts.map +1 -0
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +5 -5
- package/dist/integrations/ai-sdk.mjs +1 -1
- package/dist/integrations/langchain.mjs +1 -1
- package/dist/integrations/llamaindex.mjs +1 -1
- package/dist/integrations/mcp.d.mts +2 -2
- package/dist/integrations/mcp.mjs +4 -4
- package/dist/{mcp-D3XRaVAc.mjs → mcp-LmQ6uqnx.mjs} +3 -3
- package/dist/{mcp-D3XRaVAc.mjs.map → mcp-LmQ6uqnx.mjs.map} +1 -1
- package/dist/{moonshine-stt-bExSnd2o.mjs → moonshine-stt-BFIm_Xxk.mjs} +891 -33
- package/dist/moonshine-stt-BFIm_Xxk.mjs.map +1 -0
- package/dist/moonshine-stt-D7BqG2pU.mjs +4 -0
- package/dist/{one-liner-UvMt5g0G.mjs → one-liner-BYVB7jU5.mjs} +2 -2
- package/dist/{one-liner-UvMt5g0G.mjs.map → one-liner-BYVB7jU5.mjs.map} +1 -1
- package/dist/repl-CYlW8byH.mjs +9 -0
- package/dist/skills/index.d.mts +4 -4
- package/dist/skills/index.mjs +3 -3
- package/dist/{skills-BJUofoaY.mjs → skills-DWMVEKKj.mjs} +2 -2
- package/dist/{skills-BJUofoaY.mjs.map → skills-DWMVEKKj.mjs.map} +1 -1
- package/package.json +1 -1
- package/dist/architectures-Ol7yUmKf.mjs.map +0 -1
- package/dist/gerbil-CNyb67ca.mjs +0 -4
- package/dist/gpu-DfUBMUGe.mjs.map +0 -1
- package/dist/index-BdbeBDTz.d.mts.map +0 -1
- package/dist/moonshine-stt-B0dwDCgT.mjs +0 -4
- package/dist/moonshine-stt-bExSnd2o.mjs.map +0 -1
- package/dist/repl-B5xHAr9n.mjs +0 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as resolveDefaultRepo, n as OUTETTS_ASSETS, r as OUTETTS_PRESET_VOICES, t as DEFAULT_MODELS } from "./defaults-KnrRSIeJ.mjs";
|
|
2
|
-
import { E as GEMMA4_VIS_KEYS, S as DEFAULT_GROUP_SIZE, T as DTYPE_BYTES, _ as kaniCosTensor, c as KANI_END_OF_HUMAN, d as buildKaniLayerCosSin, f as computeKaniPositions, g as kaniAttentionLayerIndices, h as generateNanoCodecDecoderGraph, l as KANI_START_OF_HUMAN, m as generateKaniTtsGraph, u as audioTokensToCodes, v as kaniLayerAlpha, w as CANONICAL_KEYS, x as parseKaniConfig, y as kaniSinTensor } from "./architectures-
|
|
3
|
-
import { S as verifyGPU, _ as createStorageBuffer, b as getOrCreatePipeline, c as quantizeBackboneInt4, f as Executor, g as createBindGroup, h as clearPipelineCache, i as loadModel, l as quantizeKaniBackbone, m as MATMUL_BIAS_F16C_SPEC, o as loadOuteTTS, p as KERNEL_REGISTRY, r as loadKaniTTS, s as loadParlerTTS, u as remapPrunedToken, v as createUniformBuffer, x as initGPU, y as destroyBuffers } from "./moonshine-stt-
|
|
2
|
+
import { E as GEMMA4_VIS_KEYS, S as DEFAULT_GROUP_SIZE, T as DTYPE_BYTES, _ as kaniCosTensor, c as KANI_END_OF_HUMAN, d as buildKaniLayerCosSin, f as computeKaniPositions, g as kaniAttentionLayerIndices, h as generateNanoCodecDecoderGraph, l as KANI_START_OF_HUMAN, m as generateKaniTtsGraph, u as audioTokensToCodes, v as kaniLayerAlpha, w as CANONICAL_KEYS, x as parseKaniConfig, y as kaniSinTensor } from "./architectures-CpmH4Gha.mjs";
|
|
3
|
+
import { S as verifyGPU, _ as createStorageBuffer, b as getOrCreatePipeline, c as quantizeBackboneInt4, f as Executor, g as createBindGroup, h as clearPipelineCache, i as loadModel, l as quantizeKaniBackbone, m as MATMUL_BIAS_F16C_SPEC, o as loadOuteTTS, p as KERNEL_REGISTRY, r as loadKaniTTS, s as loadParlerTTS, u as remapPrunedToken, v as createUniformBuffer, x as initGPU, y as destroyBuffers } from "./moonshine-stt-BFIm_Xxk.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/gpu/architectures/gemma4_vision.ts
|
|
6
6
|
/**
|
|
@@ -4424,11 +4424,24 @@ var VisionExecutor = class {
|
|
|
4424
4424
|
q.writeBuffer(d.uniformBuffer, 0, params);
|
|
4425
4425
|
sizes.push(d.spec.getDispatchSize(d.node, resolvedShapes, ctxRt));
|
|
4426
4426
|
}
|
|
4427
|
-
|
|
4427
|
+
const multiEncoder = this.ctx.isWebKitWebGPU;
|
|
4428
|
+
const batchVit = globalThis.GERBIL_VIT_BATCH != null;
|
|
4429
|
+
let batchEnc = null;
|
|
4430
|
+
let batchPass = null;
|
|
4431
|
+
const flushBatch = async () => {
|
|
4432
|
+
if (!batchEnc || !batchPass) return;
|
|
4433
|
+
batchPass.end();
|
|
4434
|
+
q.submit([batchEnc.finish()]);
|
|
4435
|
+
await q.onSubmittedWorkDone();
|
|
4436
|
+
batchEnc = null;
|
|
4437
|
+
batchPass = null;
|
|
4438
|
+
};
|
|
4439
|
+
if (multiEncoder) {
|
|
4428
4440
|
onStage?.("vit-encode-start", { total: this.dispatches.length });
|
|
4429
4441
|
for (let i = 0; i < this.dispatches.length; i++) {
|
|
4430
4442
|
const d = this.dispatches[i];
|
|
4431
4443
|
if (d.node.opType === "Attention") {
|
|
4444
|
+
await flushBatch();
|
|
4432
4445
|
const [gridX, gridY, gridZ] = sizes[i];
|
|
4433
4446
|
const layer = Number.parseInt(d.node.id.replace(/\D+/g, ""), 10);
|
|
4434
4447
|
if (!Number.isNaN(layer)) onStage?.("vit-attn", { layer });
|
|
@@ -4450,6 +4463,16 @@ var VisionExecutor = class {
|
|
|
4450
4463
|
}
|
|
4451
4464
|
continue;
|
|
4452
4465
|
}
|
|
4466
|
+
if (batchVit) {
|
|
4467
|
+
if (!batchEnc) {
|
|
4468
|
+
batchEnc = this.ctx.device.createCommandEncoder();
|
|
4469
|
+
batchPass = batchEnc.beginComputePass();
|
|
4470
|
+
}
|
|
4471
|
+
batchPass.setPipeline(d.pipeline);
|
|
4472
|
+
batchPass.setBindGroup(0, d.bindGroup);
|
|
4473
|
+
batchPass.dispatchWorkgroups(...sizes[i]);
|
|
4474
|
+
continue;
|
|
4475
|
+
}
|
|
4453
4476
|
const enc$1 = this.ctx.device.createCommandEncoder();
|
|
4454
4477
|
const p = enc$1.beginComputePass();
|
|
4455
4478
|
p.setPipeline(d.pipeline);
|
|
@@ -4459,6 +4482,7 @@ var VisionExecutor = class {
|
|
|
4459
4482
|
q.submit([enc$1.finish()]);
|
|
4460
4483
|
await q.onSubmittedWorkDone();
|
|
4461
4484
|
}
|
|
4485
|
+
await flushBatch();
|
|
4462
4486
|
onStage?.("vit-encode-done");
|
|
4463
4487
|
} else {
|
|
4464
4488
|
const enc$1 = this.ctx.device.createCommandEncoder({ label: "vision_encode" });
|
|
@@ -4634,8 +4658,24 @@ var VisionExecutor = class {
|
|
|
4634
4658
|
return resolved;
|
|
4635
4659
|
}
|
|
4636
4660
|
allocateActivationBuffers() {
|
|
4661
|
+
const referenced = /* @__PURE__ */ new Set();
|
|
4662
|
+
for (const node of this.graph.nodes) {
|
|
4663
|
+
for (const t of node.inputs) referenced.add(t);
|
|
4664
|
+
for (const t of node.outputs) referenced.add(t);
|
|
4665
|
+
}
|
|
4666
|
+
let skippedBytes = 0;
|
|
4637
4667
|
for (const [name, desc] of Object.entries(this.graph.tensors)) {
|
|
4638
4668
|
if (desc.storage !== "activation") continue;
|
|
4669
|
+
if (!referenced.has(name)) {
|
|
4670
|
+
const shape = desc.shape.map((d) => {
|
|
4671
|
+
if (d === "N") return this.maxPatches;
|
|
4672
|
+
if (d === "Nm") return this.maxPatches / this.mergeUnit;
|
|
4673
|
+
if (d === "Np") return this.maxPooled();
|
|
4674
|
+
return d;
|
|
4675
|
+
});
|
|
4676
|
+
skippedBytes += shape.reduce((a, b) => a * b, 1) * DTYPE_BYTES[desc.dtype];
|
|
4677
|
+
continue;
|
|
4678
|
+
}
|
|
4639
4679
|
const bytes = desc.shape.map((d) => {
|
|
4640
4680
|
if (d === "N") return this.maxPatches;
|
|
4641
4681
|
if (d === "Nm") return this.maxPatches / this.mergeUnit;
|
|
@@ -4644,6 +4684,7 @@ var VisionExecutor = class {
|
|
|
4644
4684
|
}).reduce((a, b) => a * b, 1) * DTYPE_BYTES[desc.dtype];
|
|
4645
4685
|
this.activationBuffers.set(name, createStorageBuffer(this.ctx, `vact_${name}`, bytes));
|
|
4646
4686
|
}
|
|
4687
|
+
if (skippedBytes > 0) console.log(`[vision] skipped ${(skippedBytes / 1e6).toFixed(0)} MB of unreferenced activation tensors`);
|
|
4647
4688
|
}
|
|
4648
4689
|
gatherBuffers(spec, node, uniformBuffer) {
|
|
4649
4690
|
const entries = [];
|
|
@@ -5324,12 +5365,16 @@ function writeGroupProbe(rec) {
|
|
|
5324
5365
|
} catch {}
|
|
5325
5366
|
}
|
|
5326
5367
|
/**
|
|
5327
|
-
* The validated
|
|
5328
|
-
*
|
|
5329
|
-
*
|
|
5330
|
-
*
|
|
5368
|
+
* The validated batching target. Originally 128 from an iPad sweep on a much
|
|
5369
|
+
* slower engine build (peak 26.9 tok/s at 128, 256 within 2.6%); the 2026-07
|
|
5370
|
+
* kernel campaign made per-dispatch GPU time far smaller, which moves the
|
|
5371
|
+
* amortization optimum UP. An on-device iPhone sweep (bench harness, engine
|
|
5372
|
+
* 1.6.1) measured Qwen3.5-0.8B sampled decode: g32=19, g128≈33, g256=43,
|
|
5373
|
+
* g1024=45, g4096=44 — a +36% win at 1024 vs the old 128 target — while
|
|
5374
|
+
* LFM2.5 is flat from g32 upward (no cost). The crash breadcrumb still caps
|
|
5375
|
+
* any device that can't sustain it.
|
|
5331
5376
|
*/
|
|
5332
|
-
const NONPHONE_TARGET_GROUP =
|
|
5377
|
+
const NONPHONE_TARGET_GROUP = 1024;
|
|
5333
5378
|
/**
|
|
5334
5379
|
* Resolve the WebKit group size to use this session, recording `trying` as a
|
|
5335
5380
|
* side effect so a crash this load is detectable on the next load.
|
|
@@ -7031,4 +7076,4 @@ var WebGPUEngine = class WebGPUEngine {
|
|
|
7031
7076
|
|
|
7032
7077
|
//#endregion
|
|
7033
7078
|
export { dequantizeGemma4VisionProjection as A, audioTokensToDacCodes as C, parseOuteTtsConfig as D, generateOuteTtsBackboneGraph as E, generateGemma4VisionGraph as M, patchGemma4VisionClips as N, KaniTTS as O, resolveGemma4VisionInfo as P, loadOuteSpeaker as S, generateDacSpeechDecoderGraph as T, smartResize as _, buildGemma4PosEmbeds as a, OuteTTS as b, buildMRoPECosSin as c, buildPositionIds as d, buildRotaryCosSin as f, preprocessImageGemma4 as g, preprocessImage as h, buildGemma4PoolMatrix as i, dequantizeMLXProjection as j, generateQwen3_5VisionGraph as k, buildMRoPEPositionIds as l, mropeFreqDims as m, GEMMA4_IMAGE_PROCESSOR as n, buildGemma4RotaryCosSin as o, buildVisionPositionTensors as p, QWEN3_5_IMAGE_PROCESSOR as r, buildGemma4VisionPositionTensors as s, WebGPUEngine as t, buildPosEmbeds as u, VisionExecutor as v, dacOutputLength as w, buildOutePromptString as x, ParlerTTS as y };
|
|
7034
|
-
//# sourceMappingURL=gpu-
|
|
7079
|
+
//# sourceMappingURL=gpu-BZVtzX9N.mjs.map
|