ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

如何用 export_model.py 把 happy-llm 第五章训练出的模型 checkpoint 导出为 HuggingFace 格式

如何用 export_model.py 把 happy-llm 第五章训练出的模型 checkpoint 导出为 HuggingFace 格式 如何用 export_model.py 把 happy-llm 第五章训练出的模型 checkpoint 导出为 HuggingFace 格式【免费下载链接】happy-llm 从零开始构建大模型项目地址: https://gitcode.com/GitHub_Trending/ha/happy-llm在 happy-llm 的第五章中你完成了 LLaMA2 结构小模型215M的预训练和 SFT 训练产物是 PyTorch 原生的.pth权重文件和tokenizer_k/目录下的 BPE 分词器。这类 checkpoint 只能通过torch.load手动加载无法直接配合transformers的AutoModelForCausalLM/AutoTokenizer使用。仓库中的 export_model.py 就是解决这一步的工具它把.pthcheckpoint 连同 tokenizer 一起导出为一个标准 HuggingFace 格式模型目录。完成本文后你会得到包含模型权重与 tokenizer 的导出目录示例中为k-model-215M并且能确认导出结果是否成功。前置条件已按 第五章 动手搭建大模型.md 完成预训练与 SFT 训练手头有一个.pth模型 checkpoint。SFT 训练脚本默认把 checkpoint 保存为sft_dim1024_layers18_vocab_size6144.pth输出在--out_dir指定的目录默认sft_model_215M仓库docs/chapter5/code/目录下已有训练好的 tokenizer位于 tokenizer_k/tokenizer.json、tokenizer_config.json、special_tokens_map.json已安装第五章代码依赖核心是 requirements.txt 中固定的transformers4.44.0与torch2.4.0pip install -r requirements.txt准备确认你要导出的 checkpoint 路径export_model.py的__main__块里写了一个示例用法文档示例if __name__ __main__: # 示例用法 config ModelConfig( dim1024, n_layers18, ) export_model( tokenizer_path./tokenizer_k/, model_configconfig, model_ckpt_path./BeelGroup_sft_model_215M/sft_dim1024_layers18_vocab_size6144.pth, save_directoryk-model-215M )其中model_ckpt_path需要替换为你自己训练产物的实际路径。注意一个容易踩的点export_model.py示例中的目录是BeelGroup_sft_model_215M而 SFT 训练代码中--out_dir的默认值是sft_model_215M——两处路径不一致以你实际跑训练时使用的输出目录为准只要文件名与训练脚本生成的sft_dim1024_layers18_vocab_size6144.pth或带_stepN后缀的定期保存版本对应即可。另外两处参数必须与训练配置一致config ModelConfig(dim1024, n_layers18)ModelConfig定义在 k_model.py其dim、n_layers等结构超参数必须和 checkpoint 训练时的配置相同否则加载不到匹配的权重。第五章预训练与 SFT 使用的正是dim1024, n_layers18215M 模型save_directory导出结果的目标目录按你的需要命名例如k-model-215M。执行导出在docs/chapter5/code/目录下运行export_model.py通过from k_model import Transformer, ModelConfig导入同目录的模型代码因此必须在该目录或能导入k_model的目录下执行python export_model.py脚本内部会依次完成这些动作调用ModelConfig.register_for_auto_class()和Transformer.register_for_auto_class(AutoModelForCausalLM)把自定义配置类和模型类注册进transformers的 Auto 体系——这正是第五章在 5.1 节让ModelConfig继承PretrainedConfig的目的方便后续导出 HuggingFace 格式模型用AutoTokenizer.from_pretrained(tokenizer_path, trust_remote_codeTrue, use_fastFalse)加载 tokenizer如果 tokenizer 中存在pad_token_id会写回model_config.pad_token_idtokenizer_k/tokenizer_config.json中定义了pad_token: |im_end|所以此分支会生效用ModelConfig初始化一个新的Transformer实例torch.load读入.pthcheckpoint并剥除多卡训练中可能出现的_orig_mod.前缀再以strictFalse加载权重调用model.save_pretrained(save_directory, safe_serializationFalse)和tokenizer.save_pretrained(save_directory)把模型与 tokenizer 一并保存到目标目录。这里safe_serializationFalse表示不使用 safetensors 格式序列化。验证导出结果脚本运行成功时的终端输出为两行数值随 checkpoint 而定以下是代码中的输出格式模型参数: 215.13M 0.21B 模型和tokenizer已保存至: k-model-215M第二行出现即表示模型和 tokenizer 已写入save_directory。接着检查该目录应包含由save_pretrained生成的模型权重与配置文件以及 tokenizer 的tokenizer.json、tokenizer_config.json等文件。至此这个目录就是一个标准的 HuggingFace 自定义模型目录可以被trust_remote_code方式加载而不是只能走torch.load的裸.pth文件。限制与注意事项ModelConfig与 checkpoint 的结构必须匹配dim、n_layers写错时脚本不会报权重不匹配load_state_dict使用了strictFalse但仍建议核对导出参数与训练配置一致导出只覆盖模型权重与 tokenizer第五章训练中的超参数学习率、batch 等不属于导出内容本脚本面向第五章代码目录中的 215M 模型结构checkpoint 需为docs/chapter5/code/下训练脚本产出的.pth格式文件其他章节如第六章的训练产物不适用。【免费下载链接】happy-llm 从零开始构建大模型项目地址: https://gitcode.com/GitHub_Trending/ha/happy-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表