Oscar-实验过程记录
下载实验源码
https://github.com/microsoft/Oscar
服务器安装azcopy
给的都是azcopy的方式(第一次用),先安装azcopy
- wget -O azcopy.tar.gz https://aka.ms/downloadazcopy-v10-linux (服务器没通过,似乎是安全问题)
- https://docs.microsoft.com/zh-cn/azure/storage/common/storage-use-azcopy-v10#download-azcopy(官网手动下载,上传至服务器)
- 添加系统路径(参考文章 https://blog.csdn.net/rav009/article/details/103802232,将azcopy添加至系统路径,在文件末尾添加PATH)
使用azcopy下载数据集
不知道是服务器的网络原因还是什么别的原因,服务器无法使用azcopy,最后还是在windows上用azcopy下载,然后二手转交给服务器吧
问了一下,这几个数据集最小的也几十个G,大的几百G,我还是去调下服务器吧。。
服务器用校园网登陆就好了,之前是因为无法访问外网导致的似乎
下载到一半又断了,现在连重登陆都不行了(不会还计费吧。。。)
azcopy copy ‘https://biglmdiag.blob.core.windows.net/vinvl/datasets/coco_caption’ ‘/data/guojiahua/Oscar’ --recursive
azcopy copy ‘https://biglmdiag.blob.core.windows.net/vinvl/datasets/nocaps’ ‘/data/guojiahua/Oscar’ --recursive
azcopy copy ‘https://biglmdiag.blob.core.windows.net/vinvl/datasets/coco_ir’ ‘/data/guojiahua/Oscar’ --recursive
azcopy copy ‘https://biglmdiag.blob.core.windows.net/vinvl/datasets/vqa’ ‘/data/guojiahua/Oscar’ --recursive
azcopy copy ‘https://biglmdiag.blob.core.windows.net/vinvl/datasets/gqa’ ‘/data/guojiahua/Oscar’ --recursive
azcopy copy ‘https://biglmdiag.blob.core.windows.net/vinvl/datasets/nlvr2’ ‘/data/guojiahua/Oscar’ --recursive
azcopy copy ‘https://biglmdiag.blob.core.windows.net/vinvl/image_features/coco_X152C4_frcnnbig2_exp168model_0060000model.roi_heads.nm_filter_2_model.roi_heads.score_thresh_0.2/model_0060000/’ ‘/data/guojiahua/Oscar’ --recursive
azcopy copy ‘https://biglmdiag.blob.core.windows.net/vinvl/image_features/flickr30k_X152C4_frcnnbig2_exp168model_0060000model.roi_heads.nm_filter_2_model.roi_heads.score_thresh_0.2/model_0060000/’ ‘/data/guojiahua/Oscar’ --recursive
azcopy copy ‘https://biglmdiag.blob.core.windows.net/vinvl/image_features/coco_X152C4_frcnnbig2_exp168model_0060000model.roi_heads.nm_filter_2_model.roi_heads.score_thresh_0.2/model_0060000/’ ‘/data/guojiahua/Oscar’ --recursive
azcopy copy ‘https://biglmdiag.blob.core.windows.net/vinvl/image_features/gqa_X152C4_frcnnbig2_exp168model_0060000model.roi_heads.nm_filter_2_model.roi_heads.score_thresh_0.2/model_0060000/’ ‘/data/guojiahua/Oscar’ --recursive
环境安装
https://github.com/microsoft/Oscar/blob/master/INSTALL.md
服务器驱动最旧的是10.1的,没法装pytorch1.2.0,最后装的1.4.0,不知道会不会有影响
安装apex的时候需要nvcc。安装参考
https://blog.csdn.net/qq_34869928/article/details/100544888
最后参考的apex的GitHub主页上的安装方法安装成功了。
https://github.com/NVIDIA/apex
VPN安装
安装了XMANAGER和QV2RAY,但是并没有效果
下载还是全随缘
APEX版本问题
apex.amp模块找不到
找到了2020年发布的APEX旧版本,成功解决。
huggingface.transformer问题
ModuleNotFoundError: No module named ‘transformers.pytorch_transformers’
似乎是官方安装教程不太对,不要直接
pip install transformers
要先把代码git下来,然后在目录里这样安装:
pip install .
urllib3的问题
- from urllib3 import exceptions
ImportError: cannot import name ‘exceptions’ from ‘urllib3’ (unknown location)
解决办法:https://github.com/urllib3/urllib3安装
request的问题
- import requests
ModuleNotFoundError: No module named ‘requests’
解决办法:
pip install requests (这条无法解决问题)
conda install requests(这条可以解决)
regex的问题
- import regex as re
ModuleNotFoundError: No module named ‘regex’
解决办法:
conda install regex
yaml的问题
import yaml
ModuleNotFoundError: No module named ‘yaml’
解决办法:
conda install yaml (没有解决)
conda install pyyaml(注意名字区别)
model name&path
transformers.pytorch_transformers.modeling_utils - Model name ‘/data/guojiahua/transformers/uncased_L-12_H-768_A-12’ was not found in model name list (bert-base-uncased, bert-large-uncased, bert-base-cased, bert-large-cased, bert-base-multilingual-uncased, bert-base-multilingual-cased, bert-base-chinese, bert-base-german-cased, bert-large-uncased-whole-word-masking, bert-large-cased-whole-word-masking, bert-large-uncased-whole-word-masking-finetuned-squad, bert-large-cased-whole-word-masking-finetuned-squad, bert-base-cased-finetuned-mrpc). We assumed ‘/data/guojiahua/transformers/uncased_L-12_H-768_A-12/config.json’ was a path or url but couldn’t find any file associated to this path or url.
问题原因:参数–model_name_or_path的写法不对(要指向json文件)
- 错误写法:–model_name_or_path /data/guojiahua/transformers/uncased_L-12_H-768_A-12
- 正确写法:–model_name_or_path /data/guojiahua/transformers/uncased_L-12_H-768_A-12/bert_config.json \
args的问题
- config.img_layer_norm_eps = args.img_layer_norm_eps
AttributeError: ‘NoneType’ object has no attribute ‘img_layer_norm_eps’
解决办法:解决了其他问题后自动解决了
model问题
- total_params = sum(p.numel() for p in model.parameters())
UnboundLocalError: local variable ‘model’ referenced before assignment
需要用到一些debug,不想再用print了,太难用了。
学了下远程连接调试,配置搞了一下午,走了不少弯路,感觉应该挺有用的。
https://blog.csdn.net/weixin_44283458/article/details/105426833
发现在此语句
BertImgForPreTraining.from_pretrained(
args.model_name_or_path,
from_tf=bool(’.ckpt’ in args.model_name_or_path),
config=config)
此为官方的加载模块,进入内部,发现一处源码错误:
if pretrained_model_name_or_path in cls.pretrained_config_archive_map:config_file = cls.pretrained_config_archive_map[pretrained_model_name_or_path]
elif os.path.isdir(pretrained_model_name_or_path):config_file = os.path.join(pretrained_model_name_or_path, CONFIG_NAME)
else:config_file = pretrained_model_name_or_path
逻辑:
- 判断是否是简写, 如果是则下载或读取缓存(不推荐,因为学校服务器空间少)
- 判断是否为路径, 如果是则在路径中寻找config.json(问题在于,随着huggingface的模型越来越多,config.json已经改名MODEL_config.json了,因此这里应该为bert_config.json)
混合精度的LayerNorm问题
更改正确后可以正常读取模型参数文件:
但是在加载LayerNorm的时候会报错:
self.LayerNorm = BertLayerNorm(config.hidden_size, eps=config.layer_norm_eps)
查看了BertLayerNorm的方法,发现其来自APEX库,并非huggface,因此怀疑大概又是版本问题:
from apex.normalization.fused_layer_norm import FusedLayerNorm as BertLayerNorm
源代码中此代码段被try包裹,因此看不到任何报错信息,将try去掉后可见:
Traceback (most recent call last):
File “oscar/run_oscarplus_pretrain.py”, line 556, in
main()
File “oscar/run_oscarplus_pretrain.py”, line 266, in main
config=config)
File “./oscar/modeling/modeling_utils.py”, line 801, in from_pretrained
model = cls(config, *model_args, **model_kwargs)
File “./oscar/modeling/modeling_bert.py”, line 975, in init
self.bert = BertImgModel(config)
File “./oscar/modeling/modeling_bert.py”, line 155, in init
self.embeddings = BertEmbeddings(config)
File “./transformers/pytorch_transformers/modeling_bert.py”, line 253, in init
self.LayerNorm = BertLayerNorm(config.hidden_size, eps=config.layer_norm_eps)
File “/home/guojiahua/miniconda3/envs/oscar/lib/python3.7/site-packages/apex/normalization/fused_layer_norm.py”, line 133, in init
fused_layer_norm_cuda = importlib.import_module(“fused_layer_norm_cuda”)
File “/home/guojiahua/miniconda3/envs/oscar/lib/python3.7/importlib/init.py”, line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named ‘fused_layer_norm_cuda’
可见是apex包内部出现的问题, 前往查找解决方案:
解决要点:
- 查看nvcc版本
- 查看pytorch.version.cuda版本
- 保持上述二者版本一致
- 找到对应版本的apex的branch,参考:https://github.com/NVIDIA/apex/issues/802
tensorboardX报错
pip install tensorboardx
load() missing 1 required positional argument: ‘Loader’
这个问题是pyyaml的版本过高引起的,为了不修改源代码,将pyyaml降级
参考:https://blog.csdn.net/qq_33580192/article/details/121080535
pip uninstall pyyaml
pip install pyyaml==5.4.1
数据路径报错
No such file or directory: ‘/data/guojiahua/Oscar/X152C4_frcnnbig2_exp168model_0060000model.roi_heads.nm_filter_2_model.roi_heads.score_thresh_0.2/coco/imageid2idx.json’
- /data/guojiahua/Oscar 对应参数–data_dir
- /X152C4_frcnnbig2_exp168model_0060000model.roi_heads.nm_filter_2_model.roi_heads.score_thresh_0.2/coco/ 读取自yaml文件
- imageid2idx.json 应该是代码中写的
Imageid2idx file /data/guojiahua/Oscar/vinvl/image_features/coco_X152C4_frcnnbig2_exp168model_0060000model.roi_heads.nm_filter_2_model.roi_heads.score_thresh_0.2/model_0060000/imageid2idx.json does not exists!
- 解决方法同上
No such file or directory: ‘/data/guojiahua/Oscar/coco_flickr30k_gqa.lineidx’
-猜测应该是指tsv文件
减少预训练数据的方法
修改yaml文件中的corpus数据项
缺少.lineidx文件
找了github 并没有这个结尾的文件
猜测是代码错写成lineidx 实则为tsv文件
但是读了代码之后发现并不是,尝试将https://biglmdiag.blob.core.windows.net/vinvl/pretrain_corpus/coco_flickr30k_gqa.tsv的后缀更改为lineidx后,发现可以访问,此问题可以解决
缺少prediction_gt.tsv文件
通过github提供的地址下载来的数据集只有prediction.tsv
去读读代码,看_gt是哪里来的,gt应该是ground-truth的缩写
首先还是猜测代码写错了,改文件名过来试试看
还要继续减少图片数量
光coco的加载就要耗时1小时
芜湖 跑起来了
Oscar-实验过程记录相关推荐
- Vertica集群扩容实验过程记录
需求: 将3个节点的Vertica集群扩容,额外增加3个节点,即扩展到6个节点的Vertica集群. 实验环境: RHEL 6.5 + Vertica 7.2.2-2 步骤: 1.三节点Vertica ...
- HRSC2016舰船检测训练实验过程记录
博主目前正尝试使用HRSC2016图片1000张多左右,每张舰船约1-3只,分辨率为 1182*827 用以finetune textboxes++,实现任意方向的目标的检测 训练过程参考: 利用ca ...
- 软件测试实验过程记录
软件测试 题目1 电话号码问题 某城市电话号码由三部分组成.它们的名称和内容分别是: (1)地区码:空白或三位数字: (2)前 缀:非'0'或'1'的三位数字: (3)后 缀:4 位数字. 假定被测程 ...
- 脑电实验注意事项及实验过程中伪迹识别
点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 Rose分享一篇群友 Tina关于脑电实验的学习笔记,感谢脑机社区群友Tina的分享. 实验前准备 1.填写被试信息及知 ...
- tensorflow 实验过程可重复
在做科研时使用tensorflow作为算法开发工具.后来有了更好用的pytorch之后,由于很多基础代码都是用tensorflow编写的,所以,就没有转到pytorch上来. 最近在写论文,比较重视算 ...
- 一卡通(M1卡)破解过程记录——理论篇
前些日子在研究学校的一卡通安全,在此记录一下一卡通破解的全过程,仅用作学习交流,切勿用于违法用途 其他几篇: 一卡通(M1卡)破解过程记录--准备篇 获取扇区密钥 ...
- kali实验过程与结果讲解
kali实验过程与结果讲解(学习) 前期准备:打开虚拟机,开启完毕后会显示服务器的ip 1. 收集此服务器的信息. 1) 开放的端口及服务 nmap 192.168.100.100 通过命令查看目标I ...
- Lab1实验过程及心得体会
实验过程 1 Magic Squares 检验矩阵是否是幻方矩阵.首先要检验文本中输入数据是否满足规范(包括是否构成方阵.是否按要求将数据以制表符隔开.是否包含小数和负数.是否有非法字符等),在满足规 ...
- 树莓派3B实现软路由过程记录(无线网络通过网线共享给台式机)
树莓派3B实现软路由过程记录 背景 实验过程 准备openwrt固件 向TF卡里刷入固件 设置路由器 总结 背景 实验室有一台台式机电脑,没有无线网卡,之前一直使用有线网上网,但体验极差.后实际测试时 ...
- Linux嵌入式驱动开发07——GPIO驱动过程记录(飞凌开发板)
文章目录 全系列传送门 1. 在/arch/arm/boot/dts/imx6q-pinfunc.h查找 2. 在设备树配置文件中添加设备节点定义以及其引脚定义 3. 修改设备树文件添加配置 4. d ...
最新文章
- php显示服务器文件,php-无法显示从新服务器下载文件的进度(在以前的服务器上工作)...
- 命令查看java的class字节码文件、verbose、synchronize、javac、javap
- JDK5--Annotation学习:基础(二)
- 获取当天日期、昨天日期
- 圣思园java.doc_北京圣思园java课堂笔记.doc
- [转载] python导入numpy函数库
- 2.TCP/IP 详解卷1 --- 链路层
- Ubuntu16.04编译Android6.0/cm13.0教程及相关错误解决办法
- Java面经-海康威视
- C++写OpenCV图像灰度化
- 海康云台摄像机 ISAPI 的签名机制与语音传输
- destoon ajax_area_select,destoon城市地区两级联动
- php框架 f,ShuipFCMS: ShuipFCMS是一款基于ThinkPHP框架开发的内容管理系统!
- 三维建模,三维地理信息的作用
- python使用openCV图像加载(转化为灰度图像)、平滑图像处理就是将每个像素的值变换为其相邻元素的平均值、可视化平滑处理之后的图像(Blurring Images)
- 自媒体创作没思路?这4款内容创作爆文神器助你摆脱内容瓶颈!
- 一人干翻专业机构,27岁华裔小伙一战成名!搞出美国新冠最准预测模型,彭博:Superstar
- 什么是操作系统中所说的原语(Primitives)
- VUE+VSCODE(新建一个项目)
- 飞腾2000/4C调试问题记录