tensorboard VS Weights & Biases

可视化工具tensorboard VS Weights & Biases

目录

1. tensorboard 安装使用

1.1 安装

2. Weights & Biases安装使用

3. ssh -L -R的解释


1. tensorboard 安装使用

1.1 安装

# 安装
    # pytorch1.1
    pip install tensorboard==1.14
    # pytorch1.6
    pip install tensorboard==2.0
    # pytorch1.7
    pip install tensorboard==2.2

# 使用
    # 训练时,可在docker容器内使用,但是查看tensorboard时,需要在外面,任意1个版本即可
    # 指定端口号
    tensorboard --logdir='./experiment_one/' --port=6006
    # 若在远端(需要建立ssh连接) 建立远程服务器6006端口到本地16006端口的转发
    # 若有多个,则将本地端口号设置成不同的eg:16007
    ssh -fgN -L 16006:127.0.0.1:6006 leilei@192.168.200.20
    ssh -fgN -L 16007:127.0.0.1:6007 leilei@192.168.200.20
    # 在浏览器内输入如下内容
    127.0.0.1:16006


 

2. Weights & Biases安装使用

# 安装
    pip install wandb
    详情:https://wandb.ai/site
# 缺点
    需要注册账号,像CPU GPU等信息会不会泄露?

3. ssh -L -R的解释

中文好多博客解释很多,都没解释清楚,可以搜英文or看这里这个连接:http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html

查看ssh的具体命令,可以用 “man”命令,man ssh

'''
注释:
    ssh -L 是我向别人请求帮忙
    ssh -R 是别人通过我帮忙,我只负责传输不负责监听端口
    L:A->B,至于B->A??无所谓 我是A
    R:A<-B,至于A->B??无所谓 我是B
eg:
    AB不互通,A->C, C->B,那么就可以-L(在A上),A作为我,去请求C帮忙,即可达到A->B
    AB不互通,A<-C, C->B, 那么就可以-R(在C上),C作为我,帮助A去访问B,即可A->B
    至于 <=> 是充分非必要条件
    
    AB不互通,A->C, B->C,A->B? 那么C如何连接B呢?通过-R,-R是在B上运行,主动方向是想实现C->B
    
    A<-C<-B, 实现A->B, 在BC上各自运行-R,这样比较稳定;也可以B->C->A为-L(在C上),
             然后A->B可以-R在B上
核心:
    A->B, A主动想要从B上建立连接,那么-L,-L在A上,localhost是相对B而言的
    A<-B, A主动想要从B上建立连接,那么-R,-R在B上,localhost是相对B而言的
    自己与自己是互联<=>, 即 A<-B(C)->B
'''

如下截图为转载http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html

-L localhost-目标主机是相对的,看箭头依赖情况即可A->C->B,-L 在A上运行,-L A-P(本地端口号):B:B-P C,B是相对C的;

-R localhost-目标主机是相对的,看箭头依赖情况即可A<-C->B, -R 在C上运行,-R A-P(远端口号):B:B-P A,B是相对C的,因此localhost也是相对C的

 

train: weights=pretrained/yolov5s.pt, cfg=mask_yolov5s.yaml, data=mask_data.yaml, hyp=data\hyps\hyp.scratch.yaml, epochs=100, batch_size=4, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, evolve=None, bucket=, cache=None, image_weights=False, device=0, multi_scale=True, single_cls=False, adam=False, sync_bn=False, workers=0, project=runs\train, name=exp, exist_ok=False, quad=False, linear_lr=False, label_smoothing=0.0, patience=100, freeze=0, save_period=-1, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest github: skipping check (not a git repository), for updates see https://github.com/ultralytics/yolov5 YOLOv5 2025-3-18 torch 2.4.1 CUDA:0 (NVIDIA GeForce RTX 4060 Laptop GPU, 8188MiB) hyperparameters: lr0=0.01, lrf=0.1, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0 Weights &amp; Biases: run &#39;pip install wandb&#39; to automatically track and visualize YOLOv5 runs (RECOMMENDED) TensorBoard: Start with &#39;tensorboard --logdir runs\train&#39;, view at http://localhost:6006/ train.py:115: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `to
03-24
&lt;think&gt;好的,我现在要解决用户在YOLOv5训练过程中遇到的关于torch.load的FutureWarning警告问题。首先,我需要仔细理解用户的问题。用户提到在使用YOLOv5的train.py时,出现了关于torch.load的警告,指出weights_only=False存在安全隐患,未来版本会默认设为True,建议显式设置weights_only=True。用户希望解决这个警告以及相关的恶意代码风险。 首先,我需要回忆一下PyTorch中torch.load函数的相关知识。根据引用[1],这个警告是因为当前代码中使用了weights_only=False,而PyTorch未来版本会默认改为True。当weights_only=False时,PyTorch使用pickle加载模型,这可能执行任意代码,存在安全风险。而设置为True会限制只加载张量数据,避免执行恶意代码。因此,解决方案应该是修改代码,显式设置weights_only=True。 接下来,我需要检查用户提供的引用内容,确保解决方案正确。引用[1]明确指出建议设置weights_only=True,并且引用[4]也提到了类似的问题。因此,用户需要找到YOLOv5代码中使用torch.load的地方,并修改参数。 但YOLOv5的代码可能在哪里调用torch.load呢?通常,模型加载可能出现在训练脚本或者模型加载的部分。用户提到的是train.py,所以可能需要检查train.py中是否有加载预训练权重的代码。例如,在加载预训练模型时,可能会使用torch.load来读取.pth文件。 接下来,我需要考虑如何修改代码。根据PyTorch文档,torch.load的参数中有一个weights_only,从某个版本开始支持。用户需要确保他们的PyTorch版本足够新,支持这个参数。如果版本过低,可能没有这个选项,但根据警告信息,这应该是较新版本PyTorch的警告,所以用户可能已经使用了支持该参数的版本。 然后,用户需要找到代码中调用torch.load的位置,通常是这样的行: model = torch.load(weights_path, map_location=device) 然后将其改为: model = torch.load(weights_path, map_location=device, weights_only=True) 但是,需要确认torch.load是否接受weights_only参数。查阅PyTorch文档,发现从1.10.0版本开始,torch.load增加了weights_only参数。如果用户的PyTorch版本低于此,可能需要升级。不过,根据警告信息,用户可能已经使用了较新的版本,因为警告提到未来版本会更改默认值。 此外,用户可能还需要处理其他相关的问题,比如自定义的模型结构是否与加载的权重兼容。因为当weights_only=True时,只能加载张量数据,不能包含其他对象,如果保存的模型包含自定义类或函数,可能会出错。但YOLOv5的标准模型保存应该只包含状态字典,因此设置weights_only=True应该是安全的。 另外,用户提到的引用[3][4]中提到的其他警告,比如关于torch.cuda.amp.autocast的警告,可能需要另外处理,但当前问题集中在torch.load的警告上,所以可以暂时忽略其他警告,除非用户有进一步的问题。 总结步骤: 1. 找到YOLOv5代码中使用torch.load的地方,通常在utils部分或train.py中加载模型权重的部分。 2. 修改这些调用,添加weights_only=True参数。 3. 确保PyTorch版本支持该参数,必要时升级PyTorch。 4. 测试修改后的代码,确认警告消失,并且模型能正常加载训练。 可能遇到的问题: - 如果代码中有多个torch.load调用,需要全部修改。 - 如果保存的模型文件包含非张量数据,设置weights_only=True会导致加载失败,需要检查模型保存方式。但YOLOv5通常保存state_dict,所以应该没问题。 - 如果用户的PyTorch版本过低,可能不支持weights_only参数,需要升级到1.10及以上。 最后,生成相关问题,帮助用户深入理解可能遇到的关联问题,例如如何安全加载模型,处理其他PyTorch警告等。&lt;/think&gt;[用户可见层] ### 解决YOLOv5训练中`torch.load`的FutureWarning警告 #### 问题原因 1. **安全性警告**:YOLOv5的`train.py`在加载模型权重时使用了`torch.load(weights, ..., weights_only=False)`,这会触发PyTorch的FutureWarning。该参数允许加载任意对象(包括潜在恶意代码),存在安全风险[^1]。 2. **默认值变更**:未来版本的PyTorch将默认使用`weights_only=True`,仅加载张量权重,避免执行不安全代码[^4]。 #### 解决方案 1. **显式设置`weights_only=True`** 修改YOLOv5代码中所有`torch.load()`调用,添加参数`weights_only=True`。例如: ```python # 原代码 model = torch.load(weights_path, map_location=device) # 修改后 model = torch.load(weights_path, map_location=device, weights_only=True) ``` 通常在以下文件中需要修改: - `models/experimental.py` - `utils/torch_utils.py`(`attempt_load`函数) - `train.py`中加载预训练权重的部分[^1]。 2. **检查PyTorch版本** 确保PyTorch版本&ge;1.10.0(支持`weights_only`参数)。升级命令: ```bash pip install --upgrade torch ``` 3. **验证模型兼容性** `weights_only=True`仅加载张量数据,需确保模型文件(如`.pt`或`.pth`)不包含自定义类或函数。YOLOv5的标准权重文件通常安全。 #### 其他注意事项 - **依赖冲突**:若存在其他库(如`mmcv`)导致环境冲突,建议卸载后重新安装YOLOv5的依赖[^3]。 - **AMP警告处理**:类似`torch.cuda.amp.autocast`的警告需修改为`torch.amp.autocast(&#39;cuda&#39;, ...)`,但需确认代码库是否已适配新版语法[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值