20181228 ncf to_azure_batch2. Agenda
○ これまで Smart Adaptive Recommendations
○ これから Neural Collaborative Filtering
○ Tensorflow
○ Docker
○ Azure Batch, Batch ship-yard
○ (補足資料) Kubernetes & ACR & AKS
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
2
4. これまで Xit おすすめ番組
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
4
Azure Functionsが該当
WebAPIが該当
5. これまで
○ Smart Adaptive Recommendations (SAR) Algorithmを使用
? https://github.com/Microsoft/Product-Recommendations/blob/master/doc/sar.md
○ SARとは
? ユーザ履歴(usage)とアイテム説明(catalog)を元にした高速でスケール可能な
個人レコメンドのアルゴリズム
? 協調フィルタリング(ItemToItem, UserToItem)をベースにしている
○ SARの特長
? ユーザの明示的な評価値を必要としない(履歴の時間から自動で評価値設定)
? アイテム説明に独自のパラメータを設定可能(パラメータは未評価アイテム、新
アイテムのレコメンドを可能にする)
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
5
8. GMF
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
8
= edge function (sigmoid 等) (1 / 1 + exp(-x))
= activation function ( RELU等) ( x = x if x > 0 , else 0)
9. MLP
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
9
10. NCF => 線形性GMF ⊕ 非線形性MLP
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
10
12. Tensorflow Architecture
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
12
データが公開されている
一般的なもの
&&
モデルも公開されているもの
&&
学習方法も一般的
→ ほとんどTensorflow用意
のものだけでいける
= 要求条件次第で、
ほぼプログラミングレス
程度まで
抽象化が進んでいる。
13. Tensorflow
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
13
モデル作成
推論
学習
データ前処理
取り込み設定
14. Tensorflow NCF Model の例
user_input = tf.keras.layers.Input(tensor=users)
item_input = tf.keras.layers.Input(tensor=items)
# Embedding layers of GMF and MLP
mf_embedding_user = tf.keras.layers.Embedding(…), mf_embedding_item = tf.keras.layers.Embedding(…)
mlp_embedding_user = tf.keras.layers.Embedding(…), mlp_embedding_item = tf.keras.layers.Embedding(…)
# GMF part
mf_user_latent = mf_embedding_user(user_input), mf_item_latent = mf_embedding_item(item_input) , mf_vector = tf.keras.layers.multiply(…)
# MLP part
mlp_user_latent = mlp_embedding_user(user_input), mlp_item_latent = mlp_embedding_item(item_input) , mlp_vector = tf.keras.layers.concatenate(…)
for layer in xrange(1, num_layer):
model_layer = tf.keras.layers.Dense(…)
mlp_vector = model_layer(mlp_vector)
# Concatenate GMF and MLP parts
predict_vector = tf.keras.layers.concatenate([mf_vector, mlp_vector])
# Final prediction layer
logits = tf.keras.layers.Dense(…)
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
14
20. AKS or Azure Batch
今回のNCF処理性質
一定時間毎のバッチ処理
AKS
○ GPU-Instance コスト高い
Azure Batch
○ バッチ処理
○ 低優先度インスタンスプラン
○ 通常の専有プランより80%-off
だが、“割り当てられない場合や割り込みが発生する場合があります”
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
20
21. Azure Batch ship-yard
○ Azure Batch、生で設定がめんどくさい
○ オーケストレーションツール ship-yard
○ yaml
やってくれること。
○ VM-Instance プール作成
○ VM-Instance 種類指定起動
○ OS
○ インスタンス種類
○ VM-Instance への
○ Azure Blob マウント
○ 注 BlobとInstanceのリージョンを合わせないと、パフォーマンス低
○ ACR から Docker-Image Pull
○ バッチ指示
○ スクリプトキックコマンド
○ バッチ期間
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
21
22. ACR
○ Docker image レポジトリ
○ git みたいなもん
○ ImageのタグはレポジトリURI/image名:タグ となる。
○ ACRにおいたimage を 各サービスで引っ張れる。
○ ACRを読める権限設定する必要がある。
23. result.json
Azure Diagram
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
23
Azure
shipyard
ACR
Batch
Blob
NCFContainerImage
Instance
Pix local
mount
Provisioning
Image Push
exp.files
Docker Mount
BookingRecords
Get BookingRecords
Batch処理設定
24. 最後に ML/AI に限らないこと
○ X as a Code … X =
○ Environment
Docker & Docker-compose 稼動場所移行が行いやすい( 他ローカルPC, クラウド上)
○ Cloudインフラ & サービス
サーバ環境 → イミュータブルサーバ
○ Cloudは極力メンテナンスレスなサービスを利用しましょう (No more raw VM)
#1 プログラムレスサービス
#2 Lambda系 (サーバレス)
#3 Batch || AKS (極力管理レス)
ストレージは AWS S3/ Azure Blob 等に接続し、ノードに残さない
DB は 極力NoSQLサービス (ストレージ無限系 AWS DynamoDBとか)
どうしてもSQLなら、Serverless SQLサービス
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
24
25. Kubernetes & AKS
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
25
補足資料
27. Docker オーケストレーション要求
問題
○ どのホストにどのコンテナがあるか
○ ノード(コンテナホストインスタンス)死亡時の対応
要望
○ ノード管理 (含スケール)
○ コンテナバージョン管理と更新動作
○ ノード間協調
Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
27
28. Copyright ? PIXELA CORPORATION. All Rights Reserved.|PIXELA CORPORATION PROPRIETARY AND CONFIDENTIAL.
28
32. 階層
○ AKS kubernetes サービスの提供
○ Kubernetes
○ Kubernetes-cluster
○ Master … AKS では azureが管理. Deploy情報の管理?
○ Nodes (on VM) … Dockerワーカー
○ Pods ( コンテナ群, ストレージ, 1意のIP 1サービス単位)
? Docker-containers (Imageからビルド. ACR や Docker hub等から引っ張る)