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

Method llama_model_loader

llama.cpp:1908–2009  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1906 struct ggml_context * ctx_meta = NULL;
1907
1908 llama_model_loader(const std::string & fname, bool use_mmap) : file(fname.c_str(), "rb") {
1909 struct gguf_init_params params = {
1910 /*.no_alloc = */ true,
1911 /*.ctx = */ &ctx_meta,
1912 };
1913
1914 ctx_gguf = gguf_init_from_file(fname.c_str(), params);
1915 if (!ctx_gguf) {
1916 throw std::runtime_error(format("%s: failed to load model from %s\n", __func__, fname.c_str()));
1917 }
1918
1919 n_kv = gguf_get_n_kv(ctx_gguf);
1920 n_tensors = gguf_get_n_tensors(ctx_gguf);
1921 sparse_deriv = gguf_get_sparse_deriv(ctx_gguf);
1922 fver = (enum llama_fver ) gguf_get_version(ctx_gguf);
1923
1924 for (int i = 0; i < n_tensors; i++) {
1925 const char * name = gguf_get_tensor_name(ctx_gguf, i);
1926 struct ggml_tensor * t = ggml_get_tensor(ctx_meta, name);
1927 n_elements += ggml_nelements(t);
1928 n_bytes += ggml_nbytes(t);
1929 }
1930
1931 LLAMA_LOG_INFO("%s: loaded meta data with %d key-value pairs and %d tensors from %s (version %s)\n",
1932 __func__, n_kv, n_tensors, fname.c_str(), llama_file_version_name(fver));
1933
1934 // determine file type based on the number of tensors for each quantization and print meta data
1935 // TODO: make optional
1936 {
1937 std::map<enum ggml_type, uint32_t> n_type;
1938
1939 uint32_t n_type_max = 0;
1940 enum ggml_type type_max = GGML_TYPE_F32;
1941
1942 for (int i = 0; i < n_tensors; i++) {
1943 const char * name = gguf_get_tensor_name(ctx_gguf, i);
1944 struct ggml_tensor * meta = ggml_get_tensor(ctx_meta, name);
1945
1946 n_type[meta->type]++;
1947
1948 if (n_type_max < n_type[meta->type]) {
1949 n_type_max = n_type[meta->type];
1950 type_max = meta->type;
1951 }
1952
1953 LLAMA_LOG_INFO("%s: - tensor %4d: %32s %-8s [ %s ]\n", __func__, i, name, ggml_type_name(meta->type), llama_format_tensor_shape(meta).c_str());
1954 }
1955
1956 switch (type_max) {
1957 case GGML_TYPE_F32: ftype = LLAMA_FTYPE_ALL_F32; break;
1958 case GGML_TYPE_F16: ftype = LLAMA_FTYPE_MOSTLY_F16; break;
1959 case GGML_TYPE_Q4_0: ftype = LLAMA_FTYPE_MOSTLY_Q4_0; break;
1960 case GGML_TYPE_Q4_1: ftype = LLAMA_FTYPE_MOSTLY_Q4_1; break;
1961 case GGML_TYPE_Q5_0: ftype = LLAMA_FTYPE_MOSTLY_Q5_0; break;
1962 case GGML_TYPE_Q5_1: ftype = LLAMA_FTYPE_MOSTLY_Q5_1; break;
1963 case GGML_TYPE_Q8_0: ftype = LLAMA_FTYPE_MOSTLY_Q8_0; break;
1964 case GGML_TYPE_Q2_K: ftype = LLAMA_FTYPE_MOSTLY_Q2_K; break;
1965 case GGML_TYPE_Q3_K: ftype = LLAMA_FTYPE_MOSTLY_Q3_K_M; break;

Callers

nothing calls this directly

Calls 15

gguf_get_sparse_derivFunction · 0.85
gguf_init_from_fileFunction · 0.70
formatFunction · 0.70
gguf_get_n_kvFunction · 0.70
gguf_get_n_tensorsFunction · 0.70
gguf_get_versionFunction · 0.70
gguf_get_tensor_nameFunction · 0.70
ggml_get_tensorFunction · 0.70
ggml_nelementsFunction · 0.70
ggml_nbytesFunction · 0.70
llama_file_version_nameFunction · 0.70
ggml_type_nameFunction · 0.70

Tested by

no test coverage detected