見出し画像

MulticoreTSNEをインストールするときに詰まった人のためのメモ

pythonモジュールに「MulticoreTSNE」というライブラリがある
このライブラリは、windows 10 64bitだと一発でインストールできない可能性があるので、そのときのことを雑多にメモした。

GitHub - DmitryUlyanov/Multicore-TSNE: Parallel t-SNE implementation with Python and Torch wrappers.
https://github.com/DmitryUlyanov/Multicore-TSNE
これをインストールした時に詰まったのでメモ。TSNEをする人はあまり少ないのかわからないが、これが全然対処法が見つからない。半日でやっと解決できた。

開発環境列挙

インストールしたものは「MulticoreTSNE」== 0.1.1
windows == 10 home (version 1909) 64bit
cpu : i7-8700, Ram memory : 16GB, gpu : GTX 1060
anaconda navigator == 1.9.12
visual stadio 2015 (version==14)
python == 3.6.9
cmake == 3.17.2
windows kits == 8.1
mingw64 == 8.1.0

TSNEを動かすためのライブラリは他にもあるけど、画像を扱っている自分としては、早いライブラリを使いたい(もちろん、並列演算には、処々の問題があることは別の話で、頭のいい方々に任せます)。

「pip install MulticoreTSNE」じゃいかない

上記のgithubにある「DmitryUlyanov/Multicore-TSNE」はREADMEには、いつもの呪文「pip install MulticoreTSNE」で行くよって書いてある。

これがいかない、、、。もちろん、他に提示されている方法、gitクローンでもいいのだが(これもgitクローン作るまでは行けると思う)、自分はwhlファイルをたたくことにした。
「MUlticoreTSNE」のwhlファイルは、下記のサイトに落ちています。
whl.ファイルをダウンロードして、ファイルの場所を参照して
アナコンダプロンプトでフォルダのある場所で「pip install MulticoreTSNE-0.0.1.1-py2.py3-none-win_amd64.whl」を入れてあげれば開かれて、site-packagesに自動で入れられます。
Wheelodex — MulticoreTSNE
https://www.wheelodex.org/projects/multicoretsne/wheels/MulticoreTSNE-0.0.1.1-py2.py3-none-win_amd64.whl/

whlファイルのダウンロードについての参考記事は下記を参照してください。エラーが出た時に有効です。
pip install hogehogeで" ERROR: Command errored out with exit status 1:"と出た時の解決策メモ - Qiita
https://qiita.com/neko-desu/items/25139c735f0acc1ecc76

「Multicore-TSNE」フォルダにある
setup.pyを動かす

このあと、MulticoreTSNEのフォルダにある「setup.py」をたたいてあげる必要がある。それを行わずにこのまま行うと、自分の場合「Cannot find/open tsne_multicore shared library」というエラーが表示される。
この件に関しては、質問( Issue #32 )が出ているので下記を参照してインストールを行った。

Cannot find/open tsne_multicore shared library · Issue #32 · DmitryUlyanov/Multicore-TSNE · GitHub
https://github.com/DmitryUlyanov/Multicore-TSNE/issues/32

フォルダをsite-packagesに入れた後、githubには、
To install the package, please do:

git clone https://github.com/DmitryUlyanov/Multicore-TSNE.git
cd Multicore-TSNE/
pip install .

とあるが、「pip install .」ももちろん、はじかれてしまう。

アナコンダプロンプトで「pip install .」の前に、「Multicore-TSNE」のあるフォルダを参照して

python setup.py install

と入れてあげます。

この「setup.py」が曲者

この「setup.py」を開いて、クラスオブジェクト「CMakeBuild」のコードに以下のコードをつけ足して保存してあげる。

build_type = 'Debug' if self.debug else 'Release'
       if 0 != execute(['cmake',
                        '-GMinGW Makefiles', <-- これ
                        '-DCMAKE_GENERATOR_PLATFORM = x64', <-- これ
                        '-DCMAKE_BUILD_TYPE={}'.format(build_type),                   '-DCMAKE_VERBOSE_MAKEFILE={}'.format(int(self.verbose)),
                        "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY='{}'".format(EXT_DIR),
                        # set Debug and Release paths to the output directory on Windows
                        "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG='{}'".format(EXT_DIR),
                        "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE='{}'".format(EXT_DIR),
                        self.cmake_args or "--",
                        SOURCE_DIR], cwd=BUILD_TEMP):
           sys.exit('\nERROR: Cannot generate Makefile. See above errors.')

これについては先ほどの質問( Issue #32 )、
annot find/open tsne_multicore shared library · Issue #32 · DmitryUlyanov/Multicore-TSNE · GitHub
https://github.com/DmitryUlyanov/Multicore-TSNE/issues/32
を参照してコードを書き加えた。

これで再度、実行してみても、また、エラーが発生する人。二つ可能性があるのでみる

エラーにも書いてあると思うけど
何かダウンロードが足りない
Windows SDK == 8.1
Cmake

①「Windows SDK == 8.1」が入っていない
②「Cmake」が入っていない

まず、①の場合、下記からダウンロード。その際、注意点は、ページを下の方にスクロールさせて過去のバージョン==8.1を選択する(ここなんで、8.1なのかよくわからないんですが、エラーに書かれるバージョンを選択してください。自分は8.1でした)

Windows SDK アーカイブ - Windows アプリ開発
https://developer.microsoft.com/ja-jp/windows/downloads/sdk-archive/

②の場合、Cmakeが入っていないとsetupが完了しない。Cmakeは、下記からダウンロードできる。また、「pip install cmake」でもいけるはず。

Download | CMake
https://cmake.org/download/

「MingWG」が入っていない可能性も

また、"No CMAKE_CXX_COMPILER could be found."というエラーも出るかもしれない。これは「MingWG」というものが入っていない可能性がある。

Cannot build due to "No CMAKE_CXX_COMPILER could be found." · Issue #3710 · Project-OSRM/osrm-backend · GitHub
https://github.com/Project-OSRM/osrm-backend/issues/3710


「MinGW」は下記サイトで落せる。スクロールして「MinGW-W64-install.exe」を選択してください。

MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net
https://sourceforge.net/projects/mingw-w64/files/

また、インストール時にpathを通さなければいけないです。その際の参考は以下のサイトを参照して下さい。

MinGW-w64のダウンロードとインストール | C言語入門 | CppDrive
https://www.javadrive.jp/cstart/install/index6.html#section1

それでも、まだ、「python setup.py install」と入れた際に、"No CMAKE_CXX_COMPILER could be found."と言われてしまった場合、

「CMakeLists.txt」が疑われます。このファイルにコードを付けたして下さい。

cmake_minimum_required(VERSION 2.8)
SET(CMAKE_C_COMPILER "C:/user/mingw64/bin/gcc") <--これ
SET(CMAKE_CXX_COMPILER "C:/user/mingw64/bin/g++") <--これ
gcc、g++のファイルの場所は自分がインストールしたところ

この「CMakeList.txt」もめっちゃ見つけにくいのですが(まぁ、フォルダ検索すればいいのですが)、"\site-packages\cmake\data\share\cmake-3.17\Modules\IntelVSImplicitPath\CMakeLists.txt"にありました。

これも以下のサイトを参考にして下さい。
とりあえずブログ : 【C++-0.1】CMakeを使おうと思った
http://blog.livedoor.jp/t_kik/archives/36693424.html

おわりに

自分の環境だけかもしれないですが、「tensorFlow」や「pytorch」など、他のライブラリーもいろいろインストール時にバージョン問題などありますが、今までで今回の「multicoreTSNE」が結構手ごわかったです(笑)

最後に、簡易的な手順としては
まず、フォルダだけ「MulticoreTSNE」をダウンロードして、「Multicore-TSNE」にある「setup.py」のコードに2行書き加える。それぞれ「MingWG」、「windows SDK==8.1」、「Cmake」のダウンロードをしていなければダウンロード。アナコンダプロンプト上で「Multicore-TSNE」を指定して、「python setup.py install」、「pip install .」をそれぞれ打ち込んであげれば通ると思います。

これでも通らない方は、、、「visual studio」を疑いますが、これは、、、よくわかりません。。。自分も古い「visual studio 2015」をインストールしていますが、これは「tensorflow-gpu」を動かすときになんだか苦労して入れた記憶があります。

処々メモなので汚いですが、なにかのお役に立つことがあれば幸いです。



この記事が気に入ったらサポートをしてみませんか?