如果你已经把数据集和模型下载到本地了,但是还是跑不通lora代码,报错
All attempts to get a Google authentication bearer token failed ...
那么本教程适合你
改一行代码解决
在你的python(conda)路径下,找到
python<版本>/site-packages/tensorflow_datasets/robotics/dataset_importer_builder.py
把76行的self._GCS_BUCKET
改成self._data_dir_root
,解决问题
思考过程
以jaco play数据集为例,疯狂的单步调试
我单步调试,都能发现所有路径都在本地。这个报错和我单步调试的断点在哪一行没有关系。只要过某一段时间,无论我是否在执行程序,还是在断点,无论我在哪一行代码,都会自动弹出来这个报错
直到偶然发现了一个不是本地路径的变量。
DatasetImportBuilder
里_info(self)
有问题,本质上是self.get_dataset_location()
错了,必须联网。但是为什么要调用_info()
?builder
return 了JacoPlay
class的实例JacoPlay
没有__init__
,,它继承了DatasetImporterBuilder
DatasetImporterBuilder
也没有__init__
,它继承了GeneratorBasedBuilder
GeneratorBasedBuilder
也没有__init__
,它继承了FileReaderBuilder
FileReaderBuilder
的__init__
中self.info.set_file_format(file_format)
。info
是FileReaderBuilder
基类DatasetBuilder
的一个property
函数,它的值是self._info()
的返回值
_info()
在DatasetBuilder
中是一个抽象类,它在FileReaderBuilder
中也没有重载
GeneratorBasedBuilder
也没有重载_info()
DatasetImporterBuilder
中_info()
出错了
- 而且因为是构造函数出错。所以一旦在debug时想查看self,就会报错。这就叫观测才会导致错误,真正的量子力学
DatasetBuilder
的__init__
也调用了info
,因此只要我在DatasetBuilder
的__init__
调用info
之前观测self
,就不会出错???然而还是不行。大概是因为vscode调试器查看self
的时候就会调用__init__
吧- 但是,查看
self._data_dir_root, self._data_dir = self._build_data_dir(data_dir)
的结果还是可以的。 self._data_dir_root
是根目录(open x embodiment),self._data_dir
是数据集的目录(到版本号)- 把
DatasetImporterBuilder
的get_dataset_location(self)
中self._GCS_BUCKET
改成self._data_dir_root
- https://github.com/tensorflow/datasets/blob/master/tensorflow_datasets/robotics/dataset_importer_builder.py
- 解决
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。