如果你已經把數據集和模型下載到本地了,但是還是跑不通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()?-
builderreturn 了JacoPlayclass的實例-
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
- 解決