WIP: Vector Engine向け機械学習フレームワークFrovedis入門

August 8, 2022 (Updated on: November 1, 2023)
by Keichi Takahashi

インストール方法

FrovedisのGitHubリポジトリ では,CentOS 7および8用のRPMパッケージが提供されているので, これらを使用すると簡単にインストールできます. 以下では,CentOS 7を仮定して説明します.

まず,Vector EngineのランタイムとNEC MPIがインストールされていることを確認します. この記事で用いるFrovedis 1.1.1の場合は,NEC MPI 2.20.0以上が必要です. また,EPELリポジトリとPython 3がインストールされていなければ,インストールします.

$ sudo yum install -y epel-release && sudo yum update -y
$ sudo yum install -y python3

GitHubからFrovedis 1.1.1のRPMパッケージをダウンロードし,インストールします.

$ sudo yum install -y https://github.com/frovedis/frovedis/releases/download/v1.1.1/frovedis-1.1.1-1.el7.x86_64.rpm

FrovedisのPythonインターフェースが依存するパッケージをインストールします. scikit-learnは必須ではありませんが,Frovedisがscikit-learn互換の インターフェースを提供している以上,インストールしておくと便利です. 必要に応じてvirtualenv上にインストールしてください.

$ pip3 install --user scipy pandas scikit-learn

Pythonインターフェースの使用

まず,Frovedisに付属するシェルスクリプトを読み込み,Frovedisを使用するための環境変数を設定します.

$ source /opt/nec/frovedis/ve/bin/veenv.sh

Pythonインタプリタを起動します.

$ python3

まず,Frovedis Serverを起動します.Frovedis ServerはVector Engine上で動作し, 実際の計算処理を担うプログラムです.Frovedis ServerはMPI並列化されており, 複数VEに渡って動作させることも可能ですが,ここでは,1VE 8プロセスで起動します.

import os
from frovedis.exrpc.server import FrovedisServer

FrovedisServer.initialize("mpirun -np 8 {}".format(os.environ['FROVEDIS_SERVER']))

CPU上でテストデータを生成します.ここでは,100次元の特徴量を持つデータ点を 10万点生成します.

from sklearn.datasets import make_classification

X, y = make_classification(n_samples=100000, n_features=100)

ここでは, ロジスティック回帰を行うクラス frovedis.mllib.linear_model.LogisticRegression を用いて,データを分類してみます.このクラスは,scikit-learnの同名のクラスと同じインターフェースを持っています. なお,他に実装されているアルゴリズムは,ここに列挙されています.

from frovedis.mllib.linear_model import LogisticRegression

lr = LogisticRegression()
lr.fit(X, y)

下記を実行すると,回帰係数が表示されます.

lr.coef_

Pythonインタプリタを終了する前に,Frovedis Serverを終了します.

FrovedisServer.shut_down()