LLM-如何使用预训练LLM
使用预训练 LLM
模型命名规范:
- 无 instruct:基础模型,进行了预训练
- 含 instruct:还额外进行了指令对齐等操作
模型结构
示例: “Qwen/Qwen2.5-0.5B-Instruct”
- Model 是一个嵌入模型+若干 layers
- lm_head 将模型输出映射回词表
| |
特殊符号
每一个模型的特殊符号均有差异,一般而言:
- 未指令对齐的基础模型通常包含 end of text 词元,标记文本结束
- 对齐的多模态模型具有以下词元
- eos:“end of sentence”(句子结束)标记,用于指示文本序列的结束。在生成文本时,当模型输出这个 Token 时,表示当前生成的内容已经结束。
- pad:主要用于在将不同长度的文本序列处理成相同长度时进行填充。在训练过程中,为了方便将文本批次处理,需要将所有文本序列的长度统一,短的序列就会用 <|endoftext|> 进行填充,以便于模型进行并行计算
<|im_start|>表明一段对话内容的起始,<|im_end|>则代表结束。在多轮对话场景中,它们可以帮助模型清晰地识别不同轮次的对话边界。- <|box_start|> 和 <|box_end|>:或许用于标记与 “框” 相关的信息,比如在图像识别结合文本处理的场景中,可能用于标记图像中某个框选区域的描述信息的起始和结束。
- <|quad_start|> 和 <|quad_end|>:类似于 <|box_start|> 和 <|box_end|>,可能用于标记与四边形区域相关的信息,在图像或图形处理相关的文本描述中使用。
| |
使用基础 API
chat-Template
输出的结果:
词元化
输出:
| |
推理和解码
输出:
| |
注意到 generated_ids 包含前文的用户输入、系统输入,只需要模型输出的话需要做切断
输出:
| |
使用 Pipeline
注意要根据模型的类型选择传入 pipeline 的类型:
- decode only 的模型:text-generation
- encoder-decoder 的模型:text2text-generation
输出:
| |