GCPのBigDataやMachineLearning向けトレーニング「CPB100」に参加しました
インフラエンジニアの伊藤です。
最近クラウドでぐんぐん伸びて来ている(と個人で思っている)のが
Google Cloud Platform(GCP)です。
2016年12月にGoogle Cloud OnBoardというGCPのセミナーに参加したのですが、
その時は1,000人以上の参加者がいたようです。
Google Cloud OnBoardに参加しました | 株式会社ビヨンド
ここまでの広がりを日本で見せているのは、東京リージョンの登場ではないでしょうか。
東京の Google Cloud リージョン | Google Cloud Platform
たしか2016年10月か11月ぐらいだっと思います。
と、前置きが長くなったのですが、今回タイトルにあるように、
GCPのトレーニング「CPB100」に参加してきました。
主にビッグデータや機械学習に関するトレーニングになります。
Google Cloud Platform 無料トレーニングツアー | 株式会社トップゲート
BigData(ビッグデータ)について
今回のセミナーでは具体的な操作などはしなかったのですが、概要などを色々教えていただきました。
Googleのビッグデータのサービスといえば、やはり「BigQuery」になります。
BigQuery- アナリティクス データ ウェアハウス | Google Cloud Platform
OnBoardでもお話されていたことももちろんありました。
BigQueryは、100億行の正規表現の置換を10秒弱ぐらいで完了させる性能があります。
で、BigQueryの内部でどういう動作になっているかというと、
データを分割してそれぞれHDDに保存して、クエリを走らした際にデータを取り出し、それぞれコンテナを作っているそうです。
どうしてもクエリを走らした際にはディスクI/Oがネックになるので、たくさんのコンテナに分割して高速な分析を可能にしています。そういえばBigQueryはインデックスを貼らないで、フルスキャンするそうです。
データが大きすぎるためにインデックスを貼るほうが難しいそう。
他のサービス
GCP | AWS | 概要 |
---|---|---|
Cloud Dataflow | Amazon Elastic Map Reduce | バッチ処理などのマネージドサービス |
Cloud Dataproc | Amazon Elastic Map Reduce | SparkやHadoopのマネージドサービス |
Cloud Pub/Sub | Amazon Simple Notification Service | シンプルなメッセージングサービス |
この辺りがあります。
わかりやすくAWSのサービスとの比較をつけておきました。
流れとしてはこんな感じですかね。
- Compute Engineでデータを処理別に振り分ける
- CloudStorageにデータが保存される
- Pub/SubでCloudStorageのデータを受け取って、しかるべきところに投げる
- DataflowやDataprocでデータを処理する
- またCloudStorageに処理したデータを保存する
簡単なデータであればComputeEngineで終わらせれますが、
そこが単一障害点となってしまいます。
マネージドサービスをどうやってうまいこと使うかが、「クラウドを上手に使う」ってことにつながると思います。
MachineLearning(機械学習)について
機械学習は、Googleを使っていると何気ないところに存在します。
例えばGMail。今はまだ英語限定の機能なのですが、
文脈から推測して返信候補を出してくれるようになっていて、それには機械学習が使われています。
Computer, respond to this email: Introducing Smart Reply in Inbox by Gmail
また、Googleのデータセンターの冷却電力を機械学習で調整し、40%削減に成功しています。
ニュース - Googleがデータセンター冷却電力を40%削減、DeepMindのAIを活用:ITpro
いろんなAPI
Googleが今まで培って来たものをAPIとして提供してくれています。
Google翻訳ももちろん機械学習のAPI(Traslation API)を使っています。
例えばこれ。
Speech API - 音声認識 | Google Cloud Platform
そのままですが、しゃべったものを文章に起こしてくれます。
GoogleのアプリやYoutubeでもこの機能はありますよね。
画像認識や文字認識はありますが、Google Cloud Next ’17では、こんなものが発表されたようです。
Cloud Video Intelligence - Video Content Analysis | Google Cloud Platform
ビデオ版画像認識ですね。パブリックベータなので、試したかったら申し込みが現段階では必要です。
自分で作る
既存のAPIであれば、人の画像を画像認識APIで通すと、「人」「男性」といった認識まではできますが、
「個人名」などはわからないですよね。
それは、既にGoogleが提供しているAPIでは個人名までは学習されていないからです。
結構有名な事例なのですが、TensorFlowというGoogleが提供する機械学習のライブラリがあるのですが、
それを使って「いいきゅうり」とか「大きなきゅうり」を振り分けた事例です。
Google Cloud Platform Japan 公式ブログ: キュウリ農家とディープラーニングをつなぐ TensorFlow
ざっくりというと、こんな流れが必要となります。
かなりゴリゴリと書いていかないといけないです。
- 学習用のデータを用意して、アルゴリズムを作成して、「学習済みのモデル」を作成する
- 学習済みのモデルを使う
- どんどん学習させて精度を高める
ただし、アルゴリズムを実装するにはかなり大変です。
そこをTensorFlowの登場になります。
TensorFlowはDeepLeraningの実装するためのライブラリ。
先ほども言った通り、「Googleが開発したものをGCPのサービスとして登場し、オープンソース化したもの」です。
C++とPythonのAPIが用意されています。
また、MachineLearningは学習するときに非常に高いリソース量が必要になります。
主にGPU、CPUなどですね。(画像認識とかするので)
そのための「Cloud Machine Learning Engine」が用意されています。
Machine Learningでリソースが必要なのは「学習するときだけ」なので、クラウドに非常に向いています。
GPUが使えるようになっていて、GPU特化のマシンが裏で大量に立ち上がる、という動きです。
Predictive Analytics - Cloud Machine Learning Engine | Google Cloud Platform
TensorFlowについて気になるかたは、TensorFlow User Groupがあるので、
そこでの勉強会に参加してみるのもいいと思います。
TensorFlow User Group Tokyo - connpass
ただし、すげー人気で、20人ぐらいの勉強会に対して200人の参加だったり...!!です。
まとめ
ここ以上の色々なお話がありましたが、それは参加した方のみということで。。
お昼はお弁当が提供されましたよ。うまかった。
もっとうまそうに写真撮れよって話はなしで。
あ、AWSとよく比較されるGCPですが、話を聞いててなるほどと思ったのが、以下の部分。
AWSでは、「既にオープンソースとして提供されているプロダクト(例:MemcachedとかElasticSearchとか)をAWS上に乗せてユーザーに使いやすい状態で提供」してくれますが、
GCPでは「自分たちで開発したプロダクトを使い込んで、
そのプロダクトをユーザー向けにGCPのサービスとして提供」をしてくれます。
例えばGoogleが開発したMapReduceはDremelと進化を遂げてGCPの「BigQuery」としてリリースされていますし、MapReduceはHadoopとして今はオープンソースで使えるようになっています。
GCPは基本的にはAWSとは逆のアプローチなんですね。