mirror of
https://git.sync.wtf/troed/oc-ls-stats.git
synced 2026-08-31 09:43:38 +03:00
feat: v0.0.54 - replace AVG with prefill progress percentage
- Display: PP xxxx tps (yyy%) | GEN xxxx tps - Add prefillTotalTokens and prefillProcessedTokens tracking - Show progress percentage during prefill - Remove sessionAverage memo and AVG calculation
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.53",
|
||||
"version": "0.0.54",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
"./tui": {
|
||||
|
||||
@@ -48,6 +48,8 @@ type TrackerState = {
|
||||
prefillSlotId: number | null
|
||||
prefillCapturedTokens: number | null
|
||||
prefillStartAt: number
|
||||
prefillTotalTokens: number
|
||||
prefillProcessedTokens: number
|
||||
isGenerating: boolean
|
||||
generateSlotId: number | null
|
||||
generatePrevNd: number
|
||||
@@ -192,6 +194,13 @@ function formatAvg(value: number) {
|
||||
return `${value.toFixed(1)}`
|
||||
}
|
||||
|
||||
function formatPercent(value: number) {
|
||||
if (!Number.isFinite(value) || value < 0) return undefined
|
||||
if (value >= 100) return "100"
|
||||
if (value >= 10) return `${Math.round(value)}`
|
||||
return `${value.toFixed(1)}`
|
||||
}
|
||||
|
||||
function pad4(s: string | undefined) {
|
||||
if (!s) return "----"
|
||||
return s.padStart(4, " ")
|
||||
@@ -231,13 +240,6 @@ function SessionPromptRight(props: {
|
||||
return rate
|
||||
})
|
||||
|
||||
const sessionAverage = createMemo(() => {
|
||||
props.version()
|
||||
const totals = props.tracker.sessionAverageByID[props.sessionID]
|
||||
if (!totals || totals.totalTokens <= 0 || totals.totalDurationMs <= 0) return undefined
|
||||
return totals.totalTokens / (totals.totalDurationMs / 1000)
|
||||
})
|
||||
|
||||
const prefillRate = createMemo(() => {
|
||||
props.version()
|
||||
if (!props.tracker.isPrefilling) return undefined
|
||||
@@ -246,12 +248,22 @@ function SessionPromptRight(props: {
|
||||
return rate
|
||||
})
|
||||
|
||||
const text = createMemo(() => {
|
||||
const prefillProgress = createMemo(() => {
|
||||
props.version()
|
||||
if (!props.tracker.isPrefilling) return undefined
|
||||
const total = props.tracker.prefillTotalTokens
|
||||
const processed = props.tracker.prefillProcessedTokens
|
||||
if (total <= 0) return undefined
|
||||
return (processed / total) * 100
|
||||
})
|
||||
|
||||
const text = createMemo(() => {
|
||||
const pp = prefillRate()
|
||||
const tps = liveTps()
|
||||
const avg = sessionAverage()
|
||||
const parts = [`PP ${pad4(pp ? formatPps(pp) : undefined)}`, `TPS ${pad4(tps ? formatTps(tps) : undefined)}`, `AVG ${pad4(avg ? formatAvg(avg) : undefined)}`]
|
||||
return parts.join(" | ")
|
||||
const progress = prefillProgress()
|
||||
const ppLabel = pp ? `PP ${pad4(formatPps(pp))} tps (${pad4(formatPercent(progress))}%)` : `PP ${pad4(undefined)} tps (${pad4(undefined)}%)`
|
||||
const tpsLabel = tps ? `GEN ${pad4(formatTps(tps))} tps` : `GEN ${pad4(undefined)} tps`
|
||||
return `${ppLabel} | ${tpsLabel}`
|
||||
})
|
||||
|
||||
return <>{text() ? <text fg={props.api.theme.current.textMuted}>{text()}</text> : null}</>
|
||||
@@ -269,6 +281,8 @@ const tui: TuiPlugin = async (api) => {
|
||||
prefillSlotId: null,
|
||||
prefillCapturedTokens: null,
|
||||
prefillStartAt: 0,
|
||||
prefillTotalTokens: 0,
|
||||
prefillProcessedTokens: 0,
|
||||
isGenerating: false,
|
||||
generateSlotId: null,
|
||||
generatePrevNd: 0,
|
||||
@@ -363,6 +377,10 @@ const tui: TuiPlugin = async (api) => {
|
||||
const slotId = prefillSlot.id
|
||||
const now = Date.now()
|
||||
const nt = prefillSlot.n_prompt_tokens ?? 0
|
||||
const npp = prefillSlot.n_prompt_tokens_processed ?? 0
|
||||
|
||||
tracker.prefillTotalTokens = nt
|
||||
tracker.prefillProcessedTokens = npp
|
||||
|
||||
if (tracker.prefillSlotId === slotId) {
|
||||
if (tracker.prefillCapturedTokens !== null) {
|
||||
@@ -383,6 +401,8 @@ const tui: TuiPlugin = async (api) => {
|
||||
tracker.prefillSlotId = null
|
||||
tracker.prefillCapturedTokens = null
|
||||
tracker.prefillStartAt = 0
|
||||
tracker.prefillTotalTokens = 0
|
||||
tracker.prefillProcessedTokens = 0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user