Team Ai
Datasetpublic

Brunobkr/llama.cpp_AlgMor24_github

ΩFFFΣLLIa • llama.cpp • AlgMor24 ██████╗ ███████╗███████╗███████╗██╗ ██╗ ██╗ █████╗ ██╔═══██╗██╔════╝██╔════╝██╔════╝██║ ██║ ██║██╔══██╗ ██║ ██║█████╗ █████╗ █████╗ ██║ ██║ ██║███████║ ██║ ██║██╔══╝ ██╔══╝ ██╔══╝ ██║ ██║ ██║██╔══██║ ╚██████╔╝██║ ██║ ███████╗███████╗███████╗██║██║ ██║ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝ High-Performance LLM / VLM Inference & Autonomous Agentic Ecosystem… See the full description on the dataset page: https://huggingface.co/datasets/Brunobkr/llama.cpp_AlgMor24_github.

sourceHugging Faceupdated 2mo agoView on Hugging Face
0likes3kdownloads
imatrix-loader.cpp166 linesDownload Raw Back to common
1#include "imatrix-loader.h"2#include "common.h"3#include "log.h"4#include "gguf.h"5 6#include <cmath>7#include <cstring>8#include <fstream>9 10static bool common_imatrix_load_legacy(const std::string & fname, common_imatrix & imatrix) {11    std::ifstream in(fname, std::ios::binary);12    if (!in) {13        LOG_ERR("%s: failed to open %s\n", __func__, fname.c_str());14        return false;15    }16 17    int n_entries;18    in.read((char *) &n_entries, sizeof(n_entries));19    if (in.fail() || n_entries < 1) {20        LOG_ERR("%s: no data in file %s\n", __func__, fname.c_str());21        return false;22    }23 24    for (int i = 0; i < n_entries; ++i) {25        int32_t len = 0;26        in.read((char *) &len, sizeof(len));27        std::vector<char> name_as_vec(len + 1);28        in.read((char *) name_as_vec.data(), len);29        if (in.fail()) {30            LOG_ERR("%s: failed reading name for entry %d from %s\n", __func__, i + 1, fname.c_str());31            return false;32        }33        name_as_vec[len] = 0;34        std::string name{ name_as_vec.data() };35 36        int32_t ncall = 0;37        in.read((char *) &ncall, sizeof(ncall));38        int32_t nval = 0;39        in.read((char *) &nval, sizeof(nval));40        if (in.fail() || nval < 1) {41            LOG_ERR("%s: failed reading number of values for entry %d\n", __func__, i);42            return false;43        }44 45        auto & e = imatrix.entries[std::move(name)];46        e.sums.resize(nval);47        in.read((char *) e.sums.data(), nval * sizeof(float));48        if (in.fail()) {49            LOG_ERR("%s: failed reading data for entry %d\n", __func__, i);50            return false;51        }52 53        e.counts.resize(1);54        e.counts[0] = ncall;55    }56 57    // the trailing data (chunk count + dataset name) is optional58    if (in.peek() != EOF) {59        int32_t n_calls = 0;60        in.read((char *) &n_calls, sizeof(n_calls));61        imatrix.chunk_count = n_calls;62 63        if (!in.fail()) {64            int32_t len = 0;65            in.read((char *) &len, sizeof(len));66            if (!in.fail() && len > 0) {67                std::vector<char> dataset(len + 1, 0);68                in.read(dataset.data(), len);69                if (!in.fail()) {70                    imatrix.datasets.push_back(dataset.data());71                }72            }73        }74    }75 76    imatrix.chunk_size = 0;77    imatrix.is_legacy  = true;78 79    return true;80}81 82bool common_imatrix_load(const std::string & fname, common_imatrix & imatrix) {83    struct ggml_context * ctx = nullptr;84    struct gguf_init_params meta_gguf_params = {85        /* .no_alloc = */ false,86        /* .ctx      = */ &ctx,87    };88    struct gguf_context * ctx_gguf = gguf_init_from_file(fname.c_str(), meta_gguf_params);89    if (!ctx_gguf) {90        return common_imatrix_load_legacy(fname, imatrix);91    }92 93    const int32_t n_entries = gguf_get_n_tensors(ctx_gguf);94    if (n_entries < 1) {95        LOG_ERR("%s: no data in file %s\n", __func__, fname.c_str());96        gguf_free(ctx_gguf);97        ggml_free(ctx);98        return false;99    }100 101    const int64_t datasets_key   = gguf_find_key(ctx_gguf, LLM_KV_IMATRIX_DATASETS);102    const int64_t chunk_count_key = gguf_find_key(ctx_gguf, LLM_KV_IMATRIX_CHUNK_COUNT);103    const int64_t chunk_size_key  = gguf_find_key(ctx_gguf, LLM_KV_IMATRIX_CHUNK_SIZE);104 105    if (datasets_key != -1 && gguf_get_arr_type(ctx_gguf, datasets_key) == GGUF_TYPE_STRING) {106        const int64_t n = gguf_get_arr_n(ctx_gguf, datasets_key);107        imatrix.datasets.reserve(imatrix.datasets.size() + n);108        for (int64_t i = 0; i < n; ++i) {109            imatrix.datasets.push_back(gguf_get_arr_str(ctx_gguf, datasets_key, i));110        }111    }112 113    imatrix.has_metadata = (datasets_key != -1 && chunk_count_key != -1 && chunk_size_key != -1);114    imatrix.chunk_count  = (chunk_count_key != -1) ? gguf_get_val_u32(ctx_gguf, chunk_count_key) : 0;115    imatrix.chunk_size   = (chunk_size_key  != -1) ? gguf_get_val_u32(ctx_gguf, chunk_size_key)  : 0;116 117    const std::string in_sum2_suffix{ ".in_sum2" };118    const std::string counts_suffix{ ".counts" };119 120    std::map<std::string, std::pair<struct ggml_tensor *, struct ggml_tensor *>> sums_counts_for;121 122    for (struct ggml_tensor * cur = ggml_get_first_tensor(ctx); cur; cur = ggml_get_next_tensor(ctx, cur)) {123        std::string name = cur->name;124 125        if (name.empty()) { continue; }126 127        if (string_remove_suffix(name, in_sum2_suffix)) {128            sums_counts_for[std::move(name)].first = cur;129        } else if (string_remove_suffix(name, counts_suffix)) {130            sums_counts_for[std::move(name)].second = cur;131        }132    }133 134    for (const auto & sc : sums_counts_for) {135        const std::string &        name    = sc.first;136        const struct ggml_tensor * in_sum2 = sc.second.first;137        const struct ggml_tensor * counts  = sc.second.second;138 139        if (!in_sum2 || !counts) {140            LOG_ERR("%s: mismatched sums and counts for %s\n", __func__, name.c_str());141            gguf_free(ctx_gguf);142            ggml_free(ctx);143            return false;144        }145 146        auto & e = imatrix.entries[name];147 148        const int64_t nval    = ggml_nelements(in_sum2);149        const int64_t ncounts = ggml_nelements(counts);150 151        e.sums.resize(nval);152        for (int64_t j = 0; j < nval; ++j) {153            e.sums[j] = ((const float *) in_sum2->data)[j];154        }155 156        e.counts.resize(ncounts);157        for (int64_t j = 0; j < ncounts; ++j) {158            e.counts[j] = std::lround(((const float *) counts->data)[j]);159        }160    }161 162    gguf_free(ctx_gguf);163    ggml_free(ctx);164    return true;165}166 
Brunobkr/llama.cpp_AlgMor24_github · Team Ai