2025.7.10学习日记【摸🐟去了,昨天的内容】
0.序
在开启今天的内容之前,想先说明下Autodl上远程主机扩展崩溃的问题,根据网上的经验,说是vscode的版本过高,需要回退到1.96.4版本,并禁止自动更新
【注】:如果你想使用Github带的copilot还是更新至最新版本比较好
- 回退版本:
https://code.visualstudio.com/updates/v1_96 - 禁止自动更新:
https://code.visualstudio.com/docs/supporting/faq#_how-do-i-opt-out-of-vs-code-autoupdates

- 切换显卡模式运行

可以发现扩展可以正常工作了,关键还是在于内存和cpu核心是否足够强大,另外煮啵还发现,是否显示Pylance插件与显示器,也有关系。例如煮啵使用本机的显示器,Pylance可以正常使用,使用实验室的显示器,Pylance就会出现不工作的情况
【注】:发现又出现了扩展不工作的问题,想要完整不间断的提示还是使用Pycharm吧
1.torch.utils.data
torch.utils.data工具包括以下几个数据加载器(dataloader),数据集(dataset),采样器(sampler),以及用于分布式操作的(distributed)
- Sampler:Sampler是采样器模块中的基类,子类包括顺序采样器,随机采样器,子集随机采样器(划分训练集/验证集),批次采样器(按照batch_size采样,默认小于批次的数据被丢弃)
- DataLoader:DataLoader的参数说明如下:

【组合使用】:在组合使用中,Pipeline为由Sampler决定读取的先后顺序,再有DataLoader根据Sampler的顺序装载数据;如果有BatchSampler会根将Sampler获得的迭代器拆分,然后再交由DataLoader装载批次数据.
实际情况中,通常需要重写模块,完成个性化的任务
例如在VGGT的训练任务中,作者重写了dataset类,dataloader
【注2】:对于内部模块有几点需要注意
_module.py表示为Python的内部模块,不建议外部代码直接导入;- 在进行
from package import *,Python默认不会导入下划线开头的模块 - Python对文件名不触发名称修饰,
__module.py为正常的python文件
2.Hydra配置系统
在VGGT的训练文件里,介绍了一种由Facebook开发的一种开源框架,名称为Hydra,依赖于Yaml和omegaconf。
2.1 YAML
YAML是一种文本标记语言,对比其XML和Json的标记语言来说更为简介。YAML文件支持将键值对输入,支持列表输入(Markdown形式的列表或者Python形式的列表),支持引用
2.2 OmegaConf
理解为新字典和新列表即可
OmegaConf是python的第三方库,实现了DictConf和ListConf两个类,去代替Python原生的字典和列表。下面是OmegaConf的官方文档
https://omegaconf.readthedocs.io/en/2.3_branch/
在堆空间中,omegaconf对象可以从python的字典和列表来创建,可以从命令行中读取参数来创建,也可以从YAML文件来创建
- 从原生对象创建:
conf=OmegaConf.create(your_list:List)或者conf=OmegaConf.create(your_dict:Dict) - 从命令行创建:
conf=OmegaConf.from_cli(),命令行参数的输入遵循DictConf字典的赋值方式。
【注】:Notebook中想要模拟命令行参数需要采取如下做法,这里的script_name.py类似于占位符,不需要真实存在,作用是能够解析到后面的参数而已
import sys
sys.argv = ['script_name.py','key.value1=10']
conf = OmegaConf.from_cli()
print(OmegaConf.to_yaml(conf))
- 从YAML文件创建:
conf=OmegaConf.load('your_yaml_file')
此外OmegaConf还支持将conf导出为yaml文件的格式print(OmegaConf.to_yaml(conf),并保存为yaml文件
with open('save_file','w') as f:
OmegaConf.save(config=conf,f=f.name)
2.3 Hydra教程
Hydra官方文档的基础教程网址:https://hydra.cc/docs/tutorials/basic/your_first_app/simple_cli/
- 创建并指定配置文件
Hydra使用装饰器与配置文件yaml,装饰器为函数hydra.main(),需要传入version_base,config_path,config_name.config_name为配置文件的文件名(yaml)
【注】config_name也可以是文件夹,此时被称为配置组
- 可以通过命令行
python my_app.py key.value=1的形式覆盖配置值,这并不会修改原配置的config文件 - 还可以通过命令行
python my_app.py ++key.value=1的形式增加或覆盖配置值,注意使用重加号,单独加号用于命令行添加配置组python my_app.py +Group=Option
- 使用config对象
config对象是通过装饰器加上参数的形式传入应用函数中的 - 创建并为程序添加配置组
创建配置组前需要创建一个目录,将配置文件存放到目录中,例如下图设置hydra.main()中的config_name为conf,此时设置了配置组,或者说设置了包

在没有指定时默认不导入配置组,可以通过命令行去添加python my_app.py +db=mysql - 创建并为程序指定默认配置组
创建cofig.yaml文件,这只hydra.main()中的config_name为config,config文件内部创建defaults关键词的list
【注】:命令行添加相当于手动指定参数,创建config.yaml文件相当于添加了初始化文件。类似于python my_app.py --epochs 10与创建.sh文件并执行bash my_app.sh - 组合运行
利用config达到模块化组合管理,首先需要添加schema和ui配置组

而后编写config.yaml

最后将config传入hydra.main()中完成模块化组合管理
-1.ToDolist
- 【 】Hydra在深度学习中如何使用
- 【 】小智AI聊天机器人硬件清单了解。
- 【 】完成VGGT在co3d数据集上的微调

浙公网安备 33010602011771号