MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / llama_model_quantize_internal

Function llama_model_quantize_internal

llama.cpp:9133–9411  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9131}
9132
9133static void llama_model_quantize_internal(const std::string & fname_inp, const std::string & fname_out, const llama_model_quantize_params * params) {
9134 ggml_type quantized_type;
9135 llama_ftype ftype = params->ftype;
9136
9137 switch (params->ftype) {
9138 case LLAMA_FTYPE_MOSTLY_Q4_0: quantized_type = GGML_TYPE_Q4_0; break;
9139 case LLAMA_FTYPE_MOSTLY_Q4_1: quantized_type = GGML_TYPE_Q4_1; break;
9140 case LLAMA_FTYPE_MOSTLY_Q5_0: quantized_type = GGML_TYPE_Q5_0; break;
9141 case LLAMA_FTYPE_MOSTLY_Q5_1: quantized_type = GGML_TYPE_Q5_1; break;
9142 case LLAMA_FTYPE_MOSTLY_Q8_0: quantized_type = GGML_TYPE_Q8_0; break;
9143 case LLAMA_FTYPE_MOSTLY_F16: quantized_type = GGML_TYPE_F16; break;
9144 case LLAMA_FTYPE_ALL_F32: quantized_type = GGML_TYPE_F32; break;
9145
9146 // K-quants
9147 case LLAMA_FTYPE_MOSTLY_Q2_K: quantized_type = GGML_TYPE_Q2_K; break;
9148 case LLAMA_FTYPE_MOSTLY_Q3_K_S:
9149 case LLAMA_FTYPE_MOSTLY_Q3_K_M:
9150 case LLAMA_FTYPE_MOSTLY_Q3_K_L: quantized_type = GGML_TYPE_Q3_K; break;
9151 case LLAMA_FTYPE_MOSTLY_Q4_K_S:
9152 case LLAMA_FTYPE_MOSTLY_Q4_K_M: quantized_type = GGML_TYPE_Q4_K; break;
9153 case LLAMA_FTYPE_MOSTLY_Q5_K_S:
9154 case LLAMA_FTYPE_MOSTLY_Q5_K_M: quantized_type = GGML_TYPE_Q5_K; break;
9155 case LLAMA_FTYPE_MOSTLY_Q6_K: quantized_type = GGML_TYPE_Q6_K; break;
9156
9157 default: throw std::runtime_error(format("invalid output file type %d\n", ftype));
9158 }
9159
9160 int nthread = params->nthread;
9161
9162 if (nthread <= 0) {
9163 nthread = std::thread::hardware_concurrency();
9164 }
9165
9166 // mmap consistently increases speed Linux, and also increases speed on Windows with
9167 // hot cache. It may cause a slowdown on macOS, possibly related to free memory.
9168#if defined(__linux__) || defined(_WIN32)
9169 constexpr bool use_mmap = true;
9170#else
9171 constexpr bool use_mmap = false;
9172#endif
9173
9174 llama_model_loader ml(fname_inp, use_mmap);
9175 if (ml.use_mmap) {
9176 ml.mapping.reset(new llama_mmap(&ml.file, /* prefetch */ 0, ggml_is_numa()));
9177 }
9178
9179 llama_model model;
9180 llm_load_arch(ml, model);
9181 llm_load_hparams(ml, model);
9182
9183 struct quantize_state_internal qs(model, params);
9184
9185 if (params->only_copy) {
9186 ftype = model.ftype;
9187 }
9188
9189 const size_t align = GGUF_DEFAULT_ALIGNMENT;
9190 struct gguf_context * ctx_out = ml.sparse_deriv == GGML_SPARSE_INFERENCE ? gguf_init_empty_sparse() : gguf_init_empty();

Callers 1

llama_model_quantizeFunction · 0.85

Calls 15

llm_load_archFunction · 0.85
llm_load_hparamsFunction · 0.85
gguf_init_empty_sparseFunction · 0.85
get_k_quant_typeFunction · 0.85
maxFunction · 0.85
minFunction · 0.85
findMethod · 0.80
reserveMethod · 0.80
unlockMethod · 0.80
joinMethod · 0.80
formatFunction · 0.70

Tested by

no test coverage detected