DINOv3 目录结构与训练入口完整走读:如何从一份 YAML 跑到一次预训练任务

发布时间:2026/10/14 11:52:24

DINOv3 目录结构与训练入口完整走读:如何从一份 YAML 跑到一次预训练任务 DINOv3 目录结构与训练入口完整走读如何从一份 YAML 跑到一次预训练任务【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3DINOv3 是 Meta AI 的自监督视觉基础模型官方 PyTorch 实现覆盖 ViT-S/16 到 67 亿参数的 ViT-7B/16 骨干。本文不逐目录罗列而跟着一次训练任务走先看每个目录的职责再串起「YAML → 配置 → 数据 → 模型 → 损失」的完整动线最后给出一条最短可跑通的路径。DINOv3 布局速览每个目录一句话代码全部收在dinov3/顶层包内包外只有hubconf.py、conda.yaml、notebooks/等辅助文件。主干结构dinov3/ ├── configs/ # YAML 配方 OmegaConf 合并逻辑config.py ├── data/ # 数据集、DINO 增强、mask 生成、多分辨率 DataLoader ├── models/ # ViT / ConvNeXt 骨干与 build_model 工厂 ├── layers/ # 组件件attention、FFN、RoPE、DINO head、fp8 ├── loss/ # DINO、iBOT、Gram、KoLeo 四个损失文件 ├── train/ # 训练主循环与 SSLMetaArch / MultiDistillationMetaArch ├── eval/ # 六个下游评估linear、knn、depth、detection、segmentation、text ├── hub/ # torch.hub 本地加载入口 ├── fsdp/ distributed/ checkpointer/ # FSDP 分片、进程组封装、断点存/恢复 └── run/ # submitit 作业提交submit.py一句话概括分工configs/是输入data/、models/、loss/是训练的三样原料train/是调度方eval/是一群互相独立的评估程序。下面按一次训练的真实动线把前四块串起来。配置是怎么拼出来的入口在train/train.py的main()它只认三类输入--config-file、--output-dir、以及命令尾部keyvalue形式的覆盖项。合并逻辑在configs/config.py核心就四行cfg OmegaConf.load(args.config_file) default_cfg get_default_config() # ssl_default_config.yaml OmegaConf.set_struct(default_cfg, True) cfg OmegaConf.merge(default_cfg, cfg, opts_cfg)三层叠加ssl_default_config.yaml206 行提供 dino、ibot、gram、crops、train 的全部默认值配方 YAML 负责改差量命令行覆盖项最后生效。注意setup_config会先把合并结果原样 dump 到output_dir/config.yaml再按scaling_rule调整学习率如linear_wrt_256按 world size 线性缩放——也就是说实际生效的配置永远能在输出目录里找到。多蒸馏场景另有setup_multidistillation一次启动按 rank 区间切出学生子组每个子组加载各自的配方文件。一个 batch 是怎么被造出来的模型建好后do_train调用build_multi_resolution_data_loader_from_cfg对crops里的每种分辨率deepcopy一份配置各建一个 DataLoader再用data/meta_loaders.py的CombinedDataLoader按global_local_crop_pairs_ratios比例交错取样。变换链由data/augmentations.py的DataAugmentationDINO提供teacher 全局裁剪、student 局部裁剪、Gram 视图iBOT 的掩码由data/masking.py的MaskingGenerator生成并直接挂进 collate 函数——collate_data_and_cast顺手完成 bf16 转换。所以模型拿到的每个 batch裁剪、mask、dtype 都已由数据层定死train.py里不写任何样本级逻辑。模型和损失在哪里models/__init__.py的build_model用vits.__dict__[args.arch]按名字实例化 student 与 teacherattention 块、FFN、RoPE 位置编码、DINO head 拆在layers/的独立文件里。main()里模型先在torch.device(meta)上实例化再经prepare_for_distributed_training完成 FSDP 分布实现在fsdp/进程组封装在distributed/。损失是loss/下四个独立文件dino_clstoken_loss.py、ibot_patch_loss.py、gram_loss.py、koleo_loss.py由train/ssl_meta_arch.py的SSLMetaArch把 student、EMA teacher 和四个损失接成完整前向。每个迭代结束按checkpointing.period触发存盘存、恢复、保留最近 N 份都封装在checkpointer/。其余目录各管什么目录职责eval/linear.py、eval/knn.py、eval/log_regression.py冻结骨干的三种分类评估各自带main()eval/depth/、eval/detection/、eval/segmentation/DPT 深度头、DETR 检测器、linear / Mask2Former 分割各自带run.py与configs/eval/text/独立的 DINO-Txt 训练线视觉 文本双塔hub/ 根目录hubconf.py预训练权重加载入口backbones、classifiers、segmentors 等thirdparty/CLIP/vendored 的 CLIP tokenizer供eval/text使用run/submit.pysubmitit 封装提交 Slurm 作业notebooks/CHMv2 推理、分割跟踪等使用示例最小上手路径改哪个文件、跑哪条命令改dinov3/configs/train/vitl_im1k_lin834.yaml全文 143 行把train.dataset_path指向你的数据调train.batch_size_per_gpu把output_dir换成可写路径。跑 README 给出的官方形态命令PYTHONPATH${PWD} python -m dinov3.run.submit dinov3/train/train.py \ --config-file dinov3/configs/train/vitl_im1k_lin834.yaml \ --output-dir ./dinov3_local_run两个坑要先知道submit.py面向 Slurm 设计output_dir缺省是共享存储的%j目录单机必须显式传--output-dirREADME 也注明不走run.submit时可用 python 或 torchrun 直接起脚本。只想加载预训练骨干的话入口是根目录hubconf.py配合hub/backbones.py权重需按 README 指引申请获取。两个设计取舍目录为什么长成这样配方 YAML 名差量、实全量。合并逻辑支持纯差量写法但vitl_im1k_lin834.yaml实际把 dino、ibot、crops 等默认值里已有的大块又声明了一遍——自包含但冗余。好处是每个配方不用对照默认值就能读懂代价是改一个全局默认可能要动十几份 YAMLset_struct严格模式正是为堵住拼错键名这种事故才加的。eval 是一组并列的小项目。eval/下每个任务都有自己的configs/、run.py、schedulers.py、utils.py文件名与顶层自监督训练循环大量重名。这保证了各下游评估可独立复现、各带配方但新人很难判断哪个入口是「官方」的——事实上eval/depth/run.py和eval/linear.py是平级关系都是独立程序README 逐条列出启动命令了事。另外配方注释4 nodes、0.57s/iter说明这套代码面向数百卡集群本机调试第一件事是把 batch size 和OFFICIAL_EPOCH_LENGTH降下来否则学习率与动量 schedule 会失真。接下来可以做什么想动损失或增强从loss/的四个文件和data/augmentations.py下手想接新数据集顺着data/loaders.py的make_dataset解析逻辑和data/datasets/里的注册方式加即可。【免费下载链接】dinov3Reference PyTorch implementation and models for DINOv3项目地址: https://gitcode.com/GitHub_Trending/di/dinov3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/11 3:11:56

RLHF Book 指南:如何从零训出第一个 RLHF 对齐模型?

RLHF Book 指南:如何从零训出第一个 RLHF 对齐模型? 【免费下载链接】rlhf-book Textbook on reinforcement learning from human feedback 项目地址: https://gitcode.com/gh_mirrors/rl/rlhf-book RLHF Book 是一本开源的大语言模型 RLHF&#…

2026/10/15 7:13:17

deque、priority_queue与仿函数:STL容器适配器实战解析

如果你在 C 里写过一段时间,一定遇到过这样的对话:某次代码评审里,同事指着deque说“这个不是双端队列嘛,当栈用也行”,又有人用priority_queue做定时器任务队列,结果排序规则写反,整个调度直接…

2026/10/15 7:13:17

藏区特产电商平台毕业设计全复盘:从表设计到订单状态机实现

做了很多年开发,看过不少学生的毕设选题,印象最深的不是那些复杂炫技的系统,而是我当年自己做的“藏区特产销售平台”这个毕业设计。当时就想着,与其再去做一个千篇一律的图书商城、二手交易平台,不如扎进一个真实存在…

2026/10/15 7:13:17

Claude Code完全指南:从安装配置到自动化重构的终端AI编程助手

最近在改一个老项目,数据库连接方式要从头换一遍,光受影响的文件我在全局搜索里数了数,快四十个。以前碰到这种杂活,我都是泡杯咖啡,开好几个编辑器分屏,一个文件一个文件地改,改完还得编译、跑…

2026/10/15 7:13:17

AI编程协作工作流:任务驱动的工程化实践指南

1. 项目概述:这不是一份“教程”,而是一套可复用的AI编程协作工作流“2 万 Star,我的 AI 编程教程被豆包推荐了!”——看到这个标题,很多开发者第一反应是点开找链接、抄代码、速成。但作为连续三年带团队落地AI辅助开…

2026/10/15 7:13:17

最新V1.5.rar解压与运行全指南:从校验到部署的工程实践

简介:科东纵向加密客户端V1.5是面向电力系统运维与安全技术人员的一款安全通信工具,配合科东PSTunnel2000加密装置使用,用于解决调度指令、电网运行状态等敏感数据在跨区域、跨层级网络节点间传输时的保密与防篡改问题。资源以rar压缩包形式提…

2026/10/15 7:08:16

YOLOv8路面裂缝检测系统开发实践:从数据到部署全流程

我已经在多个项目里用过YOLO系列做视觉检测,但真正让我觉得“这套流程可以沉淀下来复用”的,还是最近完成的这个路面裂缝检测系统。起因是某交通巡检项目需要把道路裂缝从现场照片里自动识别出来,效率要求接近实时,同时还得应付不…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/14 17:41:07

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/14 2:32:55

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/15 0:02:22

防关联浏览器哪个好?三款产品实测差异解析

新手做多店铺,最纠结的就是防关联浏览器选哪个。飞跨、网易、站斧这三款被问得最多,先给结论:要一体化省心、长期便宜,选站斧;要网易招牌和稳,选网易;预算紧做东南亚 Lazada,选飞跨。…

2026/10/15 0:02:22

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成 一、技术背景 大模型(LLM)在通用场景下表现强大,但当我们将 GPT-4 或 Qwen 直接用于生成影刀RPA操作指令和 XPath 定位时,准确率通常只有 40%-60%。原因…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑