Skip to content

Commit eaa6ca5

Browse files
authored
ggml : increase max tensor name + clean up compiler warnings in train-text (ggml-org#1988)
* Clean up compiler warnings in train-text Some brackets to disambiguate order of operations * Increase GGML_MAX_NAME Avoiding strncpy danger in train-text-from-scratch and reducing potential future name length issues
1 parent aa777ab commit eaa6ca5

File tree

2 files changed

+7
-18
lines changed

2 files changed

+7
-18
lines changed

examples/train-text-from-scratch/train-text-from-scratch.cpp

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -294,20 +294,9 @@ void init_model(struct my_llama_model * model) {
294294

295295
ggml_set_name(layer.ffn_norm, (layers_i + ".ffn_norm.weight").c_str());
296296

297-
// 'layers.10.feed_forward.w1.weight' has length of 32.
298-
// ggml_tensor->name only has 32 characters, but we need one more for the '\0' terminator.
299-
// ggml_set_name will set the last character to '\0', so we can only store 'layers.10.feed_forward.w1.weigh'.
300-
// when saving llama compatible model the tensors names will miss a character.
301-
// ggml_set_name(layer.w1, (layers_i + ".feed_forward.w1.weight").c_str());
302-
// ggml_set_name(layer.w2, (layers_i + ".feed_forward.w2.weight").c_str());
303-
// ggml_set_name(layer.w3, (layers_i + ".feed_forward.w3.weight").c_str());
304-
305-
strncpy(layer.w1->name, (layers_i + ".feed_forward.w1.weight").c_str(), sizeof(layer.w1->name));
306-
strncpy(layer.w2->name, (layers_i + ".feed_forward.w2.weight").c_str(), sizeof(layer.w2->name));
307-
strncpy(layer.w3->name, (layers_i + ".feed_forward.w3.weight").c_str(), sizeof(layer.w3->name));
308-
layer.w1->padding[0] = 0;
309-
layer.w2->padding[0] = 0;
310-
layer.w3->padding[0] = 0;
297+
ggml_format_name(layer.w1, "%s.feed_forward.w1.weight", layers_i.c_str());
298+
ggml_format_name(layer.w2, "%s.feed_forward.w2.weight", layers_i.c_str());
299+
ggml_format_name(layer.w3, "%s.feed_forward.w3.weight", layers_i.c_str());
311300
}
312301
}
313302

@@ -2368,7 +2357,7 @@ void write_tensor(struct llama_file * file, struct ggml_tensor * tensor) {
23682357
file->write_u32(0);
23692358
file->write_u32(0);
23702359
file->write_u32(GGML_TYPE_F32);
2371-
file->seek(0-file->tell() & 31, SEEK_CUR);
2360+
file->seek((0-file->tell()) & 31, SEEK_CUR);
23722361
return;
23732362
}
23742363
const char * name = ggml_get_name(tensor);
@@ -2383,7 +2372,7 @@ void write_tensor(struct llama_file * file, struct ggml_tensor * tensor) {
23832372
file->write_u32(tensor->type);
23842373
file->write_raw(ne, sizeof(ne[0]) * nd);
23852374
file->write_raw(name, name_len);
2386-
file->seek(0-file->tell() & 31, SEEK_CUR);
2375+
file->seek((0-file->tell()) & 31, SEEK_CUR);
23872376
file->write_raw(tensor->data, ggml_nbytes(tensor));
23882377
}
23892378

@@ -2404,7 +2393,7 @@ void read_tensor(struct llama_file * file, struct ggml_tensor * tensor) {
24042393
std::string name = file->read_string(name_len);
24052394
GGML_ASSERT(strncmp(ggml_get_name(tensor), name.c_str(), sizeof(tensor->name)-1) == 0);
24062395

2407-
file->seek(0-file->tell() & 31, SEEK_CUR);
2396+
file->seek((0-file->tell()) & 31, SEEK_CUR);
24082397
file->read_raw(tensor->data, ggml_nbytes(tensor));
24092398
}
24102399

ggml.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@
198198
#define GGML_MAX_PARAMS 256
199199
#define GGML_MAX_CONTEXTS 64
200200
#define GGML_MAX_OPT 4
201-
#define GGML_MAX_NAME 32
201+
#define GGML_MAX_NAME 48
202202
#define GGML_DEFAULT_N_THREADS 4
203203

204204
#define GGML_ASSERT(x) \

0 commit comments

Comments
 (0)