git-svn-id: svn://home0/lm-lib@3605 71dcc7fd-b1f2-4e5d-bb8e-274146e81173
This commit is contained in:
(no author)
2024-12-16 23:30:01 +00:00
parent c1a283305d
commit d3797e4d6d
3 changed files with 62 additions and 13 deletions

View File

@@ -0,0 +1,43 @@
package de.extio.lmlib.client.prompt;
public class AlpacaShortPromptStrategy implements PromptStrategy {
@Override
public StringBuilder start(final String instruction, final String question, final String text) {
final StringBuilder prompt = new StringBuilder();
prompt.append("### Instruction:\n");
prompt.append(instruction);
prompt.append("\n\n### Input:\n");
prompt.append(question);
if (!question.isEmpty() && !text.isEmpty()) {
prompt.append("\n");
}
prompt.append(text);
prompt.append("\n\n### Response:\n");
return prompt;
}
@Override
public void continue_(final StringBuilder prompt, final String assistant) {
this.next(prompt, assistant, "Continue");
}
@Override
public void next(final StringBuilder prompt, final String assistant, final String user) {
prompt.append(assistant);
prompt.append("\n\n### Input:\n");
prompt.append(user);
prompt.append("\n\n### Response:\n");
}
@Override
public String removeEOT(final String prompt) {
return prompt.strip().replace("</s>", "");
}
@Override
public String getPromptName() {
return "alpaca";
}
}

View File

@@ -6,22 +6,18 @@ import org.springframework.stereotype.Component;
public class MixtralPromptStrategy implements PromptStrategy { public class MixtralPromptStrategy implements PromptStrategy {
@Override @Override
public StringBuilder start(final String system, final String question, final String text) { public StringBuilder start(final String instruction, final String question, final String text) {
final StringBuilder prompt = new StringBuilder(); final StringBuilder prompt = new StringBuilder();
prompt.append("<s>[INST] "); prompt.append("<s>[INST] ");
if (!system.isEmpty()) { prompt.append(instruction);
prompt.append(system); if (!instruction.isEmpty() && !question.isEmpty()) {
if (!question.isEmpty() || !text.isEmpty()) {
prompt.append("\n"); prompt.append("\n");
} }
}
if (!question.isEmpty()) {
prompt.append(question); prompt.append(question);
if (!text.isEmpty()) { if ((!instruction.isEmpty() || !question.isEmpty()) && !text.isEmpty()) {
prompt.append("\n"); prompt.append("\n");
} }
} prompt.append(text);
prompt.append(question);
prompt.append(" [/INST]"); prompt.append(" [/INST]");
return prompt; return prompt;
} }
@@ -40,6 +36,11 @@ public class MixtralPromptStrategy implements PromptStrategy {
prompt.append(" [/INST]"); prompt.append(" [/INST]");
} }
@Override
public String removeEOT(final String prompt) {
return prompt.strip().replace("</s>", "");
}
@Override @Override
public String getPromptName() { public String getPromptName() {
return "mixtral"; return "mixtral";

View File

@@ -1,5 +1,6 @@
package de.extio.lmlib.client.textcompletion; package de.extio.lmlib.client.textcompletion;
import java.text.DecimalFormat;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayDeque; import java.util.ArrayDeque;
@@ -295,6 +296,10 @@ public class TextCompletionClient implements Client, DisposableBean {
builder.append(this.inTokens); builder.append(this.inTokens);
builder.append(", outTokens="); builder.append(", outTokens=");
builder.append(this.outTokens); builder.append(this.outTokens);
builder.append(", averageTps=");
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("]"); builder.append("]");
return builder.toString(); return builder.toString();
} }