Skip to content

Commit abc1d8a

Browse files
committed
better way of checking for avx2 support
1 parent 52dcfe4 commit abc1d8a

14 files changed

+106
-40
lines changed

.github/workflows/kcpp-build-release-win-oldpc.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
- name: Install python dependencies
3434
run: |
3535
python -m pip install --upgrade pip
36-
pip install customtkinter==5.2.0 pyinstaller==5.11.0 psutil==5.9.5 py-cpuinfo==9.0.0
36+
pip install customtkinter==5.2.0 pyinstaller==5.11.0 psutil==5.9.5
3737
3838
- name: Display full Visual Studio info Before
3939
run: |

.github/workflows/kcpp-build-release-win.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
- name: Install python dependencies
3434
run: |
3535
python -m pip install --upgrade pip
36-
pip install customtkinter==5.2.0 pyinstaller==5.11.0 psutil==5.9.5 py-cpuinfo==9.0.0
36+
pip install customtkinter==5.2.0 pyinstaller==5.11.0 psutil==5.9.5
3737
3838
- name: Display full Visual Studio info Before
3939
run: |

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -904,6 +904,8 @@ quantize_clip: tools/mtmd/clip.cpp tools/mtmd/clip.h tools/quantclip.cpp ggml_v3
904904
#window simple clinfo
905905
simpleclinfo: simpleclinfo.cpp
906906
$(CXX) $(CXXFLAGS) $^ lib/OpenCL.lib lib/clblast.lib -o $@ $(LDFLAGS)
907+
simplecpuinfo: simplecpuinfo.cpp
908+
$(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS)
907909

908910
build-info.h:
909911
$(DONOTHING)

environment-nocuda.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,3 @@ dependencies:
1919
- tk=*=xft_*
2020
- pip:
2121
- customtkinter
22-
- py-cpuinfo

environment.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,3 @@ dependencies:
2222
- tk=*=xft_*
2323
- pip:
2424
- customtkinter
25-
- py-cpuinfo

klite.embd

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Current version indicated by LITEVER below.
1212
-->
1313

1414
<script id="init-config">
15-
const LITEVER = 256;
15+
const LITEVER = 257;
1616
const urlParams = new URLSearchParams(window.location.search);
1717
var localflag = urlParams.get('local'); //this will be replaced automatically in embedded kcpp
1818
const STORAGE_PREFIX = (localflag?"e_":"")+"kaihordewebui_";
@@ -3213,7 +3213,7 @@ Current version indicated by LITEVER below.
32133213
var passed_ai_warning_local = false;
32143214
var welcome = "";
32153215
var personal_notes = "";
3216-
var voice_typing_mode = 0; //0=off, 1=on, 2=ptt
3216+
var voice_typing_mode = 0; //0=off, 1=on, 2=ptt, 3=ttt
32173217
var koboldcpp_has_whisper = false; //does backend support voice typing
32183218
var voice_is_recording = false; //currently recording voice?
32193219
var voice_is_processing = false; //currently processing voice?
@@ -5636,7 +5636,9 @@ Current version indicated by LITEVER below.
56365636
let evs = [];
56375637
let m;
56385638
while ((m = /^data: ?(.*)(\r?\n){2}/m.exec(ctrl.buf)) !== null) {
5639-
try{evs.push({data: JSON.parse(m[1])});} catch (e) {}
5639+
try{evs.push({data: JSON.parse(m[1])});} catch (e) {
5640+
console.log("Cannot parse a chunk: " + chunk);
5641+
}
56405642
ctrl.buf = ctrl.buf.substring(m.index + m[0].length);
56415643
}
56425644
if (evs.length) {
@@ -15310,6 +15312,12 @@ Current version indicated by LITEVER below.
1531015312
var recent_voice_duration = 0;
1531115313
function ptt_start()
1531215314
{
15315+
if(voice_typing_mode==3 && voice_is_speaking)
15316+
{
15317+
//stop toggle to talk
15318+
ptt_end(true);
15319+
return;
15320+
}
1531315321
if(voice_typing_mode>0)
1531415322
{
1531515323
voice_is_speaking = true;
@@ -15328,8 +15336,12 @@ Current version indicated by LITEVER below.
1532815336
}
1532915337
}
1533015338
}
15331-
function ptt_end()
15339+
function ptt_end(force=false)
1533215340
{
15341+
if(voice_typing_mode==3 && !force)
15342+
{
15343+
return; //do nothing for toggle to talk unless forced
15344+
}
1533315345
var voice_end_delay = localsettings.voice_end_delay;
1533415346
if(voice_typing_mode>0)
1533515347
{
@@ -19471,7 +19483,7 @@ Current version indicated by LITEVER below.
1947119483
document.getElementById("btnsend").innerHTML = "<div class='showmiclivebig'></div><span style='font-size:12px'>Record</span>";
1947219484
} else if (ready_to_record()) {
1947319485
document.getElementById("chat_msg_send_btn").classList.add("showmic");
19474-
document.getElementById("btnsend").innerHTML = "<div class='showmicbig'></div><span style='font-size:12px'>"+(voice_typing_mode==1?"Standby":"PTT")+"</span>";
19486+
document.getElementById("btnsend").innerHTML = "<div class='showmicbig'></div><span style='font-size:12px'>"+(voice_typing_mode==1?"Standby":(voice_typing_mode==2?"PTT":"TTT"))+"</span>";
1947519487
} else {
1947619488
document.getElementById("chat_msg_send_btn").classList.add("showmicoff");
1947719489
document.getElementById("btnsend").innerHTML = "<div class='showmicoffbig'></div><span style='font-size:12px'>Busy</span>";
@@ -23373,7 +23385,7 @@ Current version indicated by LITEVER below.
2337323385
</div>
2337423386
<div style="position: relative; padding-right: 2px;">
2337523387
<button type="button" class="btn wait mainnav" id="btnsend" disabled
23376-
onclick="submit_generation_button(false)" onmousedown="ptt_start()" onmouseup="ptt_end()">Loading</button>
23388+
onclick="submit_generation_button(false)" onpointerdown="ptt_start()" onpointerup="ptt_end()">Loading</button>
2337723389
<a href="#" id="abortgen" class="hidden bg_black mainnav" style="text-align: center;color: #ffaaaa;" onclick="abort_generation()"><b style="display: block;">[ABORT]</b></a>
2337823390
<span id="searchingtxt" class="hidden bg_black mainnav" style="text-align: center;color: #49a8e4; font-size: 9px;"><b style="display: block;">WebSearch...</b></span>
2337923391
</div>
@@ -24373,6 +24385,7 @@ Current version indicated by LITEVER below.
2437324385
<option value="0">Off</option>
2437424386
<option value="1">Detect Voice</option>
2437524387
<option value="2">Push-To-Talk</option>
24388+
<option value="3">Toggle-To-Talk</option>
2437624389
</select>
2437724390
</div>
2437824391
<div class="inlinelabel" style="font-size: 11px;">
@@ -25166,9 +25179,9 @@ Current version indicated by LITEVER below.
2516625179
</div>
2516725180

2516825181
<div id="koboldcustom" class="menutext">
25169-
You can use this to connect to a KoboldAI instance running via a remote tunnel such as <span class="color_orange" style="font-weight: bold;">trycloudflare, localtunnel, ngrok</span>.<br><br>
25170-
Localhost IPs require host mode enabled. You can use the remote address displayed in the <span class="color_orange" style="font-weight: bold;">terminal console</span> or <span class="color_orange" style="font-weight: bold;">colab window</span>, note that the model must be loaded first.<br><br>
25171-
<span class="color_green" style="font-weight: bold;">Please input URL of the KoboldAI instance.</span><br><br>
25182+
You can use this to connect to a KoboldCpp or KoboldAI instance running via a remote tunnel such as <span class="color_orange" style="font-weight: bold;">trycloudflare, localtunnel, ngrok</span>.<br><br>
25183+
You can use the remote address displayed in the <span class="color_orange" style="font-weight: bold;">terminal console</span> or <span class="color_orange" style="font-weight: bold;">colab window</span>, note that the model must be loaded first.<br><br>
25184+
<span class="color_green" style="font-weight: bold;">Please input URL of the KoboldCpp or KoboldAI instance.</span><br><br>
2517225185
<input class="form-control" title="Enter KoboldCpp Custom Endpoint" id="customkoboldendpoint" placeholder="https://sample-remote-address.trycloudflare.com" value="">
2517325186
<input class="form-control" title="Enter KoboldCpp API Key" type="password" id="customkoboldkey" placeholder="KoboldAI API Key (Optional)" value="" onfocus="focus_api_keys()" onblur="blur_api_keys()"><br>
2517425187
<div class="borderbox flex flex-push-right">

koboldcpp.py

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -678,23 +678,34 @@ def strip_base64_prefix(encoded_data):
678678
encoded_data = encoded_data.split(',', 1)[-1]
679679
return encoded_data
680680

681-
def old_cpu_check(): #return 0 if has avx2, 1 if has avx, 2 if has nothing
681+
def old_cpu_check(): #return -1 for pass, 0 if has avx2, 1 if has avx, 2 if has nothing
682682
shouldcheck = ((sys.platform == "linux" and platform.machine().lower() in ("x86_64", "amd64")) or
683683
(os.name == 'nt' and platform.machine().lower() in ("amd64", "x86_64")))
684684
if not shouldcheck:
685-
return 0 #doesnt deal with avx at all.
685+
return -1 #doesnt deal with avx at all.
686686
try:
687-
import cpuinfo
688-
info = cpuinfo.get_cpu_info()
689-
flags = info.get('flags', [])
690-
if 'avx2' in flags:
691-
return 0
692-
elif 'avx' in flags:
693-
return 1
694-
else:
695-
return 2
687+
retflags = 0
688+
if sys.platform == "linux":
689+
with open('/proc/cpuinfo', 'r') as f:
690+
cpuinfo = f.read()
691+
cpuinfo = cpuinfo.lower()
692+
if 'avx' not in cpuinfo and 'avx2' not in cpuinfo:
693+
retflags = 2
694+
elif 'avx2' not in cpuinfo:
695+
retflags = 1
696+
elif os.name == 'nt':
697+
basepath = os.path.abspath(os.path.dirname(__file__))
698+
output = ""
699+
data = None
700+
output = subprocess.run([os.path.join(basepath, "simplecpuinfo.exe")], capture_output=True, text=True, check=True, creationflags=subprocess.CREATE_NO_WINDOW | subprocess.DETACHED_PROCESS, encoding='utf-8', timeout=6).stdout
701+
data = json.loads(output)
702+
if data["avx2"]==0 and data["avx"]==0:
703+
retflags = 2
704+
elif data["avx2"]==0:
705+
retflags = 1
706+
return retflags
696707
except Exception:
697-
return 0 #cannot determine
708+
return -1 #cannot determine
698709

699710

700711
def unpack_to_dir(destpath = ""):
@@ -1286,7 +1297,7 @@ def auto_set_backend_cli():
12861297
# check for avx2 and avx support
12871298
is_oldpc_ver = "Use CPU" not in runopts #on oldcpu ver, default lib does not exist
12881299
cpusupport = old_cpu_check() # 0 if has avx2, 1 if has avx, 2 if has nothing
1289-
eligible_cuda = (cpusupport==0 and not is_oldpc_ver) or (cpusupport==1 and is_oldpc_ver)
1300+
eligible_cuda = (cpusupport<1 and not is_oldpc_ver) or (cpusupport<2 and is_oldpc_ver)
12901301
if not eligible_cuda:
12911302
if cpusupport==1:
12921303
args.noavx2 = True
@@ -1297,17 +1308,17 @@ def auto_set_backend_cli():
12971308
if eligible_cuda and exitcounter < 100 and MaxMemory[0]>3500000000 and (("Use CuBLAS" in runopts and CUDevicesNames[0]!="") or "Use hipBLAS (ROCm)" in runopts) and any(CUDevicesNames):
12981309
if "Use CuBLAS" in runopts or "Use hipBLAS (ROCm)" in runopts:
12991310
args.usecublas = ["normal","mmq"]
1300-
print("Auto Selected CUDA Backend...\n")
1311+
print(f"Auto Selected CUDA Backend (flag={cpusupport})\n")
13011312
found_new_backend = True
13021313
elif exitcounter < 100 and (1 in VKIsDGPU) and ("Use Vulkan" in runopts or "Use Vulkan (Old CPU)" in runopts):
13031314
for i in range(0,len(VKIsDGPU)):
13041315
if VKIsDGPU[i]==1:
13051316
args.usevulkan = []
1306-
print("Auto Selected Vulkan Backend...\n")
1317+
print(f"Auto Selected Vulkan Backend (flag={cpusupport})\n")
13071318
found_new_backend = True
13081319
break
13091320
if not found_new_backend:
1310-
print("No GPU Backend found...\n")
1321+
print(f"Auto Selected Default Backend (flag={cpusupport})\n")
13111322

13121323
def load_model(model_filename):
13131324
global args
@@ -4668,30 +4679,30 @@ def auto_set_backend_gui(manual_select=False):
46684679
# check for avx2 and avx support
46694680
is_oldpc_ver = "Use CPU" not in runopts #on oldcpu ver, default lib does not exist
46704681
cpusupport = old_cpu_check() # 0 if has avx2, 1 if has avx, 2 if has nothing
4671-
eligible_cuda = (cpusupport==0 and not is_oldpc_ver) or (cpusupport==1 and is_oldpc_ver)
4682+
eligible_cuda = (cpusupport<1 and not is_oldpc_ver) or (cpusupport<2 and is_oldpc_ver)
46724683

46734684
#autopick cublas if suitable, requires at least 3.5GB VRAM to auto pick
46744685
#we do not want to autoselect hip/cublas if the user has already changed their desired backend!
46754686
if eligible_cuda and exitcounter < 100 and MaxMemory[0]>3500000000 and (("Use CuBLAS" in runopts and CUDevicesNames[0]!="") or "Use hipBLAS (ROCm)" in runopts) and (any(CUDevicesNames) or any(CLDevicesNames)) and runmode_untouched:
46764687
if "Use CuBLAS" in runopts:
46774688
runopts_var.set("Use CuBLAS")
46784689
gpu_choice_var.set("1")
4679-
print("Auto Selected CUDA Backend...\n")
4690+
print(f"Auto Selected CUDA Backend (flag={cpusupport})\n")
46804691
found_new_backend = True
46814692
elif "Use hipBLAS (ROCm)" in runopts:
46824693
runopts_var.set("Use hipBLAS (ROCm)")
46834694
gpu_choice_var.set("1")
4684-
print("Auto Selected HIP Backend...\n")
4695+
print(f"Auto Selected HIP Backend (flag={cpusupport})\n")
46854696
found_new_backend = True
46864697
elif exitcounter < 100 and (1 in VKIsDGPU) and runmode_untouched and ("Use Vulkan" in runopts or "Use Vulkan (Old CPU)" in runopts):
46874698
for i in range(0,len(VKIsDGPU)):
46884699
if VKIsDGPU[i]==1:
4689-
if cpusupport==0 and "Use Vulkan" in runopts:
4700+
if cpusupport<1 and "Use Vulkan" in runopts:
46904701
runopts_var.set("Use Vulkan")
46914702
else:
46924703
runopts_var.set("Use Vulkan (Old CPU)")
46934704
gpu_choice_var.set(str(i+1))
4694-
print("Auto Selected Vulkan Backend...\n")
4705+
print(f"Auto Selected Vulkan Backend (flag={cpusupport})\n")
46954706
found_new_backend = True
46964707
break
46974708
else:
@@ -4700,7 +4711,7 @@ def auto_set_backend_gui(manual_select=False):
47004711
elif runopts_var.get()=="Use CPU" and cpusupport==2 and "Failsafe Mode (Older CPU)" in runopts:
47014712
runopts_var.set("Failsafe Mode (Older CPU)")
47024713
if not found_new_backend:
4703-
print("Auto Selected Default Backend...\n")
4714+
print(f"Auto Selected Default Backend (flag={cpusupport})\n")
47044715
changed_gpu_choice_var()
47054716

47064717
def on_picked_model_file(filepath):

make_pyinstaller.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
call create_ver_file.bat
22
PyInstaller --onedir --noconfirm --clean --console --runtime-hook "./tools/kcpplauncherhook.py" --icon "./niko.ico" --version-file "./version.txt" "./koboldcpp.py" -n "koboldcpp-launcher"
3-
PyInstaller --noconfirm --onefile --clean --console --collect-all customtkinter --collect-all psutil --icon "./niko.ico" --add-data "./dist/koboldcpp-launcher/koboldcpp-launcher.exe;." --add-data "./simpleclinfo.exe;." --add-data "./aria2c-win.exe;." --add-data "./OpenCL.dll;." --add-data "./kcpp_adapters;./kcpp_adapters" --add-data "./koboldcpp.py;." --add-data "./json_to_gbnf.py;." --add-data "./LICENSE.md;." --add-data "./MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md;." --add-data "./klite.embd;." --add-data "./kcpp_docs.embd;." --add-data "./kcpp_sdui.embd;." --add-data "./taesd.embd;." --add-data "./taesd_xl.embd;." --add-data "./taesd_f.embd;." --add-data "./taesd_3.embd;." --add-data "./koboldcpp_default.dll;." --add-data "./koboldcpp_failsafe.dll;." --add-data "./koboldcpp_noavx2.dll;." --add-data "./koboldcpp_clblast.dll;." --add-data "./koboldcpp_clblast_noavx2.dll;." --add-data "./koboldcpp_clblast_failsafe.dll;." --add-data "./koboldcpp_vulkan_noavx2.dll;." --add-data "./clblast.dll;." --add-data "./koboldcpp_vulkan.dll;." --add-data "./rwkv_vocab.embd;." --add-data "./rwkv_world_vocab.embd;." --version-file "./version.txt" "./koboldcpp.py" -n "koboldcpp-nocuda.exe"
3+
PyInstaller --noconfirm --onefile --clean --console --collect-all customtkinter --collect-all psutil --icon "./niko.ico" --add-data "./dist/koboldcpp-launcher/koboldcpp-launcher.exe;." --add-data "./simpleclinfo.exe;." --add-data "./simplecpuinfo.exe;." --add-data "./aria2c-win.exe;." --add-data "./OpenCL.dll;." --add-data "./kcpp_adapters;./kcpp_adapters" --add-data "./koboldcpp.py;." --add-data "./json_to_gbnf.py;." --add-data "./LICENSE.md;." --add-data "./MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md;." --add-data "./klite.embd;." --add-data "./kcpp_docs.embd;." --add-data "./kcpp_sdui.embd;." --add-data "./taesd.embd;." --add-data "./taesd_xl.embd;." --add-data "./taesd_f.embd;." --add-data "./taesd_3.embd;." --add-data "./koboldcpp_default.dll;." --add-data "./koboldcpp_failsafe.dll;." --add-data "./koboldcpp_noavx2.dll;." --add-data "./koboldcpp_clblast.dll;." --add-data "./koboldcpp_clblast_noavx2.dll;." --add-data "./koboldcpp_clblast_failsafe.dll;." --add-data "./koboldcpp_vulkan_noavx2.dll;." --add-data "./clblast.dll;." --add-data "./koboldcpp_vulkan.dll;." --add-data "./rwkv_vocab.embd;." --add-data "./rwkv_world_vocab.embd;." --version-file "./version.txt" "./koboldcpp.py" -n "koboldcpp-nocuda.exe"

make_pyinstaller_cuda.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
call create_ver_file.bat
22
PyInstaller --onedir --noconfirm --clean --console --runtime-hook "./tools/kcpplauncherhook.py" --icon "./niko.ico" --version-file "./version.txt" "./koboldcpp.py" -n "koboldcpp-launcher"
3-
PyInstaller --noconfirm --onefile --clean --console --collect-all customtkinter --collect-all psutil --icon "./nikogreen.ico" --add-data "./dist/koboldcpp-launcher/koboldcpp-launcher.exe;." --add-data "./simpleclinfo.exe;." --add-data "./aria2c-win.exe;." --add-data "./OpenCL.dll;." --add-data "./kcpp_adapters;./kcpp_adapters" --add-data "./koboldcpp.py;." --add-data "./json_to_gbnf.py;." --add-data "./LICENSE.md;." --add-data "./MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md;." --add-data "./klite.embd;." --add-data "./kcpp_docs.embd;." --add-data "./kcpp_sdui.embd;." --add-data "./taesd.embd;." --add-data "./taesd_xl.embd;." --add-data "./taesd_f.embd;." --add-data "./taesd_3.embd;." --add-data "./koboldcpp_default.dll;." --add-data "./koboldcpp_failsafe.dll;." --add-data "./koboldcpp_noavx2.dll;." --add-data "./koboldcpp_clblast.dll;." --add-data "./koboldcpp_clblast_noavx2.dll;." --add-data "./koboldcpp_clblast_failsafe.dll;." --add-data "./koboldcpp_vulkan_noavx2.dll;." --add-data "./clblast.dll;." --add-data "./koboldcpp_vulkan.dll;." --add-data "./koboldcpp_cublas.dll;." --add-data "./cublas64_12.dll;." --add-data "./cublasLt64_12.dll;." --add-data "./cudart64_12.dll;." --add-data "C:/Windows/System32/msvcp140.dll;." --add-data "C:/Windows/System32/msvcp140_codecvt_ids.dll;." --add-data "C:/Windows/System32/vcruntime140.dll;." --add-data "C:/Windows/System32/vcruntime140_1.dll;." --add-data "./rwkv_vocab.embd;." --add-data "./rwkv_world_vocab.embd;." --version-file "./version.txt" "./koboldcpp.py" -n "koboldcpp.exe"
3+
PyInstaller --noconfirm --onefile --clean --console --collect-all customtkinter --collect-all psutil --icon "./nikogreen.ico" --add-data "./dist/koboldcpp-launcher/koboldcpp-launcher.exe;." --add-data "./simpleclinfo.exe;." --add-data "./simplecpuinfo.exe;." --add-data "./aria2c-win.exe;." --add-data "./OpenCL.dll;." --add-data "./kcpp_adapters;./kcpp_adapters" --add-data "./koboldcpp.py;." --add-data "./json_to_gbnf.py;." --add-data "./LICENSE.md;." --add-data "./MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md;." --add-data "./klite.embd;." --add-data "./kcpp_docs.embd;." --add-data "./kcpp_sdui.embd;." --add-data "./taesd.embd;." --add-data "./taesd_xl.embd;." --add-data "./taesd_f.embd;." --add-data "./taesd_3.embd;." --add-data "./koboldcpp_default.dll;." --add-data "./koboldcpp_failsafe.dll;." --add-data "./koboldcpp_noavx2.dll;." --add-data "./koboldcpp_clblast.dll;." --add-data "./koboldcpp_clblast_noavx2.dll;." --add-data "./koboldcpp_clblast_failsafe.dll;." --add-data "./koboldcpp_vulkan_noavx2.dll;." --add-data "./clblast.dll;." --add-data "./koboldcpp_vulkan.dll;." --add-data "./koboldcpp_cublas.dll;." --add-data "./cublas64_12.dll;." --add-data "./cublasLt64_12.dll;." --add-data "./cudart64_12.dll;." --add-data "C:/Windows/System32/msvcp140.dll;." --add-data "C:/Windows/System32/msvcp140_codecvt_ids.dll;." --add-data "C:/Windows/System32/vcruntime140.dll;." --add-data "C:/Windows/System32/vcruntime140_1.dll;." --add-data "./rwkv_vocab.embd;." --add-data "./rwkv_world_vocab.embd;." --version-file "./version.txt" "./koboldcpp.py" -n "koboldcpp.exe"

0 commit comments

Comments
 (0)