feat: Add support for minP, repeatLastN, and repeatPenalty model settings

This commit is contained in:
n4ze3m 2024-12-28 17:38:52 +05:30
parent ef40b9a242
commit aa49f03f63
10 changed files with 209 additions and 26 deletions

View File

@ -60,11 +60,11 @@
"keepAlive": {
"label": "Keep Alive",
"help": "controls how long the model will stay loaded into memory following the request (default: 5m)",
"placeholder": "Enter Keep Alive duration (e.g. 5m, 10m, 1h)"
"placeholder": "e.g. 5m, 10m, 1h"
},
"temperature": {
"label": "Temperature",
"placeholder": "Enter Temperature value (e.g. 0.7, 1.0)"
"placeholder": "e.g. 0.7, 1.0"
},
"numCtx": {
"label": "Number of Contexts",
@ -72,24 +72,36 @@
},
"numPredict": {
"label": "Max Tokens (num_predict)",
"placeholder": "Enter Max Tokens value (e.g. 2048, 4096)"
"placeholder": "e.g. 2048, 4096"
},
"seed": {
"label": "Seed",
"placeholder": "Enter Seed value (e.g. 1234)",
"placeholder": "e.g. 1234",
"help": "Reproducibility of the model output"
},
"topK": {
"label": "Top K",
"placeholder": "Enter Top K value (e.g. 40, 100)"
"placeholder": "e.g. 40, 100"
},
"topP": {
"label": "Top P",
"placeholder": "Enter Top P value (e.g. 0.9, 0.95)"
"placeholder": "e.g. 0.9, 0.95"
},
"useMMap": {
"label": "useMmap"
},
"minP": {
"label": "Min P",
"placeholder": "e.g. 0.05"
},
"repeatPenalty": {
"label": "Repeat Penalty",
"placeholder": "e.g. 1.1, 1.2"
},
"repeatLastN": {
"label": "Repeat Last N",
"placeholder": "e.g. 64, 128"
},
"numGpu": {
"label": "Num GPU",
"placeholder": "Enter number of layers to send to GPU(s)"

View File

@ -76,7 +76,10 @@ export const CurrentChatModelSettings = ({
numGpu: cUserSettings.numGpu ?? data.numGpu,
numPredict: cUserSettings.numPredict ?? data.numPredict,
systemPrompt: cUserSettings.systemPrompt ?? tempSystemPrompt,
useMMap: cUserSettings.useMMap ?? data.useMMap
useMMap: cUserSettings.useMMap ?? data.useMMap,
minP: cUserSettings.minP ?? data.minP,
repeatLastN: cUserSettings.repeatLastN ?? data.repeatLastN,
repeatPenalty: cUserSettings.repeatPenalty ?? data.repeatPenalty
})
return data
},
@ -199,6 +202,34 @@ export const CurrentChatModelSettings = ({
/>
</Form.Item>
<Form.Item
name="minP"
label={t("modelSettings.form.minP.label")}>
<InputNumber
style={{ width: "100%" }}
placeholder={t("modelSettings.form.minP.placeholder")}
/>
</Form.Item>
<Form.Item
name="repeatPenalty"
label={t("modelSettings.form.repeatPenalty.label")}>
<InputNumber
style={{ width: "100%" }}
placeholder={t(
"modelSettings.form.repeatPenalty.placeholder"
)}
/>
</Form.Item>
<Form.Item
name="repeatLastN"
label={t("modelSettings.form.repeatLastN.label")}>
<InputNumber
style={{ width: "100%" }}
placeholder={t(
"modelSettings.form.repeatLastN.placeholder"
)}
/>
</Form.Item>
<Form.Item
name="useMMap"
label={t("modelSettings.form.useMMap.label")}>
@ -209,7 +240,10 @@ export const CurrentChatModelSettings = ({
}
]}
/>
<SaveButton className="w-full text-center inline-flex items-center justify-center" btnType="submit" />
<SaveButton
className="w-full text-center inline-flex items-center justify-center"
btnType="submit"
/>
</Form>
) : (
<Skeleton active />

View File

@ -122,6 +122,34 @@ export const ModelSettings = () => {
placeholder={t("modelSettings.form.numGpu.placeholder")}
/>
</Form.Item>
<Form.Item
name="minP"
label={t("modelSettings.form.minP.label")}>
<InputNumber
style={{ width: "100%" }}
placeholder={t("modelSettings.form.minP.placeholder")}
/>
</Form.Item>
<Form.Item
name="repeatPenalty"
label={t("modelSettings.form.repeatPenalty.label")}>
<InputNumber
style={{ width: "100%" }}
placeholder={t(
"modelSettings.form.repeatPenalty.placeholder"
)}
/>
</Form.Item>
<Form.Item
name="repeatLastN"
label={t("modelSettings.form.repeatLastN.label")}>
<InputNumber
style={{ width: "100%" }}
placeholder={t(
"modelSettings.form.repeatLastN.placeholder"
)}
/>
</Form.Item>
<Form.Item
name="useMMap"
label={t("modelSettings.form.useMMap.label")}>

View File

@ -143,7 +143,14 @@ export const useMessage = () => {
currentChatModelSettings?.numPredict ??
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap,
minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
let newMessage: Message[] = []
@ -278,7 +285,15 @@ export const useMessage = () => {
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ??
userDefaultModelSettings?.useMMap
userDefaultModelSettings?.useMMap,
minP:
currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
const response = await questionOllama.invoke(promptForQuestion)
query = response.content.toString()
@ -492,7 +507,14 @@ export const useMessage = () => {
currentChatModelSettings?.numPredict ??
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap,
minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
let newMessage: Message[] = []
@ -729,7 +751,14 @@ export const useMessage = () => {
currentChatModelSettings?.numPredict ??
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap,
minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
let newMessage: Message[] = []
@ -961,7 +990,14 @@ export const useMessage = () => {
currentChatModelSettings?.numPredict ??
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap,
minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
let newMessage: Message[] = []
@ -1043,7 +1079,15 @@ export const useMessage = () => {
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ??
userDefaultModelSettings?.useMMap
userDefaultModelSettings?.useMMap,
minP:
currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
const response = await questionOllama.invoke(promptForQuestion)
query = response.content.toString()
@ -1235,7 +1279,14 @@ export const useMessage = () => {
currentChatModelSettings?.numPredict ??
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap,
minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
let newMessage: Message[] = []

View File

@ -134,7 +134,14 @@ export const useMessageOption = () => {
currentChatModelSettings?.numPredict ??
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap,
minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
let newMessage: Message[] = []
@ -216,7 +223,15 @@ export const useMessageOption = () => {
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ??
userDefaultModelSettings?.useMMap
userDefaultModelSettings?.useMMap,
minP:
currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
const response = await questionOllama.invoke(promptForQuestion)
query = response.content.toString()
@ -442,7 +457,14 @@ export const useMessageOption = () => {
currentChatModelSettings?.numPredict ??
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap,
minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
let newMessage: Message[] = []
@ -690,7 +712,14 @@ export const useMessageOption = () => {
currentChatModelSettings?.numPredict ??
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap
currentChatModelSettings?.useMMap ?? userDefaultModelSettings?.useMMap,
minP: currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
let newMessage: Message[] = []
@ -788,7 +817,15 @@ export const useMessageOption = () => {
userDefaultModelSettings?.numPredict,
useMMap:
currentChatModelSettings?.useMMap ??
userDefaultModelSettings?.useMMap
userDefaultModelSettings?.useMMap,
minP:
currentChatModelSettings?.minP ?? userDefaultModelSettings?.minP,
repeatLastN:
currentChatModelSettings?.repeatLastN ??
userDefaultModelSettings?.repeatLastN,
repeatPenalty:
currentChatModelSettings?.repeatPenalty ??
userDefaultModelSettings?.repeatPenalty
})
const response = await questionOllama.invoke(promptForQuestion)
query = response.content.toString()

View File

@ -95,6 +95,8 @@ export class ChatOllama
topP?: number;
minP?: number;
typicalP?: number;
useMLock?: boolean;
@ -142,6 +144,7 @@ export class ChatOllama
this.tfsZ = fields.tfsZ;
this.topK = fields.topK;
this.topP = fields.topP;
this.minP = fields.minP;
this.typicalP = fields.typicalP;
this.useMLock = fields.useMLock;
this.useMMap = fields.useMMap;
@ -205,6 +208,7 @@ export class ChatOllama
tfs_z: this.tfsZ,
top_k: this.topK,
top_p: this.topP,
min_p: this.minP,
typical_p: this.typicalP,
use_mlock: this.useMLock,
use_mmap: this.useMMap,

View File

@ -17,7 +17,10 @@ export const pageAssistModel = async ({
seed,
numGpu,
numPredict,
useMMap
useMMap,
minP,
repeatLastN,
repeatPenalty
}: {
model: string
baseUrl: string
@ -30,6 +33,9 @@ export const pageAssistModel = async ({
numGpu?: number
numPredict?: number
useMMap?: boolean
minP?: number
repeatPenalty?: number
repeatLastN?: number
}) => {
if (model === "chrome::gemini-nano::page-assist") {
return new ChatChromeAI({
@ -86,6 +92,9 @@ export const pageAssistModel = async ({
model,
numGpu,
numPredict,
useMMap
useMMap,
minP: minP,
repeatPenalty: repeatPenalty,
repeatLastN: repeatLastN,
})
}

View File

@ -35,6 +35,7 @@ export interface OllamaInput {
tfsZ?: number
topK?: number
topP?: number
minP?: number
typicalP?: number
useMLock?: boolean
useMMap?: boolean

View File

@ -32,6 +32,7 @@ type ModelSettings = {
useMLock?: boolean
useMMap?: boolean
vocabOnly?: boolean
minP?: number
}
const keys = [
@ -62,7 +63,8 @@ const keys = [
"typicalP",
"useMLock",
"useMMap",
"vocabOnly"
"vocabOnly",
"minP",
]
export const getAllModelSettings = async () => {

View File

@ -30,6 +30,7 @@ type CurrentChatModelSettings = {
useMMap?: boolean
vocabOnly?: boolean
seed?: number
minP?: number
setF16KV?: (f16KV: boolean) => void
setFrequencyPenalty?: (frequencyPenalty: number) => void
@ -65,6 +66,8 @@ type CurrentChatModelSettings = {
reset: () => void
systemPrompt?: string
setSystemPrompt: (systemPrompt: string) => void
setMinP: (minP: number) => void
}
export const useStoreChatModelSettings = create<CurrentChatModelSettings>(
@ -103,6 +106,7 @@ export const useStoreChatModelSettings = create<CurrentChatModelSettings>(
seetSeed: (seed: number) => set({ seed }),
setX: (key: string, value: any) => set({ [key]: value }),
systemPrompt: undefined,
setMinP: (minP: number) => set({ minP }),
setSystemPrompt: (systemPrompt: string) => set({ systemPrompt }),
reset: () =>
set({
@ -135,7 +139,8 @@ export const useStoreChatModelSettings = create<CurrentChatModelSettings>(
useMMap: undefined,
vocabOnly: undefined,
seed: undefined,
systemPrompt: undefined
systemPrompt: undefined,
minP: undefined,
})
})
)