|
1 | 1 | from __future__ import annotations
|
2 | 2 |
|
3 | 3 | import sys
|
4 |
| -from enum import Enum, IntEnum, auto |
5 |
| -from typing import Any, NamedTuple |
| 4 | +from enum import Enum, IntEnum, auto, StrEnum |
| 5 | +from typing import Any, NamedTuple, Type |
6 | 6 |
|
7 | 7 | #
|
8 | 8 | # constants
|
|
16 | 16 | # metadata keys
|
17 | 17 | #
|
18 | 18 |
|
19 |
| -class GeneralKeys(NamedTuple): |
20 |
| - ARCHITECTURE = "general.architecture" |
21 |
| - QUANTIZATION_VERSION = "general.quantization_version" |
22 |
| - ALIGNMENT = "general.alignment" |
23 |
| - NAME = "general.name" |
24 |
| - AUTHOR = "general.author" |
25 |
| - URL = "general.url" |
26 |
| - DESCRIPTION = "general.description" |
27 |
| - LICENSE = "general.license" |
28 |
| - SOURCE_URL = "general.source.url" |
29 |
| - SOURCE_HF_REPO = "general.source.huggingface.repository" |
30 |
| - FILE_TYPE = "general.file_type" |
31 |
| - |
32 |
| -class AttentionKeys(NamedTuple): |
33 |
| - HEAD_COUNT = "{arch}.attention.head_count" |
34 |
| - HEAD_COUNT_KV = "{arch}.attention.head_count_kv" |
35 |
| - MAX_ALIBI_BIAS = "{arch}.attention.max_alibi_bias" |
36 |
| - CLAMP_KQV = "{arch}.attention.clamp_kqv" |
37 |
| - LAYERNORM_EPS = "{arch}.attention.layer_norm_epsilon" |
38 |
| - LAYERNORM_RMS_EPS = "{arch}.attention.layer_norm_rms_epsilon" |
39 |
| - |
40 |
| -class RopeKeys(NamedTuple): |
41 |
| - DIMENSION_COUNT = "{arch}.rope.dimension_count" |
42 |
| - FREQ_BASE = "{arch}.rope.freq_base" |
43 |
| - SCALING_TYPE = "{arch}.rope.scaling.type" |
44 |
| - SCALING_FACTOR = "{arch}.rope.scaling.factor" |
45 |
| - SCALING_ORIG_CTX_LEN = "{arch}.rope.scaling.original_context_length" |
46 |
| - SCALING_FINETUNED = "{arch}.rope.scaling.finetuned" |
47 |
| - |
48 |
| -class TokenizerKeys(NamedTuple): |
49 |
| - MODEL = "tokenizer.ggml.model" |
50 |
| - LIST = "tokenizer.ggml.tokens" |
51 |
| - TOKEN_TYPE = "tokenizer.ggml.token_type" |
52 |
| - SCORES = "tokenizer.ggml.scores" |
53 |
| - MERGES = "tokenizer.ggml.merges" |
54 |
| - BOS_ID = "tokenizer.ggml.bos_token_id" |
55 |
| - EOS_ID = "tokenizer.ggml.eos_token_id" |
56 |
| - UNK_ID = "tokenizer.ggml.unknown_token_id" |
57 |
| - SEP_ID = "tokenizer.ggml.seperator_token_id" |
58 |
| - PAD_ID = "tokenizer.ggml.padding_token_id" |
59 |
| - HF_JSON = "tokenizer.huggingface.json" |
60 |
| - RWKV = "tokenizer.rwkv.world" |
61 |
| - |
62 |
| -class LLMKeys(NamedTuple): |
63 |
| - CONTEXT_LENGTH = "{arch}.context_length" |
64 |
| - EMBEDDING_LENGTH = "{arch}.embedding_length" |
65 |
| - BLOCK_COUNT = "{arch}.block_count" |
66 |
| - FEED_FORWARD_LENGTH = "{arch}.feed_forward_length" |
67 |
| - USE_PARALLEL_RESIDUAL = "{arch}.use_parallel_residual" |
68 |
| - TENSOR_DATA_LAYOUT = "{arch}.tensor_data_layout" |
| 19 | +class GeneralKeys(StrEnum): |
| 20 | + ARCHITECTURE : str = "general.architecture" |
| 21 | + QUANTIZATION_VERSION: str = "general.quantization_version" |
| 22 | + ALIGNMENT : str = "general.alignment" |
| 23 | + NAME : str = "general.name" |
| 24 | + AUTHOR : str = "general.author" |
| 25 | + URL : str = "general.url" |
| 26 | + DESCRIPTION : str = "general.description" |
| 27 | + LICENSE : str = "general.license" |
| 28 | + SOURCE_URL : str = "general.source.url" |
| 29 | + SOURCE_HF_REPO : str = "general.source.huggingface.repository" |
| 30 | + FILE_TYPE : str = "general.file_type" |
| 31 | + |
| 32 | +class AttentionKeys(StrEnum): |
| 33 | + HEAD_COUNT : str = "{arch}.attention.head_count" |
| 34 | + HEAD_COUNT_KV : str = "{arch}.attention.head_count_kv" |
| 35 | + MAX_ALIBI_BIAS : str = "{arch}.attention.max_alibi_bias" |
| 36 | + CLAMP_KQV : str = "{arch}.attention.clamp_kqv" |
| 37 | + LAYERNORM_EPS : str = "{arch}.attention.layer_norm_epsilon" |
| 38 | + LAYERNORM_RMS_EPS: str = "{arch}.attention.layer_norm_rms_epsilon" |
| 39 | + |
| 40 | +class RopeKeys(StrEnum): |
| 41 | + DIMENSION_COUNT : str = "{arch}.rope.dimension_count" |
| 42 | + FREQ_BASE : str = "{arch}.rope.freq_base" |
| 43 | + SCALING_TYPE : str = "{arch}.rope.scaling.type" |
| 44 | + SCALING_FACTOR : str = "{arch}.rope.scaling.factor" |
| 45 | + SCALING_ORIG_CTX_LEN: str = "{arch}.rope.scaling.original_context_length" |
| 46 | + SCALING_FINETUNED : str = "{arch}.rope.scaling.finetuned" |
| 47 | + |
| 48 | +class TokenizerKeys(StrEnum): |
| 49 | + MODEL : str = "tokenizer.ggml.model" |
| 50 | + LIST : str = "tokenizer.ggml.tokens" |
| 51 | + TOKEN_TYPE: str = "tokenizer.ggml.token_type" |
| 52 | + SCORES : str = "tokenizer.ggml.scores" |
| 53 | + MERGES : str = "tokenizer.ggml.merges" |
| 54 | + BOS_ID : str = "tokenizer.ggml.bos_token_id" |
| 55 | + EOS_ID : str = "tokenizer.ggml.eos_token_id" |
| 56 | + UNK_ID : str = "tokenizer.ggml.unknown_token_id" |
| 57 | + SEP_ID : str = "tokenizer.ggml.seperator_token_id" |
| 58 | + PAD_ID : str = "tokenizer.ggml.padding_token_id" |
| 59 | + HF_JSON : str = "tokenizer.huggingface.json" |
| 60 | + RWKV : str = "tokenizer.rwkv.world" |
| 61 | + |
| 62 | +class LLMKeys(StrEnum): |
| 63 | + CONTEXT_LENGTH : str = "{arch}.context_length" |
| 64 | + EMBEDDING_LENGTH : str = "{arch}.embedding_length" |
| 65 | + BLOCK_COUNT : str = "{arch}.block_count" |
| 66 | + FEED_FORWARD_LENGTH : str = "{arch}.feed_forward_length" |
| 67 | + USE_PARALLEL_RESIDUAL: str = "{arch}.use_parallel_residual" |
| 68 | + TENSOR_DATA_LAYOUT : str = "{arch}.tensor_data_layout" |
69 | 69 |
|
70 | 70 | class Keys(NamedTuple):
|
71 |
| - GENERAL = GeneralKeys() |
72 |
| - LLM = LLMKeys() |
73 |
| - ATTENTION = AttentionKeys() |
74 |
| - ROPE = RopeKeys() |
75 |
| - TOKENIZER = TokenizerKeys() |
| 71 | + GENERAL : Type[GeneralKeys ] = GeneralKeys |
| 72 | + LLM : Type[LLMKeys ] = LLMKeys |
| 73 | + ATTENTION: Type[AttentionKeys] = AttentionKeys |
| 74 | + ROPE : Type[RopeKeys ] = RopeKeys |
| 75 | + TOKENIZER: Type[TokenizerKeys] = TokenizerKeys |
76 | 76 |
|
77 | 77 | KEY = Keys()
|
78 | 78 |
|
@@ -418,52 +418,52 @@ def get_type(val: Any) -> GGUFValueType:
|
418 | 418 | # Aliases for backward compatibility.
|
419 | 419 |
|
420 | 420 | # general
|
421 |
| -KEY_GENERAL_ARCHITECTURE = KEY.GENERAL.ARCHITECTURE |
422 |
| -KEY_GENERAL_QUANTIZATION_VERSION = KEY.GENERAL.QUANTIZATION_VERSION |
423 |
| -KEY_GENERAL_ALIGNMENT = KEY.GENERAL.ALIGNMENT |
424 |
| -KEY_GENERAL_NAME = KEY.GENERAL.NAME |
425 |
| -KEY_GENERAL_AUTHOR = KEY.GENERAL.AUTHOR |
426 |
| -KEY_GENERAL_URL = KEY.GENERAL.URL |
427 |
| -KEY_GENERAL_DESCRIPTION = KEY.GENERAL.DESCRIPTION |
428 |
| -KEY_GENERAL_LICENSE = KEY.GENERAL.LICENSE |
429 |
| -KEY_GENERAL_SOURCE_URL = KEY.GENERAL.SOURCE_URL |
430 |
| -KEY_GENERAL_SOURCE_HF_REPO = KEY.GENERAL.SOURCE_HF_REPO |
431 |
| -KEY_GENERAL_FILE_TYPE = KEY.GENERAL.FILE_TYPE |
| 421 | +KEY_GENERAL_ARCHITECTURE : str = KEY.GENERAL.ARCHITECTURE |
| 422 | +KEY_GENERAL_QUANTIZATION_VERSION: str = KEY.GENERAL.QUANTIZATION_VERSION |
| 423 | +KEY_GENERAL_ALIGNMENT : str = KEY.GENERAL.ALIGNMENT |
| 424 | +KEY_GENERAL_NAME : str = KEY.GENERAL.NAME |
| 425 | +KEY_GENERAL_AUTHOR : str = KEY.GENERAL.AUTHOR |
| 426 | +KEY_GENERAL_URL : str = KEY.GENERAL.URL |
| 427 | +KEY_GENERAL_DESCRIPTION : str = KEY.GENERAL.DESCRIPTION |
| 428 | +KEY_GENERAL_LICENSE : str = KEY.GENERAL.LICENSE |
| 429 | +KEY_GENERAL_SOURCE_URL : str = KEY.GENERAL.SOURCE_URL |
| 430 | +KEY_GENERAL_SOURCE_HF_REPO : str = KEY.GENERAL.SOURCE_HF_REPO |
| 431 | +KEY_GENERAL_FILE_TYPE : str = KEY.GENERAL.FILE_TYPE |
432 | 432 |
|
433 | 433 | # LLM
|
434 |
| -KEY_CONTEXT_LENGTH = KEY.LLM.CONTEXT_LENGTH |
435 |
| -KEY_EMBEDDING_LENGTH = KEY.LLM.EMBEDDING_LENGTH |
436 |
| -KEY_BLOCK_COUNT = KEY.LLM.BLOCK_COUNT |
437 |
| -KEY_FEED_FORWARD_LENGTH = KEY.LLM.FEED_FORWARD_LENGTH |
438 |
| -KEY_USE_PARALLEL_RESIDUAL = KEY.LLM.USE_PARALLEL_RESIDUAL |
439 |
| -KEY_TENSOR_DATA_LAYOUT = KEY.LLM.TENSOR_DATA_LAYOUT |
| 434 | +KEY_CONTEXT_LENGTH : str = KEY.LLM.CONTEXT_LENGTH |
| 435 | +KEY_EMBEDDING_LENGTH : str = KEY.LLM.EMBEDDING_LENGTH |
| 436 | +KEY_BLOCK_COUNT : str = KEY.LLM.BLOCK_COUNT |
| 437 | +KEY_FEED_FORWARD_LENGTH : str = KEY.LLM.FEED_FORWARD_LENGTH |
| 438 | +KEY_USE_PARALLEL_RESIDUAL: str = KEY.LLM.USE_PARALLEL_RESIDUAL |
| 439 | +KEY_TENSOR_DATA_LAYOUT : str = KEY.LLM.TENSOR_DATA_LAYOUT |
440 | 440 |
|
441 | 441 | # attention
|
442 |
| -KEY_ATTENTION_HEAD_COUNT = KEY.ATTENTION.HEAD_COUNT |
443 |
| -KEY_ATTENTION_HEAD_COUNT_KV = KEY.ATTENTION.HEAD_COUNT_KV |
444 |
| -KEY_ATTENTION_MAX_ALIBI_BIAS = KEY.ATTENTION.MAX_ALIBI_BIAS |
445 |
| -KEY_ATTENTION_CLAMP_KQV = KEY.ATTENTION.CLAMP_KQV |
446 |
| -KEY_ATTENTION_LAYERNORM_EPS = KEY.ATTENTION.LAYERNORM_EPS |
447 |
| -KEY_ATTENTION_LAYERNORM_RMS_EPS = KEY.ATTENTION.LAYERNORM_RMS_EPS |
| 442 | +KEY_ATTENTION_HEAD_COUNT : str = KEY.ATTENTION.HEAD_COUNT |
| 443 | +KEY_ATTENTION_HEAD_COUNT_KV : str = KEY.ATTENTION.HEAD_COUNT_KV |
| 444 | +KEY_ATTENTION_MAX_ALIBI_BIAS : str = KEY.ATTENTION.MAX_ALIBI_BIAS |
| 445 | +KEY_ATTENTION_CLAMP_KQV : str = KEY.ATTENTION.CLAMP_KQV |
| 446 | +KEY_ATTENTION_LAYERNORM_EPS : str = KEY.ATTENTION.LAYERNORM_EPS |
| 447 | +KEY_ATTENTION_LAYERNORM_RMS_EPS: str = KEY.ATTENTION.LAYERNORM_RMS_EPS |
448 | 448 |
|
449 | 449 | # RoPE
|
450 |
| -KEY_ROPE_DIMENSION_COUNT = KEY.ROPE.DIMENSION_COUNT |
451 |
| -KEY_ROPE_FREQ_BASE = KEY.ROPE.FREQ_BASE |
452 |
| -KEY_ROPE_SCALING_TYPE = KEY.ROPE.SCALING_TYPE |
453 |
| -KEY_ROPE_SCALING_FACTOR = KEY.ROPE.SCALING_FACTOR |
454 |
| -KEY_ROPE_SCALING_ORIG_CTX_LEN = KEY.ROPE.SCALING_ORIG_CTX_LEN |
455 |
| -KEY_ROPE_SCALING_FINETUNED = KEY.ROPE.SCALING_FINETUNED |
| 450 | +KEY_ROPE_DIMENSION_COUNT : str = KEY.ROPE.DIMENSION_COUNT |
| 451 | +KEY_ROPE_FREQ_BASE : str = KEY.ROPE.FREQ_BASE |
| 452 | +KEY_ROPE_SCALING_TYPE : str = KEY.ROPE.SCALING_TYPE |
| 453 | +KEY_ROPE_SCALING_FACTOR : str = KEY.ROPE.SCALING_FACTOR |
| 454 | +KEY_ROPE_SCALING_ORIG_CTX_LEN: str = KEY.ROPE.SCALING_ORIG_CTX_LEN |
| 455 | +KEY_ROPE_SCALING_FINETUNED : str = KEY.ROPE.SCALING_FINETUNED |
456 | 456 |
|
457 | 457 | # tokenization
|
458 |
| -KEY_TOKENIZER_MODEL = KEY.TOKENIZER.MODEL |
459 |
| -KEY_TOKENIZER_LIST = KEY.TOKENIZER.LIST |
460 |
| -KEY_TOKENIZER_TOKEN_TYPE = KEY.TOKENIZER.TOKEN_TYPE |
461 |
| -KEY_TOKENIZER_SCORES = KEY.TOKENIZER.SCORES |
462 |
| -KEY_TOKENIZER_MERGES = KEY.TOKENIZER.MERGES |
463 |
| -KEY_TOKENIZER_BOS_ID = KEY.TOKENIZER.BOS_ID |
464 |
| -KEY_TOKENIZER_EOS_ID = KEY.TOKENIZER.EOS_ID |
465 |
| -KEY_TOKENIZER_UNK_ID = KEY.TOKENIZER.UNK_ID |
466 |
| -KEY_TOKENIZER_SEP_ID = KEY.TOKENIZER.SEP_ID |
467 |
| -KEY_TOKENIZER_PAD_ID = KEY.TOKENIZER.PAD_ID |
468 |
| -KEY_TOKENIZER_HF_JSON = KEY.TOKENIZER.HF_JSON |
469 |
| -KEY_TOKENIZER_RWKV = KEY.TOKENIZER.RWKV |
| 458 | +KEY_TOKENIZER_MODEL : str = KEY.TOKENIZER.MODEL |
| 459 | +KEY_TOKENIZER_LIST : str = KEY.TOKENIZER.LIST |
| 460 | +KEY_TOKENIZER_TOKEN_TYPE: str = KEY.TOKENIZER.TOKEN_TYPE |
| 461 | +KEY_TOKENIZER_SCORES : str = KEY.TOKENIZER.SCORES |
| 462 | +KEY_TOKENIZER_MERGES : str = KEY.TOKENIZER.MERGES |
| 463 | +KEY_TOKENIZER_BOS_ID : str = KEY.TOKENIZER.BOS_ID |
| 464 | +KEY_TOKENIZER_EOS_ID : str = KEY.TOKENIZER.EOS_ID |
| 465 | +KEY_TOKENIZER_UNK_ID : str = KEY.TOKENIZER.UNK_ID |
| 466 | +KEY_TOKENIZER_SEP_ID : str = KEY.TOKENIZER.SEP_ID |
| 467 | +KEY_TOKENIZER_PAD_ID : str = KEY.TOKENIZER.PAD_ID |
| 468 | +KEY_TOKENIZER_HF_JSON : str = KEY.TOKENIZER.HF_JSON |
| 469 | +KEY_TOKENIZER_RWKV : str = KEY.TOKENIZER.RWKV |
0 commit comments