ML Study Jams : Machine Learning トレーニングプログラムをやってみた

ML Study Jams : Machine Learning トレーニングプログラム - Homeをやってみました。初心者向けと中級者向けの合計12ラボです。

AWSは普段利用していますが、GCPはまったく触ったことがなかったのでとても参考になりました。無料でQwiklabsのクーポンコードを配ってくれたGoogleに感謝ですm(_ _)m

レーニングプログラムで学べたこと

全12ラボを通じて経験できることは以下になります。もちろんそれぞれ触りだけですが、ついでにドキュメントを読んだりすることで雰囲気はそこそこつかめたと思います。あと機械学習というよりは機械学習関連サービスのハンズオンでした。

  • 初心者向けコースまで
    • GCPのコンソール
    • BigQuery
    • BigQuery Machine Learning (BQML)
    • Cloud Speech API
    • Cloud Shell
    • API Key
    • Cloud Natural Language API
  • 中級者向けコース以降
    • Cloud AutoML API
    • IAM
    • Cloud Storage
    • Cloud Vision API
    • Service Account
    • Cloud Translation API
    • Kubernetes
    • Cloud Pub/Sub
    • Compute Engine
    • Cloud Machine Learning Engine
    • Cloud Dataflow

Qwiklabsの進め方

一通りやってみて、Qwiklabsの進め方について気がついたことをメモしておきます。

まずは一通りラボの内容を読んでから開始する

ラボの先頭に記載されている通り、まずは一通りラボの内容を読んでから開始したほうがよいです。ラボで利用可能なGCPの利用時間は上限があるので、読みながらやると結構時間ギリギリか、場合によっては足りなくなると思います。実際、私は最初のラボを開始してからこのアドバイスを読んだので、最初のラボは時間ギリギリでした。。そのため、2つ目のラボからは最初に一通り読んで内容を把握した上で開始するようにしました。そのおかげで、実際にGCP上で操作した際の不明点を確認する際も時間に余裕があってよかったです。

GCPコンソールをシークレットウィンドウで開く

Qwiklabsはメインのウィンドウで開くようにして、GCPコンソールをシークレットウィンドウで開くようにした方がよいと考えます。最初にQwiklabsをシークレットウィンドウで開いた状態でGCPコンソールも開いたら、シークレットウィンドウ上にGoogleアカウントが2つログインした状態になってめんどうな感じになりました。そのため、以降はGCPコンソールのみシークレットウィンドウで開くようしました。手順としてはラボで[Open Google Console]で開いたタブのURLをシークレットウィンドウに貼ってログインするようにしていました。

ラボは単体で完結する構成になっている

当たり前なんですが、ラボは単体で完結する構成になっています。そのため、前半の諸注意やGCPアカウント有効化手順などは概ね同じ内容になっています。なので特に初心者向けのラボだと慣れてくると前半は読み飛ばして差分だけサクッと試すみたいな感じになります。

ラボの内容が一部古いことがある

これは仕方ないことなんですが、ラボによっては記述内容と実際に試したGCP側の状況が一致しないケースがありました。GCPサービスの更新にラボの更新が追いついていなかったようです。なので、一致していないケースは更新が追いついていないんだろうなと思って読み飛ばすとよいとかと考えます。とはいえ数箇所でしたし、私がトレーニングプログラムをやっている10日間の間にも(偶然かもしれませんが)修正されていたので、更新頻度は高いのかもしれません。

ラボはクエストという単位でまとめられている

Qwiklabsはクエスト - Qwiklabs ヘルプという単位で複数のラボを1つのまとまりにしています。そしてあるクエストのラボをすべて終了するとバッジがもらえるらしいです。なお、今回の12ラボをすべて終了してもバッチはもらえませんでした。

初心者向けコースのメモ

初心者向けコースは全体的に簡単でした。合計で4時間近くかかりましたが、メモを取りながら気になる点などを調べての時間なので単にハンズオンを試すだけなら3時間もかからないと思います。

中級者向けコースのメモ

中級者向けコースはさすがに中級者向けだけあって、ソースファイルを読み込んだりしてそれなりに時間がかかりました。合計で6.5時間かかりました。あと、中級者向けコースは公式サイトに記載されている順番通りだとちょっと難しそうだったので、以下に記載した順序でやりました。

Classify Images of Clouds in the Cloud with AutoML Vision

  • https://www.qwiklabs.com/focuses/1779?parent=catalog
  • AutoML Visionはアップロードした画像に合わせて学習するとのこと。転移学習ベースなんだろうけど、柔軟だなー。
  • Cloud AutoML APIは個別に有効化が必要。しかも1分ぐらいかかった。
  • Set up AutoML Vision
    • add-iam-policy-binding でそれぞれ Role 追加してるけど、IAMの画面で確認した感じ最初から全部設定済みに見えたw
      • Storage bucket も同じでやはり最初から存在してコマンドを実行しても already exists になった。
      • おそらくCloud AutoMLの Set up Now ボタンで関連リソース作成しているのではないかと予想される。
  • Create a dataset
  • Inspect images
    • 少なくともそれぞれ 100 以上必要とのこと。この辺りの閾値を明示しているのはよいなー。
  • Train your model
    • すでにUIが変わっていたw
  • Generate predictions
    • 簡単にテストできるし、サンプルコードがcurlPythonの両方で出るの便利だなー。

Detect Labels, Faces, and Landmarks in Images with the Cloud Vision API

Integrating Machine Learning APIs

Classify Text into Categories with the Natural Language API

Awwvision: Cloud Vision API from a Kubernetes Cluster

  • https://www.qwiklabs.com/focuses/1241?parent=catalog
  • Kubernetesを利用するのはちょっとごつい感じだけど、手順自体は結構シンプルだった。
  • Create a Kubernetes Engine cluster
    • 3分ぐらいかかった。
      • コマンド実行後、K8s EngineとCompute Engineのコンソールでも確認できた。
    • gcloud container clusters get-credentials awwvision
      • クレデンシャル情報を取得して .kube/config に記録する。で、その情報を前提に次の kubectl コマンドが利用できる。実際 .kube/config をリネームしたら kubectl コマンドが利用できなかった。
  • Get the Sample
    • cloud-vision/python/awwvision at master · GoogleCloudPlatform/cloud-vision
      • 一通りソースを読んでみた。概ね理解できた。
      • メインとなる Makefile でそれぞれのサブディレクトリ配下の redis / webap / worker の Makefile をキックしていた。
        • それぞれのサブディレクトリ内の構成も似ていて、spec.yaml が存在し、これでそれぞれのアプリケーションをK8s上にデプロイするようにしていた。
        • webapp と worker はPythonのコードが存在しており、まず Dockerfile でDockerイメージをビルドして、GCRに push する構成になっていた。
        • webapp と worker はCloud Pub/Subで連携する構成になっていて、webapp の start_crawler 関数で pubsub を経由して worker 側の scrape_reddit_task 関数を実行する構成にしていた。で、Redisを共有してクローリングしたデータを共有する構成になっていた。
  • Deploy the sample
  • Check the Kubernetes resources on the cluster
    • ブラウザでアクセスしたらちゃんと表示できた。
    • Pub/SubにTopicもできていたけど、メッセージはSubscriberを作成しないと見れない感じだった。
  • ソースさえ読めば概ね把握できる。あとはK8sとCloud Pub/Subをどこまで深掘りするか次第って感じ。それぞれ別のラボをやってもいいかも。

Real Time Machine Learning with Google Cloud ML

最後に

普段はAWSしか使っていないので、GCPを触ってみていろいろと新鮮でした。やはり似たようなサービスは複数触らないと相対化して評価できないので、今後も機会があればGCPを触っていきたいと思いました。