First upload version 0.0.1

This commit is contained in:
Neyra
2026-02-05 15:27:49 +08:00
commit 8e9b7201ed
4182 changed files with 593136 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
import { BatchItem, PrioritizedBatchItem } from "../../types.js";
export declare function firstInFirstOutStrategy({ items, size }: {
items: readonly BatchItem[];
size: number;
}): PrioritizedBatchItem[];

View File

@@ -0,0 +1,16 @@
export function firstInFirstOutStrategy({ items, size }) {
const res = [];
const sortedItems = items
.slice()
.sort((a, b) => b.evaluationPriority - a.evaluationPriority);
let leftFreeTokens = size;
for (const item of sortedItems) {
const processAmount = Math.min(item.tokens.length, leftFreeTokens);
res.push({ item, processAmount });
leftFreeTokens -= processAmount;
if (leftFreeTokens === 0)
break;
}
return res;
}
//# sourceMappingURL=firstInFirstOutStrategy.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"firstInFirstOutStrategy.js","sourceRoot":"","sources":["../../../../../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CAAC,EAAC,KAAK,EAAE,IAAI,EAA8C;IAC9F,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,MAAM,WAAW,GAAG,KAAK;SACpB,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAEjE,IAAI,cAAc,GAAG,IAAI,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACnE,GAAG,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,aAAa,EAAC,CAAC,CAAC;QAChC,cAAc,IAAI,aAAa,CAAC;QAEhC,IAAI,cAAc,KAAK,CAAC;YACpB,MAAM;IACd,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC"}

View File

@@ -0,0 +1,5 @@
import { BatchItem, PrioritizedBatchItem } from "../../types.js";
export declare function maximumParallelismStrategy({ items, size }: {
items: readonly BatchItem[];
size: number;
}): PrioritizedBatchItem[];

View File

@@ -0,0 +1,42 @@
export function maximumParallelismStrategy({ items, size }) {
let leftFreeTokens = size;
const minTokensForEachItem = Math.floor(leftFreeTokens / items.length);
const res = [];
const clippedItems = [];
for (const item of items) {
const processAmount = Math.min(item.tokens.length, leftFreeTokens, minTokensForEachItem);
const prioritizeItem = { item, processAmount };
res.push(prioritizeItem);
leftFreeTokens -= processAmount;
if (processAmount < item.tokens.length)
clippedItems.push(prioritizeItem);
if (leftFreeTokens === 0)
break;
}
for (let passesLeft = 3; leftFreeTokens > 0 && clippedItems.length > 0 && passesLeft > 0; passesLeft--) {
const minIncreaseAmount = Math.ceil(leftFreeTokens / clippedItems.length);
for (let i = 0; i < clippedItems.length && leftFreeTokens > 0; i++) {
const prioritizeItem = clippedItems[i];
const unprocessedAmount = prioritizeItem.item.tokens.length - prioritizeItem.processAmount;
const increaseAmount = Math.min(unprocessedAmount, leftFreeTokens, minIncreaseAmount);
prioritizeItem.processAmount += increaseAmount;
if (increaseAmount === unprocessedAmount) {
clippedItems.splice(i, 1);
i--;
}
}
}
clippedItems.sort((a, b) => b.item.evaluationPriority - a.item.evaluationPriority);
for (let i = 0; i < clippedItems.length && leftFreeTokens > 0; i++) {
const prioritizeItem = clippedItems[i];
const unprocessedAmount = prioritizeItem.item.tokens.length - prioritizeItem.processAmount;
const increaseAmount = Math.min(unprocessedAmount, leftFreeTokens);
prioritizeItem.processAmount += increaseAmount;
if (increaseAmount === unprocessedAmount) {
clippedItems.splice(i, 1);
i--;
}
}
return res;
}
//# sourceMappingURL=maximumParallelismStrategy.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"maximumParallelismStrategy.js","sourceRoot":"","sources":["../../../../../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CAAC,EAAC,KAAK,EAAE,IAAI,EAA8C;IACjG,IAAI,cAAc,GAAG,IAAI,CAAC;IAC1B,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAEvE,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,MAAM,YAAY,GAA2B,EAAE,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC;QACzF,MAAM,cAAc,GAAG,EAAC,IAAI,EAAE,aAAa,EAAC,CAAC;QAE7C,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzB,cAAc,IAAI,aAAa,CAAC;QAEhC,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;YAClC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEtC,IAAI,cAAc,KAAK,CAAC;YACpB,MAAM;IACd,CAAC;IAED,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,cAAc,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC;QACrG,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACjE,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAE,CAAC;YACxC,MAAM,iBAAiB,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC;YAC3F,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;YACtF,cAAc,CAAC,aAAa,IAAI,cAAc,CAAC;YAE/C,IAAI,cAAc,KAAK,iBAAiB,EAAE,CAAC;gBACvC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1B,CAAC,EAAE,CAAC;YACR,CAAC;QACL,CAAC;IACL,CAAC;IAED,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAEnF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACjE,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAE,CAAC;QACxC,MAAM,iBAAiB,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC;QAC3F,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;QACnE,cAAc,CAAC,aAAa,IAAI,cAAc,CAAC;QAE/C,IAAI,cAAc,KAAK,iBAAiB,EAAE,CAAC;YACvC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,CAAC,EAAE,CAAC;QACR,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC"}

View File

@@ -0,0 +1 @@
export declare function padSafeContextSize(value: number, padDirection: "up" | "down", padding?: number): number;

View File

@@ -0,0 +1,18 @@
import { contextSizePad } from "../../../config.js";
export function padSafeContextSize(value, padDirection, padding = contextSizePad) {
const paddedSize = ggmlPad(value, padding);
if (paddedSize === value)
return value;
else if (padDirection === "up")
return paddedSize;
else if (padDirection === "down") {
const smallerPaddedSize = ggmlPad(value - padding, padding);
if (smallerPaddedSize >= padding)
return smallerPaddedSize;
}
return paddedSize;
}
function ggmlPad(value, padding) {
return ((value + padding - 1) & ~(padding - 1));
}
//# sourceMappingURL=padSafeContextSize.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"padSafeContextSize.js","sourceRoot":"","sources":["../../../../src/evaluator/LlamaContext/utils/padSafeContextSize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAElD,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,YAA2B,EAAE,UAAkB,cAAc;IAC3G,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE3C,IAAI,UAAU,KAAK,KAAK;QACpB,OAAO,KAAK,CAAC;SACZ,IAAI,YAAY,KAAK,IAAI;QAC1B,OAAO,UAAU,CAAC;SACjB,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;QAC/B,MAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,iBAAiB,IAAI,OAAO;YAC5B,OAAO,iBAAiB,CAAC;IACjC,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AACD,SAAS,OAAO,CAAC,KAAa,EAAE,OAAe;IAC3C,OAAO,CAAC,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC"}

View File

@@ -0,0 +1,2 @@
import { BatchingOptions } from "../types.js";
export declare function resolveBatchItemsPrioritizationStrategy(strategy: Required<BatchingOptions>["itemPrioritizationStrategy"]): import("../types.js").CustomBatchingPrioritizationStrategy;

View File

@@ -0,0 +1,13 @@
import { maximumParallelismStrategy } from "./batchItemsPrioritizationStrategies/maximumParallelismStrategy.js";
import { firstInFirstOutStrategy } from "./batchItemsPrioritizationStrategies/firstInFirstOutStrategy.js";
export function resolveBatchItemsPrioritizationStrategy(strategy) {
if (strategy instanceof Function)
return strategy;
else if (strategy === "maximumParallelism")
return maximumParallelismStrategy;
else if (strategy === "firstInFirstOut")
return firstInFirstOutStrategy;
void strategy;
throw new Error(`Unknown batch items prioritize strategy: ${strategy}`);
}
//# sourceMappingURL=resolveBatchItemsPrioritizationStrategy.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"resolveBatchItemsPrioritizationStrategy.js","sourceRoot":"","sources":["../../../../src/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,0BAA0B,EAAC,MAAM,oEAAoE,CAAC;AAC9G,OAAO,EAAC,uBAAuB,EAAC,MAAM,iEAAiE,CAAC;AAExG,MAAM,UAAU,uCAAuC,CAAC,QAAiE;IACrH,IAAI,QAAQ,YAAY,QAAQ;QAC5B,OAAO,QAAQ,CAAC;SACf,IAAI,QAAQ,KAAK,oBAAoB;QACtC,OAAO,0BAA0B,CAAC;SACjC,IAAI,QAAQ,KAAK,iBAAiB;QACnC,OAAO,uBAAuB,CAAC;IAEnC,KAAM,QAAyB,CAAC;IAEhC,MAAM,IAAI,KAAK,CAAC,4CAA4C,QAAQ,EAAE,CAAC,CAAC;AAC5E,CAAC"}