/handson-201812

Primary LanguageJupyter Notebook

Amazon SageMaker Tensorflow ハンズオン

このハンズオンは Amazon SageMaker 上で Tensorflow を使った機械学習/深層学習を学ぶことを目的としています。

学べること

このコースを終えたあと、以下のような概念/方法を習得することができます。

  1. Amazon SageMaker を使ってTensorFlow のモデルを構築・学習・デプロイする方法
  2. Amazon SageMaker を使った分散学習 (複数CPU/GPU、あるいはマルチノード)
  3. Amazon SageMaker Neo を使ったモデルコンパイル
  4. Amazon SageMaker を使ったHPO最適化
  5. Amazon SageMaker/Tensorflow を使ったTensorboardの使い方
  6. Amazon SageMaker でKerasを使ったMNIST分類

なお、以下の知識を前提とします。

  1. 機械学習/深層学習の概念と一般的な理解
  2. Python/Tensorflow を用いたプログラミング
  3. AWS の基礎的な知識と操作方法

コンテンツ

これらのコンテンツを動かす SageMaker ノートブックインスタンスは ml.c5.xlarge を推奨します

  1. TensorFlow のモデルを使った分散学習とNeoによるモデル最適化 [notebook]
  2. Tensorflow Containerを使ったHPO [notebook]
  3. HPO ジョブの可視化 [notebook]
  4. ResNet Cifer10によるTensorflowboardの利用[notebook]
  5. Keras (Tensorflow Backend) を利用してMNISTの分類を行う[notebook]
  • 出力を見て複数ノードで学習が分散されていることを確認します。

  • hyperparameters={'epochs': 6} でハイパーパラメータを渡すことができます。

  • SageMaker Neoで推論モデルのランタイムをコンパイルし、推論時間がどのくらい短縮されるか試してみましょう。

  • (optional) metric_definitions で CloudWatch メトリクスとして結果を出力することができます [ドキュメント]。

    metric_definitions=[
        {'Name': 'train:loss', 'Regex': 'loss: ([0-9\.]+)'},
    ]
  • (optional) local mode: Local instance上での学習や推論が可能です。notebook

  • SageMaker ではベイズ最適化を用いて、正規表現でパースされたメトリクスに対してハイパーパラメータの最適化 (HPO) を行うことができます。

  • HPO ジョブの結果を可視化しましょう [notebook]。

  • (optional) 新たなパラメータを最適化対象として追加してみましょう。

    • 'batch_size': CategoricalParameter([50, 100, 200]) など。
  • (optional) Warm Start を使って最適化ジョブを継続するよう書き換えてみましょう [ドキュメント, 参考ブログ]。

    • from sagemaker.tuner import WarmStartConfig, WarmStartTypes
      hpo_warm_start_config = WarmStartConfig(WarmStartTypes.IDENTICAL_DATA_AND_ALGORITHM,
                                    parents={'<parent_tuning_job_name>','<parent_tuning_job_name_2>'})

    を実行し、 warm_start_config=hpo_warm_start_configHyperparameterTuner() 作成時に追加。

  • SageMakerからTensorBoardを利用できます。
  • Cifar10 を使った学習スクリプト source/cifar10.py が用意されているので、これをエントリーポイントとした SageMaker の学習を行います。
  • Amazon SageMaker上でKerasを実行し、MNISTの手書き数字の分類を学習します。
  • バックエンドはTensorflow。