5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ML Systems Workshop @ NIPS 2017「感想、メモ」

Last updated at Posted at 2017-12-11

NIPSは機械学習のカンファレンスです。
今年はロサンゼルスでありました。
個人の感想を綴ります。

エンジニアとしてこのワークショップを毎年抑えるだけでも、界隈の人のライブラリのトレンドが掴める気がした。
→2016年は無かったのかも。
コミッター募集してます(笑)的な発表もチラホラあった。

https://nips.cc/Conferences/2017/Schedule?showEvent=8774
http://learningsys.org/nips17/

このセッションは非常に混んでた。会場に人が多くなりすぎて部屋が暑かった。
後ろはもっと混んでて途中退出するには鉄の心が必要だった。
IMG_0353.JPG

Open Neural Network Exchange (ONNX)

...機械学習ライブラリ同士の間に挟まる役割。コンバートが容易。
3社の連合。googleへの対抗?とはいえcoreml tensorflowへのコンバータも用意されてる。

スクリーンショット 2017-12-09 午前6.00.42.png

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は深い学習フレームワークと連携して、さまざまなバックエンドへのコンパイルをエンドツーエンドで提供。

スクリーンショット 2017-12-09 午前6.03.33.png

ModelDB: A system to manage ML models

機械学習モデルを管理するエンドツーエンドのシステム。
モデルが訓練され、モデルデータを構造化されたフォーマットで格納し、豊富なクエリを行うためにWebフロントエンドを介してモデルデータを取り込むときに、モデルとそれに関連するメタデータを取り込みます。
対応ライブラリはsparkとscikit-learn。
→学習結果をDBで管理できるんならすごい便利じゃないかな。仕事でも学習結果が多すぎて管理できない問題があった。

スクリーンショット 2017-12-09 午前6.09.03.png

MacroBase

ヒューマンエラーの分析に特化。
データの異常な傾向や面白い傾向を見つけて説明する。

スクリーンショット 2017-12-09 午前6.11.30.png
基本のパイプライン

Clipper

機械学習のサービス化を容易にするシステム。

RESTインターフェイスを提供
バッチ処理、キャッシュ処理、アンサンブル機能 等

スクリーンショット 2017-12-09 午前6.15.00.png

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クライアントおよびサーバーを構築するプログラミング言語にわたってコードを生成します。

スクリーンショット 2017-12-09 午前5.49.44.png

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

5
1
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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?