From cb2c1c02da35eff969552c65dd6b32711c1b3910 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@71dcc7fd-b1f2-4e5d-bb8e-274146e81173> Date: Sun, 22 Dec 2024 12:34:07 +0000 Subject: [PATCH] Calculate effective duration and tps; git-svn-id: svn://home0/lm-lib@3652 71dcc7fd-b1f2-4e5d-bb8e-274146e81173 --- .../de/extio/lmlib/agent/AgentRequestStatistic.java | 10 +++++----- .../client/textcompletion/TextCompletionClient.java | 12 +++++++++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/extio/lmlib/agent/AgentRequestStatistic.java b/src/main/java/de/extio/lmlib/agent/AgentRequestStatistic.java index f7053b1..076f6b5 100755 --- a/src/main/java/de/extio/lmlib/agent/AgentRequestStatistic.java +++ b/src/main/java/de/extio/lmlib/agent/AgentRequestStatistic.java @@ -36,16 +36,16 @@ public final class AgentRequestStatistic { return this.requestDuration; } - public Duration getAbsoluteDuration() { + public Duration getEffectiveDuration() { return Duration.between(this.start, Instant.now()); } public String getTps() { - return new DecimalFormat("#.##").format((double) (this.inTokens.get() + this.outTokens.get()) / (double)this.getAbsoluteDuration().toMillis() * 1000.0); + return new DecimalFormat("#.##").format((double) (this.inTokens.get() + this.outTokens.get()) / (double)this.getEffectiveDuration().toMillis() * 1000.0); } public String getOutTps() { - return new DecimalFormat("#.##").format((double) this.outTokens.get() / (double)this.getAbsoluteDuration().toMillis() * 1000.0); + return new DecimalFormat("#.##").format((double) this.outTokens.get() / (double)this.getEffectiveDuration().toMillis() * 1000.0); } public void add(final Completion completion) { @@ -70,8 +70,8 @@ public final class AgentRequestStatistic { builder.append(this.outTokens); builder.append(", requestDuration="); builder.append(this.requestDuration); - builder.append(", getAbsoluteDuration()="); - builder.append(this.getAbsoluteDuration()); + builder.append(", getEffectiveDuration()="); + builder.append(this.getEffectiveDuration()); builder.append(", getTps()="); builder.append(this.getTps()); builder.append(", getOutTps()="); diff --git a/src/main/java/de/extio/lmlib/client/textcompletion/TextCompletionClient.java b/src/main/java/de/extio/lmlib/client/textcompletion/TextCompletionClient.java index cfc0528..3a5a663 100755 --- a/src/main/java/de/extio/lmlib/client/textcompletion/TextCompletionClient.java +++ b/src/main/java/de/extio/lmlib/client/textcompletion/TextCompletionClient.java @@ -2,6 +2,7 @@ package de.extio.lmlib.client.textcompletion; import java.text.DecimalFormat; import java.time.Duration; +import java.time.Instant; import java.time.LocalDateTime; import java.util.ArrayDeque; import java.util.ArrayList; @@ -28,8 +29,8 @@ import de.extio.lmlib.client.textcompletion.dto.CompletionRequest; import de.extio.lmlib.client.textcompletion.dto.CompletionResponse; import de.extio.lmlib.profile.ModelCategory; import de.extio.lmlib.profile.ModelProfile; -import de.extio.lmlib.profile.ModelProfileService; import de.extio.lmlib.profile.ModelProfile.ModelProvider; +import de.extio.lmlib.profile.ModelProfileService; import de.extio.lmlib.prompt.PromptStrategy; import de.extio.lmlib.prompt.PromptStrategyFactory; import de.extio.lmlib.token.Tokenizer; @@ -270,6 +271,8 @@ public class TextCompletionClient implements Client, DisposableBean { static class CompletionStatistics { + private final Instant start = Instant.now(); + volatile int requests; volatile Duration duration = Duration.ofMillis(0l); @@ -300,6 +303,13 @@ public class TextCompletionClient implements Client, DisposableBean { builder.append(new DecimalFormat("#.##").format(((double) (this.outTokens + this.inTokens) / (double) this.requests) / ((double) this.duration.toMillis() / 1000.0 / (double) this.requests))); builder.append(", averageOutTps="); builder.append(new DecimalFormat("#.##").format((double) this.outTokens / ((double) this.duration.toMillis() / 1000.0))); + builder.append(", effectiveDuration="); + final var effectiveDuration = Duration.between(this.start, Instant.now()); + builder.append(effectiveDuration); + builder.append(", effectiveTps="); + builder.append(new DecimalFormat("#.##").format(((double) (this.outTokens + this.inTokens) / (double) this.requests) / ((double) effectiveDuration.toMillis() / 1000.0 / (double) this.requests))); + builder.append(", effectiveOutTps="); + builder.append(new DecimalFormat("#.##").format((double) this.outTokens / ((double) effectiveDuration.toMillis() / 1000.0))); builder.append("]"); return builder.toString(); }