MCPcopy Create free account
hub / github.com/appdevforall/CodeOnTheGo / gguf_set_kv

Function gguf_set_kv

subprojects/llama.cpp/ggml/src/gguf.cpp:1074–1126  ·  view source on GitHub ↗

set or add KV pairs from another context

Source from the content-addressed store, hash-verified

1072
1073// set or add KV pairs from another context
1074void gguf_set_kv(struct gguf_context * ctx, const struct gguf_context * src) {
1075 const int64_t n_kv = gguf_get_n_kv(src);
1076 for (int64_t i = 0; i < n_kv; ++i) {
1077 const struct gguf_kv & kv = src->kv[i];
1078
1079 if (!kv.is_array) {
1080 switch (kv.get_type()) {
1081 case GGUF_TYPE_UINT8: gguf_set_val_u8 (ctx, kv.get_key().c_str(), kv.get_val<uint8_t>()); break;
1082 case GGUF_TYPE_INT8: gguf_set_val_i8 (ctx, kv.get_key().c_str(), kv.get_val<int8_t>()); break;
1083 case GGUF_TYPE_UINT16: gguf_set_val_u16 (ctx, kv.get_key().c_str(), kv.get_val<uint16_t>()); break;
1084 case GGUF_TYPE_INT16: gguf_set_val_i16 (ctx, kv.get_key().c_str(), kv.get_val<int16_t>()); break;
1085 case GGUF_TYPE_UINT32: gguf_set_val_u32 (ctx, kv.get_key().c_str(), kv.get_val<uint32_t>()); break;
1086 case GGUF_TYPE_INT32: gguf_set_val_i32 (ctx, kv.get_key().c_str(), kv.get_val<int32_t>()); break;
1087 case GGUF_TYPE_FLOAT32: gguf_set_val_f32 (ctx, kv.get_key().c_str(), kv.get_val<float>()); break;
1088 case GGUF_TYPE_UINT64: gguf_set_val_u64 (ctx, kv.get_key().c_str(), kv.get_val<uint64_t>()); break;
1089 case GGUF_TYPE_INT64: gguf_set_val_i64 (ctx, kv.get_key().c_str(), kv.get_val<int64_t>()); break;
1090 case GGUF_TYPE_FLOAT64: gguf_set_val_f64 (ctx, kv.get_key().c_str(), kv.get_val<double>()); break;
1091 case GGUF_TYPE_BOOL: gguf_set_val_bool(ctx, kv.get_key().c_str(), kv.get_val<bool>()); break;
1092 case GGUF_TYPE_STRING: gguf_set_val_str (ctx, kv.get_key().c_str(), kv.get_val<std::string>().c_str()); break;
1093 case GGUF_TYPE_ARRAY:
1094 default: GGML_ABORT("invalid type");
1095 }
1096 continue;
1097 }
1098
1099 const size_t ne = kv.get_ne();
1100
1101 switch (kv.get_type()) {
1102 case GGUF_TYPE_UINT8:
1103 case GGUF_TYPE_INT8:
1104 case GGUF_TYPE_UINT16:
1105 case GGUF_TYPE_INT16:
1106 case GGUF_TYPE_UINT32:
1107 case GGUF_TYPE_INT32:
1108 case GGUF_TYPE_FLOAT32:
1109 case GGUF_TYPE_UINT64:
1110 case GGUF_TYPE_INT64:
1111 case GGUF_TYPE_FLOAT64:
1112 case GGUF_TYPE_BOOL: {
1113 gguf_set_arr_data(ctx, kv.get_key().c_str(), kv.get_type(), kv.data.data(), ne);
1114 } break;
1115 case GGUF_TYPE_STRING: {
1116 std::vector<const char *> tmp(ne);
1117 for (size_t j = 0; j < ne; ++j) {
1118 tmp[j] = kv.data_string[j].c_str();
1119 }
1120 gguf_set_arr_str(ctx, kv.get_key().c_str(), tmp.data(), ne);
1121 } break;
1122 case GGUF_TYPE_ARRAY:
1123 default: GGML_ABORT("invalid type");
1124 }
1125 }
1126}
1127
1128void gguf_add_tensor(
1129 struct gguf_context * ctx,

Callers 5

run_mergeMethod · 0.85
split_strategyMethod · 0.85
gguf_mergeFunction · 0.85
test_gguf_set_kvFunction · 0.85

Calls 15

gguf_get_n_kvFunction · 0.85
gguf_set_val_u8Function · 0.85
gguf_set_val_i8Function · 0.85
gguf_set_val_u16Function · 0.85
gguf_set_val_i16Function · 0.85
gguf_set_val_u32Function · 0.85
gguf_set_val_i32Function · 0.85
gguf_set_val_f32Function · 0.85
gguf_set_val_u64Function · 0.85
gguf_set_val_i64Function · 0.85
gguf_set_val_f64Function · 0.85
gguf_set_val_boolFunction · 0.85

Tested by 1

test_gguf_set_kvFunction · 0.68