|
@@ -18811,8 +18811,7 @@ static bool gguf_fread_el(FILE * file, void * dst, size_t size, size_t * offset)
|
|
|
return n == size;
|
|
return n == size;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// NOTE: temporary handling of GGUFv1 >> remove after Oct 2023
|
|
|
|
|
-static bool gguf_fread_str_cur(FILE * file, struct gguf_str * p, size_t * offset) {
|
|
|
|
|
|
|
+static bool gguf_fread_str(FILE * file, struct gguf_str * p, size_t * offset) {
|
|
|
p->n = 0;
|
|
p->n = 0;
|
|
|
p->data = NULL;
|
|
p->data = NULL;
|
|
|
|
|
|
|
@@ -18824,19 +18823,6 @@ static bool gguf_fread_str_cur(FILE * file, struct gguf_str * p, size_t * offset
|
|
|
return ok;
|
|
return ok;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static bool gguf_fread_str_v1(FILE * file, struct gguf_str * p, size_t * offset) {
|
|
|
|
|
- p->n = 0;
|
|
|
|
|
- p->data = NULL;
|
|
|
|
|
-
|
|
|
|
|
- bool ok = true;
|
|
|
|
|
-
|
|
|
|
|
- uint32_t n = 0;
|
|
|
|
|
- ok = ok && gguf_fread_el(file, &n, sizeof(n), offset); p->data = calloc(n + 1, 1); p->n = n;
|
|
|
|
|
- ok = ok && gguf_fread_el(file, p->data, p->n, offset);
|
|
|
|
|
-
|
|
|
|
|
- return ok;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
struct gguf_context * gguf_init_empty(void) {
|
|
struct gguf_context * gguf_init_empty(void) {
|
|
|
struct gguf_context * ctx = GGML_ALIGNED_MALLOC(sizeof(struct gguf_context));
|
|
struct gguf_context * ctx = GGML_ALIGNED_MALLOC(sizeof(struct gguf_context));
|
|
|
|
|
|
|
@@ -18895,21 +18881,8 @@ struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_p
|
|
|
ctx->data = NULL;
|
|
ctx->data = NULL;
|
|
|
|
|
|
|
|
ok = ok && gguf_fread_el(file, &ctx->header.version, sizeof(ctx->header.version), &offset);
|
|
ok = ok && gguf_fread_el(file, &ctx->header.version, sizeof(ctx->header.version), &offset);
|
|
|
-
|
|
|
|
|
- if (ctx->header.version == 1) {
|
|
|
|
|
- // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023
|
|
|
|
|
- uint32_t n_tensors = 0;
|
|
|
|
|
- uint32_t n_kv = 0;
|
|
|
|
|
-
|
|
|
|
|
- ok = ok && gguf_fread_el(file, &n_tensors, sizeof(n_tensors), &offset);
|
|
|
|
|
- ok = ok && gguf_fread_el(file, &n_kv, sizeof(n_kv), &offset);
|
|
|
|
|
-
|
|
|
|
|
- ctx->header.n_tensors = n_tensors;
|
|
|
|
|
- ctx->header.n_kv = n_kv;
|
|
|
|
|
- } else {
|
|
|
|
|
- ok = ok && gguf_fread_el(file, &ctx->header.n_tensors, sizeof(ctx->header.n_tensors), &offset);
|
|
|
|
|
- ok = ok && gguf_fread_el(file, &ctx->header.n_kv, sizeof(ctx->header.n_kv), &offset);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ ok = ok && gguf_fread_el(file, &ctx->header.n_tensors, sizeof(ctx->header.n_tensors), &offset);
|
|
|
|
|
+ ok = ok && gguf_fread_el(file, &ctx->header.n_kv, sizeof(ctx->header.n_kv), &offset);
|
|
|
|
|
|
|
|
if (!ok) {
|
|
if (!ok) {
|
|
|
fprintf(stderr, "%s: failed to read header\n", __func__);
|
|
fprintf(stderr, "%s: failed to read header\n", __func__);
|
|
@@ -18919,12 +18892,6 @@ struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_p
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023
|
|
|
|
|
- bool (* gguf_fread_str)(FILE *, struct gguf_str *, size_t *) = gguf_fread_str_cur;
|
|
|
|
|
- if (ctx->header.version == 1) {
|
|
|
|
|
- gguf_fread_str = gguf_fread_str_v1;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
// read the kv pairs
|
|
// read the kv pairs
|
|
|
{
|
|
{
|
|
|
ctx->kv = malloc(ctx->header.n_kv * sizeof(struct gguf_kv));
|
|
ctx->kv = malloc(ctx->header.n_kv * sizeof(struct gguf_kv));
|
|
@@ -18955,15 +18922,7 @@ struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_p
|
|
|
case GGUF_TYPE_ARRAY:
|
|
case GGUF_TYPE_ARRAY:
|
|
|
{
|
|
{
|
|
|
ok = ok && gguf_fread_el(file, &kv->value.arr.type, sizeof(kv->value.arr.type), &offset);
|
|
ok = ok && gguf_fread_el(file, &kv->value.arr.type, sizeof(kv->value.arr.type), &offset);
|
|
|
-
|
|
|
|
|
- if (ctx->header.version == 1) {
|
|
|
|
|
- // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023
|
|
|
|
|
- uint32_t n = 0;
|
|
|
|
|
- ok = ok && gguf_fread_el(file, &n, sizeof(n), &offset);
|
|
|
|
|
- kv->value.arr.n = n;
|
|
|
|
|
- } else {
|
|
|
|
|
- ok = ok && gguf_fread_el(file, &kv->value.arr.n, sizeof(kv->value.arr.n), &offset);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ ok = ok && gguf_fread_el(file, &kv->value.arr.n, sizeof(kv->value.arr.n), &offset);
|
|
|
|
|
|
|
|
switch (kv->value.arr.type) {
|
|
switch (kv->value.arr.type) {
|
|
|
case GGUF_TYPE_UINT8:
|
|
case GGUF_TYPE_UINT8:
|
|
@@ -19022,14 +18981,7 @@ struct gguf_context * gguf_init_from_file(const char * fname, struct gguf_init_p
|
|
|
ok = ok && gguf_fread_str(file, &info->name, &offset);
|
|
ok = ok && gguf_fread_str(file, &info->name, &offset);
|
|
|
ok = ok && gguf_fread_el (file, &info->n_dims, sizeof(info->n_dims), &offset);
|
|
ok = ok && gguf_fread_el (file, &info->n_dims, sizeof(info->n_dims), &offset);
|
|
|
for (uint32_t j = 0; j < info->n_dims; ++j) {
|
|
for (uint32_t j = 0; j < info->n_dims; ++j) {
|
|
|
- if (ctx->header.version == 1) {
|
|
|
|
|
- // NOTE: temporary handling of GGUFv1 >> remove after Oct 2023
|
|
|
|
|
- uint32_t t = 0;
|
|
|
|
|
- ok = ok && gguf_fread_el(file, &t, sizeof(t), &offset);
|
|
|
|
|
- info->ne[j] = t;
|
|
|
|
|
- } else {
|
|
|
|
|
- ok = ok && gguf_fread_el(file, &info->ne[j], sizeof(info->ne[j]), &offset);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ ok = ok && gguf_fread_el(file, &info->ne[j], sizeof(info->ne[j]), &offset);
|
|
|
}
|
|
}
|
|
|
ok = ok && gguf_fread_el (file, &info->type, sizeof(info->type), &offset);
|
|
ok = ok && gguf_fread_el (file, &info->type, sizeof(info->type), &offset);
|
|
|
ok = ok && gguf_fread_el (file, &info->offset, sizeof(info->offset), &offset);
|
|
ok = ok && gguf_fread_el (file, &info->offset, sizeof(info->offset), &offset);
|