(params: Params, vocab: BaseVocab, pad_vocab: bool = False)
| 1035 | |
| 1036 | |
| 1037 | def check_vocab_size(params: Params, vocab: BaseVocab, pad_vocab: bool = False) -> None: |
| 1038 | # Handle special case where the model's vocab size is not set |
| 1039 | if params.n_vocab == -1: |
| 1040 | raise ValueError( |
| 1041 | "The model's vocab size is set to -1 in params.json. Please update it manually." |
| 1042 | + (f" Maybe {vocab.vocab_size}?" if isinstance(vocab, Vocab) else ""), |
| 1043 | ) |
| 1044 | if not isinstance(vocab, Vocab): |
| 1045 | return # model has no vocab |
| 1046 | |
| 1047 | # Check for a vocab size mismatch |
| 1048 | if params.n_vocab == vocab.vocab_size: |
| 1049 | logger.warning("Ignoring added_tokens.json since model matches vocab size without it.") |
| 1050 | return |
| 1051 | |
| 1052 | if pad_vocab and params.n_vocab > vocab.vocab_size: |
| 1053 | pad_count = params.n_vocab - vocab.vocab_size |
| 1054 | logger.debug( |
| 1055 | f"Padding vocab with {pad_count} token(s) - <dummy00001> through <dummy{pad_count:05}>" |
| 1056 | ) |
| 1057 | for i in range(1, pad_count + 1): |
| 1058 | vocab.added_tokens_dict[f"<dummy{i:05}>"] = -1 |
| 1059 | vocab.added_tokens_list.append(f"<dummy{i:05}>") |
| 1060 | vocab.vocab_size = params.n_vocab |
| 1061 | return |
| 1062 | |
| 1063 | msg = f"Vocab size mismatch (model has {params.n_vocab}, but {vocab.fname_tokenizer} has {vocab.vocab_size})." |
| 1064 | if vocab.vocab_size < params.n_vocab < vocab.vocab_size + 20: |
| 1065 | msg += f" Most likely you are missing added_tokens.json (should be in {vocab.fname_tokenizer.parent})." |
| 1066 | if vocab.vocab_size < params.n_vocab: |
| 1067 | msg += " Add the --pad-vocab option and try again." |
| 1068 | |
| 1069 | raise ValueError(msg) |
| 1070 | |
| 1071 | |
| 1072 | class OutputFile: |
no outgoing calls
no test coverage detected