diff --git a/Makefile b/Makefile index 47bd6d9fc..a6f99bf89 100644 --- a/Makefile +++ b/Makefile @@ -715,7 +715,7 @@ sampling.o: common/sampling.cpp common/common.h common/sampling.h common/log.h $(CXX) $(CXXFLAGS) -c $< -o $@ console.o: common/console.cpp common/console.h $(CXX) $(CXXFLAGS) -c $< -o $@ -expose.o: expose.cpp expose.h +expose.o: expose.cpp expose.h model_adapter.cpp $(CXX) $(CXXFLAGS) -c $< -o $@ # sd.cpp objects @@ -730,6 +730,8 @@ sdcpp_vulkan.o: otherarch/sdcpp/sdtype_adapter.cpp otherarch/sdcpp/stable-diffus #whisper objects whispercpp_default.o: otherarch/whispercpp/whisper_adapter.cpp $(CXX) $(CXXFLAGS) -c $< -o $@ +whispercpp_vulkan.o: otherarch/whispercpp/whisper_adapter.cpp + $(CXX) $(CXXFLAGS) $(VULKAN_FLAGS) -c $< -o $@ whispercpp_cublas.o: otherarch/whispercpp/whisper_adapter.cpp $(CXX) $(CXXFLAGS) $(CUBLAS_FLAGS) $(HIPFLAGS) -c $< -o $@ @@ -942,10 +944,10 @@ koboldcpp_hipblas: endif ifdef VULKAN_BUILD -koboldcpp_vulkan: ggml_v4_vulkan.o ggml-cpu.o ggml-ops.o ggml-vec.o ggml-binops.o ggml-unops.o ggml_v3.o ggml_v2.o ggml_v1.o expose.o gpttype_adapter_vulkan.o ggml-vulkan.o ggml-vulkan-shaders.o sdcpp_vulkan.o whispercpp_default.o tts_default.o embeddings_default.o llavaclip_vulkan.o llava.o ggml-backend_vulkan.o ggml-backend-reg_vulkan.o ggml-repack.o $(OBJS_FULL) $(OBJS) +koboldcpp_vulkan: ggml_v4_vulkan.o ggml-cpu.o ggml-ops.o ggml-vec.o ggml-binops.o ggml-unops.o ggml_v3.o ggml_v2.o ggml_v1.o expose.o gpttype_adapter_vulkan.o ggml-vulkan.o ggml-vulkan-shaders.o sdcpp_vulkan.o whispercpp_vulkan.o tts_default.o embeddings_default.o llavaclip_vulkan.o llava.o ggml-backend_vulkan.o ggml-backend-reg_vulkan.o ggml-repack.o $(OBJS_FULL) $(OBJS) $(VULKAN_BUILD) ifdef NOAVX2_BUILD -koboldcpp_vulkan_noavx2: ggml_v4_vulkan_noavx2.o ggml-cpu_v4_noavx2.o ggml-ops-noavx2.o ggml-vec-noavx2.o ggml-binops.o ggml-unops.o ggml_v3_noavx2.o ggml_v2_noavx2.o ggml_v1_failsafe.o expose.o gpttype_adapter_vulkan_noavx2.o ggml-vulkan-noext.o ggml-vulkan-shaders-noext.o sdcpp_vulkan.o whispercpp_default.o tts_default.o embeddings_default.o llavaclip_vulkan.o llava.o ggml-backend_vulkan.o ggml-backend-reg_vulkan.o ggml-repack.o $(OBJS_SIMPLE) $(OBJS) +koboldcpp_vulkan_noavx2: ggml_v4_vulkan_noavx2.o ggml-cpu_v4_noavx2.o ggml-ops-noavx2.o ggml-vec-noavx2.o ggml-binops.o ggml-unops.o ggml_v3_noavx2.o ggml_v2_noavx2.o ggml_v1_failsafe.o expose.o gpttype_adapter_vulkan_noavx2.o ggml-vulkan-noext.o ggml-vulkan-shaders-noext.o sdcpp_vulkan.o whispercpp_vulkan.o tts_default.o embeddings_default.o llavaclip_vulkan.o llava.o ggml-backend_vulkan.o ggml-backend-reg_vulkan.o ggml-repack.o $(OBJS_SIMPLE) $(OBJS) $(VULKAN_BUILD) else koboldcpp_vulkan_noavx2: diff --git a/model_adapter.cpp b/model_adapter.cpp index dec70c953..1c565f4b4 100644 --- a/model_adapter.cpp +++ b/model_adapter.cpp @@ -221,7 +221,7 @@ std::string gguf_get_model_arch(const std::string & gguf_filename) } } } - else if(vocabsiz < 31998 || vocabsiz > 33000) + else if((vocabsiz < 31998 || vocabsiz > 33000) && vocabsiz<51864) //avoid whisper false positive { //anything outside the llama v1 range is assumed to be NeoX fileformat = FileFormat::NEOX_6; @@ -268,7 +268,11 @@ std::string gguf_get_model_arch(const std::string & gguf_filename) } } } - + } + else if (vocabsiz>=51864 && vocabsiz<=51865) + { + printf("\nWhisper model detected - you should load it as a whisper model instead, not a text model!\n"); + fileformat = FileFormat::BADFORMAT; //known whisper formats, do not proceed } } else if(magic == 0x67676d66) //v2 format ggmf diff --git a/otherarch/whispercpp/whisper.cpp b/otherarch/whispercpp/whisper.cpp index 797b21db1..499b51e45 100644 --- a/otherarch/whispercpp/whisper.cpp +++ b/otherarch/whispercpp/whisper.cpp @@ -12,6 +12,10 @@ #include "ggml-cuda.h" #endif +#ifdef GGML_USE_VULKAN +#include "ggml-vulkan.h" +#endif + #ifdef GGML_USE_SYCL #include "ggml-sycl.h" #endif @@ -1262,6 +1266,16 @@ static ggml_backend_t whisper_backend_init(const whisper_context_params & params } #endif +#ifdef GGML_USE_VULKAN + if (params.use_gpu) { + WHISPER_LOG_INFO("%s: using Vulkan backend\n", __func__); + backend_gpu = ggml_backend_vk_init(params.gpu_device); + if (!backend_gpu) { + WHISPER_LOG_ERROR("%s: ggml_backend_vk_init() failed\n", __func__); + } + } +#endif + if (backend_gpu) { return backend_gpu; }