【SiNCE的AI雑談】Vertex AIを使ってわかった、いいところと使いどころ
Google Cloud で機械学習ワークロードを構築するためのツール群「Vertex AI」。ネット検索で「Vertex AI とは」と検索すれば概要や、初歩的な使い方を説明するコンテンツはいくつもヒットするが、他のAIと比較した記事は意外に少ない。そこでVertex AIを業務に取り入れている株式会社SiNCEでVertex AIを担当エするエンジニアたちを集め、Vertex AIに感じているホンネを聞き出すための座談会を開催した。
(聞き手:株式会社SiNCE 代表取締役・一筆太郎)
目次
超高速でAIモデル構築ができるVertex AI
一筆太郎(以下、一筆) 飯沼さんはSiNCEに来てからVertex AIを使い始めたそうだけど、これまで他のAIはどんなものに触れてきましたか?
飯沼佑太(以下、飯沼) 2つあります。1つはPythonを使ってゼロからプログラミングするというもの。もう1つはIBMのAIにも触れました。
一筆 Pythonで作ったAIと、Vertex AIとの違いはどんなところに感じました?
飯沼 ゼロからモデルを構築するのと比較して、Vertex AIはモデルを構築するスピードが段違いに早かったです。PythonでAIを作る場合には、何のモデルを作るのかとか、モデルに対してパラメーターをどうするとか。こちらが設定しなくてはいけないパラメーターがありますし、それに伴ってデータも整形しなければなりません。Vertex AIの場合、BQML(BigQuery ML)というAutoMLじゃない言語を使っていますが、このデータを使ってこういうモデルを作りたいという書き方をするだけで、あとは自動でモデリングしてくれるんです。これは凄く便利ですし、PDCAを何度も回すうえで、かなり効率が変わります。これはVertex AIの魅力の一つですね。
一筆 SiNCEの中で一番先にVertex AIを始めた鶴見さんは始めた当初、どんな感想を持ってました?
鶴見悠太郎(以下、鶴見) 僕はAutoML担当です。僕が始めた頃はまだ、クレンジングされたサンプルデータを使ってみました、という記事くらいしかネット上になかった時代です。そんな頃にプロジェクトで飲食店のPOSデータを分析することになったので、リファレンス不足で少しだけ苦労しました。エラー対策などのナレッジがない状態での作業だったので、手探りで進めた部分もありました。
エラーのリファレンスがない!
一筆 整形されたデータを使った事例だと、役に立たないもの?
鶴見 どちらかと言えば、データ整形に関する部分です。Vertex AIはデータの持ち方の許容範囲は大きいとはいえ、数値や文字など、読ませるデータの「型」が決まっているんです。そこに異なる型のデータが混在している場合にエラーになるため、Vertex AIに読み込ませる前のデータ整形段階で苦労したんです。
山窪智春(以下、山窪) リファレンス不足は辛いですよね。
鶴見 公式のマニュアルはあるんですが、やはりユーザーの書かれたblogのほうが利用者視点になっているので、トラブル解決法などがわかりやすいんです。そういう記事がまだネット上になかった時期だったので、自分で乗り越える必要がありました。
飯沼 僕はこれまでPythonでAIモデルを作る機会が多かったんですけど、Vertex AIはPythonで作る場合よりも、SQLの知識を要求されるという印象でした。Pythonで作る場合はエラーの表示内容が事細かに、この部分の型が違うなどを教えてくれるんです。ですがBQMLやBigQueryのエラー表示は漠然とした内容のものが多いんですよ。このため、エラーの原因を探るというところで苦戦しました。
鶴見 Pythonのエラーですと「●行にある、この変数は宣言されていません」というエラー表示になるのに対して、BQMLでは「●行にエラーあります」としか表示されなくて。
一筆 Vertex AIができたのは最近ですが、BQMLは以前からあったよね? それでもノウハウが蓄積されていないの? 英語の記事ならあるとか?
飯沼 BQMLは日本語に限らず、英語のリファレンスも少なかったです。
少量データから、驚きの予測の精度が
一筆 さて、改めて、Vertex AIの凄さってどこにあると思う?
鶴見 1000行くらいしかないような、凄く少ないデータからでもある程度の分析ができてしまうところです。さきほどの話にも出たようにデータ整形が大変という要素もあるんですが、それさえクリアできてしまえば、あとはGUIベースで選択&クリックするだけでモデルが作れるという直感的な操作感です。モデル構築までに数時間かかるとはいえ、全体のフローを考えるならば十分に早いです。
一筆 精度的にはどう?
鶴見 Vertex AIというかAutoMLの中には、膨大な量のデータを読み込ませた学習済みのモデルが入ってるんですよ。それを利用して、我々が読み込ませたデータを分析してくれるので、与えたデータが少なくても高度な分析・予測が行われるんです。
一筆 たとえば飲食店のPOSを読み込ませた需要予測を行った場合には、どういう動きになるの?
鶴見 学習済みのデータの動きの中から、読み込ませたデータと近い傾向を持つデータを参照して予測しているんだと思います。わずか2000行程度のデータを読み込ませた結果のうち一番良かったのが0.8だったので、この参照量にしては驚くべき高水準な分析データになったと思います。一般的なAIで予測した場合では、こんな精度は出ません。
飯沼 僕が一番便利だと思っているのは、データが入っているデータベースへ直接つなぎこみができるという部分です。個人開発のデータ分析ならばデータ量も少ないのでローカルPC上で動作させればいいですけど、いま業務で扱っている何百万行という量のデータがあるような分析では、データをローカルPCにダウンロードするだけでも相当時間がかかります。これだとローカルPCが容量不足になる可能性もあります。BQMLというかVertex AIではBigQueryを通じてデータベース上のデータを直接分析できるんです。こうしたデータハンドリングの容易さも、僕は魅力に感じています。
山窪 僕はVertex AIに対して「手軽にそこそこの結果が出る」ところに魅力を感じます。1000件のPOSデータを読み込ませるだけで結果が出るので、そういうフットワークの軽さは強いですね。ある程度、型が定まったタスクについては、抜群の早さと能力を発揮すると思います。
AIの精度を上げるのは高速PDCAサイクル。そこで活きるBQML
一筆 Vertex AIを使っていて、苦労したこととかある?
鶴見 ある案件では特徴量も、データ量も足りていませんでした。過去2年分のデータを使って1年先の未来を予測しなければならなかったんです。もし1ヶ月分の予測をするために1年分のデータを使うというならVertex AIが効くと思います。同じデータを使うなら、予測ではなく線形回帰を使って、うまく特徴量というか変数を増やしたいですね。
飯沼 似た話にはなるんですが、AIモデルの精度を上げるためには、ひたすらPDCAサイクルを回すしかないと思っていて。そうなるとAutoMLはBQMLよりも値段が高いですし、仮説を立てて検証したあとの評価が難しいんですよね。AutoMLだと、どういうモデルが使われて、どういう中味で動いてというのがわからないので。BQMLだと、そういう部分を考察できる範囲が残されているんですけどね、僕はBQMLを使っていろいろ試しながら、最終的にこのデータセットとこの範囲ならいけるんじゃないかと思ってからAutoMLを試してみて、意外と精度いいかもねという流れを期待しています。
鶴見 とりあえずやってみて、考察して、次はこうアプローチしてみようということを試すためのAutoMLという感じですよね。
Vertex AIはブラックボックスAI? ホワイトボックスAI化するためには?
一筆 今後、ホワイトボックスAIの需要が増えていくと思っていて。Vertex AIのAutoMLはブラックボックスになってしまう危険もあるかなと思ってるんだけど、Vertex AIはホワイトボックス化できるものなのかね?
飯沼 僕はVertex AIをホワイトボックス化するのは難しいと感じています。AIモデルを説明するためには、どういった条件でパラメーターが調整されていて、こういうデータに対してこういう挙動になるという説明が必要になると思うんです。AutoMLやBQMLだと、その仕組を把握しているのはGoogleだけになっていて、ユーザー側では把握できないんですよ。どういう分岐条件で答えを出したのかを明確にするためには、Pythonで作ったロジックを検証するしかないと思っています。
山窪 Googleがアルゴリズムを公開してしまうと、Pythonなどで作れてしまうようになるので、ホワイトボックス化することはないと思います。透明性を求めるのであれば、Pythonでコーディングするしかないです。それを重視するならXAI(Explainable AI:説明可能なAI)を使うという方向へシフトしていくと思います。
鶴見 補足説明すると、AutoMLでも「説明可能にする」という設定はあるんです。でも、これをONにすると、学習に要する時間が100倍や1000倍に増えてしまうんですよ。現実的ではないかもしれませんが、できなくはない…かもしれない。可能性としては0ではないというレベルです。
一筆 これって、オンプレとクラウドサーバーの関係に近いんじゃない? AWSのクラウドを借りると確認できる領域は減るけれども、そこはAmazonのサーバーを借りているという信用で担保されているというか。ホワイトボックスAIも、どこまでをホワイトボックスとするかという線引があればいいと思っていて。
飯沼 全部のデータをAutoMLに入れるんじゃなくて、インスタンスタイプ別に分けてみるとか。常に使用するお客さんと、一定時期にしか使用しないお客さんとで分けて予測してみるとか、予測に使うデータを変えてみた上でなら動きを考察できるかなとは思います。Vertex AIのいいところと悪いところの、折衷案を見つけられたらなとは思っています。ある案件のようにデータが2万行あれば、Pythonで作ったAIで予測精度80%超えも実現できるとは思います。でも1000件や2000件程度のデータでも精度80%を達成できるのはVertex AIだからこそというのが僕の評価です。
鶴見 AutoMLに関する予測については難しくて。AutoMLは人間が予測できないというか、高度な数学的な話に踏み込まざるを得なくて。
山窪 AutoML系のプロダクトでも、どこまで透明化しているかというのは製品ごとに違っていて。Dataikuなんかは透明度が高いですけど、Googleはそこまで透明度は高くないです。IBMやソニーなど、いろんな会社から製品は出ていますが、中味を開示しているところもあるんです。そういうところと比べると、Googleの透明性は低いと感じます。
非エンジニアが社内の業務改善をするために使うVertex AI
一筆 ビジネスでAIを活用するとなると、AIと人をどう馴染ませていくかというプロセス設計が大事だと思っていて。それをする上で、Vertex AIってどうなんだろう?
飯沼 AIを使うという部分に焦点を当てると、Vertex AIの容易さは突出しているので、エンジニアじゃなくてもAIを使えるのはVertex AIだと思います。
鶴見 あんまり技術に詳しくない人が業務改善として社内の業務改善をするためにVertex AIを使うというのは素晴らしいと思います。コンサル会社が企業向けに透明性を説明するためには、理解してもらう必要があるかもしれませんが。
一筆 ありがとう、いい話が聞けました。また、こういうのやりましょう。