Kubeflow 1.0 : コンポーネント : ハイパーパラメータ調整 : Katib へのイントロダクション (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 04/11/2020 (1.0)
* 本ページは、Kubeflow の以下のページを翻訳した上で適宜、補足説明したものです:
- Components of Kubeflow : Hyperparameter Tuning : Introduction to Katib
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
コンポーネント : ハイパーパラメータ調整 : Katib へのイントロダクション
貴方の機械学習 (ML) モデルのハイパーパラメータとアーキテクチャの自動調整のために Katib を利用します。
このページはハイパーパラメータ調整、ニューラルアーキテクチャ探索、そして Kubeflow のコンポーネントとしての Katib システムの概念を紹介します。
ハイパーパラメータとハイパーパラメータ調整
ハイパーパラメータはモデル訓練プロセスを制御する変数です。例えば :
- 学習率
- ニューラルネットワークの層の数。
- 各層のノードの数。
ハイパーパラメータ値は学習されません。換言すれば、ノード重みと他の訓練パラメータとは対照的に、モデル訓練プロセスはハイパーパラメータ値を調整しません。
ハイパーパラメータ調整はモデルの予測精度を最大化するためにハイパーパラメータ値を最適化するプロセスです。Katib やハイパーパラメータ調整のための類似のシステムを利用しない場合、最適値を見つけるために手動でハイパーパラメータを調整して、多くの訓練ジョブを貴方自身で実行する必要があります。
自動ハイパーパラメータ調整はハイパーパラメータ調整ジョブのための configuration で指定する、目的メトリックとも呼ばれる、ターゲット変数を最適化することにより動作します。一般的なメトリックは訓練ジョブの検証パスにおけるモデルの精度です (検証精度)。ハイパーパラメータ調整ジョブにメトリックを最大化 or 最初化することを望むかを指定することもできます。
例えば、Katib からの次のグラフはハイパーパラメータ値 (学習率、層の数、そして optimizer) の様々な組み合わせのための精度のレベルを表示しています :
(このグラフを生成したサンプルを実行するには、getting-started ガイド に従ってください。)
Katib は各ハイパーパラメータ調整ジョブ (実験) 内で (トライアルとして知られる) 幾つかの訓練ジョブを実行します。各トライアルはハイパーパラメータ configuration の幾つかのセットをテストします。各トライアルはハイパーパラメータの configuration の異なるセットをテストします。実験の最後に、Katib はハイパーパラメータのための最適値を出力します。
ニューラル・アーキテクチャ探索
ハイパーパラメータ調整に加えて、Katib はニューラル・アーキテクチャ探索 (NAS) 特徴も提供します。モデルの予測精度とパフォーマンスを最大化する目標とともに、貴方の人工ニューラルネットワークを設計するために NAS を利用することができます。
NAS はハイパーパラメータ調整と密接に関係します。両者は自動機械学習 (AutoML) のサブセットです。ハイパーパラメータ調整がモデルのハイパーパラメータを最適化する一方で、NAS システムはモデルの構造、ノード重み、そしてハイパーパラメータを最適化します。
NAS テクノロジーは一般に最適なニューラルネットワーク・デザインを見つけるために様々なテクニックを使用します。Katib の NAS は強化学習テクニックを使用します。
コマンドラインか UI から Katib ジョブを提出することができます (Katib インターフェイスについてこのページで後で更に読んでください)。次のスクリーンショットは Katib UI から NAS ジョブを提出するためのフォームの一部を表示しています :
Katib プロジェクト
Katib はハイパーパラメータ調整とニューラル・アーキテクチャ探索のための Kubernetes ベースのシステムです。Katib は TensorFlow, MXNet, PyTorch, XGBoost その他を含む幾つかの ML フレームワークをサポートします。
Katib プロジェクト はオープンソースです。
Katib インターフェイス
Katib と相互作用するために以下のインターフェイスを使用できます :
- 実験を提出して結果を監視するために web UI を利用できます。UI にどのようにアクセスするかについての情報は getting-started ガイド を見てください。Kubeflow 内の Katib ホームページはこのように見えます :
- REST API。GitHub 上の API リファレンス を見てください。
- コマンドライン・インターフェイス (CLI) :
- Kfctl は Kubeflow をインストールして configure するために利用できる Kubeflow CLI です。kfctl について configuring Kubeflow へのガイドを読んでください。
- Kubernetes CLI, kubectl, は Kubeflow クラスタに対してコマンドを実行するために有用です。kubectl について Kubernetes ドキュメント を読んでください。
Katib コンセプト
このセクションは Katib で使用される用語を説明します。
実験
実験は単一の調整実行で、最適化実行とも呼ばれます。
実験を定義するために configuration 設定を指定します。以下は主要な configuration です :
- Objective (目的 (関数)) : 最適化することを望むもの。これは目的メトリックで、ターゲット変数とも呼ばれます。一般的なメトリックは訓練ジョブの検証パスにおけるモデル精度です (検証精度)。メトリックを最大化 or 最小化するためにハイパーパラメータ調整ジョブを望むかも指定できます。
- Search space (探索空間) : ハイパーパラメータ調整ジョブが最適化のために考慮すべき総ての可能なハイパーパラメータ値のセットと各ハイパーパラメータのための制約です。探索空間のための他の名前は実行可能なセットと解法空間を含みます。例えば、最適化することを望むハイパーパラメータの名前を提供するかもしれません。各ハイパーパラメータについて、最小と最大値 or 許容される値のリストを提供するかもしれません。
- Search algorithm (探索アルゴリズム) : 最適なハイパーパラメータ値を探索するときに使用するアルゴリズム。
実験をどのように定義するかの詳細については、running an experiment へのガイドを見てください。
提案
提案 (= suggestion) はハイパーパラメータ調整プロセスが提示したハイパーパラメータ値のセットです。Katlib は提案された値のセットを評価するためにトライアルを作成します。
トライアル
トライアルはハイパーパラメータ調整プロセスの 1 つの反復です。トライアルはパラメータ割り当てのリストを持つ一つのワーカージョブ・インスタンスに対応します。パラメータ割り当てのリストは提案に相当します。
各実験は幾つかのトライアルを実行します。実験はそれが目標か設定されたトライアルの最大数に達するまでトライアルを実行します。
ワーカージョブ
ワーカージョブはトライアルを評価してその目的 (関数) 値を計算するために実行されるプロセスです。
ワーカージョブは以下のタイプの一つであり得ます :
- Kubernetes Job (分散実行はサポートしません)。
- Kubeflow TFJob (分散実行をサポートします)。
- Kubeflow PyTorchJob (分散実行をサポートします)。
上のワーカージョブ・タイプを提供することにより、Katib はマルチ ML フレームワークをサポートします。
以上