分散して学習時間を減らすのは熱いと感じ勉強開始。
途中までやって見たが、結局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