Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Vizierのブラックボックス方式が持つ強み

By Joshua FoxAug 7, 20234 min read

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

あくまで「助言者」

「Vizier」は王の助言者を指す称号で、アラビア語の وزير wazīr がペルシア語・トルコ語を経て伝わった言葉です。Vizier は王の政策に助言はしても、決定は下しません。Vizier のブラックボックス最適化もまさに同じ発想で動きます。最適化の試行そのものを代行してくれるわけではないのです。一方、GCP や AWS が提供するハイパーパラメータチューナーサービスは、すべてを丸ごと引き受けてくれます。たとえば学習率を 0〜1 の連続値、最小子重み(min child weight)を 1〜3 の整数、といった形でハイパーパラメータの範囲を渡すだけ。あとはハイパーパラメータチューナーのクライアントを作って fit() のような関数を呼び出せば、ファイア・アンド・フォーゲットで完結します。関数は数時間ほど走り続け、内部で複数回の学習イテレーションを実行しながら、その都度異なるハイパーパラメータを選んでいきます。最終的にチューナーは見つけ出した最良のモデルを返します。

このブラックボックス型の最適化プロセスは、ユーザーの制御の外にあり、外からは見えません(少なくとも API のレベルでは。実際には監視の仕組みが用意されているのが一般的です)。

注:「ブラックボックス」とは、試行の中身が Vizier 側からは見えないという意味です。Vizier は ML の学習や A/B テストの内容を一切知りません。各試行で最適化されている関数の勾配や、その上下動についても何も知りません。

逆にユーザーから見れば、これらの試行は完全に「ホワイトボックス」です。主導権はあなたにあります。

優位性

ハイパーパラメータチューナーサービスのほうが Vizier よりもシンプルに見えます。実際 Google も、Vertex AI AutoML や AI Platform(旧ブランド名)のハイパーパラメータチューナーを Vizier ベースのエンジンの上に構築しています。とはいえ、Vizier と直接やり取りするブラックボックス方式ならではの利点があります。

制御性

ブラックボックス最適化なら、より高い制御性が手に入ります。

そもそも試行の中身は、ユーザー自身の専門領域にあるはずです。ウェブサイト開発者は自社サイトの細部を知り尽くしていますし、データサイエンティストは ML アルゴリズムの中身を理解しています。最小のコストで最大の成果を引き出す方法は、すでに十分練り込んできたはず。Vizier を使えば、実際の ML 学習に対する完全な制御権を握ったままにできます。どのインフラや API を使うか、どの GPU・TPU を何基使うかまで、すべて自分次第です。

Vizier の提案を無視して、自前のパラメータで進めることさえ可能です。もちろん通常は提案を採用するでしょう。そのために Vizier を呼び出しているのですから。たとえば ML の新しいアルゴリズムを論文や記事で知ったとき、あるいはプロダクトマネージャーがウェブサイトの A/B テストには入っていなかった新しいバリアントを試したいと言い出したとき、迷わずそれを試せます。自前のパラメータで試行を回した場合でも、そのパラメータと指標を Vizier に渡せば、Vizier の提案を採用したときと同じように学習させられます。

スケーラビリティ

Vizier が担うのは、複数の試行をまたいで最適化する「軽い」部分だけです。専用ハードウェアを大量に要する ML の重い処理には踏み込みません。ウェブサイトの A/B テストや工場運営といった重い処理も同様です。だからこそスケールしやすいのです。ワークフロー全体で最も負荷が大きいのは実際の学習やその他の最適化対象プロセスですが、その部分はユーザー自身が処理するため、自分の環境に最適なベストプラクティスをそのまま適用できます。(下の図1では、学習マシンが Vizier REST API 配下の「Evaluation workers」に該当します。)

一方で Vizier 側は、提案を生成したり停止タイミングを示唆したりするワーカーをスケーラブルに起動していきます。状態は単一の最適化実行のコンテキスト内ではなくデータベースに保持されるため、障害からの復旧も可能です。さらに、提案ワーカーが行うのはハイパーパラメータ最適化だけで、ユーザー側の「重い処理」は引き受けないため、Vizier はこれらのワーカーを効率よくスケールアップできます。

図1. アーキテクチャ図(研究論文の図をもとに作成)

多目的最適化

ほとんどの最適化プロセスやハイパーパラメータチューナーは、単一の指標を最大化することを目的としています。Vertex AI Vizier も、最も一般的な使われ方はこれです。しかし、複数の指標を同時に最適化したい場面もあります。ウェブサイトの A/B テストなら、収益と滞在時間の両方を伸ばしたいかもしれません。あるいは二面市場を運営していて、買い手にはお得な取引を、売り手には利益の最大化を、両立させたいケースもあるでしょう。

概念を掴むためのシンプルな例として、Google が公開しているサンプル Notebookをご覧ください。同じ2つの入力パラメータを持つ三角関数2つを同時に最大化する例になっています。

図2. 両方の関数を同時に最大化する一点は存在しない。

見ての通り、両方の指標を同時に最大化できる単一の点は存在しません。そこで Vertex AI Vizier はパレートフロンティアを導き出します。これは、一方の指標を改善しようとすると必ずもう一方が悪化してしまう、その境界を示すラインです。最適解は1点ではなく、境界線として表されるのです。

次回予告:柔軟性、そして初めての Vizier ML Notebook

Vizier はシンプルなシステムで、基本はデフォルト設定のまま使えますし、通常はそれで十分です。とはいえ、機能をさらに作り込んでチューニングすることもできます。次回の記事では、その方法をコードサンプルとあわせてご紹介します。