NIPSは機械学習のカンファレンスです。
今年はロサンゼルスでありました。
個人の感想を綴ります。
エンジニアとしてこのワークショップを毎年抑えるだけでも、界隈の人のライブラリのトレンドが掴める気がした。
→2016年は無かったのかも。
コミッター募集してます(笑)的な発表もチラホラあった。
https://nips.cc/Conferences/2017/Schedule?showEvent=8774
http://learningsys.org/nips17/
このセッションは非常に混んでた。会場に人が多くなりすぎて部屋が暑かった。
後ろはもっと混んでて途中退出するには鉄の心が必要だった。
Open Neural Network Exchange (ONNX)
...機械学習ライブラリ同士の間に挟まる役割。コンバートが容易。
3社の連合。googleへの対抗?とはいえcoreml tensorflowへのコンバータも用意されてる。
TPUクラウド
Learn more about Cloud TPUs and the TensorFlow Research Cloud
...TPUすごいから使ってねって
https://services.google.com/fb/forms/tpusignup/?hl=ja
TVM: Tensor IR Stack for Deep Learning Systems
TVMは、深層学習システム向けのTensor中間表現(IR)スタック。最適化されてて早いんだぞと。
TVMは深い学習フレームワークと連携して、さまざまなバックエンドへのコンパイルをエンドツーエンドで提供。
ModelDB: A system to manage ML models
機械学習モデルを管理するエンドツーエンドのシステム。
モデルが訓練され、モデルデータを構造化されたフォーマットで格納し、豊富なクエリを行うためにWebフロントエンドを介してモデルデータを取り込むときに、モデルとそれに関連するメタデータを取り込みます。
対応ライブラリはsparkとscikit-learn。
→学習結果をDBで管理できるんならすごい便利じゃないかな。仕事でも学習結果が多すぎて管理できない問題があった。
MacroBase
ヒューマンエラーの分析に特化。
データの異常な傾向や面白い傾向を見つけて説明する。
Clipper
機械学習のサービス化を容易にするシステム。
RESTインターフェイスを提供
バッチ処理、キャッシュ処理、アンサンブル機能 等
sklearn例
from clipper_admin import ClipperConnection, DockerContainerManager
from clipper_admin.deployers.python import deploy_python_closure
import numpy as np
import sklearn
clipper_conn = ClipperConnection(DockerContainerManager())
# Connect to an already-running Clipper cluster
clipper_conn.connect()
def center(xs):
means = np.mean(xs, axis=0)
return xs - means
centered_xs = center(xs)
model = sklearn.linear_model.LogisticRegression()
model.fit(centered_xs, ys)
# Note that this function accesses the trained model via closure capture,
# rather than having the model passed in as an explicit argument.
def centered_predict(inputs):
centered_inputs = center(inputs)
# model.predict returns a list of predictions
preds = model.predict(centered_inputs)
return [str(p) for p in preds]
deploy_python_closure(
clipper_conn,
name="example",
input_type="doubles",
func=centered_predict)
pyspark例
from clipper_admin import ClipperConnection, DockerContainerManager
from clipper_admin.deployers.pyspark import deploy_pyspark_model
from pyspark.mllib.classification import LogisticRegressionWithSGD
from pyspark.sql import SparkSession
spark = SparkSession .builder .appName("clipper-pyspark") .getOrCreate()
sc = spark.sparkContext
clipper_conn = ClipperConnection(DockerContainerManager())
# Connect to an already-running Clipper cluster
clipper_conn.connect()
# Loading a training dataset omitted...
model = LogisticRegressionWithSGD.train(trainRDD, iterations=10)
# Note that this function accesses the trained PySpark model via an explicit
# argument, but other state can be captured via closure capture if necessary.
def predict(spark, model, inputs):
return [str(model.predict(shift(x))) for x in inputs]
deploy_pyspark_model(
clipper_conn,
name="example",
input_type="doubles",
func=predict,
pyspark_model=model,
sc=sc)
BASIC CONCEPTS
http://clipper.ai/tutorials/basic_concepts/
thrift
Thriftは、軽量で言語に依存しないソフトウェアスタックで、RPCに関連するコード生成メカニズムを備えています。
RPCとはリモートプロシージャコール。遠隔手続き呼び出し。プログラムから別のアドレス空間にあるサブルーチンや手続きを実行することを可能にする技術。
Thriftは、データ転送、データのシリアライズ、およびアプリケーションレベルの処理のための明確な抽象化を提供します。コード生成システムは、単純な定義言語を入力とし、抽象スタックを使用して相互運用可能なRPCクライアントおよびサーバーを構築するプログラミング言語にわたってコードを生成します。
thrift -r --gen py tutorial.thrift #Generated the tutorial.thrift and shared.thrift files
#Followed all prerequisites listed below → 前提条件がなんたらかんたら、実行してみたら何か見えて来るはず。
https://github.com/apache/thrift
https://github.com/bayandin/thrift-examples
DAWNBench : An End-to-End Deep Learning Benchmark and Competition
ベンチマークに特化したコンペ。
http://dawn.cs.stanford.edu/benchmark/
#その他
acceptedpapersをチェック♪
http://learningsys.org/nips17/acceptedpapers.html