/*******************************************事先声明!********************************************/
这些问题都是我自己搭环境时亲身经历的,只契合与我的本次搭建或者说”游玩“的经历,可能会和大家的不太一样只供参考。
同时我写帖子的两个目的:
一.自己看,写给自己的只为自己总结以期提升,所以有什么问题可以一起探讨,但是别上素质,有用最好,没用咱们就当看一乐子(哎哎哎原来他也这么多报错)
二.分享给所有和我一样挣扎在路上,想让自己更优秀,有朝一日登上彼岸的同伴们,让后来者更容易
来,废话不多说上问题
- error: Could not find suitable distribution for Requirement.parse('PIL');或者no module named 'sklearn';
也就是所谓的PIL报错和sklearn报错,解决办法呢很简单看下图
打开你slow fast的文件夹注意是有build那个,打开setup.py文件把PIL和Sklearn改成现在的版本名分别是pillow和scikit-learn这样系统才能正常找到你的这两个包和相关函数
2.cannot import name 'Cat_all_gather' From 'pytorchvideo.layers.distributed';
这个cat猫猫报错这个的原因时pytorchvideo版本的问题导致没有这个函数,可以去下
这个三个版本的包指定下载就好了好像记忆力有些博主说需要clone之后再本地下载,但是我昨天因为另一个错误(NCCL这个,后面会讲)重新下载时只要指定这三个版本就可以解决。另外在我删掉这三个版本下载网上所谓torch-only版本后,还有意外有报cv2的问题(报错没保存但意思就是未找到你的opencv)但是我在命令框进入python之后import cv2验证时却能正常使用,个人看法是torch的版本太高导致无法兼容,重新安装我的这三个版本之后就好了
3.ModuleNotFoundError: No module named 'vision这个显示找不到vision模块的报错,这个怎么说呢,真的有点离谱,他的问题是在你的slow fast文件中tools那个文件夹里,有关demo,test,train,visualize几个库的import时他的from路径有问题无法识别到几个py文件,所以只要我们改一下路径就你能解决,像这样
将上面的路径改成下面那样就ok了
4.没有ava.json文件,如何修改你自己的.yaml文件(类似SLOWFAST_32x2_R101_50_50.yaml)和Windows系统的nccl的分布式报错(或者说无法用gpu即无法使用cuda训练的都可能遇见的报错)
先说第一个ava.json文件我记着这个文件是不会自己生成的应该是自己建立的.json后缀文件夹然后写入(目录是\SlowFast\demo\AVA)
{"bend/bow (at the waist)": 0, "crawl": 1, "crouch/kneel": 2, "dance": 3, "fall down": 4, "get up": 5, "jump/leap": 6, "lie/sleep": 7, "martial art": 8, "run/jog": 9, "sit": 10, "stand": 11, "swim": 12, "walk": 13, "answer phone": 14, "brush teeth": 15, "carry/hold (an object)": 16, "catch (an object)": 17, "chop": 18, "climb (e.g., a mountain)": 19, "clink glass": 20, "close (e.g., a door, a box)": 21, "cook": 22, "cut": 23, "dig": 24, "dress/put on clothing": 25, "drink": 26, "drive (e.g., a car, a truck)": 27, "eat": 28, "enter": 29, "exit": 30, "extract": 31, "fishing": 32, "hit (an object)": 33, "kick (an object)": 34, "lift/pick up": 35, "listen (e.g., to music)": 36, "open (e.g., a window, a car door)": 37, "paint": 38, "play board game": 39, "play musical instrument": 40, "play with pets": 41, "point to (an object)": 42, "press": 43, "pull (an object)": 44, "push (an object)": 45, "put down": 46, "read": 47, "ride (e.g., a bike, a car, a horse)": 48, "row boat": 49, "sail boat": 50, "shoot": 51, "shovel": 52, "smoke": 53, "stir": 54, "take a photo": 55, "text on/look at a cellphone": 56, "throw": 57, "touch (an object)": 58, "turn (e.g., a screwdriver)": 59, "watch (e.g., TV)": 60, "work on a computer": 61, "write": 62, "fight/hit (a person)": 63, "give/serve (an object) to (a person)": 64, "grab (a person)": 65, "hand clap": 66, "hand shake": 67, "hand wave": 68, "hug (a person)": 69, "kick (a person)": 70, "kiss (a person)": 71, "lift (a person)": 72, "listen to (a person)": 73, "play with kids": 74, "push (another person)": 75, "sing to (e.g., self, a person, a group)": 76, "take (an object) from (a person)": 77, "talk to (e.g., self, a person, a group)": 78, "watch (a person)": 79}
第二个呢打开你的yaml文件(官方下载或者是configs这个文件夹里拿(有的话)我对比GitHub的运行代码和我们运行damo代码得出结论是可以的)
要改的点:
Part 1.加入CHECKPOINT_FILE_PATH:这一行后面跟你pkl文件的路径
Part 2.建两个文件夹作为输入输出并加入这个DENMO的内容写好自己建的包地址(我这里是INPUT和OUTPUT第一个放置我的视频素材第二个就是运行后的视频了)
Part 3.NCCL报错
报错的原因呢大抵就是因为你的电脑无法支持NCCL这种分布式解决办法呢就是找到你文件的C:\Users\ASUS\.conda\envs\SlowFast\Lib\site-packages\torch\distributed这个包(每个人都不一样自己找一下)在自己conda环境下torch文件夹的distributed文件夹里有一distributed_c10d.py这个py文件在他的477行这里有一个init_process_group函数改变他的后端类型(backend)的默认类型,将他强行设置为gloo型,这样只要你不去自己调用时传入NCCL类型就会默认为gloo。这时候你是不是会想那我的项目里那个地方赋值了NCCL是不是还是后报错哈哈哈哈哈哈哈我告诉你是的!所以我们还得使用os改变一下系统的分布式计算后端使用这个代码
import os
os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = 'gloo'
来设置 PyTorch 和 PyTorch Lightning 的分布式计算后端。具体来说,它是在设置一个环境变量,来告诉 PyTorch Lightning 使用 Gloo 后端进行分布式训练。
像这样
这是在代码里改变(我还在run_net.py文件里加了这个环境变量的声明)
另外一种我们可以在终端里设置环境变量
Linux:
export PL_TORCH_DISTRIBUTED_BACKEND=gloo//设置环境变量
python ....................//启动文件
Windows:
set PL_TORCH_DISTRIBUTED_BACKEND=gloo
python ........................
建议修改默认传入,os声明和环境变量配值都可以设置一下我设置完已成功解决
Part 4.gpu的报错可以一起解决
这个问题是承接上述解决NCCL分布式问题之后出现的意思就是你改了分布式但是在自己的.yaml文件里面你还写自己的NUM_GPUS是有的导致的报错也很好解决,下面图片里的NUM_GPUS数目改成0就解决了
ending~
迄今为止我所遇见的关于Windows系统搭建slow fast->damo运行中遇到i的错误就是这些了,写出来供大家互相讨论,进步,指点。
最后目前我遇到一个关于解码是'gbk'类型的问题有查资料说改成UTF-8就能运行但是我有在Vscode打开报错文件显示本就是UTF-8格式暂时无法解决,号召一下有没有大神能启发一下我
ps:HELP~