在深度学习炼丹过程中,总会遇到各种奇怪问题,这个时候总会在csdn和知乎平台找到答案,那每次遇到的问题是解决了,但没有记录起来,确实太可惜,因为未来某个时间或者某个人会遇到类似问题,所以在这片文章专项整理,pytorch、python、conda、pip等问题,希望能给大家更多帮助
如果报错在你自己的代码中,这一般和自己的代码逻辑错误有关了:
1.检查代码,看是否是训练时loss成为nan,可以更换词向量的拼接方式等。
2.如果是分类任务,可能是标签个数不对应。
参考一篇文章,可以尝试在代码中加入:torch.backends.cudnn.enable =True, torch.backends.cudnn.benchmark = True。(对于我的问题没有用)
这种问题操作tensor异常,如数组越界、精度不匹配等
出现nan的原因来自于src_key_padding_mask,src_key_padding_mask 是一个二值化的tensor,在需要被忽略地方应该是True,在需要保留原值的情况下,是False。检查发现src_key_padding_mask全为True,此时会导致编码后结果全为nan。
解决方法是更新mask或不使用mask。
解决方法
batch_data[1].permute([1,0,2]).contiguous()
参考资料:
https://www.jianshu.com/p/51678ea7a959
原因:optimizer加载参数时,tensor默认在CPU上,故需将所有的tensor都放到GPU上,否则:在optimizer.step()处报错:RuntimeError: expected
device cpu but got device cuda:0。
optimizer = model.configure_optimizers(weight_decay, learning_rate, (beta1, beta2), device_type=cfg.device)
optimizer.load_state_dict(checkpoint['optimizer'])
for state in optimizer.state.values():
for k, v in state.items():
if torch.is_tensor(v):
state[k] = v.to(cfg.device)
解决方案:
一般会在用户主目录下会有一个自动生成的 .cache文件夹(有可能是隐藏状态,需要你打开显示隐藏文件选项),将这个文件夹删除即可,可以重新生成.cache文件夹,然后就不会有冲突啦
解决方法:
下载apex安装文件,手动安装!不再使用pypi管理的apex!
1、git clone git://github.com/NVIDIA/apex
2、cd apex
3、pip install -v --no-cache-dir ./
注:通过pip install apex 是不是nvidia官方文件
注:问题还在定位分析中
问题原因:
缺少cudatoolkit
解决方法:
conda install cudatoolkit=11.7 -c nvidia
问题1:sqlalchemy+pandas.read_sql)AttributeError: ‘Engine‘ object has no attribute ‘execution_options‘
场景:通过数据库sql ,使用pandas.read_sql读取数据,
分析:SQLAlchemy v2.0.0版本和V1.X.X版本差别较大,同样代码,2.0.0版本以上无法运行
解决方案:
添加文本导入 ,将执行sql传到text方法
from sqlalchemy import create_engine, text
s_settings_df = pd.DataFrame(engine_cloud.connect().execute(text(query)))
问题1:An unexpected error has occurred. Conda has prepared the above report. If submitted, this report will be used by core maintainers to improve future releases of conda.
场景:
在主机上的服务器里用miniconda安装新环境时,输入
conda create -n chatgpt python==3.8.0时安装失败,遇到了An unexpected error has occurred. Conda has prepared the above report.问题。.
分析:我遇到这个问题是因为我改动了miniconda 安装类库路径了,因为我有台服务器根目录空间不够
解决方案:在网上查阅好多资料,都试过了,最终没解决问题,最后采用卸载minicoda后,重新安装,指定下新目录
参考资料:
背景:pip 安装torch库,代码如下
pip install -I https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp38-cp38-linux_x86_64.whl
原因:pip install的过程中使用/tmp目录临时存放build需要的文件,而/tmp目录空间不足,从而导致无法安装
解决方案:
将/tmp目录大文件删除,
执行命令,可以帮我们找到/tmp目录大文件
du -h --max-depth=1 | sort -hr
场景:pip 安装torch库,代码如下
pip install -I https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp38-cp38-linux_x86_64.whl
原因:因问题1 删除了pip相关临时文件导致
解决方案:
将~/.cache/pip/ 所有文件删除
下面给出几种**.cache文件清理方法**以供参考:
参考资料:https://blog.csdn.net/qq_36332660/article/details/129241167
直接用pip install clip,但此clip非彼clip,建议直接安装官网git代码仓库
网速快方式: pip install git+https://github.com/openai/CLIP.git
网上慢方式:
问题2:model, preprocess = clip.load(‘ViT-L/14’) certificate verify failed: self signed certificate in certificate chain
场景:精简下核心代码,如下:
import torch
import clip
from PIL import Image
device = "cuda" if torch.cuda.is_available() else "cpu"
model, preprocess = clip.load("ViT-B/32", device=device)
原因:网络不行呗,没梯子,但有懒着弄
解决方案:
手动下载吧,分析下clip源码,涉及下载操作有1个核心文件
clip.py
内容如下:
_MODELS = {
"RN50": "https://openaipublic.azureedge.net/clip/models/afeb0e10f9e5a86da6080e35cf09123aca3b358a0c3e3b6c78a7b63bc04b6762/RN50.pt",
"RN101": "https://openaipublic.azureedge.net/clip/models/8fa8567bab74a42d41c5915025a8e4538c3bdbe8804a470a72f30b0d94fab599/RN101.pt",
"RN50x4": "https://openaipublic.azureedge.net/clip/models/7e526bd135e493cef0776de27d5f42653e6b4c8bf9e0f653bb11773263205fdd/RN50x4.pt",
"RN50x16": "https://openaipublic.azureedge.net/clip/models/52378b407f34354e150460fe41077663dd5b39c54cd0bfd2b27167a4a06ec9aa/RN50x16.pt",
"RN50x64": "https://openaipublic.azureedge.net/clip/models/be1cfb55d75a9666199fb2206c106743da0f6468c9d327f3e0d0a543a9919d9c/RN50x64.pt",
"ViT-B/32": "https://openaipublic.azureedge.net/clip/models/40d365715913c9da98579312b702a82c18be219cc2a73407c4526f58eba950af/ViT-B-32.pt",
"ViT-B/16": "https://openaipublic.azureedge.net/clip/models/5806e77cd80f8b59890b7e101eabd078d9fb84e6937f9e85e4ecb61988df416f/ViT-B-16.pt",
"ViT-L/14": "https://openaipublic.azureedge.net/clip/models/b8cca3fd41ae0c99ba7e8951adf17d267cdb84cd88be6f7c2e0eca1737a03836/ViT-L-14.pt",
"ViT-L/14@336px": "https://openaipublic.azureedge.net/clip/models/3035c92b350959924f9f00213499208652fc7ea050643e8b385c2dac08641f02/ViT-L-14-336px.pt",
}
根据使用需求,将对应模型版本文件下载到~/.cache/clip/,如ViT-B-32.pt模型,然后再执行上述代码就正常了
参考资料:https://zhuanlan.zhihu.com/p/613923088