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」を動かすときになんだか苦労して入れた記憶があります。
処々メモなので汚いですが、なにかのお役に立つことがあれば幸いです。
この記事が気に入ったらサポートをしてみませんか?