vaex のデータフレームを csv に出力したくなったが、vaex-core の core-v2.0.0でないとサポートされていない。そこで、GitHubにあるvaex のアルファ版をdockerにインストールした。
vaex と xgboostを使いたかったので、 https://hub.docker.com/r/rapidsai/rapidsai/ の docker image を用いた。それにvaexをインストールした。
いろいろと手間取ったので備忘録として残しておく。
目次
経緯
最初 https://docs.vaex.io/en/0.3.10/installing.html に従ってインストールを始めてしまった。いろいろと不足しているライブラリなどがみつかって手間取った。
その後、最新の https://docs.vaex.io/en/latest/installing.html に従ってインストールをしたが、最後に python setup.py install を実行すると不足が見つかったので、まず、不足しているコマンドやライブラリをインストールしてから、vaex のディレクトリで python setup.py install を実行した。
Docker Imageの起動
Docker Image には、 RAPIDS のGet Started のページ( https://rapids.ai/start.html )の RAPIDS Release Selector で次の設定をした際に得られるイメージを利用した。
- Method: Docker+Examples
- Release: Stable (0.13)
- Packages: All packages
- Linux: Ubuntu 18.04
- Python: Python 3.6
- Cuda: CUDA 10.0
Dockerのレジストリからイメージをダウンロードする。
1 |
docker pull rapidsai/rapidsai:cuda10.0-runtime-ubuntu18.04-py3.6 |
Get Started のページに示された以下のようなコマンドを実行した場合の例を示すが、環境に合わせて修正する必要がある。port 8888 は JupyterLab のポート番号である。
1 2 |
docker run --gpus all --rm -it -p 8888:8888 -p 8787:8787 -p 8786:8786 \ rapidsai/rapidsai:cuda10.0-runtime-ubuntu18.04-py3.6 |
docker ps -a で起動されたことを確認した。
1 2 3 |
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b78b000b0ccd rapidsai/rapidsai:cuda10.0-runtime-ubuntu18.04-py3.6 "/usr/bin/tini -- /.…" 3 minutes ago Up 3 minutes 0.0.0.0:8786-8787->8786-8787/tcp, 0.0.0.0:8888->8888/tcp unruffled_carson |
この rapidsai/rapidsai:cuda10.0-runtime-ubuntu18.04-py3.6 を基にした unruffled_carson という名前のコンテナにvaexをインストールした。
vaexのインストールの準備
vaex をインストールするために必要なライブラリなどをインストールする。
build-essentialのインストール
gccなどのビルドに必要なコマンドをインストールする。利用した docker image には、/etc/apt/sources.list がなかったので、それを作成し、それに基づいて apt を update してから、 build-essential をインストールする。
1 2 3 4 5 6 7 8 9 |
# install build-essential cat << COMMANDS > /etc/apt/sources.list deb http://archive.ubuntu.com/ubuntu bionic main universe deb http://archive.ubuntu.com/ubuntu bionic-security main universe deb http://archive.ubuntu.com/ubuntu bionic-updates main universe COMMANDS apt update apt install build-essential |
pybind11のインストール
pythonとC++11の連携を図る pybind11をインストールする。
1 2 |
# install pybind11 conda install pybind11 |
string-view-liteのインストール
C++17で導入された文字列の参照機能と同等の機能をC++11で利用するために、string-view-liteをインストールする。ヘッダだけで利用できるものなので、ヘッダファイルをインストールする。
以下では、必要なディレクトリ nonstd を /usr/include に移動している。
1 2 3 4 |
# install string-view-lite git clone https://github.com/martinmoene/string-view-lite.git mv string-view-lite/include/nonstd /usr/include # rm -r string-view-lite # 必要でないファイルを削除するなら |
hopscotch-mapのインストール
ハッシュのライブラリ hopscotch-map をインストールする。このライブラリもヘッダだけで利用できるものなので、ヘッダファイルをインストールする。
以下では、必要なディレクトリ tsl を /usr/include に移動している。
1 2 3 4 |
# install hopscotch-map git clone https://github.com/Tessil/hopscotch-map.git mv hopscotch-map/include/tsl /usr/include # rm -r hopscotch-map # 必要でないファイルを削除するなら |
Perl Compatible Regular Expressionsのインストール
Perl互換の正規表現ライブラリ pcre をインストールする。
1 |
conda install -c conda-forge pcre |
vaexのインストール
コマンドなどの準備ができたら、vaex をインストールする。
1 2 3 4 5 |
# install vaex git clone --recursive https://github.com/vaexio/vaex cd vaex pip install -e . python setup.py install |
インストールの確認
目的としたバージョンのvaex がインストールされているか確認する。 vaex-core のバージョンが 2.0.0a5 となっており、2.0.0 の alpha5 がインストールされている。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# pip list | grep vaex vaex 3.0.0.dev0 vaex-arrow 0.5.0.dev0 vaex-astro 0.7.0.dev0 vaex-core 2.0.0a5 vaex-distributed 0.3.0 vaex-graphql 0.1.0.dev0 vaex-hdf5 0.6.0a1 vaex-jupyter 0.5.0a2 vaex-ml 0.9.0.dev0 vaex-server 0.3.0a2 vaex-ui 0.3.0 vaex-viz 0.4.0a1 |
JupyterLabを起動
Web browser から http://localhost:8888 にアクセスして Docker Image の JupyterLab を起動する。
次のようにビルドが勧められるので、「Build」をクリックしてビルドしておく。docker commit 前にしておかないと、JupyterLab を起動するたびに buildが必要になる。
ビルドが完了したら次のメッセージが表示されるので、「Reload」をクリックする。
ビルドが完了したらJupyterLabは終了させて構わない。
更新したDocker Imageの作成
docker commit で新しいイメージを作成する。ここでは、新しいイメージをxgboost-vaex という名前にした。unruffled_carsonは、docker image を起動した際につけられた名前で起動のたびに変わる。
1 |
docker commit unruffled_carson xgboost-vaex |
作成できたか docker images で確かめた。次のようにできていた。
1 2 3 |
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE xgboost-vaex latest 6b9b6ede3efe About a minute ago 8.8GB |
新しいDocker Image が作成できていることの確認ができたら、unruffled_carson を終了させて構わない。
動作確認
新しいイメージ xgboost-vaex を起動する。以下のようなコマンドを実行する。
1 2 |
docker run --gpus all --rm -it -p 8888:8888 -p 8787:8787 -p 8786:8786 \ xgboost-vaex |
JupyterLabなどで、vaexが使えることを確認する。