mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-25 10:54:36 +00:00
The underlying representation of multibyte character literals is implementation-defined. This could, at least in principle, cause cross-build data export/import issues independent of endianness. Define magic numbers as integer literals to be on the safe side. Signed-off-by: Juuso Alasuutari <juuso.alasuutari@gmail.com>
This commit is contained in:
parent
3de84b2606
commit
29cf5596fe
40
llama.cpp
40
llama.cpp
@ -427,26 +427,30 @@ struct llama_file_loader {
|
|||||||
}
|
}
|
||||||
void read_magic() {
|
void read_magic() {
|
||||||
uint32_t magic = file.read_u32();
|
uint32_t magic = file.read_u32();
|
||||||
uint32_t version = 0;
|
|
||||||
|
|
||||||
if (magic != 'ggml') {
|
if (magic == LLAMA_FILE_MAGIC_GGML) {
|
||||||
version = file.read_u32();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (magic == 'ggml' && version == 0) {
|
|
||||||
file_version = LLAMA_FILE_VERSION_GGML;
|
file_version = LLAMA_FILE_VERSION_GGML;
|
||||||
} else if (magic == 'ggmf' && version == 1) {
|
return;
|
||||||
file_version = LLAMA_FILE_VERSION_GGMF_V1;
|
|
||||||
} else if (magic == 'ggjt' && version == 1) {
|
|
||||||
file_version = LLAMA_FILE_VERSION_GGJT_V1;
|
|
||||||
} else if (magic == 'ggjt' && version == 2) {
|
|
||||||
file_version = LLAMA_FILE_VERSION_GGJT_V2;
|
|
||||||
} else if (magic == 'ggjt' && version == 3) {
|
|
||||||
file_version = LLAMA_FILE_VERSION_GGJT_V3;
|
|
||||||
} else {
|
|
||||||
throw format("unknown (magic, version) combination: %08x, %08x; is this really a GGML file?",
|
|
||||||
magic, version);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t version = file.read_u32();
|
||||||
|
|
||||||
|
switch (magic) {
|
||||||
|
case LLAMA_FILE_MAGIC_GGMF:
|
||||||
|
switch (version) {
|
||||||
|
case 1: file_version = LLAMA_FILE_VERSION_GGMF_V1; return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LLAMA_FILE_MAGIC_GGJT:
|
||||||
|
switch (version) {
|
||||||
|
case 1: file_version = LLAMA_FILE_VERSION_GGJT_V1; return;
|
||||||
|
case 2: file_version = LLAMA_FILE_VERSION_GGJT_V2; return;
|
||||||
|
case 3: file_version = LLAMA_FILE_VERSION_GGJT_V3; return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw format("unknown (magic, version) combination: %08x, %08x; is this really a GGML file?",
|
||||||
|
magic, version);
|
||||||
}
|
}
|
||||||
void read_hparams() {
|
void read_hparams() {
|
||||||
hparams.n_vocab = file.read_u32();
|
hparams.n_vocab = file.read_u32();
|
||||||
@ -2290,7 +2294,7 @@ int llama_apply_lora_from_file_internal(struct llama_context * ctx, const char *
|
|||||||
{
|
{
|
||||||
uint32_t magic;
|
uint32_t magic;
|
||||||
fin.read((char *) &magic, sizeof(magic));
|
fin.read((char *) &magic, sizeof(magic));
|
||||||
if (magic != 'ggla') {
|
if (magic != LLAMA_FILE_MAGIC_GGLA) {
|
||||||
fprintf(stderr, "%s: bad file magic\n", __func__);
|
fprintf(stderr, "%s: bad file magic\n", __func__);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
12
llama.h
12
llama.h
@ -19,10 +19,16 @@
|
|||||||
# define LLAMA_API
|
# define LLAMA_API
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define LLAMA_FILE_MAGIC_GGJT 0x67676a74u // 'ggjt'
|
||||||
|
#define LLAMA_FILE_MAGIC_GGLA 0x67676c61u // 'ggla'
|
||||||
|
#define LLAMA_FILE_MAGIC_GGMF 0x67676d66u // 'ggmf'
|
||||||
|
#define LLAMA_FILE_MAGIC_GGML 0x67676d6cu // 'ggml'
|
||||||
|
#define LLAMA_FILE_MAGIC_GGSN 0x6767736eu // 'ggsn'
|
||||||
|
|
||||||
#define LLAMA_FILE_VERSION 3
|
#define LLAMA_FILE_VERSION 3
|
||||||
#define LLAMA_FILE_MAGIC 'ggjt'
|
#define LLAMA_FILE_MAGIC LLAMA_FILE_MAGIC_GGJT
|
||||||
#define LLAMA_FILE_MAGIC_UNVERSIONED 'ggml'
|
#define LLAMA_FILE_MAGIC_UNVERSIONED LLAMA_FILE_MAGIC_GGML
|
||||||
#define LLAMA_SESSION_MAGIC 'ggsn'
|
#define LLAMA_SESSION_MAGIC LLAMA_FILE_MAGIC_GGSN
|
||||||
#define LLAMA_SESSION_VERSION 1
|
#define LLAMA_SESSION_VERSION 1
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
Loading…
Reference in New Issue
Block a user