[GCP] GCPサービスを勝手にまとめてみた(AIと機械学習編)

# GCPって
https://qiita.com/risa0320/items/5f34bc9102e575705274

# サービスの分類
おおまかにはこんな感じ。（一部省略してます）
※2019年8月末時点のもの。
※α版、β版を含む。
https://cloud.google.com/products/?hl=ja よりいろいろ引用してます。

| 分類       |  サービス例    |
|:-----------------|:------------------|
| AIと機械学習   | AutoML,Vision AI,Cloud TPU... |
| API管理 | Apigee Sense,Cloud Healthcare API... |
| コンピューティング | Compute Engine,App Engine,Cloud Functions... |
| データ分析 | BigQuery,Cloud Composer,Cloud Dataflow... |
| データベース | Cloud SQL,Cloud Bigtable,Cloud Spanner... |
| デベロッパーツール | Container Registry,Cloud Build... |
| ハイブリットとマルチクラウド | Anthos,GKE On-Prem... |
| IoT | Cloud IoT Core,Edge TPU |
| 管理ツール | Stackdriver,Monitoring,Private Catalog... |
| メデイアとゲーム | Zync Render,Anvato... |
| 移行 | Cloud Data Transfer,Transfer Application... |
| ネットワーキング | Virtual Private Cloud,Cloud DNS,Cloud NAT... |
| セキュリティ | Cloud Security Scanner,Cloud IAM,Cloud HSM... |
| ストレージ | Cloud Storage,Cloud Firestore... |

# サービスをもう少し深く見てみる
## AIと機械学習
### AI Hub(β版）
機械学習チームがワンクリックでデプロイできる、ホストされた AI リポジトリ。
> Google Cloud の AI Hub には、エンドツーエンドの AI パイプラインやすぐ利用できるアルゴリズムなど、エンタープライズ クラスの共有機能が用意されています。これにより、AI コンテンツを組織内でホストして、社内の開発者とユーザーの間の再利用や共同作業を促進します。企業ユーザーは、社内の他のチームが構築した AI コンポーネントを探し、Google AI、Google Cloud AI、Google Cloud Partners で公開されている AI コンテンツを利用できます。また、Google Cloud およびハイブリッド インフラストラクチャでのテストや本番環境での運用を目的に、Google 独自の Google Cloud AI と Google AI テクノロジーを簡単にデプロイできます。

<利点>

* 探索
* 共有
* デプロイ

組織内で作成されたAIコンポーネントを探しだり、再利用を可能にし、あっちこっちでおんなじようものを作成、管理しなくてもよくなる。
また、Hubというだけあって、デプロイが容易になる。

AIや機械学習に力を入れてきているからこそ、それらをまとめ、再利用を可能にしていこうとしているように思う。
なので、AIや機械学習のサービスをがっつり使っていこうとすると、今後必須になってくるサービスの1つなのかもしれない。（今はまだβ版だけど）

### Vision AI
クラウドやエッジにある画像を分析。
> AutoML Vision を使用してクラウド内またはエッジにある画像から有用な情報を引き出し、事前トレーニング済みの Vision API モデルを活用して感情を検知し、テキストを理解できます。

Vision AIには2つの画像処理サービスがある。

* AutoML Vision
* Vision API

違いは簡単。
Google側で事前にトレーニングされたモデルを使用したい（Vison API）か、独自にカスタマイズして機械学習モデルを使用したい（AutoML Vision）か。

<利点>

* オブジェクトの自動検出
* エッジのインテリジェンスを得る
* 購入行動の支援

画像内のオブジェクトの位置や複数オブジェクトを検出し、分類を行ってくれる。
AutoML Vision Edge を利用して、ローカルデータに基づいたリアルタイムのアクションの実行が可能になるだけでなく、Vision Product Search を利用すると、類似商品の検索もできる。

説明を見ている感じでは、スマホアプリで役に立ちそうな内容。

### Natural Language
Google の機械学習を使って、非構造化テキストから分析情報を得ることができる。
> Natural Language では、テキストの構造や意味を明らかにするために機械学習が使用されます。人、場所、イベントに関する情報を抽出し、ソーシャル メディアの感情や顧客との会話について理解を深めることができます。Natural Language を使用すると、テキストを分析し、Google Cloud Storage のドキュメント ストレージ上のデータと統合することもできます。

大きく2つのタイプが選べる。

* AutoML Natural Language
* Natural Language API

感情分析、エンティティ分析、エンティティ感情分析、コンテンツ分類、構文分析などができる、

<利点>

 * 顧客からの分析情報
 * マルチメディアと多言語のサポート
 * 重要な主要ドキュメントエンティティの抽出
 * 領収書と請求書の把握
 * コンテンツの分類と関係グラフ
 * Googleのディープラーニングモデル

文字だけでなく、会話の音声からも感情分析が可能で、かつそれを低コストで実現できるのはすごい。

### Cloud Speech-to-Text API
120 の言語を音声認識
> Google Cloud Speech-to-Text では、使いやすい API で高度なニューラル ネットワーク モデルを利用し、音声をテキストに変換できます。API は 120 の言語と方言を認識し、グローバルなユーザーベースをサポートします。音声コマンド コントロールの有効化や、コールセンター音声の文字変換などが実現可能です。また、Google の機械学習技術を使用することで、リアルタイム ストリーミング音声も録音された音声も処理できます。

最新のディープラーニングのニューラルネットワークアルゴリズムを利用して、音声を高精度で認識しているそう。
また、言語だけでなく方言も認識してくれるというのは、さすがGoogle！

<特徴>

* 自動音声認識
* グローバルな語彙
* 語句のヒント
* リアルタイム ストリーミングまたは事前録音の音声に対応
* 言語の自動検出（β版）
* ノイズ低減
* 不適切なコンテンツのフィルタリング
* 句読点入力の自動化（β版）
* モデルの選択
* 話者ダイアライゼーション（β版）
* マルチチャネル認識

句読点がつけれるのは裏ですごいディープラーニングが動いている証拠。
Vision APIで感情分析と組み合わせたら、面白そう。

### AutoML Tables(β版)
最先端の機械学習モデルを自動的にビルドして、構造化データに対してデプロイできる。
> AutoML Tables を使用すれば、チーム内のデータ サイエンティスト、アナリスト、デベロッパーが、さらに高速かつ大規模に、最先端の機械学習モデルのビルドや構造化データへのデプロイを自動化できます。エンタープライズ データを活用し、サプライ チェーン管理、不正行為の検出、見込み顧客のコンバージョン最適化などのミッションクリティカルなタスクに取り組んで顧客の生涯価値を高め、ビジネスを変革しましょう。

<利点>

* モデルの品質向上
* モデルのビルドが容易に
* モデルのデプロイとスケーリングが容易に
* ユーザーオプションが柔軟に
* 時間を短縮
* コストを削減

前処理も含めてコードレスにいい感じのモデルの作成ができ、ボタン一つでデプロイができるのは魅力的。
また、APIやノートブック環境で使用できるのは楽しそうだし、気軽に触れそうなのはいい。

<モデルの種類>

* バイナリ分類
* マルチクラス分類
* 回帰

<AutoML Tables の仕組み>
> AutoML Tables とは、教師付きの学習サービスです。これは、ユーザーがサンプルデータを使用して機械学習モデルをトレーニングすることを意味します。AutoML Tables は表形式（構造化）データを使用して、機械学習モデルが新しいデータについて予測を行うようトレーニングします。データセット内の列の 1 つはターゲットと呼ばれ、モデルはそれを学習して予測します。他のデータ列の一部は入力（特徴と呼ばれる）であり、モデルはそこからパターンを学習します。同じ入力特徴を使用すれば、ターゲットを変更するだけで、複数の種類のモデルを構築できます。このメール マーケティングの例では、同じ入力特徴で 2 つのモデルを構築できることを意味します。1 つのモデルは顧客のペルソナ（カテゴリ型のターゲット）を予測でき、もう 1 つは顧客の毎月の支出（数値型のターゲット）を予測できます。

使い方はこちら→https://cloud.google.com/automl-tables/docs/beginners-guide?hl=ja

### Cloud AutoML(β版)
最小限の労力と機械学習の専門知識で、高品質のカスタム機械学習モデルをトレーニングできる。
> Cloud AutoML は、機械学習プロダクトのスイートです。AutoML を利用すると、機械学習の専門知識が限られていても、ビジネスニーズに合った高品質のモデルをトレーニングできます。 Cloud AutoML は、Google の最先端の転移学習とニューラル アーキテクチャ検索テクノロジーを活用するプロダクトです。

<利点>

* 最先端のパフォーマンス
* 簡単な設定ですばやくスタート
* 高品質なトレーニング データの生成

GUI 操作で、高速にモデルのトレーニング、評価、改善、デプロイを実行可能。

<特徴>

* カスタムモデル
* 完全統合
* Google の AutoML と転移学習によるサポート
* データ ラベリング サービスとの統合

このCloud AutoMLとして、各サービスが存在している感じ。

* AutoML Vision
* AutoML Video Intelligence
* AutoML Natural Language
* AutoML Translation
* AutoML Tables

### AI Platform Notebooks(β版)
プロジェクトをたった数分で立ち上げて稼働させることができるエンタープライズ ノートブック サービス。
> AI Platform Notebooksは、統合開発環境 JupyterLab を提供するマネージド サービスです。機械学習のデベロッパーやデータ サイエンティストは、最新のデータ サイエンスと機械学習のプレームワークがプリインストールされた JupyterLab インスタンスをワンクリックで作成できます。 Notebooks は BigQuery、Cloud Dataproc、Cloud Dataflow と連携するため、データの取り込みから前処理、探索、そして最終的にモデルのトレーニングとデプロイまで、スムーズに進めることができます。

<利点>

* 簡単な設定ですばやくスタート
* 一般的なオープンソース フレームワークを使用
* オンデマンドでのスケーリング
* エンドツーエンドのサポート

前処理からモデルの作成やデプロイを1箇所で行えるのは嬉しい。
また、その際に容易に各種GCPサービスとの連携ができたり、CPU、RAM、GPU を追加しながらスケーリングしていける。
（あれ、Datalobに似てる...!?）

<特徴>

* マネージド型の JupyterLab エクスペリエンス
* AI Hubのサポート
* データ サイエンス フレームワークのサポート
* 機械学習用に最適化
* 統合されたエクスペリエンス
* Gitのサポート

事前にデータサイエンスライブラリが用意してくれているのは、何気に嬉しい。（準備するの意外に面倒）
<img width="825" alt="スクリーンショット 2019-08-25 14.26.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380480/f66d1363-b3fc-855c-b4ce-45ac43e6e90d.png">

めっちゃ使いたい！！

### AI Platform Deep Learning VM Image
ディープ ラーニング アプリケーション向けに事前構成された VM
> Google Cloud ならディープ ラーニング プロジェクトを開始するために必要なものを備えた VM をすばやく、簡単にプロビジョニングできます。AI Platform Deep Learning VM Image を利用すれば、VM イメージのインスタンスを簡単に生成できます。これには、Google Compute Engine インスタンス上で特によく利用されているディープ ラーニングと機械学習のフレームワークが含まれています。たとえば、人気のある ML フレームワーク（TensorFlow、PyTorch、scikit-learn など）が事前にインストールされた状態で Compute Engine インスタンスを起動できます。ワンクリックで Cloud TPU および GPU サポートを追加することもできます。Google Cloud Platform（GCP）の Cloud Marketplace UI、またはコマンドラインから Cloud SDK を使用してイメージのインスタンス化を行うことも可能です。

おお！素晴らしい！

<特徴>

* 高速プロトタイピング
* モデルのトレーニング時間の短縮
* 柔軟性

なんでもそうですが、やろうと思った時に必要なものが揃えられている環境があるのは嬉しい。
また、TPUやGPUをボタン一つで追加できる簡単さ。

<特徴>

* スピードを目的とした最適化
* セットアップ不要
* 統合されたノートブック エクスペリエンス
* 最新のサポート

TensorFlowを使うなら、断然こっちを使用する方がパフォーマンスが10％もいいみたい。

### Cloud TPU
機械学習モデルのトレーニングと実行をこれまで以上に高速化
> 機械学習は、ネットワーク セキュリティから医療診断に至るまで、ビジネスや研究に飛躍的な進歩をもたらしました。誰もが同じようなブレークスルーを達成できるよう、Google は Tensor Processing Unit（TPU）を開発しました。Cloud TPU は、翻訳、フォト、検索、アシスタント、Gmail などの Google サービスを強化するカスタム設計の機械学習 ASIC です。ここでは、TPU と機械学習を利用して会社の成功、特に規模の拡大を加速させる方法について説明します。

Googleってこういうところまで開発しているのがすごい。。

<利点>

* Google Cloud 上の AI 向けに開発
* ML ソリューションでのイテレーションの高速化
* 定評ある最新のモデル

実際にどの程度のレベルからTPUを使用することになるのかはわからないが、がっつり機械学習をするにはこの辺の情報のキャッチアップも必要になるんだろうな。

<特徴>

* モデルライブラリ
* Cloud TPU からカスタム マシンタイプへの接続
* Google Cloud Platform との完全な統合
* プリエンプティブル Cloud TPU

### Kubeflow
Kubernetes 用の機械学習ツールキット
> Kubeflow は、機械学習に最適なオープンソース システムをデプロイする簡単な方法を提供することによって、Kubernetes の機械学習ワークフローのデプロイを、移行やスケーリングが可能なシンプルなものにします。

### Recommendations AI(β版)
個人に極めて特化したおすすめの商品情報を幅広く提供。
> Recommendations AI は、Google の最新の機械学習アーキテクチャを使用して、お客様のリアルタイムの行動や、品揃え、価格、スペシャル オファーなどの変数の変化に動的に適応します。世界各国の小売業者による先行結果では、従来のレコメンデーション システムに対して飛躍的な向上が見られ、その内のいくつかは最大で以下の結果を達成しています。

<利点>

* フルマネージド サービス
* 簡単な設定ですばやくスタート
* データの価値を最大限に引き出す
* 戦略を選択する
* あらゆるタッチポイントで提供
* ご自分のデータ、ご自分のモデル
* シンプルな料金体系
* グローバル スケールに自動対応
* GDPR 準拠

> データの前処理、機械学習モデルのトレーニングやハイパーパラメータ調整、負荷分散やインフラストラクチャの手動プロビジョニングによる予測困難なトラフィック急増への対処、どれも不要です。Recommendations AI がすべて自動で行います。

え、なんだこれ。
是非とも他製品で作成したレkメンド情報と戦わせてみたい！
また、一見カスタマイズ性が低いのかなと思ったら、レコメンド上位法のカスタマイズができるよう。
なので、ビジネスごとに少しずつ異なるユーザーの購買特徴を微調整したり、利益率が低くてあまりレコメンドしたくない商品をフィルタリングしたりができる。
RichRelevance的な。

### Deep Learning Containers（β版）
ディープラーニング環境用に事前構成および最適化されたコンテナー。
> Deep Learning Containersを使用してAIアプリケーションを開発、テスト、および展開するためのポータブルで一貫性のある環境で迅速にプロトタイプを作成します。これらのDockerイメージは一般的なフレームワークを使用し、パフォーマンスが最適化され、互換性テストが行​​われ、すぐにデプロイできます。ディープラーニングコンテナは、Googleクラウドサービス全体で一貫した環境を提供し、クラウドでのスケーリングやオンプレミスからの移行を容易にします。Google Kubernetes Engine（GKE）、AIプラットフォーム、Cloud Run、Compute Engine、Kubernetes、Docker Swarmにデプロイする柔軟性があります。

Dockerから使えるのか！？

<利点>

* 一貫した環境
* 高速プロトタイピング
* 最適化されたパフォーマンス