あまり本には載っていない機械学習の話 Meetup #02 @ 2017.05.18
View Slide
@pottava・機械学習の “サービス化・運用手法” を研究中・AWS Certified SA, DevOps Engineer Pro・Google Certified Professional - Cloud Architect
株式会社スピンフ
・クラウドすっごく得意。主に AWS と GCP。・Docker は 3 年前から本番運用してノウハウ豊富・NVIDIA GPU の各種環境構築ならお任せあれ 受託開発・運用支援してます4
GTC 2017 行ってきました(最後にお土産じゃんけんしましょう)
本題
機械学習でなにが変わるの? 機械学習のおさらい• 機械学習とは• 機械学習と深層学習 学習• データの準備• 試行錯誤 / POC• 学習 推論今日お話しすること7
ػցֶशͰͳʹ͕มΘΔͷʁ
ࠓͲΜͳ͜ͱʹԠ༻͞Ε͍ͯΔͷ͔9https://www.youtube.com/watch?v=SUNPrR4o5ZA
΄ΜͷҰྫ10• 医療診断サポート、医薬品の研究・試験の後押し• 農産物の収穫量増加、肥料や農薬の抑制• 小売業での顧客購入サポート• 自動運転、周囲のリアルタイムな状況把握• スポーツやゲームでの分析、戦略立案• 作曲• 自動翻訳、字幕付与
社内導入
まずは関係者 みんなで 基本 を抑えたい。大切。・何に向いていて、何に向いていないのか・どれだけ投資すれば何が得られるのか・そもそもそれは正しい問い?何を OKR, KPI にするか・これまでの製品開発との違いは何かαʔϏεʹಋೖ͢Δʹ12
機械学習サービスを提供するための最初の一歩..Biz: 基本を押さえ、顧客体験向上への応用を考えてみるOps: これまでと毛色の違う学習・サービス基盤を知るDev: 実際に学習推論を動かしてみる、基礎技術を学ぶ͋ͳͨͷࣄͳΜͰ͔͢ʁ13
今日ここに来ているあなたはきっと、リード役。まずはクラウドの API を使ってみたり機械学習や数学の本を買って読んでみたり実際にコードを書いてみたりしましょう!!ͱݴ͍ͭͭ14
ධͷ͍͍ຊɺ࠷ۙ·ͨͰͨΑ15Hands-On Machine Learning with Scikit-Learn and TensorFlowConcepts, Tools and Techniques to Build ”Intelligent Systems”
機械学習のおさらい
機械学習
何か特定の問題があるとして。コンピュータに 客観的事実のみ を与え具体的な回答を得る、またはそれを改善すること。機械学習とは18
y = ax + ba, b を 人間が事前に決める のが一般的プログラミング。実データから コンピュータに計算させる のが機械学習。機械学習とは19
y = ax + b例)x : Pairs で最近見かけたよさげな人の 特徴y : このひとと付き合ったら幸せになれるか機械学習とは20
y = ax + b例)人間「 y = 0.7 * 性格x + 0.2 * 外見x + 0.1 * 収入x でしょ」機械「それでは精度が低い。過去のデータからいえばɹɹɹy = 0.4 * 性格x + 0.1 * 外見x + 0.5 * 収入x が適切」機械学習とは21
y = ax + ba, b を決めるための作業を 学習、決まった a, b のことを 学習済みモデル と言う。学習済みモデルを使って実際に x を投入し y を得るのが 推論。学習と推論22
y = ax + bビジネス上重要なのは、優れた推論 ができるか。優れた推論をするためには、優れたモデルが必要。優れた a, b を決めるための 学習 が、腕の見せどころ。学習と推論23
y = ax + bデータから a, b を求める方法はたくさんある。解きたい問題によって、適切な方法を選ぶ 必要がある。学習アルゴリズム24
y = ax + bデータから a, b を帰納的に求める具体的な方法のこと。• A / B どっち?問題 → ロジスティック回帰• 売上を予測したい → 線形回帰• 顧客をセグメント分けしたい → k 平均法• レコメンドを出したい → 協調フィルタリング• …学習アルゴリズム25
ユーザ情報が集めやすい(?)恋愛エリア。さっきの学習アルゴリズム、使えそうですよね?• この人との相性はよさそう?悪そう?• この人の 5 年後の収入、どのくらいになりそう?• 亭主関白ではなく、かつ家庭を大切にするタイプであってほしい• 結局誰とならうまくいきそうなの!?怒恋愛 × 機械学習26
深層学習
ディープラーニング。多層構造のネットワークを用いた機械学習 のこと。例) 4 層のネットワーク例深層学習とは28
青丸に値を入力すると、緑丸に答えが出力される。例)安い、美味しい → 買うべき 0.9、買わないべき 0.1深層学習とは29
2 層目以降の各ノード○が、前の層からの入力を基にy = ax + b を使って自分自身の値を計算する。深層学習とは30
よりもっともらしい答えを返すために各ノードの a, b を事前に決めるのが、学習。全ノードの a, b が決まれば、それが 学習済みモデル。深層学習とは31
機械学習全般、解決したい問題ごとに選択 するのが学習アルゴリズム。深層学習であっても同じ。例)• このきゅうりは S? M? L? → 畳み込みニューラルネットワーク (CNN)• 今の発言はポジティブ? → 再帰型ニューラルネットワーク (RNN)• 人が飛び出してきた!車を減速!! → あれこれ組み合わせ• …深層学習アルゴリズム32
美しい組み合わせの例、AlphaGo。(論文: http://www.nature.com/nature/journal/v529/n7587/abs/nature16961.html )• 4 つのディープニューラルネットワークを利用• それぞれ 初級者 pπ / 中級者 pσ / 上級者 pρ / 情勢判断 vθ といった位置付け• pπ は人間の 800 万の盤面データを元に学習。精度は低いが高速に解を得る。• pσ は 13 層の CNN。3,000 万盤面を 50 GPU で 3.4 億ステップ、3 週間学習。プロの指し手を 57.0% の精度で予想できる。• pρ は 50 GPU で 1 日かけ128 万回自己対戦。既存ソフトに 85% の圧倒的勝率。• vθ は pσ でランダムに 3,000 万盤面を生成し、pρ で 1 億 6,000 万回ロールアウトした勝率を教師データに、50 GPU で一週間 5,000 万回確率勾配降下法を実施。• 実対戦では1,202 CPU + 176 GPUが使われ、pσ で次の手選択、vθ で盤面評価。• 勝率はいいが理詰めの pρ より、人間の癖を学んだ pσ を使ったか。• 勝因は pρ の徹底的な強化学習に加え、モンテカルロ木探索と CNN の組合せか。深層学習アルゴリズム33
実践的なネットワーク、実際にはどれくらいディープなレイヤーなの?例) 畳み込みニューラルネットワークの一種、ResNet は 152 層深層学習アルゴリズムhttps://research.googleblog.com/2016/08/improving-inception-and-image.html34
お、おう・・モデルとして決める変数どれだけあるの・・ 学習にどれだけ時間かかるの・・というか、レイヤー定義するだけで 心折れそう。自前で実装?まあ無理ですよね・・深層学習アルゴリズム35
そこで
深層学習フレームワーク
利用者はアルゴリズムの実装をすることなく各種パラメタの指定だけで学習・推論ができる。例)TensorFlow による畳み込みニューラルネットワーク (CNN) どんな順序でどんな層を経由するか、直感的にわかる深層学習フレームワーク38
アルゴリズムの 実装はその道のプロにお任せ しつつ・・私たちはやりたいことだけできる時代。例)画像に写っている人が知りたい→ TensorFlow で CNN を使えばわりと簡単にできる!深層学習フレームワーク39
TensorFlow、MXNet、CNTK、Caffe2、Chainer・・それぞれの特徴を鑑み、選択する。• 対応アルゴリズム• 動作端末・環境• 計算速度 / リソース利用効率• 利用可能な言語 / 手続的・宣言的• スケーラビリティ / 複数 GPU、並列サーバ対応• 情報の豊富さ / エコシステム / 商用サポート• …深層学習フレームワーク40
クイズです
「今メールしている相手は本当に女性なのか、否か・・」※ そもそもこの問いが生まれること自体 登壇者の経験や人間性を疑うきっかけになり得ますが みなさん大人です。あまり深く考えないでください。
次のどれを使う・・?
ϩδεςΟοΫճؼઢܗճؼΈࠐΈχϡʔϥϧωοτϫʔΫҨతϓϩάϥϛϯά
ブッブー
そんな心配をしなくてすむ を使う、が正解です
さて
学習の流れを再確認
機械学習の流れ2. データ前処理 3. 学習 4. 推論1. データ収集49
以降、この流れに沿って詳細をみていきましょう。機械学習の流れ2. σʔλલॲཧ 3. ֶश 4. ਪ1. σʔλऩू50
学習
データの準備
1 データの収集自社製品に沿ったデータ がなによりも有用!!とはいえ、まず機械学習を試してみるだけなら一般公開されたデータ を活用するのが簡単です。53
一般公開された画像集研究もコンテストも盛んで、たくさんあります。• MNIST http://yann.lecun.com/exdb/mnist/• CIFAR-10 & CIFAR-100 https://www.cs.toronto.edu/~kriz/cifar.html• ImageNet http://www.image-net.org/• …54
AWS Public Datasetshttps://aws.amazon.com/jp/public-datasets/55
Public Datasets | Google Cloud Platformhttps://cloud.google.com/public-datasets/56
Public data sets for Azure analyticshttps://docs.microsoft.com/en-us/azure/sql-database/sql-database-public-data-sets57
Datasets « Deep Learninghttp://deeplearning.net/datasets/58
http://www.data.go.jp/data/dataset59こんなのもある
AWS 関連サービス群
データ収集に便利なサービス• AWS IoT• Amazon Kinesis Streams• Amazon CloudWatch Logs• Amazon S3• Amazon DynamoDB• Amazon Cognito + AWS SDK• Amazon API Gateway61
2 データの前処理Python だけで済むならそれでいいものの、複数のデータソースからメタデータを取得したり大規模なファイルからデータを抜き出すなら専用ソフトウェア や サービス を使わないとつらい。62
データ前処理に便利なサービス• Amazon Mechanical Turk• Amazon Athena• AWS Lambda / Step Functions• AWS CloudWatch Events• Amazon EMR / Batch / EC264
Amazon Mechanical Turk65アメリカではとても流行っているとのこと・・メタデータ付与なら・・・!
試行錯誤 / POC
試行錯誤に便利なものたち
超重要ツール。(これに慣れると世界が広がります!)主に科学技術計算や機械学習の業界であれこれ 試行錯誤したり、それを誰かと共有するための ツール。多くの研究者やエンジニアに愛用されている。git などでバージョン管理するのも容易!Jupyter notebook68
ֶशʹͱ͕͔͔ͯ࣌ؒΔͷɻߦྻܭࢉ͕ಘҙͳ GPU Λ͕͑࣌ؒઅͰ͖·͢ʂࣗͷ PC ʹ͍ͬͯ͞Δ GPU ͕͑Δ͔ɾɾʁ(NVIDIA) GPU69
(NVIDIA) GPU70ݱࡏ AWS Ͱ GPU Λ͏ͱ͖ͷ Tips Λ·ͱΊ·ͨ͠https://speakerdeck.com/pottava/tesorflow-v1-dot-0-on-ec2
ࢼߦࡨޡ͢Δʹ͜ΕͱͯศརͰ͢ɻϥΠϒϥϦ͕ͲΜͲΜόʔδϣϯߋ৽ͯ͠େৎʂΫϥυ্ʹֶशɾਪΛ࣋ͬͯߦ͘ͱ͖ʹ༗༻ʂdocker run -it --rm -p 8888:8888 jupyter/tensorflow-notebookDocker71
NVIDIA の Docker イメージ72以下のような継承関係のイメージが公開されています。機械学習の動作要件に適したイメージをベースに。独自 Docker イメージのビルドもできます。cuda:8.0-runtimeubuntu:14.04cuda:8.0-develcuda:8.0-cudnn5-runtimecuda:8.0-cudnn5-devel caffe (v0.15) digits (v5.0)
試行錯誤フェーズに便利なサービス• Amazon Machine Learning• Amazon EMR / EC2‣ p2 / g2 (GPU) instances‣ Deep Learning AMI• Amazon EBS / S3 / ECR74
二項分類、複数クラス分類、線形回帰のマネージドサービス。データの取り込みから、学習・推論が行えます。サーバの管理が不要なため、スケーラビリティや推論サービスの可用性は気にせず OK!Amazon Machine Learning75
GPU インスタンス76AWS には 2 種類あります(現行世代)g2 系: NVIDIA GRID K520 1,536 CUDA cores / GPU が 2 つで 1 つの K520 g2 で使える GPU は本来グラフィック・ゲーミング用途p2 系: NVIDIA Tesla K80 倍精度演算最大 2.91 TFLOPS、単精度演算最大 8.74 TFLOPS 2,496 CUDA cores / GPU が 2 つで 1 つの K80 p2 の GPU は汎用コンピューティング用途
Amazon DeepLearning AMI77全部入り AMI、あります!!TensorFlow 1.0, MXNet, Caffe2, CNTK, Theano, Torch。CUDA 7.5, cuDNN 5.0, Anaconda も。
3 学習もっとも重要、かつものすごく時間がかかるところ。自社のモデルを作るのはとても大変だがオリジナルのものができれば貴重な知財に。クラウドの様々なサービスがサポートしてくれます。79
学習フェーズに便利なサービス• Amazon EMR / Batch / EC2‣ p2 / g2 (GPU) instances‣ Deep Learning AMI‣ Spot Fleet / AutoScaling Group• Amazon Machine Learning• Amazon EFS / EBS / S3 / ECR• Amazon SQS81
AWS Batch82https://www.youtube.com/watch?v=UR8BI2Exkbc科学技術計算・ハイパフォーマンスコンピューティング用途で真価を発揮する、大規模なスケール、ジョブの依存定義が可能なマネージド並列分散バッチ処理基盤。
MXNet Λ͍ EC2 Ϋϥελ্Ͱֶश͢ΔྫAWS Batchhttps://aws.amazon.com/jp/blogs/news/deep-learning-on-aws-batch/83
Google ファミリーなら..84• Cloud Datalab• Cloud Dataprep• Cloud ML Engine‣ Managed TensorFlow‣ GPU support• Cloud TPU alphaprivate beta
推論
4 推論ֶशࡁΈͷϞσϧΛ͍ɺਪ͢ΔɻϏδωεͱ݁͢Δ͜ͱ͕ଟ͘ɺՔಇ 24 / 365ɻՄ༻ੑͱϨΠςϯγ͕ॏཁͳͷҰൠαʔϏεಉ༷ɻ͔ͯ͠͠αʔόϨεͰɾɾ͍͚Δɾɾɾʁ86
推論フェーズに便利なサービス• Amazon ECS / EC2‣ p2 / g2 (GPU) instances‣ Deep Learning AMI‣ Spot Fleet / AutoScaling Group• AWS Lambda / Amazon API Gateway• AWS ElasticBeanstalk• Amazon EFS / EBS / S3 / ECR88
フルマネージドな Docker コンテナクラスタ環境。GPU ベース の推論アプリケーションだって動きます!Amazon ECS89https://speakerdeck.com/ayemos/build-image-classification-service-with-amazon-ecs-and-gpu-instancesクックパッド株式会社 染谷 悠一郎さん
AWS Lambda90サーバレス で MXNet による推論をする実装例http://aws.typepad.com/sajp/2017/01/seamlessly-scale-predictions-with-aws-lambda-and-mxnet.html
機械学習を AWS でやるなら、知って得する機能 No. 1!仮想サーバを安く使える起動方法。AWS のデータセンタの「余剰分」をこの金額なら使います!と「入札」して起動。Spot Fleet / Spot インスタンス91
プリエンプティブ VM で起動しましょう!終了(プリエンプト)される可能性があり24 時間後には必ず終了するインスタンス。10 分以上 1 分単位の使用料ベースの固定料金。管理対象インスタンスグループでも利用できますGCP なら..92
ただし、GPU を使いたい場合は現在 GCP に“カスタムアクセラレータによる制約” があるためプリエンプティブな起動はまだできません・・GCP なら..93
クラウドのサービスをあれこれ書いてきましたが。 実際、ちょっと試すだけならローカルに環境を整えれば 十分です・・ローカルでも簡単に起動する Docker は便利〜というかローカルでも..94
Let’s try, anyway!
帰ったら自分で一連の流れを経験!!実践大事。「数字画像判定 with TensorFlow on AWS」今日の宿題http://qiita.com/pottava/items/2fb2572f7099d432ebd996
ありがとうございました参考文献:• AWS Batch – 簡単に使えて効率的なバッチコンピューティング機能 – AWShttps://aws.amazon.com/jp/batch/• AWS Black Belt Online Seminar「AWS Batch」の資料およびQA公開http://aws.typepad.com/sajp/2017/02/aws-black-belt-online-seminar-aws-batch.html#QCPzBdn.twitter_tweet_count_m• re:Invent 2016: AWS Big Data & Machine Learning Sessions。https://aws.amazon.com/blogs/big-data/reinvent-2016-aws-big-data-machine-learning-sessions/Spark your ideas with us