参考文献
- GitHub - lucidrains/performer-pytorch: An implementation of Performer, a linear attention-based transformer, in Pytorch(2022年4月30日参照).
- GitHub - idiap/fast-transformers: Pytorch library for fast transformer implementations(2022年4月30日参照).
- unable to import cuda code for auto-regressive Performer · Issue #15 · lucidrains/performer-pytorch · GitHub(2022年4月30日参照).
- causal_product_cuda.cu,Error compiling objects for extension · Issue #23 · idiap/fast-transformers · GitHub(2022年4月30日参照).
- WSL2 上の Ubuntu での NVIDIA CUDA ツールキット, NVIDIA cuDNN, PyTorch, TensorFlow 2.7 のインストールと動作確認(Windows 上)(2022年4月30日参照).
問題
昨日、performer_pytorch(v1.1.4)をインストールしてモデルにデータを流すと以下のメッセージがた。unable to import cuda code for auto-regressive Performer. will default to the memory inefficient non-cuda version
試行1
ただ昨日は見落としていたのだが、performer_pytorch のリポジトリ [1] の README をみると、自己回帰モデルを学習する場合は requirements.txt もインストールするようにあった。requirements.txt の中身は pytorch-fast-transformers [2] だけである。ちゃんとこれをインストールする。v0.4.0 がインストールされたようにみえる。$ pipenv install performer-pytorch $ pipenv install pytorch-fast-transformers
これでもう一度昨日のコードを実行してみたが結果は変わらず先のメッセージが出た。
試行1.1
まず pytorch-fast-transformers がきちんとインストールできているのかとなるが、README の Quik-start のコードは問題なく実行できた。ただ、先のメッセージの出元では fast_transformers.causal_product.causal_product_cuda なるものを import していることがわかる。import fast_transformers.causal_product.causal_product_cuda
これが手元で import してみると実際 import できない。
ModuleNotFoundError: No module named 'fast_transformers.causal_product.causal_product_cuda'
この causal_product_cuda が、fast_transformers の昔の版ではあったが現在はないという恐れがあるが、リポジトリ [2] をみるに現在もある。となると、やはり fast_transformers のインストール方法が誤っていたか必要なパッケージがないと思われる。
そもそも performer_pytorch で件のメッセージが出る問題は Issues にあげられており [3]、解消したという最新のコメントをみると fast_transformers を GitHub からインストールしている。ので、それに倣うならこうなる。が、単にこうしても解消はしなかった。
pipenv install git+https://github.com/idiap/fast-transformers.git#egg=pytorch-fast-transformers