-
-
+
-
-
-
+
+ Lora
+
+
+
+
+
+
+
From 051b4b60aa3d64c352b3ab308700dd8a12d9546f Mon Sep 17 00:00:00 2001
From: RossAscends <124905043+RossAscends@users.noreply.github.com>
Date: Wed, 3 Jan 2024 17:40:51 +0900
Subject: [PATCH 4/5] don't count lora input for loop times..
---
index.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/index.js b/index.js
index 3dfe14e..4ec4fba 100644
--- a/index.js
+++ b/index.js
@@ -221,7 +221,6 @@ async function onLoadModelClick() {
let times = 1;
if (draftModelValue) { times++; }
- if (loraModelValue) { times++; }
console.debug(`TabbyLoader: need to loop ${times} times`);
From 7aa8789ffe179d05e49d317079579ec5c2c09653 Mon Sep 17 00:00:00 2001
From: RossAscends <124905043+RossAscends@users.noreply.github.com>
Date: Wed, 3 Jan 2024 18:01:29 +0900
Subject: [PATCH 5/5] fix lora scaling var save/load, gracefully handle empty
GPU split
---
index.js | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/index.js b/index.js
index 4ec4fba..73b4dcc 100644
--- a/index.js
+++ b/index.js
@@ -18,6 +18,7 @@ let models = [];
let draftModels = [];
let loraModels = [];
let loraReqBody = {};
+let loraAPICallParams;
let shouldLoadLora = false;
@@ -280,11 +281,10 @@ async function loadLora() {
toastr.error("TabbyLoader: Admin key not found. Please provide one in SillyTavern's model settings or in the extension box.");
return;
}
-
loraReqBody.loras = [
{
name: loraModelValue,
- scaling: extensionSettings?.loraAPICallParams?.lora.scaling,
+ scaling: extensionSettings?.loraParams?.loras.scaling,
},
];
@@ -380,7 +380,7 @@ async function onParameterEditorClick() {
.val(extensionSettings?.modelParams?.draft?.draft_ropeAlpha ?? 1.0);
parameterHtml
.find('input[name="lora_scale"]')
- .val(extensionSettings?.modelParams?.lora?.scaling ?? 1.0);
+ .val(extensionSettings?.loraParams?.loras.scaling ?? 1.0);
parameterHtml
.find('input[name="no_flash_attention"]')
.prop('checked', extensionSettings?.modelParams?.noFlashAttention ?? false);
@@ -422,8 +422,8 @@ async function onParameterEditorClick() {
eightBitCache: parameterHtml.find('input[name="eight_bit_cache"]').prop('checked'),
useCfg: parameterHtml.find('input[name="use_cfg"]').prop('checked'),
};
-
- const loraAPICallParams = {
+ console.log(parameterHtml.find('input[name="lora_scale"]').val())
+ loraAPICallParams = {
loras: {
name: parameterHtml.find('input[name="lora_model_list"]').val(),
scaling: parameterHtml.find('input[name="lora_scale"]').val(),
@@ -433,20 +433,22 @@ async function onParameterEditorClick() {
// Handle GPU split setting
const gpuSplitVal = parameterHtml.find('input[name="gpu_split_value"]').val();
try {
- const gpuSplitArray = JSON.parse(gpuSplitVal) ?? [];
- if (Array.isArray(gpuSplitArray)) {
- newParams['gpuSplit'] = gpuSplitArray;
- } else {
- console.error(`Provided GPU split value (${gpuSplitArray}) is not an array.`);
- newParams['gpuSplit'] = [];
+ if (gpuSplitVal) {
+ const gpuSplitArray = JSON.parse(gpuSplitVal) ?? [];
+ if (Array.isArray(gpuSplitArray)) {
+ newParams['gpuSplit'] = gpuSplitArray;
+ } else {
+ console.error(`Provided GPU split value (${gpuSplitArray}) is not an array.`);
+ newParams['gpuSplit'] = [];
+ }
}
- } catch (error) {
+ Object.assign(extensionSettings, { modelParams: newParams, loraParams: loraAPICallParams });
+ saveSettingsDebounced();
+ }
+ catch (error) {
console.error(error);
newParams['gpuSplit'] = [];
}
-
- Object.assign(extensionSettings, { modelParams: newParams, loraParams: loraAPICallParams });
- saveSettingsDebounced();
}
}