ARTICLE DETAIL

资讯详情

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

DeepLearning4J 的 Omnihub 模型下载与转换 SDK:跨框架模型 Zoo 的统一下载、冻结与部署指南

DeepLearning4J 的 Omnihub 模型下载与转换 SDK:跨框架模型 Zoo 的统一下载、冻结与部署指南 深度学习人工智能机器学习分布式训练【免费下载链接】deeplearning4jSuite of tools for deploying and training deep learning models using the JVM. Highlights include model import for keras, tensorflow, and onnx/pytorch, a modular and tiny c library for running math code and a java based math library on top of the core c library. Also includes samediff: a pytorch/tensorflow like library for running deep learn...项目地址https://gitcode.com/gh_mirrors/de/deeplearning4j点击查看免费下载Omnihub 是 DeepLearning4J 仓库中contrib/omnihub目录下的一个 Python SDK用于简化预训练模型的下载与格式转换它屏蔽了 Keras、TensorFlow、ONNX、PyTorch、HuggingFace 五大模型 Zoo 的差异将下载权重 → 组织本地文件 → 冻结/导出为可部署模型这些常见操作收敛为一套统一 API。读完本文你将掌握 Omnihub 的安装方法、各框架 Hub 的调用方式、模型落地目录的存储规则以及它背后的冻结freezing与微调finetuning设计动机。背景为什么需要一个跨框架的模型 Hub SDK在 JVM 生态DeepLearning4J、ND4J、SameDiff中复用 TensorFlow 或 PyTorch 产出的模型文件时通常会遇到两类高频工作流而它们都带有相当程度的摩擦往往需要一次性教程和复制粘贴祈祷它能跑通contrib/omnihub/README.md微调Finetuning通常包括两步——① 解冻模型把常量转换为变量unfreezing② 定制模型在末尾添加新的目标函数和其他层。不同框架做这两步的复杂度差异很大。部署Deployable通常包括两步——① 冻结模型把可训练参数转换为冻结常量freezing② 优化模型量化、改变数据类型、删除多余算子以减小体积等。Omnihub 的目标正是封装每个框架的常见步骤如冻结/解冻、模型下载让这些工作流不必为每个模型、每个框架各写一遍胶水代码。它的实现思路是每个框架都有自己的 model hub这个 hub 知道如何与该框架的模型 Zoo 交互并对模型做预处理。架构一个基类 五个框架 HubOmnihub 的代码组织非常清晰位于 contrib/omnihub/src/omnihubsrc/omnihub/ ├── model_hub.py # ModelHub 基类下载、落盘、流式暂存 └── frameworks/ ├── keras.py # KerasModelHub基于 tf.keras.applications ├── tensorflow.py # TensorflowModelHubtfhub.dev 冻结成 .pb ├── onnx.py # OnnxModelHubonnx/model zoo 直连下载 ├── pytorch.py # PytorchModelHubtorchvision 导出 ONNX └── huggingface.py # HuggingFaceModelHubtransformers 多框架导出ModelHub 基类与存储目录规则所有 Hub 都继承自 model_hub.py 中的ModelHub它定义了三条核心约定存储根目录优先读取环境变量OMNIHUB_HOME未设置时默认~/.omnihub注意README 示例中写的$HOME/.model_hub是早期文档描述当前源码实际落盘到~/.omnihub或$OMNIHUB_HOME。按框架分子目录每个 Hub 构造时传入framework_name模型会被组织到root/framework_name/下例如~/.omnihub/keras/、~/.omnihub/onnx/。两个核心方法download_model(model_path, **kwargs)按base_url/model_path拼接 URL 并流式下载使用requests.get(..., streamTrue)按 8192 字节分块写盘见 model_hub.py。stage_model(model_path, model_name)把下载好的模型复制到目标暂存目录model_hub.py另有stage_model_stream支持从文件流直接写盘。基类还提供了默认的base_url拼接下载实现f{self.base_url}/{model_path}因此像 ONNX 这种纯直连下载的 Hub几乎无需覆写任何逻辑见 onnx.py。安装与快速上手安装依赖并注册为 Python 包requirements.txt、setup.pypip install -r requirements.txt python setup.py install依赖清单涵盖keras-applications、huggingface-hub、tensorflow-hub、onnx、requests、pytest、torch-model-archiver、tensorflow、transformers、scikit-learn等setup.py通过package_dir{: src}find_packages(wheresrc)从src目录收集包python_requires3.6。一个最简的下载 暂存示例对 README 中的片段做了 import 修正KerasModelHub需从omnihub.frameworks.keras导入from omnihub.frameworks.keras import KerasModelHub keras_model_hub KerasModelHub() model_path keras_model_hub.download_model(vgg19/vgg19_weights_tf_dim_ordering_tf_kernels_notop.h5) keras_model_hub.stage_model(model_path, vgg19_weights_tf_dim_ordering_tf_kernels_notop.h5)执行后模型会被放到$HOME/.omnihub/keras/vgg19_weights_tf_dim_ordering_tf_kernels_notop.h5若设置了export OMNIHUB_HOME/your/path则目录变为$OMNIHUB_HOME/keras/...。各框架 Hub 使用详解KerasModelHub基于 tf.keras.applications 的模型工厂keras.py 是覆盖面最广的 HubBASE_URL指向 Google 的 keras-applications 存储。它的下载不是简单拉文件而是解析路径后调用tf.keras.applications构造模型并保存权重路径即参数model_path被split(/)成两段第一段是模型名如vgg19第二段是权重文件名。当文件名包含notop时自动设置include_topFalse去掉顶部分类层这是做迁移学习/微调的常见前提否则include_topTrue。支持的模型族vgg16/vgg19、resnet50/101/152及其 v2 变体、densenet121/169/201、inceptionresnetv2、efficientnetb0~b7、mobilenet、mobilenetv2、inceptionv3、nasnet、nasnet_mobile、xception。落盘位置权重保存在~/.keras/models/weights_file随后通过ret.save(...)写出。代码中mobilenetv3分支被注释掉并标注了原因——MobileNetV3()缺少stack_fn和last_point_ch两个必填位置参数这是从源码中可以观察到的已知限制keras.py。结合 omnihub_bootstrap.py 中的批量清单可以看到 Keras 的完整可用路径约定例如resnet50/top、resnet101/notop、densenet201/top、efficientnetb0等。TensorflowModelHubtfhub.dev 下载 冻结为 .pbtensorflow.py 演示了下载 → 解压 → 冻结 → 写图的完整链路以https://tfhub.dev/model_path?tf-hub-formatcompressed下载压缩包tfhub 的 compressed 格式校验tarfile.is_tarfile解压到临时目录调用模块级函数convert_saved_model(saved_model_dir)tf.saved_model.load加载 SavedModel取signatures[serving_default]再用convert_variables_to_constants_v2把变量冻结为常量得到GraphDef通过tf.io.write_graph(..., as_textFalse)以二进制.pb写入~/.omnihub/tensorflow/name.pb最后删除临时 tar 包。这正是 README 中把可训练参数转换为冻结常量freezing在代码层面的落地。测试用例中使用的路径是emilutz/vgg19-block4-conv2-unpooling-decoder/1test_frameworks.py实际可用模型以 tfhub.dev 上?tf-hub-formatcompressed可下载的条目为准。OnnxModelHub最薄的直连下载onnx.py 仅设置BASE_URL https://media.githubusercontent.com/media/onnx/models/master下载完全复用基类逻辑。典型路径如onnx_model_hub OnnxModelHub() onnx_model_hub.download_model(vision/body_analysis/age_gender/models/age_googlenet.onnx)omnihub_bootstrap.py 中还罗列了更多 ONNX Model Zoo 路径age_googlenet、gender_googlenet、arcfaceresnet100-8.onnx、emotion-ferplus-*.onnx、version-RFB-320/640.onnx、bvlcalexnet-12(-int8).onnx、caffenet-12(-int8).onnx、efficientnet-lite4-11.onnx等覆盖年龄/性别、人脸、情感、检测、分类等任务。PytorchModelHubtorchvision 权重一键导出 ONNXpytorch.py 展示了从训练框架产出可部署文件的典型做法输入尺寸表源码内置了两组默认尺寸——MODEL_224_DEFAULTSresnet18、vgg16、shufflenet_v2_x1_0、resnext50_32x4d、wide_resnet50_2、mnasnet1_0为 224×224MODEL_256_DEFAULTSalexnet、squeezenet1_0、densenet161、googlenet、inception_v3以及动态生成的efficientnet_b0~b7、regnet_x/y_*为 256×256另有特例mobilenet_v232×32、mobilenet_v3_large/small320×320、retinanet512×512。未在表中的模型名会导致KeyError。导出流程构造全 1 的(1, 3, height, width)伪输入检测模型fasterrcnn、ssd、retinanet、maskrcnn、keypointrcnn走models.detection[...]其余走models.__dict__[model_path]加载pretrainedTrue权重后用torch.onnx.export导出为~/.omnihub/pytorch/name.onnx关键参数export_paramsTrue、do_constant_foldingFalse、opset_version13。HuggingFaceModelHub一个仓库多框架导出huggingface.py 针对 HF 仓库多框架共存的特性要求调用方必须通过framework_name指定目标框架且download_model内部有assert framework_name in kwargs强制校验TensorFlow/Keras 路径TFAutoModel.from_pretrained加载后用tf.function包装output_model.call取concrete_function并convert_variables_to_constants_v2冻结写出~/.omnihub/tensorflow/name.pb。PyTorch/ONNX 路径AutoModel.from_pretrained加载从dummy_inputs中按main_input_name排序构造输入主输入在前其余辅助输入在后再用torch.onnx.exportopset_version13导出到~/.omnihub/framework_name/name.onnx也可通过download_function参数注入自定义下载/导出函数。URL 解析规则类文档注释说明了 HF 使用 git LFS 分支的下载约定——URL 公式为https://huggingface.co repo名 resolve/branch/file默认分支mainhuggingface.py 的resolve_url即生成该路径。omnihub_bootstrap.py 中对gpt2、bert-base-uncased、t5-base、bert-base-chinese、google/electra-small-discriminator、facebook/wav2vec2-base-960h、facebook/bart-large-cnn分别以tensorflow和pytorch两个框架执行导出是研究多框架导出的现成样例。冻结与部署工作流在代码中的印证README 描述的冻结模型freezing与解冻模型unfreezing并非空话而是直接对应源码中的两处convert_variables_to_constants_v2调用场景代码位置输入输出TF Hub SavedModel 冻结tensorflow.pyserving_default签名二进制.pbGraphDefHF TensorFlow 模型冻结huggingface.pytf.function的 concrete function二进制.pbGraphDefPyTorch 一侧则通过torch.onnx.export(export_paramsTrue)把训练参数固化进 ONNX 图配合do_constant_foldingFalse保留原始计算结构二者共同构成把框架模型变成可部署独立文件的能力。而 Keras 的include_top开关notop后缀正是定制模型/迁移学习的入口呼应了 README 中微调工作流的第一步。测试与批量引导脚本单元测试test_frameworks.py 覆盖五个 Hub 的真实下载并用assert os.path.exists(...)验证落盘位置如~/.omnihub/keras/vgg19_weights_tf_dim_ordering_tf_kernels_notop.h5、~/.omnihub/onnx/age_googlenet.onnx、~/.omnihub/pytorch/resnet18.onnx。运行方式cd contrib/omnihub pytest批量引导omnihub_bootstrap.py 是一份一次性拉全常用模型的脚本内含 Keras 的 top/notop 双版本清单resnet、densenet、inception、mobilenet、nasnet、xception、efficientnet 系列、16 个 ONNX Model Zoo 模型、TF Hub 的 vgg19 解码器、PyTorch 的 resnet18以及 HF 的 bart-large-cnn 双框架导出其中部分 Keras 项如 vgg16 top、mobilenetv3因下载卡在最后几字节或构造参数缺失被注释属于源码中记录的真实已知问题。与 DeepLearning4J 生态的衔接Omnihub 位于 contrib/omnihubcontrib 目录非核心构建产物其价值在于为 DeepLearning4J / ND4J / SameDiff 的模型导入管线提供统一、可复现的预训练模型获取途径ONNX 与冻结后的.pb文件可直接对接 SameDiff 的模型导入如 nd4j/samediff-import 下的 onnx/tensorflow 导入器从而把框架模型 → 独立文件 → JVM 图的链路标准化。小结Omnihub 用约 200 行核心代码把五大框架模型 Zoo 的下载、暂存、冻结与导出统一到了ModelHub基类的download_model/stage_model接口之下并以每个框架一个 Hub的插件式设计隔离了各框架的差异。从 README 的设计动机freezing/unfreezing、部署/微调两条工作流到源码中的convert_variables_to_constants_v2与torch.onnx.export实现它完整展示了一个轻量级跨框架模型仓库 SDK 应有的样子简单、可扩展且为上层 JVM 深度学习工具链的模型复用提供了坚实的文件基础。赞分享深度学习人工智能机器学习分布式训练【免费下载链接】deeplearning4jSuite of tools for deploying and training deep learning models using the JVM. Highlights include model import for keras, tensorflow, and onnx/pytorch, a modular and tiny c library for running math code and a java based math library on top of the core c library. Also includes samediff: a pytorch/tensorflow like library for running deep learn...项目地址https://gitcode.com/gh_mirrors/de/deeplearning4j点击查看免费下载相关推荐PaddleOCR ONNX转换跨框架模型部署PaddleOCR ONNX转换跨框架模型部署 还在为OCR模型在不同框架间的部署兼容性而烦恼吗PaddleOCR的ONNX转换功能让你轻松实现跨框架模型部人工智能计算机视觉OCR深度学习大模型RAG【免费下载】 ONNXMLTools一站式模型转换工具助力AI模型跨平台部署ONNXMLTools一站式模型转换工具助力AI模型跨平台部署 项目介绍 ONNXMLTools 是一个强大的开源工具旨在将来自不同机器学习工具包的模型转xcit_tiny_12_p16_384.fb_dist_in1k部署指南轻量级Transformer模型的工业级应用xcit_tiny_12_p16_384.fb_dist_in1k部署指南轻量级Transformer模型的工业级应用 本文将为您提供一份完整的xcit_ti上一篇Kaboom.js 开源项目指南下一篇实用高效的Ryujinx模拟器在电脑上轻松畅玩Switch游戏的终极方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表