ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

GitHub格式转HF格式:InternVL3.5-241B-A28B-Pretrained模型互转与Transformers无缝加载指南

GitHub格式转HF格式:InternVL3.5-241B-A28B-Pretrained模型互转与Transformers无缝加载指南

【免费下载链接】InternVL3_5-241B-A28B-Pretrained

项目地址:https://ai.gitcode.com/OpenGVLab/InternVL3_5-241B-A28B-Pretrained
点击查看免费下载

📌 本文介绍 InternVL3.5-241B-A28B-Pretrained 多模态大模型在 GitHub 格式与 HuggingFace(HF)格式之间的相互转换方法,以及如何用 Transformers 无缝加载该 241B MoE 模型进行推理与微调。

🤔 什么是 GitHub 格式和 HF 格式?

InternVL 系列模型为了保持与往期版本兼容,官方同时提供了两种模型格式:

格式命名示例特点
GitHub 格式(custom)InternVL3_5-241B-A28B-Pretrained与 InternVL 系列以往版本保持一致,附带自定义建模代码,需要trust_remote_code加载
HF 格式InternVL3_5-241B-A28B-HF对齐 Transformers 官方标准,生态兼容性好,可直接对接 vLLM、LMDeploy 等主流推理框架

⚠️ 注意:本仓库是Pretrained(CPT 多模态继续预训练)阶段的权重,属于 InternVL3.5 系列中规模最大、参数 240.7B(激活 28B)的 MoE 旗舰版,适合用于二次预训练、继续预训练等研究场景;日常对话与推理请使用不带后缀的完整版模型。

📦 仓库里都有什么?看懂文件结构

本仓库采用 GitHub 格式存放权重,核心文件一览:

文件作用
config.json主配置:model_type为internvl_chat,内含 LLM 配置(Qwen3-235B-A22B,128 专家、94 层)与视觉塔配置(InternViT-6B,45 层)
model.safetensors.index.json权重索引文件,共 37540 个张量到 96 个分片的映射关系
layer-0-ep-0-of-1.safetensors ~ layer-93-ep-0-of-1.safetensors语言模型 94 层 MoE 权重,每层一个独立文件
vision.safetensors视觉编码器 InternViT-6B 权重(595 个张量)
others.safetensors嵌入层、norm、lm_head 等其余权重
modeling_internvl_chat.py自定义模型定义(InternVLChatModel)
configuration_internvl_chat.py自定义配置类(InternVLChatConfig)
modeling_intern_vit.py / configuration_intern_vit.py视觉塔模型与配置代码
conversation.py对话模板(本模型使用internvl2_5模板)
tokenizer.json / vocab.json分词器文件

🔍 几个有意思的细节:

  • 每层一个分片:layer-N-ep-0-of-1.safetensors这种"一层一文件"的命名是 GitHub 格式的典型特征,方便大模型按层流式加载与专家并行(EP)切分;而 HF 格式通常是若干 GB 的合并分片。
  • MoE 权重组织:从索引文件可以看到,每层的 128 个专家权重(mlp.experts.0~127的up_proj/gate_proj/down_proj)都存放在对应层文件中。
  • 动态高分辨率:config.json 中dynamic_image_size: true、max_dynamic_patch: 12、force_image_size: 448,说明保留了 InternVL1.5 起的动态切片策略;ps_version: v2表示使用 pixel shuffle v2 连接器(对应 model.safetensors.index.json 中的mlp1张量)。

🔄 GitHub 格式转 HF 格式:完整步骤

官方提供了两个转换脚本(位于 InternVL 官方代码库的internvl_chat/tools/目录下):

  • internvl_custom2hf.py:GitHub 格式 → HF 格式
  • internvl_hf2custom.py:HF 格式 → GitHub 格式

一键转换命令

# GitHub 格式 → HF 格式(以 241B-A28B 为例,小模型同理) python internvl_custom2hf.py \ --input_dir ./InternVL3_5-241B-A28B-Pretrained \ --output_dir ./InternVL3_5-241B-A28B-Pretrained-HF

转换时发生了什么?

  1. 合并分片:把 94 个layer-*.safetensors+ vision.safetensors + others.safetensors 按model.safetensors.index.json的索引重新打包成 HF 标准的若干 GB 级model-0000X-of-XXXXX.safetensors分片。
  2. 权重命名对齐:GitHub 格式的键名(如language_model.model.layers.0.mlp.experts.0.up_proj.weight)映射为 Transformers 原生 MoE 架构可识别的命名。
  3. 配置重组:把 config.json 中嵌套的llm_config、vision_config展开为 HF 标准的多模态config.json,去掉auto_map自定义代码依赖。

💡 转换是纯张量重打包操作,不会改变模型参数,两种格式推理结果一致。由于 241B 模型约 480GB(BF16),请预留足够的磁盘空间(建议转换后清理原始分片以节省空间)。

🚀 Transformers 无缝加载指南

加载前提

  • transformers >= 4.52.1(README 官方建议版本)
  • 241B 规模需8 张 A100 级 GPU(张量并行tp=8)

GitHub 格式加载(自定义代码)

GitHub 格式自带建模代码,加载时必须加trust_remote_code=True:

import torch from transformers import AutoTokenizer, AutoModel path = "./InternVL3_5-241B-A28B-Pretrained" # 或官方仓库名 model = AutoModel.from_pretrained( path, torch_dtype=torch.bfloat16, low_cpu_mem_usage=True, use_flash_attn=True, trust_remote_code=True, device_map="auto").eval() tokenizer = AutoTokenizer.from_pretrained(path, trust_remote_code=True, use_fast=False)

AutoModel会通过 config.json 中的auto_map自动定位到 modeling_internvl_chat.py 里的InternVLChatModel,无需手动导入自定义类。

HF 格式加载

转换后的 HF 格式走 Transformers 原生多模态接口,配置中不再依赖auto_map,可直接与各类微调框架(SWIFT、XTuner 等)无缝衔接。

🖥️ 高性能部署:vLLM 与 LMDeploy

生产环境推荐使用推理框架部署(README 官方推荐 vLLM 与 LMDeploy 均支持):

# LMDeploy 服务化示例(241B 需设置 tp=8) lmdeploy serve api_server <模型路径> \ --server-port 23333 --tp 8 --backend pytorch

部署后即可获得兼容 OpenAI 接口的 REST API,方便业务集成。

❓ 常见问题(FAQ)

Q1:Pretrained 版本和正式版有什么区别?Pretrained 只完成了 CPT(多模态继续预训练),未做 SFT 与强化学习对齐,输出不具备指令遵循能力,主要用于继续预训练/领域适配研究。

Q2:为什么加载时报trust_remote_code相关错误?GitHub 格式依赖 configuration_internvl_chat.py 等自定义代码,加载参数必须开启trust_remote_code=True;或者干脆转换成 HF 格式后按标准方式加载。

Q3:小模型(如 8B、14B)怎么转?命令完全相同,只需把--input_dir换成对应模型目录。≤30B 的模型单卡 A100 即可部署,38B 需 2 卡,转换过程本身与 GPU 无关,任意机器都可执行。

Q4:转换后能直接用AutoTokenizer吗?可以,tokenizer.json、added_tokens.json、special_tokens_map.json 等分词文件在两种格式中结构一致。

✅ 小结

场景推荐格式
研究/继续预训练(本仓库 Pretrained 权重)GitHub 格式或转 HF 均可
vLLM / LMDeploy 生产部署HF 格式
官方微调框架(SWIFT、XTuner 等)HF 格式
复现 InternVL 官方训练代码GitHub 格式

掌握internvl_custom2hf.py与internvl_hf2custom.py两个脚本,即可在两种格式间自由切换,让 InternVL3.5-241B-A28B-Pretrained 无缝融入你的 Transformers 工作流 🎉

【免费下载链接】InternVL3_5-241B-A28B-Pretrained

项目地址:https://ai.gitcode.com/OpenGVLab/InternVL3_5-241B-A28B-Pretrained
点击查看免费下载

相关推荐

上一篇:vscode-leetcode解决方案查看:leetCodeSolutionProvider功能详解
下一篇:FGO-py:让《命运/冠位指定》自动化成为你的第二御主

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进