generation_config.json === ###### tags: `LLM / tokenizer` ###### tags: `ML`, `NLP`, `NLU`, `LLM`, `tokenizer`, `Hugging Face`, `AutoTokenizer`, `tokenizer_config.json`, `single_word"`, `lstrip`, `rstrip"`, `normalized`, `special`, `generation_config.json`, `temperature`, `top_k`, `top_p` <br> [TOC] <br> ## 用途 - `generation_config.json` 用於設定文本生成參數,控制模型生成行為及文本品質。 - **備註**:一般 model 常規用法,非 llama3 or vLLM 特有 <br> ## 載入 generation_config.json 的範例 ### generation_config.json ```json= { "bos_token_id": 0, "eos_token_id": [2], "do_sample": true, "temperature": 0.6, "max_length": 4096, "top_p": 0.9, "transformers_version": "4.40.0.dev0" } ``` ### demo code ```python= from transformers import AutoTokenizer, AutoModelForSeq2SeqLM # 加載模型和 tokenizer tokenizer = AutoTokenizer.from_pretrained("facebook/bart-large-cnn") model = AutoModelForSeq2SeqLM.from_pretrained("facebook/bart-large-cnn") # 加載 generation 配置 import json with open("generation_config.json") as f: generation_config = json.load(f) # 要生成文本的輸入 input_text = "Once upon a time" inputs = tokenizer(input_text, return_tensors="pt") # 使用生成配置進行文本生成 output = model.generate(**inputs, **generation_config) generated_text = tokenizer.decode(output[0], skip_special_tokens=True) print(generated_text) ``` - #### 執行結果 - #### `tokenizer.decode(output[0])` `'</s><s><s>Once upon a time was a time when the world was a very different place. It was also a time of great change, with a lot of very different people in it. The world was changed by the arrival of a group of people known as the "Lost Boys"</s>'` - #### `tokenizer.decode(output[0], skip_special_tokens=True)` `'Once upon a time was a time when the world was a very different place. It was also a time of great change, with a lot of very different people in it. The world was changed by the arrival of a group of people known as the "Lost Boys"'` <br> ## [[huggingface][doc] Text Generation / Generation](https://huggingface.co/docs/transformers/main_classes/text_generation) - [Parameters / config_file_name](https://huggingface.co/docs/transformers/main_classes/text_generation#transformers.GenerationConfig.from_pretrained.config_file_name) - **參數類型**:str or os.PathLike, optional, defaults to "generation_config.json" - **參數說明**:Name of the generation configuration JSON file to be loaded from pretrained_model_name. - [Special tokens that can be used at generation time](https://huggingface.co/docs/transformers/main_classes/text_generation#transformers.GenerationConfig.eos_token_id) - **bos_token_id (int, optional)** The id of the beginning-of-sequence token. - **eos_token_id (Union[int, List[int]], optional)** The id of the end-of-sequence token. Optionally, use a list to set multiple end-of-sequence tokens. <br> ## [github][huggingface] configuration_utils.py > [transformers/src/transformers/generation/configuration_utils.py](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/configuration_utils.py) <br> ## 參考資料 - [基于 transformers 的 generate() 方法实现多样化文本生成:参数含义和算法原理解读](https://blog.csdn.net/muyao987/article/details/125917234)