大模型微调增加标记、词汇表与嵌入层调整解析(101)
大模型微调增加标记、词汇表与嵌入层调整解析(101)
你可能会想要使用 trl 库中的辅助函数 setup_chat_format()
。该函数的设计初衷是为分词器(tokenizer)分配 ChatML 模板提供便捷方式,同时处理多个额外细节,具体包括:
• 向分词器的词表中添加 ChatML 专用特殊令牌(<|im_start|>
和 <|im_end|>
)。
• 将模型和分词器的 BOS 令牌(起始令牌)与 EOS 令牌(结束令牌)分别更新为 <|im_start|>
和 <|im_end|>
。
• 将模型和分词器的 PAD 令牌(填充令牌)更新为 <|im_end|>
(与 EOS 令牌相同!)。
• 调整模型嵌入层(embedding layer)的大小,使其与词表长度相匹配。
• 为分词器分配 ChatML 的 Jinja 模板。
你发现任何问题了吗?提示:存在一个小问题和一个更严重的问题。
其中,小问题与嵌入层(embedding layer)的调整大小有关。
当前方法会对嵌入层进行强制调整,即便调整后嵌入层会变得更短(这会导致 “空槽位”