ホーム » Katib » Kubeflow 1.0 : コンポーネント : ハイパーパラメータ調整 : Getting started with Katib

Kubeflow 1.0 : コンポーネント : ハイパーパラメータ調整 : Getting started with Katib

Kubeflow 1.0 : コンポーネント : ハイパーパラメータ調整 : Getting started with Katib (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 04/11/2020 (1.0)

* 本ページは、Kubeflow の以下のページを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

コンポーネント : ハイパーパラメータ調整 : Getting started with Katib

このページは貴方に Katib で始めさせます。貴方の環境に依拠して、必要かもしれない任意の追加のセットアップを遂行し、そしてコマンドラインと Katib ユーザインターフェイス (UI) を使用して 2,3 のサンプルを実行するためにこのガイドに従ってください。

Katib とハイパーパラメータ調整まわりのコンセプトの概要については、Katib へのイントロダクション を読んでください。

 

Katib セットアップ

(訳注 : 省略します。必要な場合には原文参照)

 

Katib UI にアクセスする

実験を提出して結果を監視するために Katib ユーザインターフェイス (UI) を利用できます。Kubeflow 内の Katib ホームページはこのように見えます :

Kubeflow の一部として Katib をインストールした場合、Kubeflow UI から Katib UI にアクセスできます :

  1. Kubeflow UI をオープンします。セントラル・ダッシュボードにアクセスする へのガイドを見てください。
  2. 左手のメニューの Katib をクリックします。

代わりに、Katib UI サービスのためにポートフォワーディングを設定できます :

kubectl port-forward svc/katib-ui -n kubeflow 8080:80

それからこの URL で Katib UI にアクセスできます :

http://localhost:8080/katib/

 

サンプル

このセクションは Katib を試すために実行できる幾つかのサンプルを紹介します。

 

ランダムアルゴリズムを使用するサンプル

YAML configuration ファイルで実験を定義することにより Katib のための実験を作成できます。YAML ファイルはハイパーパラメータ実行可能空間、最適化パラメータ、最適化ゴール、提案アルゴリズム、等々を含む、実験のための configuration を定義します。

このサンプルは ランダムアルゴリズム・サンプルのための YAML ファイル を使用します。

ランダムアルゴリズム・サンプルは MNIST データセットを使用して画像分類モデルを訓練するために MXNet ニューラルネットワークを使用します。訓練コンテナ・ソースコードを ここ で確認できます。実験は様々なハイパーパラメータで 3 つの訓練ジョブを実行して結果をセーブします。

ランダムアルゴリズム・サンプルを使用して実験を起動するために以下のコマンドを実行します :

  1. サンプルをダウンロードします :
    curl https://raw.githubusercontent.com/kubeflow/katib/master/examples/v1alpha3/random-example.yaml --output random-example.yaml
    
  2. 貴方の Kubeflow ユーザプロフィール名前空間を使用するために random-example.yaml を編集して次の行を変更します :
    Namespace: kubeflow
    
  3. サンプルを配備する :
    kubectl apply -f random-example.yaml
    

このサンプルはハイパーパラメータを引数として埋め込みます。YAML ファイルの TrialTemplate.GoTemplate.RawTemplate セクションで定義されたテンプレートを使用して他の方法 (例えば、環境変数を使用して) でハイパーパラメータを埋め込むことができます。テンプレートは Go テンプレート・フォーマット を使用します。

このサンプルは以下のハイパーパラメータをランダムに生成します :

  • –lr: 学習率。型: double.
  • –num-layers: ニューラルネットワークの層の数。型: integer.
  • –optimizer: Optimizer. 型: categorical.

実験ステータスを確認します :

kubectl -n <your user profile namespace> describe experiment random-example

上のコマンドの出力はこれと同様に見えます :

Name:         random-example
Namespace:    <your user namespace> 
Labels:       controller-tools.k8s.io=1.0
Annotations:  <none>
API Version:  kubeflow.org/v1alpha3
Kind:         Experiment
Metadata:
  Creation Timestamp:  2019-12-22T22:53:25Z
  Finalizers:
    update-prometheus-metrics
  Generation:        2
  Resource Version:  720692
  Self Link:         /apis/kubeflow.org/v1alpha3/namespaces/kubeflow/experiments/random-example
  UID:               dc6bc15a-250d-11ea-8cae-42010a80010f
Spec:
  Algorithm:
    Algorithm Name:        random
    Algorithm Settings:    <nil>
  Max Failed Trial Count:  3
  Max Trial Count:         12
  Metrics Collector Spec:
    Collector:
      Kind:  StdOut
  Objective:
    Additional Metric Names:
      accuracy
    Goal:                   0.99
    Objective Metric Name:  Validation-accuracy
    Type:                   maximize
  Parallel Trial Count:     3
  Parameters:
    Feasible Space:
      Max:           0.03
      Min:           0.01
    Name:            --lr
    Parameter Type:  double
    Feasible Space:
      Max:           5
      Min:           2
    Name:            --num-layers
    Parameter Type:  int
    Feasible Space:
      List:
        sgd
        adam
        ftrl
    Name:            --optimizer
    Parameter Type:  categorical
  Trial Template:
    Go Template:
      Raw Template:  apiVersion: batch/v1
kind: Job
metadata:
  name: {{.Trial}}
  namespace: {{.NameSpace}}
spec:
  template:
    spec:
      containers:
      - name: {{.Trial}}
        image: docker.io/kubeflowkatib/mxnet-mnist-example
        command:
        - "python"
        - "/mxnet/example/image-classification/train_mnist.py"
        - "--batch-size=64"
        {{- with .HyperParameters}}
        {{- range .}}
        - "{{.Name}}={{.Value}}"
        {{- end}}
        {{- end}}
      restartPolicy: Never
Status:
  Conditions:
    Last Transition Time:  2019-12-22T22:53:25Z
    Last Update Time:      2019-12-22T22:53:25Z
    Message:               Experiment is created
    Reason:                ExperimentCreated
    Status:                True
    Type:                  Created
    Last Transition Time:  2019-12-22T22:55:10Z
    Last Update Time:      2019-12-22T22:55:10Z
    Message:               Experiment is running
    Reason:                ExperimentRunning
    Status:                True
    Type:                  Running
  Current Optimal Trial:
    Observation:
      Metrics:
        Name:   Validation-accuracy
        Value:  0.981091
    Parameter Assignments:
      Name:          --lr
      Value:         0.025139701133432946
      Name:          --num-layers
      Value:         4
      Name:          --optimizer
      Value:         sgd
  Start Time:        2019-12-22T22:53:25Z
  Trials:            12
  Trials Running:    2
  Trials Succeeded:  10
Events:              <none>

Status.Conditions.Type の最後の値が Succeeded であるとき、実験は完了しています。

Katib UI で実験の結果を見ます :

  1. 上で 説明されたように Katib UI をオープンする。
  2. Katib ホームページで ハイパーパラメータ調整 をクリックする。
  3. 左側の Katib メニューパネルをオープンしてから、HP セクションをオープンして モニタ をクリックします :

  4. メニューパネルをクローズするために右側のパネル上をクリックします。実験のリストを見るはずです :

  5. 実験の名前、random-example をクリックします。
  6. ハイパーパラメータ値 (学習率、層数と optimizer) の様々な組み合わせのための精度のレベルを示すグラフを見るはずです :

  7. 下でグラフは実験内で実行されたトライアルのリストです :

 

TensorFlow サンプル

Kebeflow の TensorFlow 訓練ジョブ演算子, TFJob を使用して実験を起動するために以下のコマンドを実行します :

  1. tfjob-example.yaml ファイルをダウンロードする。
    curl https://raw.githubusercontent.com/kubeflow/katib/master/examples/v1alpha3/tfjob-example.yaml --output tfjob-example.yaml
    
  2. 貴方の Kubeflow ユーザプロフィール名前空間を使用するために tfjob-example.yaml を編集して次の行を変更します :
    Namespace: kubeflow
    
  3. サンプルを配備する :
    kubectl apply -f tfjob-example.yaml
    
  4. 実験のステータスを確認できます :
    kubectl -n <your user profile namespace> describe experiment tfjob-example
    

Katib UI で実験の結果を見るため、 のランダムアルゴリズム・サンプルのために説明されたステップに従います。

 

PyTorch サンプル

Kebeflow の PyTorch 訓練ジョブ演算子, PyTorchJob を使用して実験を起動するために以下のコマンドを実行します :

  1. pytorchjob-example.yaml ファイルをダウンロードする。
    curl https://raw.githubusercontent.com/kubeflow/katib/master/examples/v1alpha3/pytorchjob-example.yaml --output pytorchjob-example.yaml
    
  2. 貴方の Kubeflow ユーザプロフィール名前空間を使用するために pytorchjob-example.yaml を編集して次の行を変更します :
    Namespace: kubeflow
    
  3. サンプルを配備する :
    kubectl apply -f pytorchjob-example.yaml
    
  4. 実験のステータスを確認できます :
    kubectl -n <your user profile namespace> describe experiment pytorchjob-example
    

Katib UI で実験の結果を見るため、 のランダムアルゴリズム・サンプルのために説明されたステップに従います。

 

クリーンアップ

インストールされたコンポーネントを削除します :

bash ./scripts/v1alpha3/undeploy.sh
 

以上






AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com