博客 / 詳情

返回

[OpenVLA] All attempts to get a Google ... token failed

如果你已經把數據集和模型下載到本地了,但是還是跑不通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)

            • infoFileReaderBuilder基類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是數據集的目錄(到版本號)
  • DatasetImporterBuilderget_dataset_location(self)self._GCS_BUCKET改成self._data_dir_root
  • https://github.com/tensorflow/datasets/blob/master/tensorflow_datasets/robotics/dataset_importer_builder.py
  • 解決
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.