LoginSignup
2
3

More than 5 years have passed since last update.

BigDLをApache Sparkで分散型ディープディープ学習する為の環境設定

Last updated at Posted at 2017-02-18

分散して学習時間を減らすのは熱いと感じ勉強開始。
途中までやって見たが、結局bigdlを勉強しないといけない。
yahooの出したspark on tfの方がいいのではないかという気もした。
bigdlを動かそうとしてもエラーも出ていて
バージョンなどの問題もあるのかもしれない。

sparkのインストール

JDKのインストール

sudo apt-get install -y openjdk-8-jdk

/usr/local/spark を SPARK_HOME とする。任意のバージョンを選択。
http://ftp.riken.jp/net/apache/spark/

wget http://ftp.riken.jp/net/apache/spark/spark-1.6.2/spark-1.6.2-bin-hadoop2.6.tgz
$ tar zxvf spark-1.6.2-bin-hadoop2.6.tgz
$ sudo mv spark-1.6.2-bin-hadoop2.6 /usr/local/
$ sudo ln -s /usr/local/spark-1.6.2-bin-hadoop2.6 /usr/local/spark

.bashrc に以下を追記

export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin

ログレベルの設定

cd $SPARK_HOME/conf
cp log4j.properties.template log4j.properties

log4j.rootCategory=INFO, console
↓
log4j.rootCategory=WARN, console #ログが大量に出るのを防ぐ

spark-shell実行

$ spark-shell --master local[*]
(中略)
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.6.1
      /_/

Using Scala version 2.10.5 (OpenJDK 64-Bit Server VM, Java 1.8.0_91)
Type in expressions to have them evaluated.
Type :help for more information.
(中略)

scala> val textFile = sc.textFile("/usr/local/spark/README.md")
textFile: org.apache.spark.rdd.RDD[String] = /usr/local/spark/README.md MapPartitionsRDD[1] at textFile at <console>:27

scala> val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCounts: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[4] at reduceByKey at <console>:29

scala> wordCounts.collect()
res0: Array[(String, Int)] = Array((package,1), (For,2), (Programs,1), (processing.,1), ...(中略)...,  (>>>,1), (programming,1), (T...
scala>

基本情報

BigDLとは

BigDLはApache Sparkのための分散型の深層学習ライブラリです。 BigDLでは、既存のSparkまたはHadoopクラスタの上で直接実行できる標準のSparkプログラムとして、深層学習アプリケーションを作成できます。

豊かな深層学習支援。

TorchをモデルにしたBigDLは、数値計算(Tensor経由)や高レベルのニューラルネットワークを含む深層学習を包括的にサポートしています。さらに、ユーザーはBigDLを使用してSparkプログラムに事前にトレーニングされたCaffeまたはTorchモデルを読み込むことができます。

非常に高いパフォーマンス。

高性能を実現するために、BigDLは各SparkタスクでインテルMKLとマルチスレッドプログラミングを使用します。その結果、単一ノードXeon(すなわち、メインストリームGPUに匹敵する)上のすぐに使えるオープンソースのCaffe、TorchまたはTensorFlowよりも数桁高速です。

効率的なスケールアウト。

BigDriveは、Apache Spark(高速分散データ処理フレームワーク)を活用し、同期SGDを効率的に実装し、Sparkですべての通信を削減することで、「Big Data scale」でデータ分析を効率的にスケールアウトすることができます。

なぜBigDL?

次の場合、BigDLを使って深層学習プログラムを書くことができます:

データが格納されているBig Data(Hadoop / Spark)クラスタ(HDFS、HBase、Hiveなど)上の大量のデータを分析する必要があります。

Big Data(Spark)プログラムやワークフローに深層学習機能(トレーニングまたは予測のいずれか)を追加したいと考えています。

既存のHadoop / Sparkクラスタを活用して、ETL、データウェアハウス、フィーチャ・エンジニアリング、古典的な機械学習、グラフ解析などの他のワークロードと動的に共有できるディープ・ラーニング・アプリケーションを実行する必要があります。

BigDLの使い方

BigDLをインストールしてビルドする方法(LinuxとmacOSの両方)を学ぶには、ビルドページをチェックしてください
BigDLプログラム(ローカルJavaプログラムまたはSparkプログラムのいずれか)を実行する方法については、「Getting Started」ページを参照してください
EC2でBigDLを試すには、EC2で実行するページをチェックしてください
BigDLを使って数分で実用的なニューラルネットワークを作成する方法を知るには、チュートリアルページ
詳細については、ドキュメントページ(チュートリアル、サンプル、プログラミングガイドなどを参照)

サポート

BigDL Googleグループに参加する(またはメールリストに登録する)ことで、BigDLに関するその他の質問や議論ができます
問題ページにバグレポートや機能リクエストを投稿できます

BigDLのインストール

BigDLプログラムを実行する前に

BigDLプログラムを実行する前に、まず適切な環境変数を設定する必要があります。

環境変数の設定。

高性能を実現するために、BigDLはIntel MKLとマルチスレッドプログラミングを使用します。 したがって、PATH_To_BigDL / scripts / bigdl.shで提供されているスクリプトを次のように実行して、環境変数を最初に設定する必要があります。

git clone https://github.com/intel-analytics/BigDL.git
cd BigDL
source scripts/bigdl.sh

また、PATH_To_BigDL / scripts / bigdl.shスクリプトを使用してBigDLプログラムを起動することもできます。 以下の詳細を参照してください。

ビルド

bash make-dist.sh

インタラクティブスパークシェル

対話型のSparkシェルを使用して、SparkプログラムとしてBigDLコードを簡単に試すことができます:

source scripts/bigdl.sh
SPARK_HOME/bin/spark-shell --jars bigdl-0.1.0-SNAPSHOT-jar-with-dependencies.jar

#こんなのが表示される
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.6.0
      /_/

Using Scala version 2.10.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_79)
Spark context available as sc.
scala> 

#これらが入力できればOK
import com.intel.analytics.bigdl.tensor.Tensor
Tensor[Double](2,2).fill(1.0)

参考

http://qiita.com/chrysocome/items/0680a537838233fce323
https://github.com/intel-analytics/BigDL/wiki/Getting-Started

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3