vaex のアルファ版を docker image にインストールする

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のレジストリからイメージをダウンロードする。

Get Started のページに示された以下のようなコマンドを実行した場合の例を示すが、環境に合わせて修正する必要がある。port 8888 は JupyterLab のポート番号である。

docker ps -a で起動されたことを確認した。

この 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 をインストールする。

pybind11のインストール

pythonとC++11の連携を図る pybind11をインストールする。

string-view-liteのインストール

C++17で導入された文字列の参照機能と同等の機能をC++11で利用するために、string-view-liteをインストールする。ヘッダだけで利用できるものなので、ヘッダファイルをインストールする。

以下では、必要なディレクトリ nonstd を /usr/include に移動している。

hopscotch-mapのインストール

ハッシュのライブラリ  hopscotch-map をインストールする。このライブラリもヘッダだけで利用できるものなので、ヘッダファイルをインストールする。

以下では、必要なディレクトリ tsl を /usr/include に移動している。

Perl Compatible Regular Expressionsのインストール

Perl互換の正規表現ライブラリ pcre をインストールする。

vaexのインストール

コマンドなどの準備ができたら、vaex をインストールする。

インストールの確認

目的としたバージョンのvaex がインストールされているか確認する。 vaex-core のバージョンが 2.0.0a5 となっており、2.0.0 の alpha5 がインストールされている。

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 を起動した際につけられた名前で起動のたびに変わる。

作成できたか docker images で確かめた。次のようにできていた。

新しいDocker Image が作成できていることの確認ができたら、unruffled_carson を終了させて構わない。

動作確認

新しいイメージ xgboost-vaex を起動する。以下のようなコマンドを実行する。

JupyterLabなどで、vaexが使えることを確認する。