技術覚書

自分のために技術的なことを色々と書こうと思います。

【行ってきた】(20190604)CloudOnBoard 大阪スペシャル

こんにちは。 GCPの勉強会に参加してきました。

f:id:manabu-hashimoto:20190604212400j:plain
CloudOnBoard 大阪

f:id:manabu-hashimoto:20190604212404j:plain
セミナーのテキスト

目次

これに参加しました

inthecloud.withgoogle.com

どうしてこれに参加したの?

主な理由は以下2点。

  • GCP(GoogleCloudPlatform)ってどんなのかを知りたかった。
  • GCPを使った機械学習のモデル構築について知りたかった。

プログラム内容

  1. Google Cloud Platform 入門編トレーニン
  2. Big Data 講座
  3. アーキテクトデザイン講座
  4. 機械学習講座

自分は1.Google Cloud Platform 入門編トレーニングと 4.機械学習講座を申し込みました。 詳細はリンク先参照。

当日やったこと

  • Google Cloud Platform 入門編トレーニン
    • Google Cloud Platform(GCP)概要
    • 事例紹介
    • Google Cloud Platform サービス概要
    • コンピューティング
    • ストレージとデータサービス
    • 機械学習
    • 今後の学習の進め方
  • 機械学習講座 Natality dataset(1969年から2008年の米国における出産記録を集めたデータセット)を 使って特徴量(妊娠期間、胎児の性別など)から新生児の体重を予測する機械学習モデルを 作成する一連の流れについて解説。

気づき・メモ

以下、雑なメモです。

初めてのGoogleCloudPlatform

GCPサービス概要

  • 「リージョン」「ゾーン」「プロジェクト」を理解しておく。
  • サービスごとに「リージョナル」か「ゾーナル」か「グローバル」かを意識することが重要。
  • 使いたいサービスとデータを格納するリージョンはあわせておいたほうがいい。(レイテンシに関わる)
  • プロジェクトは開発・ステージング・本番の3つ用意するのがベストプラクティス。
  • プロジェクトIDは世界で一つ。重複不可。
  • 英語のドキュメントを見たほうがいい(情報が早い)
  • GoogleIAMは管理者向け。開発者に使えるサービスやロールの割り当て・管理ができる。
  • ロールをカスタム(組み合わせ)して作成することも可能。
  • GoogleCloudドキュメントの「役割について」が役に立つ。
  • 「Big~~」はペタバイトクラスのデータを取り扱うサービス。
  • BigTable」「BigQuery」の違い:「 BigTable」はNoSQLを使う。「BigQuery」はSQLを使う。
  • CloudShellが便利。HomeBrewと組み合わせて使うとよい。

    GoogleComuteEngine(GCE)

  • VPC(VirtualPrivateCloud)で「default」ネットワークが自動でできるが、自社のファイアウォールにひっかかったりするので消しておくこと。
  • 東京と大阪異なるリージョン間を内部IPでつなぐことができる。
  • 内部IPはDHCPで払い出される。固定化も可能。
  • 内部的に「<リージョン名>.c.<プロジェクト名>」で名前が付くので、この名前を指定すればアドレスがDHCPでもマシンの特定が可能。
  • 「共有VPC」という複数のVPCをまとめる便利なサービスがある

    GoogleAppEngine(GAE)

  • JavaPythonはサポートが手厚い。
  • Googleの社内標準の言語*1に対応。
  • リージョナルなサービスである。海外リージョンのデータにアクセスするとレイテンシが下がる。

    GoogleKubernetesEngine(GKE)

  • 「gcloud container cluster create」コマンドで「--preemptible」オプションを有効にすると70%OFFでkubernetesサービスを利用できる。

CloudSQL

  • インスタンスの接続方法は(1)外部IPアドレス、(2)内部IPアドレス、(3)専用proxyの3つ。
  • MySQLPostgreSQLには対応。Oracleは未対応。

    CloudSpanner

  • 費用がけっこう高い。1リージョン・1ノードで約10万かかるのでてがるには使えない。
  • 世界中からのアクセス・トランザクションが発生する要件に強い。
  • カサンドラというDBとよく似てる

    CloudDataStore

  • テラバイト級のデータ量を扱うのが適切。ペタバイト級になるとパフォーマンスが悪化する。

    CloudStorage

  • BLOBデータを取り扱う。
  • 「Nearline」\は月1回読み書きするか、「Coldline」はそれよりもっと頻度が少ない用途で利用したほうが安くなる。
  • ストレージクラスはライフサイクルを意識して選ぶ。ライフサイクルを設定・指定することも可能。

    BigQuery

  • 「BigQuery 150万」で検索すると悲惨なケースを知ることができる。
  • 「stack driver logging」のログデータは30日で消える。⇒BigQueryに保管して、永続化。その後分析に使うのがおススメ。
  • 「DataPortal」はBigQueryのデータを可視化するツール。BIツールとして使える?

    機械学習

  • googleでは4,000個もの機械学習のモデルを活用している。
  • TensorFlowは2.0がリリースされ、今後それが主流になる。今後1.x系の話なのか、2.x系の話なのか意識する必要がある。
  • 「us-central」「asia-east」「europe」の3リージョンだけ使える。(東京・大阪リージョンはまだ使えない。)

    CloudVisionAPI

  • OCRはデジタルテキストの読み取り精度は高いが、手書き文字の精度は低い。

    機械学習講座

  • CloudDatalab・・・JupyterNotebookがGCPで使える。BigQuery、CloudDataflow、Tensorflowを連携・制御ができる。
  • データの前処理が一番大変。データを見てデータの特性を見たり、どうすれば精度があがるか検討する
  • NatalityDatasetは誰でもアクセス可能な公開データ
  • 構造化データ(RDB)を使って機械学習モデルを作ることも珍しくはない。
  • 機械学習と統計をごちゃまぜに考えない(ゴールが違う)  - 機械学習のゴールは未来を「高い精度」で予測すること。  - 統計のゴールは過去を分析すること。
  • 極端な値へのアプローチは(1)そもそも使わない、(2)学習データからあえて情報量を削減した人工データを作るの2択。
  • 「どの程度精度が高ければいいのか?」は求められるビジネス要件・ユースケース次第。
  • 一定の精度が出るまでモデルの学習と評価繰り返し実行しないといけない。TensorflowではEstimatorを使って学習と評価を自動化できる。
  • SavedModelで学習済みモデルをエクスポートできる。CloudMLEngineのオンライン予測APIで利用できる。
  • モデル開発の流れ
    1. ノートブック上でTensorflowのコードを作成
    2. 小さなデータセットを使ってノートブック上で学習
    3. TensorflowのコードをPythonのパッケージに置き換え
    4. CloudMLEngineを使って全データセットで分散学習
    5. 学習済みモデルをデプロイしてAPI

おまけ

すごいだろ。。。これ。。。全部タダなんだぜ?

f:id:manabu-hashimoto:20190604212410j:plain
午後の部も受講する人にはお弁当がついてきました。

f:id:manabu-hashimoto:20190604212414j:plain
コーヒーとお菓子までついてます。至れり尽くせり

f:id:manabu-hashimoto:20190604213617j:plain
アンケートに答えると折り畳み傘プレゼント

参考

GCPUG

gcpug.jp

GCPUG大阪(conpass)

gcpug-osaka.connpass.com

*1:C++, Java, Python, javascript, typescript, GOの6つ