diff --git a/libfalcon.cpp b/libfalcon.cpp index 3126c1edd..72ac5b3c8 100644 --- a/libfalcon.cpp +++ b/libfalcon.cpp @@ -21,6 +21,9 @@ #ifdef GGML_USE_METAL #include "ggml-metal.h" #endif +#ifndef QK_K +#define QK_K 256 +#endif #include #include @@ -2558,10 +2561,22 @@ static void falcon_model_quantize_internal(const std::string & fname_inp, const } else { new_type = quantized_type; #ifdef GGML_USE_K_QUANTS + if (quantized_type == GGML_TYPE_Q2_K || quantized_type == GGML_TYPE_Q3_K || quantized_type == GGML_TYPE_Q4_K || + quantized_type == GGML_TYPE_Q5_K || quantized_type == GGML_TYPE_Q6_K) { + int nx = tensor.ne.at(0); + int ny = tensor.ne.at(0); + if (nx % QK_K != 0 || ny % QK_K != 0) { + fprintf(stderr, "\n\n========================= Tensor sizes %d x %d are not divisible by %d\n",nx,ny,QK_K); + fprintf(stderr, "This is required to be able to use k-quants for now!\n"); + fprintf(stderr, "========================================================================================\n\n"); + throw std::runtime_error("Unsupported tensor size encountered\n"); + } + } // if (tensor.name == ".mlp.dense_") { // new_type = GGML_TYPE_Q6_K; // } // TODO falcon + #endif float * f32_data;