Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

TensorFlowとAI Platformで実現するコードレスML

By Gad BenramJul 2, 20193 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

0 ryyk3bja967khyim

AIフレームワークの進化により、画面上で数回クリックするだけの手軽さでディープラーニングモデルを構築・デプロイできるようになりました。Tensorflow EstimatorsベースのUIやAPIを使えば、機械学習のコードを1行も書かずにモデルを構築・提供できます。

0 ryyk3bja967khyimPhoto by Adi Goldstein on Unsplash

70年前、コンピュータプログラムを書けるのはごく一握りの専門家だけでした。プログラミングには高度な理論と技術的素養が不可欠だったからです。その後、人類はプログラミングの抽象化とカプセル化を着実に進め、専門知識のない人でもごくシンプルなツールでソフトウェアを作れるようになりました(Wixなどが好例です)。今、機械学習の世界でもまったく同じ流れが、しかも桁違いのスピードで進んでいます。本記事では、機械学習パイプライン全体を生成するシンプルなスクリプトを書いていきます。

本当にコードレス?

本記事には2種類のコードが登場します。1つ目はデータセットを生成するSQLクエリで、これはGoogle Cloud Dataprepのようなツールでも代替できます。2つ目はPythonクライアントライブラリによるAPI呼び出しで、これらの操作はすべてAI PlatformのUIからも実行可能です。ここで言う「コードレス」とは、TensorFlowをはじめとする機械学習ライブラリを一切インポートする必要がない、という意味です。

本デモでは、Google BigQuery上のChicago Taxi Tripsオープンデータセットを使い、乗車地・降車地・乗車開始時刻からタクシーの所要時間を予測します。モデルの学習とデプロイには、TensorFlowをラップしたGoogle Cloudのサービスを利用します。

サンプルコード一式はこちらのGitHubリポジトリでご覧いただけます。

BigQueryで特徴量を抽出する

こちらのノートブックで示したEDAをもとに、学習データセット生成用のSQLクエリを作成しました。

https://gist.github.com/gidutz/86c701c621e48860c8ab135df56a8076

リポジトリでは、Pythonクライアントでクエリを実行し、結果をGCSへエクスポートする方法をご確認いただけます。

注意点! AI Platformでこのデータからモデルを構築するには、最初の列を目的変数とし、CSVエクスポートにヘッダー行を含めない必要があります。

ハイパーパラメータチューニングジョブを投入してデプロイする

数十万件の乗車データが揃ったら、TensorFlow Estimator APIをベースにしたシンプルなニューラルネットワーク構造と、探索するパラメータ空間を定義します。今回の仕様では、回帰タスク(所要時間の予測)を解く隠れ層3層のニューラルネットワークを構築し、学習率・正則化係数・最大ステップ数の最適値を探るため50回のトライアルを実行します。

https://gist.github.com/gidutz/5408bb93d0e6ab7fe9fc5cb4a82447cc

上記の仕様を用意すれば、Pythonクライアントから学習ジョブを起動できます。

https://gist.github.com/gidutz/f166148d84c4d4beb98bc13b831b6284

APIクライアントでジョブの実行状況を監視し、完了したらモデルをデプロイしてテストします。

https://gist.github.com/gidutz/70b126b2a7d561e9d5f7f232d8f754eb

これで、API呼び出しだけで機械学習パイプラインのデプロイが完了しました。

予測を取得する

予測を取得するため、テストセットの一部レコードをメモリに読み込み、デプロイ済みのバージョンへ送信して推論を実行します。

https://gist.github.com/gidutz/e786c430c5ea767b1bec01bcee03a863

もっと記事を読みたい方は、ブログをご覧いただくか、GadのTwitterをフォローしてください。

技術面でアドバイスをいただいたAdam Horowitzに感謝します。