mirror of
https://git.sync.wtf/troed/oc-ls-stats.git
synced 2026-08-31 09:43:38 +03:00
refactor: v0.0.52 - simplify generation tracking to per-slot prev n_decoded
- Track generatePrevNd per slot instead of global generateMaxDecoded - Calculate TPS from delta between consecutive polls - Detect resets when nd drops below previous - Stall (nd == prev) doesn't end generation, just doesn't update TPS - Reset tracking when no slot found
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@troed/oc-ls-stats",
|
||||
"version": "0.0.51",
|
||||
"version": "0.0.52",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
"./tui": {
|
||||
|
||||
@@ -48,9 +48,8 @@ type TrackerState = {
|
||||
prefillStartAt: number
|
||||
isGenerating: boolean
|
||||
generateSlotId: number | null
|
||||
generateCapturedDecoded: number | null
|
||||
generatePrevNd: number
|
||||
generateStartAt: number
|
||||
generateMaxDecoded: number
|
||||
}
|
||||
|
||||
function estimateStreamTokens(delta: string) {
|
||||
@@ -270,9 +269,8 @@ const tui: TuiPlugin = async (api) => {
|
||||
prefillStartAt: 0,
|
||||
isGenerating: false,
|
||||
generateSlotId: null,
|
||||
generateCapturedDecoded: null,
|
||||
generatePrevNd: 0,
|
||||
generateStartAt: 0,
|
||||
generateMaxDecoded: 0,
|
||||
}
|
||||
const [version, setVersion] = createSignal(0)
|
||||
const [clock, setClock] = createSignal(Date.now())
|
||||
@@ -392,35 +390,36 @@ const tui: TuiPlugin = async (api) => {
|
||||
const now = Date.now()
|
||||
const nd = generateSlot.next_token?.[0]?.n_decoded ?? 0
|
||||
|
||||
if (nd > tracker.generateMaxDecoded) {
|
||||
const isNew = tracker.generateMaxDecoded === 0
|
||||
const delta = nd - tracker.generateMaxDecoded
|
||||
const dt = (now - tracker.generateStartAt) / 1000
|
||||
if (delta > 0 && dt > 0 && !isNew) {
|
||||
tracker.lastGeneratedTps = delta / dt
|
||||
debug(`gen slot=${slotId} nd=${nd} max=${tracker.generateMaxDecoded} delta=${delta} dt=${dt.toFixed(2)} tps=${tracker.lastGeneratedTps.toFixed(1)}`)
|
||||
if (tracker.generateSlotId === slotId) {
|
||||
if (nd > tracker.generatePrevNd) {
|
||||
const dt = (now - tracker.generateStartAt) / 1000
|
||||
const delta = nd - tracker.generatePrevNd
|
||||
if (dt > 0 && delta > 0) {
|
||||
tracker.lastGeneratedTps = delta / dt
|
||||
debug(`gen slot=${slotId} nd=${nd} prev=${tracker.generatePrevNd} delta=${delta} dt=${dt.toFixed(2)} tps=${tracker.lastGeneratedTps.toFixed(1)}`)
|
||||
}
|
||||
tracker.generatePrevNd = nd
|
||||
tracker.generateStartAt = now
|
||||
} else if (nd < tracker.generatePrevNd) {
|
||||
tracker.generatePrevNd = nd
|
||||
tracker.generateStartAt = now
|
||||
tracker.lastGeneratedTps = 0
|
||||
debug(`gen slot=${slotId} nd=${nd} prev=${tracker.generatePrevNd} counter reset`)
|
||||
} else {
|
||||
debug(`gen slot=${slotId} nd=${nd} prev=${tracker.generatePrevNd} stalled`)
|
||||
}
|
||||
tracker.generateMaxDecoded = nd
|
||||
tracker.generateCapturedDecoded = nd
|
||||
tracker.generateStartAt = now
|
||||
tracker.generateSlotId = slotId
|
||||
} else if (nd < tracker.generateMaxDecoded) {
|
||||
tracker.generateCapturedDecoded = nd
|
||||
tracker.generateStartAt = now
|
||||
tracker.lastGeneratedTps = 0
|
||||
debug(`gen slot=${slotId} nd=${nd} max=${tracker.generateMaxDecoded} counter reset`)
|
||||
} else {
|
||||
debug(`gen slot=${slotId} nd=${nd} max=${tracker.generateMaxDecoded} stalled`)
|
||||
tracker.generateMaxDecoded = 0
|
||||
tracker.generateSlotId = slotId
|
||||
tracker.generatePrevNd = nd
|
||||
tracker.generateStartAt = now
|
||||
tracker.lastGeneratedTps = 0
|
||||
genEnded = true
|
||||
debug(`gen new slot id=${slotId} nd=${nd}`)
|
||||
}
|
||||
} else {
|
||||
if (tracker.isGenerating) {
|
||||
tracker.generateSlotId = null
|
||||
tracker.generateCapturedDecoded = null
|
||||
tracker.generatePrevNd = 0
|
||||
tracker.generateStartAt = 0
|
||||
tracker.generateMaxDecoded = 0
|
||||
tracker.lastGeneratedTps = 0
|
||||
genEnded = true
|
||||
debug(`gen no slot found ending`)
|
||||
|
||||
Reference in New Issue
Block a user