Skip to content

Commit 7a5499e

Browse files
committed
added one more backend for clblast noavx2 and clblast failsafe
1 parent 898856e commit 7a5499e

10 files changed

+57
-382
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ tests/test-tokenizer-1-bpe
110110
/koboldcpp_noavx2.so
111111
/koboldcpp_clblast.so
112112
/koboldcpp_clblast_noavx2.so
113+
/koboldcpp_clblast_failsafe.so
113114
/koboldcpp_cublas.so
114115
/koboldcpp_vulkan.so
115116
/koboldcpp_vulkan_noavx2.so
@@ -119,6 +120,7 @@ tests/test-tokenizer-1-bpe
119120
/koboldcpp_clblast.dll
120121
/koboldcpp_clblast_noavx2.dll
121122
/koboldcpp_vulkan_noavx2.dll
123+
/koboldcpp_clblast_failsafe.dll
122124
/koboldcpp_cublas.dll
123125
/koboldcpp_vulkan.dll
124126
/cublas64_11.dll

Makefile

+21-24
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
.PHONY: finishedmsg
55

6-
default: koboldcpp_default koboldcpp_failsafe koboldcpp_noavx2 koboldcpp_clblast koboldcpp_clblast_noavx2 koboldcpp_cublas koboldcpp_hipblas koboldcpp_vulkan koboldcpp_vulkan_noavx2 finishedmsg
6+
default: koboldcpp_default koboldcpp_failsafe koboldcpp_noavx2 koboldcpp_clblast koboldcpp_clblast_noavx2 koboldcpp_clblast_failsafe koboldcpp_cublas koboldcpp_hipblas koboldcpp_vulkan koboldcpp_vulkan_noavx2 finishedmsg
77
tools: quantize_gpt2 quantize_gptj quantize_gguf quantize_neox quantize_mpt quantize_clip ttsmain whispermain sdmain gguf-split
88

99
ifndef UNAME_S
@@ -140,37 +140,20 @@ CCV := $(shell $(CC) --version | head -n 1)
140140
CXXV := $(shell $(CXX) --version | head -n 1)
141141

142142
# Architecture specific
143-
# TODO: probably these flags need to be tweaked on some architectures
144-
# feel free to update the Makefile for your architecture and send a pull request or issue
143+
# For x86 based architectures
145144
ifeq ($(UNAME_M),$(filter $(UNAME_M),x86_64 i686 amd64))
146-
# Use all CPU extensions that are available:
147-
# old library NEEDS mf16c to work. so we must build with it. new one doesnt
148-
ifeq ($(OS),Windows_NT)
149-
ifdef LLAMA_PORTABLE
150-
SIMPLECFLAGS += -mavx -msse3 -mssse3
151-
SIMPLERCFLAGS += -msse3 -mssse3
152-
ifdef LLAMA_NOAVX2
153-
FULLCFLAGS += -msse3 -mssse3 -mavx
154-
else
155-
FULLCFLAGS += -mavx2 -msse3 -mssse3 -mfma -mf16c -mavx
156-
endif
157-
else
158-
CFLAGS += -march=native -mtune=native
159-
endif
160-
else
161145
ifdef LLAMA_PORTABLE
162146
SIMPLECFLAGS += -mavx -msse3 -mssse3
163147
SIMPLERCFLAGS += -msse3 -mssse3
164148
ifdef LLAMA_NOAVX2
165149
FULLCFLAGS += -msse3 -mssse3 -mavx
166150
else
167151
FULLCFLAGS += -mavx2 -msse3 -mssse3 -mfma -mf16c -mavx
168-
endif
152+
endif # LLAMA_NOAVX2
169153
else
170154
CFLAGS += -march=native -mtune=native
171-
endif
172-
endif
173-
endif
155+
endif # LLAMA_PORTABLE
156+
endif # if x86
174157

175158
ifndef LLAMA_NO_ACCELERATE
176159
# Mac M1 - include Accelerate framework.
@@ -436,6 +419,8 @@ ggml_v4_clblast.o: ggml/src/ggml.c ggml/include/ggml.h
436419
ggml_v4_cublas.o: ggml/src/ggml.c ggml/include/ggml.h
437420
$(CC) $(FASTCFLAGS) $(FULLCFLAGS) $(CUBLAS_FLAGS) $(HIPFLAGS) -c $< -o $@
438421
ggml_v4_clblast_noavx2.o: ggml/src/ggml.c ggml/include/ggml.h
422+
$(CC) $(FASTCFLAGS) $(SIMPLECFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
423+
ggml_v4_clblast_failsafe.o: ggml/src/ggml.c ggml/include/ggml.h
439424
$(CC) $(FASTCFLAGS) $(SIMPLERCFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
440425
ggml_v4_vulkan.o: ggml/src/ggml.c ggml/include/ggml.h
441426
$(CC) $(FASTCFLAGS) $(FULLCFLAGS) $(VULKAN_FLAGS) -c $< -o $@
@@ -452,6 +437,8 @@ ggml-cpu_v4_noavx2.o: ggml/src/ggml-cpu/ggml-cpu.c ggml/include/ggml-cpu.h
452437
ggml-cpu_v4_clblast.o: ggml/src/ggml-cpu/ggml-cpu.c ggml/include/ggml-cpu.h
453438
$(CC) $(FASTCFLAGS) $(FULLCFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
454439
ggml-cpu_v4_clblast_noavx2.o: ggml/src/ggml-cpu/ggml-cpu.c ggml/include/ggml-cpu.h
440+
$(CC) $(FASTCFLAGS) $(SIMPLECFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
441+
ggml-cpu_v4_clblast_failsafe.o: ggml/src/ggml-cpu/ggml-cpu.c ggml/include/ggml-cpu.h
455442
$(CC) $(FASTCFLAGS) $(SIMPLERCFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
456443

457444
#quants
@@ -548,6 +535,8 @@ ggml_v3_clblast.o: otherarch/ggml_v3.c otherarch/ggml_v3.h
548535
ggml_v3_cublas.o: otherarch/ggml_v3.c otherarch/ggml_v3.h
549536
$(CC) $(FASTCFLAGS) $(FULLCFLAGS) $(CUBLAS_FLAGS) $(HIPFLAGS) -c $< -o $@
550537
ggml_v3_clblast_noavx2.o: otherarch/ggml_v3.c otherarch/ggml_v3.h
538+
$(CC) $(FASTCFLAGS) $(SIMPLECFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
539+
ggml_v3_clblast_failsafe.o: otherarch/ggml_v3.c otherarch/ggml_v3.h
551540
$(CC) $(FASTCFLAGS) $(SIMPLERCFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
552541

553542
#version 2 libs
@@ -562,6 +551,8 @@ ggml_v2_clblast.o: otherarch/ggml_v2.c otherarch/ggml_v2.h
562551
ggml_v2_cublas.o: otherarch/ggml_v2.c otherarch/ggml_v2.h
563552
$(CC) $(FASTCFLAGS) $(FULLCFLAGS) $(CUBLAS_FLAGS) $(HIPFLAGS) -c $< -o $@
564553
ggml_v2_clblast_noavx2.o: otherarch/ggml_v2.c otherarch/ggml_v2.h
554+
$(CC) $(FASTCFLAGS) $(SIMPLECFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
555+
ggml_v2_clblast_failsafe.o: otherarch/ggml_v2.c otherarch/ggml_v2.h
565556
$(CC) $(FASTCFLAGS) $(SIMPLERCFLAGS) $(CLBLAST_FLAGS) -c $< -o $@
566557

567558
#extreme old version compat
@@ -633,7 +624,7 @@ gpttype_adapter_vulkan_noavx2.o: $(GPTTYPE_ADAPTER)
633624
$(CXX) $(CXXFLAGS) $(FAILSAFE_FLAGS) $(VULKAN_FLAGS) -c $< -o $@
634625

635626
clean:
636-
rm -vf *.o main sdmain whispermain quantize_gguf quantize_clip quantize_gpt2 quantize_gptj quantize_neox quantize_mpt vulkan-shaders-gen gguf-split gguf-split.exe vulkan-shaders-gen.exe main.exe sdmain.exe whispermain.exe quantize_clip.exe quantize_gguf.exe quantize_gptj.exe quantize_gpt2.exe quantize_neox.exe quantize_mpt.exe koboldcpp_default.dll koboldcpp_failsafe.dll koboldcpp_noavx2.dll koboldcpp_clblast.dll koboldcpp_clblast_noavx2.dll koboldcpp_cublas.dll koboldcpp_hipblas.dll koboldcpp_vulkan.dll koboldcpp_vulkan_noavx2.dll koboldcpp_default.so koboldcpp_failsafe.so koboldcpp_noavx2.so koboldcpp_clblast.so koboldcpp_clblast_noavx2.so koboldcpp_cublas.so koboldcpp_hipblas.so koboldcpp_vulkan.so koboldcpp_vulkan_noavx2.so
627+
rm -vf *.o main sdmain whispermain quantize_gguf quantize_clip quantize_gpt2 quantize_gptj quantize_neox quantize_mpt vulkan-shaders-gen gguf-split gguf-split.exe vulkan-shaders-gen.exe main.exe sdmain.exe whispermain.exe quantize_clip.exe quantize_gguf.exe quantize_gptj.exe quantize_gpt2.exe quantize_neox.exe quantize_mpt.exe koboldcpp_default.dll koboldcpp_failsafe.dll koboldcpp_noavx2.dll koboldcpp_clblast.dll koboldcpp_clblast_noavx2.dll koboldcpp_clblast_failsafe.dll koboldcpp_cublas.dll koboldcpp_hipblas.dll koboldcpp_vulkan.dll koboldcpp_vulkan_noavx2.dll koboldcpp_default.so koboldcpp_failsafe.so koboldcpp_noavx2.so koboldcpp_clblast.so koboldcpp_clblast_noavx2.so koboldcpp_clblast_failsafe.so koboldcpp_cublas.so koboldcpp_hipblas.so koboldcpp_vulkan.so koboldcpp_vulkan_noavx2.so
637628
rm -vrf ggml/src/ggml-cuda/*.o
638629
rm -vrf ggml/src/ggml-cuda/template-instances/*.o
639630

@@ -679,17 +670,23 @@ ifdef CLBLAST_BUILD
679670
koboldcpp_clblast: ggml_v4_clblast.o ggml-cpu_v4_clblast.o ggml_v3_clblast.o ggml_v2_clblast.o ggml_v1.o expose.o gpttype_adapter_clblast.o ggml-opencl.o ggml_v3-opencl.o ggml_v2-opencl.o ggml_v2-opencl-legacy.o sdcpp_default.o whispercpp_default.o tts_default.o llavaclip_default.o llava.o ggml-backend_default.o ggml-backend-reg_default.o $(OBJS_FULL) $(OBJS)
680671
$(CLBLAST_BUILD)
681672
ifdef NOAVX2_BUILD
682-
koboldcpp_clblast_noavx2: ggml_v4_clblast_noavx2.o ggml-cpu_v4_clblast_noavx2.o ggml_v3_clblast_noavx2.o ggml_v2_clblast_noavx2.o ggml_v1_failsafe.o expose.o gpttype_adapter_clblast_noavx2.o ggml-opencl.o ggml_v3-opencl.o ggml_v2-opencl.o ggml_v2-opencl-legacy.o sdcpp_default.o whispercpp_default.o tts_default.o llavaclip_default.o llava.o ggml-backend_default.o ggml-backend-reg_default.o $(OBJS_SIMPLER) $(OBJS)
673+
koboldcpp_clblast_noavx2: ggml_v4_clblast_noavx2.o ggml-cpu_v4_clblast_noavx2.o ggml_v3_clblast_noavx2.o ggml_v2_clblast_noavx2.o ggml_v1_failsafe.o expose.o gpttype_adapter_clblast_noavx2.o ggml-opencl.o ggml_v3-opencl.o ggml_v2-opencl.o ggml_v2-opencl-legacy.o sdcpp_default.o whispercpp_default.o tts_default.o llavaclip_default.o llava.o ggml-backend_default.o ggml-backend-reg_default.o $(OBJS_SIMPLE) $(OBJS)
674+
$(CLBLAST_BUILD)
675+
koboldcpp_clblast_failsafe: ggml_v4_clblast_failsafe.o ggml-cpu_v4_clblast_failsafe.o ggml_v3_clblast_failsafe.o ggml_v2_clblast_failsafe.o ggml_v1_failsafe.o expose.o gpttype_adapter_clblast_noavx2.o ggml-opencl.o ggml_v3-opencl.o ggml_v2-opencl.o ggml_v2-opencl-legacy.o sdcpp_default.o whispercpp_default.o tts_default.o llavaclip_default.o llava.o ggml-backend_default.o ggml-backend-reg_default.o $(OBJS_SIMPLER) $(OBJS)
683676
$(CLBLAST_BUILD)
684677
else
685678
koboldcpp_clblast_noavx2:
686679
$(DONOTHING)
680+
koboldcpp_clblast_failsafe:
681+
$(DONOTHING)
687682
endif
688683
else
689684
koboldcpp_clblast:
690685
$(DONOTHING)
691686
koboldcpp_clblast_noavx2:
692687
$(DONOTHING)
688+
koboldcpp_clblast_failsafe:
689+
$(DONOTHING)
693690
endif
694691

695692
ifdef CUBLAS_BUILD

koboldcpp.py

+26-15
Original file line numberDiff line numberDiff line change
@@ -377,33 +377,38 @@ def pick_existant_file(ntoption,nonntoption):
377377
lib_noavx2 = pick_existant_file("koboldcpp_noavx2.dll","koboldcpp_noavx2.so")
378378
lib_clblast = pick_existant_file("koboldcpp_clblast.dll","koboldcpp_clblast.so")
379379
lib_clblast_noavx2 = pick_existant_file("koboldcpp_clblast_noavx2.dll","koboldcpp_clblast_noavx2.so")
380+
lib_clblast_failsafe = pick_existant_file("koboldcpp_clblast_failsafe.dll","koboldcpp_clblast_failsafe.so")
380381
lib_cublas = pick_existant_file("koboldcpp_cublas.dll","koboldcpp_cublas.so")
381382
lib_hipblas = pick_existant_file("koboldcpp_hipblas.dll","koboldcpp_hipblas.so")
382383
lib_vulkan = pick_existant_file("koboldcpp_vulkan.dll","koboldcpp_vulkan.so")
383384
lib_vulkan_noavx2 = pick_existant_file("koboldcpp_vulkan_noavx2.dll","koboldcpp_vulkan_noavx2.so")
384385
libname = ""
385386
lib_option_pairs = [
386387
(lib_default, "Use CPU"),
387-
(lib_clblast, "Use CLBlast"),
388388
(lib_cublas, "Use CuBLAS"),
389389
(lib_hipblas, "Use hipBLAS (ROCm)"),
390390
(lib_vulkan, "Use Vulkan"),
391+
(lib_clblast, "Use CLBlast"),
391392
(lib_noavx2, "Use CPU (Old CPU)"),
392393
(lib_vulkan_noavx2, "Use Vulkan (Old CPU)"),
393-
(lib_clblast_noavx2, "Use CLBlast (Older CPU)"),
394+
(lib_clblast_noavx2, "Use CLBlast (Old CPU)"),
395+
(lib_clblast_failsafe, "Use CLBlast (Older CPU)"),
394396
(lib_failsafe, "Failsafe Mode (Older CPU)")]
395-
default_option, clblast_option, cublas_option, hipblas_option, vulkan_option, noavx2_option, vulkan_noavx2_option, clblast_noavx2_option, failsafe_option = (opt if file_exists(lib) or (os.name == 'nt' and file_exists(opt + ".dll")) else None for lib, opt in lib_option_pairs)
397+
default_option, cublas_option, hipblas_option, vulkan_option, clblast_option, noavx2_option, vulkan_noavx2_option, clblast_noavx2_option, clblast_failsafe_option, failsafe_option = (opt if file_exists(lib) or (os.name == 'nt' and file_exists(opt + ".dll")) else None for lib, opt in lib_option_pairs)
396398
runopts = [opt for lib, opt in lib_option_pairs if file_exists(lib)]
397399

398400
def init_library():
399401
global handle, args, libname
400-
global lib_default,lib_failsafe,lib_noavx2,lib_clblast,lib_clblast_noavx2,lib_cublas,lib_hipblas,lib_vulkan,lib_vulkan_noavx2
402+
global lib_default,lib_failsafe,lib_noavx2,lib_clblast,lib_clblast_noavx2,lib_clblast_failsafe,lib_cublas,lib_hipblas,lib_vulkan,lib_vulkan_noavx2
401403

402404
libname = lib_default
403405

404406
if args.noavx2:
405-
if args.useclblast and file_exists(lib_clblast_noavx2) and (os.name!='nt' or file_exists("clblast.dll")):
406-
libname = lib_clblast_noavx2
407+
if args.useclblast and (os.name!='nt' or file_exists("clblast.dll")):
408+
if (args.failsafe) and file_exists(lib_clblast_failsafe):
409+
libname = lib_clblast_failsafe
410+
elif file_exists(lib_clblast_noavx2):
411+
libname = lib_clblast_noavx2
407412
elif (args.usevulkan is not None) and file_exists(lib_vulkan_noavx2):
408413
libname = lib_vulkan_noavx2
409414
elif (args.failsafe) and file_exists(lib_failsafe):
@@ -3425,7 +3430,7 @@ def setup_backend_tooltip(parent):
34253430
# backend count label with the tooltip function
34263431
nl = '\n'
34273432
tooltxt = "Number of backends you have built and available." + (f"\n\nMissing Backends: \n\n{nl.join(antirunopts)}" if len(runopts) < 8 else "")
3428-
num_backends_built = makelabel(parent, str(len(runopts)) + "/8", 5, 2,tooltxt)
3433+
num_backends_built = makelabel(parent, str(len(runopts)) + "/9", 5, 2,tooltxt)
34293434
num_backends_built.grid(row=1, column=1, padx=205, pady=0)
34303435
num_backends_built.configure(text_color="#00ff00")
34313436

@@ -3446,7 +3451,7 @@ def changed_gpulayers_estimate(*args):
34463451
predicted_gpu_layers = autoset_gpu_layers(int(contextsize_text[context_var.get()]),(sd_quant_var.get()==1),int(blasbatchsize_values[int(blas_size_var.get())]))
34473452
max_gpu_layers = (f"/{modelfile_extracted_meta[0][0]+3}" if (modelfile_extracted_meta and modelfile_extracted_meta[0] and modelfile_extracted_meta[0][0]!=0) else "")
34483453
index = runopts_var.get()
3449-
gpu_be = (index == "Use Vulkan" or index == "Use Vulkan (Old CPU)" or index == "Use CLBlast" or index == "Use CLBlast (Older CPU)" or index == "Use CuBLAS" or index == "Use hipBLAS (ROCm)")
3454+
gpu_be = (index == "Use Vulkan" or index == "Use Vulkan (Old CPU)" or index == "Use CLBlast" or index == "Use CLBlast (Old CPU)" or index == "Use CLBlast (Older CPU)" or index == "Use CuBLAS" or index == "Use hipBLAS (ROCm)")
34503455
layercounter_label.grid(row=6, column=1, padx=75, sticky="W")
34513456
quick_layercounter_label.grid(row=6, column=1, padx=75, sticky="W")
34523457
if sys.platform=="darwin" and gpulayers_var.get()=="-1":
@@ -3477,7 +3482,7 @@ def changed_gpu_choice_var(*args):
34773482
if v == "Use Vulkan" or v == "Use Vulkan (Old CPU)":
34783483
quick_gpuname_label.configure(text=VKDevicesNames[s])
34793484
gpuname_label.configure(text=VKDevicesNames[s])
3480-
elif v == "Use CLBlast" or v == "Use CLBlast (Older CPU)":
3485+
elif v == "Use CLBlast" or v == "Use CLBlast (Old CPU)" or v == "Use CLBlast (Older CPU)":
34813486
quick_gpuname_label.configure(text=CLDevicesNames[s])
34823487
gpuname_label.configure(text=CLDevicesNames[s])
34833488
else:
@@ -3534,12 +3539,12 @@ def changerunmode(a,b,c):
35343539
global runmode_untouched
35353540
runmode_untouched = False
35363541
index = runopts_var.get()
3537-
if index == "Use Vulkan" or index == "Use Vulkan (Old CPU)" or index == "Use CLBlast" or index == "Use CLBlast (Older CPU)" or index == "Use CuBLAS" or index == "Use hipBLAS (ROCm)":
3542+
if index == "Use Vulkan" or index == "Use Vulkan (Old CPU)" or index == "Use CLBlast" or index == "Use CLBlast (Old CPU)" or index == "Use CLBlast (Older CPU)" or index == "Use CuBLAS" or index == "Use hipBLAS (ROCm)":
35383543
quick_gpuname_label.grid(row=3, column=1, padx=75, sticky="W")
35393544
gpuname_label.grid(row=3, column=1, padx=75, sticky="W")
35403545
gpu_selector_label.grid(row=3, column=0, padx = 8, pady=1, stick="nw")
35413546
quick_gpu_selector_label.grid(row=3, column=0, padx = 8, pady=1, stick="nw")
3542-
if index == "Use CLBlast" or index == "Use CLBlast (Older CPU)":
3547+
if index == "Use CLBlast" or index == "Use CLBlast (Old CPU)" or index == "Use CLBlast (Older CPU)":
35433548
gpu_selector_box.grid(row=3, column=1, padx=8, pady=1, stick="nw")
35443549
quick_gpu_selector_box.grid(row=3, column=1, padx=8, pady=1, stick="nw")
35453550
CUDA_gpu_selector_box.grid_remove()
@@ -3583,7 +3588,7 @@ def changerunmode(a,b,c):
35833588
else:
35843589
quick_use_flashattn.grid(row=22, column=1, padx=8, pady=1, stick="nw")
35853590

3586-
if index == "Use Vulkan" or index == "Use Vulkan (Old CPU)" or index == "Use CLBlast" or index == "Use CLBlast (Older CPU)" or index == "Use CuBLAS" or index == "Use hipBLAS (ROCm)":
3591+
if index == "Use Vulkan" or index == "Use Vulkan (Old CPU)" or index == "Use CLBlast" or index == "Use CLBlast (Old CPU)" or index == "Use CLBlast (Older CPU)" or index == "Use CuBLAS" or index == "Use hipBLAS (ROCm)":
35873592
gpu_layers_label.grid(row=6, column=0, padx = 8, pady=1, stick="nw")
35883593
gpu_layers_entry.grid(row=6, column=1, padx=8, pady=1, stick="nw")
35893594
quick_gpu_layers_label.grid(row=6, column=0, padx = 8, pady=1, stick="nw")
@@ -3954,10 +3959,13 @@ def export_vars():
39543959
args.noavx2 = False
39553960
if gpu_choice_var.get()!="All":
39563961
gpuchoiceidx = int(gpu_choice_var.get())-1
3957-
if runopts_var.get() == "Use CLBlast" or runopts_var.get() == "Use CLBlast (Older CPU)":
3962+
if runopts_var.get() == "Use CLBlast" or runopts_var.get() == "Use CLBlast (Old CPU)" or runopts_var.get() == "Use CLBlast (Older CPU)":
39583963
args.useclblast = [[0,0], [1,0], [0,1], [1,1]][gpuchoiceidx]
3959-
if runopts_var.get() == "Use CLBlast (Older CPU)":
3964+
if runopts_var.get() == "Use CLBlast (Old CPU)":
39603965
args.noavx2 = True
3966+
elif runopts_var.get() == "Use CLBlast (Older CPU)":
3967+
args.noavx2 = True
3968+
args.failsafe = True
39613969
if runopts_var.get() == "Use CuBLAS" or runopts_var.get() == "Use hipBLAS (ROCm)":
39623970
if gpu_choice_var.get()=="All":
39633971
args.usecublas = ["lowvram"] if lowvram_var.get() == 1 else ["normal"]
@@ -4926,6 +4934,9 @@ def main(launch_args,start_server=True):
49264934
if args.quantkv and args.quantkv>0 and not args.flashattention:
49274935
exit_with_error(1, "Error: Using --quantkv requires --flashattention")
49284936

4937+
if args.failsafe: #failsafe implies noavx2
4938+
args.noavx2 = True
4939+
49294940
if not args.model_param:
49304941
args.model_param = args.model
49314942

@@ -5596,7 +5607,7 @@ def range_checker(arg: str):
55965607
compatgroup3.add_argument("--usemmap", help="If set, uses mmap to load model. This model will not be unloadable.", action='store_true')
55975608
advparser.add_argument("--usemlock", help="Enables mlock, preventing the RAM used to load the model from being paged out. Not usually recommended.", action='store_true')
55985609
advparser.add_argument("--noavx2", help="Do not use AVX2 instructions, a slower compatibility mode for older devices.", action='store_true')
5599-
advparser.add_argument("--failsafe", help="Use failsafe mode, extremely slow CPU only compatibility mode that should work on all devices.", action='store_true')
5610+
advparser.add_argument("--failsafe", help="Use failsafe mode, extremely slow CPU only compatibility mode that should work on all devices. Can be combined with useclblast if your device supports OpenCL.", action='store_true')
56005611
advparser.add_argument("--debugmode", help="Shows additional debug info in the terminal.", nargs='?', const=1, type=int, default=0)
56015612
advparser.add_argument("--onready", help="An optional shell command to execute after the model has been loaded.", metavar=('[shell command]'), type=str, default="",nargs=1)
56025613
advparser.add_argument("--benchmark", help="Do not start server, instead run benchmarks. If filename is provided, appends results to provided file.", metavar=('[filename]'), nargs='?', const="stdout", type=str, default=None)

0 commit comments

Comments
 (0)