).set_examples({LLAMA_EXAMPLE_IMATRIX}));
add_opt(common_arg(
{"--output-format"}, "{gguf,dat}",
- string_format("output format for imatrix file (default: %s)", params.imat_dat ? "dat" : "gguf"),
+ string_format("output format for imatrix file (default: %s)", params.imat_dat > 0 ? "dat" : "gguf"),
[](common_params & params, const std::string & value) {
- /**/ if (value == "gguf") { params.imat_dat = false; }
- else if (value == "dat") { params.imat_dat = true; }
+ /**/ if (value == "gguf") { params.imat_dat = -1; }
+ else if (value == "dat") { params.imat_dat = 1; }
else { throw std::invalid_argument("invalid output format"); }
}
).set_examples({LLAMA_EXAMPLE_IMATRIX}));
int32_t n_out_freq = 10; // output the imatrix every n_out_freq iterations
int32_t n_save_freq = 0; // save the imatrix every n_save_freq iterations
int32_t i_chunk = 0; // start processing from this chunk
- bool imat_dat = false; // whether the legacy imatrix.dat format should be output
+ int8_t imat_dat = 0; // whether the legacy imatrix.dat format should be output (gguf <= 0 < dat)
bool process_output = false; // collect data for the output tensor
bool compute_ppl = true; // whether to compute perplexity
void IMatrixCollector::save_imatrix(int32_t n_chunk) const {
auto fname = m_params.out_file;
- bool use_legacy_format = m_params.imat_dat;
+ int8_t use_legacy_format = m_params.imat_dat;
- if (use_legacy_format) {
+ if (use_legacy_format > 0) {
this->save_imatrix_legacy(n_chunk);
return;
}
- // else, default to GGUF imatrix
+ // only warn when `--output-format gguf` is not specified
+ if (use_legacy_format == 0 && !string_ends_with(fname, ".gguf")) {
+ LOG_WRN("\n%s: saving imatrix using GGUF format with a different suffix than .gguf\n", __func__);
+ LOG_WRN("%s: if you want the previous imatrix format, use --output-format dat\n", __func__);
+ }
if (n_chunk > 0) {
fname += ".at_";