From eb5b22dda24b44a6fa71924e27537626f6d8b32b Mon Sep 17 00:00:00 2001 From: Concedo <39025047+LostRuins@users.noreply.github.com> Date: Mon, 3 Apr 2023 10:35:18 +0800 Subject: [PATCH] rebrand to koboldcpp --- MIT_LICENSE_GGML_LLAMACPP_ONLY | 2 +- Makefile | 6 +++--- README.md | 14 +++++++------- klite.embd | 4 ++-- llamacpp.dll => koboldcpp.dll | Bin 3268148 -> 3268148 bytes llamacpp_for_kobold.py => koboldcpp.py | 12 ++++++------ llamacpp_blas.dll => koboldcpp_blas.dll | Bin 3272140 -> 3272140 bytes make_pyinstaller.bat | 2 +- niko.ico | Bin 15086 -> 15086 bytes 9 files changed, 20 insertions(+), 20 deletions(-) rename llamacpp.dll => koboldcpp.dll (97%) rename llamacpp_for_kobold.py => koboldcpp.py (97%) rename llamacpp_blas.dll => koboldcpp_blas.dll (96%) diff --git a/MIT_LICENSE_GGML_LLAMACPP_ONLY b/MIT_LICENSE_GGML_LLAMACPP_ONLY index 27872a398..252a81b36 100644 --- a/MIT_LICENSE_GGML_LLAMACPP_ONLY +++ b/MIT_LICENSE_GGML_LLAMACPP_ONLY @@ -23,4 +23,4 @@ SOFTWARE. =================================== Note that the above license applies ONLY to the GGML library and llama.cpp by ggerganov which are licensed under the MIT License -Kobold Lite by Concedo and the provided python ctypes bindings in llamacpp.dll are licensed under the AGPL v3.0 License \ No newline at end of file +Kobold Lite by Concedo and the provided python ctypes bindings in koboldcpp.dll are licensed under the AGPL v3.0 License \ No newline at end of file diff --git a/Makefile b/Makefile index f0a443c0a..06a4b5370 100644 --- a/Makefile +++ b/Makefile @@ -119,7 +119,7 @@ endif BLAS_BUILD = ifeq ($(OS),Windows_NT) - BLAS_BUILD = $(CXX) $(CXXFLAGS) ggml_blas.o ggml_v1.o expose.o common.o llama_adapter.o gptj_adapter.o libopenblas.lib -shared -o llamacpp_blas.dll $(LDFLAGS) + BLAS_BUILD = $(CXX) $(CXXFLAGS) ggml_blas.o ggml_v1.o expose.o common.o llama_adapter.o gptj_adapter.o libopenblas.lib -shared -o koboldcpp_blas.dll $(LDFLAGS) else BLAS_BUILD = @echo 'Your OS is $(OS) and does not appear to be Windows. If you want to use openblas, please link it manually with LLAMA_OPENBLAS=1' endif @@ -170,7 +170,7 @@ gptj_adapter.o: $(CXX) $(CXXFLAGS) -c gptj_adapter.cpp -o gptj_adapter.o clean: - rm -vf *.o main quantize perplexity embedding main.exe quantize.exe llamacpp.dll llamacpp_blas.dll gptj.exe + rm -vf *.o main quantize perplexity embedding main.exe quantize.exe koboldcpp.dll koboldcpp_blas.dll gptj.exe main: examples/main/main.cpp ggml.o llama.o common.o $(CXX) $(CXXFLAGS) examples/main/main.cpp ggml.o llama.o common.o -o main $(LDFLAGS) @@ -179,7 +179,7 @@ main: examples/main/main.cpp ggml.o llama.o common.o @echo llamalib: ggml.o ggml_v1.o expose.o common.o llama_adapter.o gptj_adapter.o - $(CXX) $(CXXFLAGS) ggml.o ggml_v1.o expose.o common.o llama_adapter.o gptj_adapter.o -shared -o llamacpp.dll $(LDFLAGS) + $(CXX) $(CXXFLAGS) ggml.o ggml_v1.o expose.o common.o llama_adapter.o gptj_adapter.o -shared -o koboldcpp.dll $(LDFLAGS) llamalib_blas: ggml_blas.o ggml_v1.o expose.o common.o llama_adapter.o gptj_adapter.o $(BLAS_BUILD) diff --git a/README.md b/README.md index 849cb0944..13ae1f770 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# llamacpp-for-kobold +# koboldcpp (formerly llamacpp-for-kobold) A self contained distributable from Concedo that exposes llama.cpp function bindings, allowing it to be used via a simulated Kobold API endpoint. @@ -9,18 +9,18 @@ What does it mean? You get llama.cpp with a fancy UI, persistent stories, editin Now has **BACKWARDS COMPATIBILITY** with ALL 3 versions of GGML LLAMA models, all ALPACA.CPP models, all versions of GPT4ALL.CPP models, and can run GGML older GPT-J.CPP models too. I also use a bunch of tricks to make subsequent prompt processing with shared ancestry much faster than the parent repo does. ## Usage -- [Download the latest release here](https://github.com/LostRuins/llamacpp-for-kobold/releases/latest) or clone the repo. -- Windows binaries are provided in the form of **llamacpp-for-kobold.exe**, which is a pyinstaller wrapper for **llamacpp.dll** and **llamacpp_for_kobold.py**. If you feel concerned, you may prefer to rebuild it yourself with the provided makefiles and scripts. +- [Download the latest release here](https://github.com/LostRuins/koboldcpp/releases/latest) or clone the repo. +- Windows binaries are provided in the form of **koboldcpp.exe**, which is a pyinstaller wrapper for **koboldcpp.dll** and **koboldcpp.py**. If you feel concerned, you may prefer to rebuild it yourself with the provided makefiles and scripts. - Weights are not included, you can use the `quantize.exe` to generate them from your official weight files (or download them from other places). -- To run, execute **llamacpp-for-kobold.exe** or drag and drop your quantized `ggml_model.bin` file onto the .exe, and then connect with Kobold or Kobold Lite. +- To run, execute **koboldcpp.exe** or drag and drop your quantized `ggml_model.bin` file onto the .exe, and then connect with Kobold or Kobold Lite. - By default, you can connect to http://localhost:5001 -- You can also run it using the command line `llamacpp-for-kobold.exe [ggml_model.bin] [port]`. For info, please check `llamacpp-for-kobold.exe --help` +- You can also run it using the command line `koboldcpp.exe [ggml_model.bin] [port]`. For info, please check `koboldcpp.exe --help` - If you are having crashes or issues with OpenBLAS, please try the `--noblas` flag. ## OSX and Linux - You will have to compile your binaries from source. A makefile is provided, simply run `make` - If you want you can also link your own install of OpenBLAS manually with `make LLAMA_OPENBLAS=1` -- After all binaries are built, you can run the python script with the command `llamacpp_for_kobold.py [ggml_model.bin] [port]` +- After all binaries are built, you can run the python script with the command `koboldcpp.py [ggml_model.bin] [port]` ## Considerations - Don't want to use pybind11 due to dependencies on MSVCC @@ -33,7 +33,7 @@ Now has **BACKWARDS COMPATIBILITY** with ALL 3 versions of GGML LLAMA models, al ## License - The original GGML library and llama.cpp by ggerganov are licensed under the MIT License - However, Kobold Lite is licensed under the AGPL v3.0 License -- The provided python ctypes bindings in llamacpp.dll are also under the AGPL v3.0 License +- The provided python ctypes bindings in koboldcpp.dll are also under the AGPL v3.0 License ## Notes - Generation delay scales linearly with original prompt length. See [this discussion](https://github.com/ggerganov/llama.cpp/discussions/229). If OpenBLAS is enabled then prompt ingestion becomes about 2-3x faster. This is automatic on windows, but will require linking on OSX and Linux. diff --git a/klite.embd b/klite.embd index 78234a009..10dc0b590 100644 --- a/klite.embd +++ b/klite.embd @@ -1,7 +1,7 @@ diff --git a/llamacpp.dll b/koboldcpp.dll similarity index 97% rename from llamacpp.dll rename to koboldcpp.dll index f2018ac2944bcb2718a7442f8267d54650ffe39b..bc3aac21fc4d02d90225faca0a8deec87c92717b 100644 GIT binary patch delta 39191 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 delta 39192 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 diff --git a/llamacpp_for_kobold.py b/koboldcpp.py similarity index 97% rename from llamacpp_for_kobold.py rename to koboldcpp.py index 063bf9bdc..a8d233d93 100644 --- a/llamacpp_for_kobold.py +++ b/koboldcpp.py @@ -39,13 +39,13 @@ def init_library(): global handle, use_blas libname = "" if use_blas: - libname = "llamacpp_blas.dll" + libname = "koboldcpp_blas.dll" else: - libname = "llamacpp.dll" + libname = "koboldcpp.dll" print("Initializing dynamic library: " + libname) dir_path = os.path.dirname(os.path.realpath(__file__)) - + #OpenBLAS should provide about a 2x speedup on prompt ingestion if compatible. handle = ctypes.CDLL(os.path.join(dir_path, libname )) @@ -86,7 +86,7 @@ def generate(prompt,max_length=20, max_context_length=512,temperature=0.8,top_k= ### A hacky simple HTTP server simulating a kobold api by Concedo ### we are intentionally NOT using flask, because we want MINIMAL dependencies ################################################################# -friendlymodelname = "concedo/llamacpp" # local kobold api apparently needs a hardcoded known HF model name +friendlymodelname = "concedo/koboldcpp" # local kobold api apparently needs a hardcoded known HF model name maxctx = 2048 maxlen = 128 modelbusy = False @@ -292,8 +292,8 @@ def RunServerMultiThreaded(addr, port, embedded_kailite = None): def main(args): global use_blas - if not os.path.exists(os.path.join(os.path.dirname(os.path.realpath(__file__)), "libopenblas.dll")) or not os.path.exists(os.path.join(os.path.dirname(os.path.realpath(__file__)), "llamacpp_blas.dll")): - print("Warning: libopenblas.dll or llamacpp_blas.dll not found. Non-BLAS library will be used. Ignore this if you have manually linked with OpenBLAS.") + if not os.path.exists(os.path.join(os.path.dirname(os.path.realpath(__file__)), "libopenblas.dll")) or not os.path.exists(os.path.join(os.path.dirname(os.path.realpath(__file__)), "koboldcpp_blas.dll")): + print("Warning: libopenblas.dll or koboldcpp_blas.dll not found. Non-BLAS library will be used. Ignore this if you have manually linked with OpenBLAS.") use_blas = False elif os.name != 'nt': print("Prebuilt OpenBLAS binaries only available for windows. Please manually build/link libopenblas from makefile with LLAMA_OPENBLAS=1") diff --git a/llamacpp_blas.dll b/koboldcpp_blas.dll similarity index 96% rename from llamacpp_blas.dll rename to koboldcpp_blas.dll index 2be1b3d5ddf28270471679366451407941924521..672e16d7a81e5b360667daf2dce4b3b2b19e14ee 100644 GIT binary patch delta 38795 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 b(6-Qa(Du+EXfQMc+5yV6bm+3<({KGh)edfN delta 38690 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 IZh|%c1>O~segFUf literal 15086 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 T$99DW4!j;MXqC*jWZwS|*mQGm