Amazon Web Services ブログ

Amazon SageMaker 2019年4月から8月のアップデート

みなさま、こんにちは。AWS 機械学習ソリューションアーキテクトの大渕です。

すでにみなさまにご利用いただいている機械学習のマネージドサービス Amazon SageMaker ですが、現在も新機能がどんどん追加されています。そこで今回は、2019 年 4 月から 8 月までに Amazon SageMaker に追加された機能をご紹介したいと思います。

ご自身にピッタリの機能がないか、ぜひチェックしてみてください。

4月:ハイパーパラメータチューニング方法の選択肢が増えました。(紹介 blog

  • ランダム探索

Amazon SageMaker でハイパーパラメータチューニングを行う際に、デフォルト設定ではベイズ最適化を使用しますが、ランダム探索を選択いただけるようになりました。ランダム探索はベイズ最適化と異なり前の実行結果を使用しないため、すべてのジョブを並列実行できるという利点があります。また、ランダム探索はベイズ最適化相当のモデル性能を得るために、一般的により多くのトレーニングジョブの実行が必要になることがあります。お客様はユースケースに応じて、大域的なランダム検索と、より良い精度を探索するベイズ最適化を選択いただくことができます。

以下の図は、XGBoost のハイパーパラメータ alpha と lambda をランダム探索 (左) とベイズ最適化 (右) でチューニングした際の様子を表しています。点の色は、黄色がより良く、紫はより悪い性能であることを表します。ベイズ最適化は、より良いパラメータがあると思われる領域に探索が集中していることがわかります。一方で、ランダム探索はその名の通りハイパーパラメータをランダムに選択しています。

  • ハイパーパラメータのスケーリング

値の範囲が何桁にも渡って大きく変化するハイパーパラメータをチューニングする際に、値の範囲を対数スケールで指定できるようになりました。また、自動スケーリング設定を選択することで、設定された範囲の中から Amazon SageMaker が適切なスケーリングを使用するようになります。

  • ベイズ最適化エンジンでのワープ機能

Amazon SageMaker のベイズ最適化エンジンを使用する場合、上記のスケーリングをさらに拡張させたワープ機能が内部的に利用されます。以下の左図では、上記のスケーリング機能で使用可能な 3 種類の変換方法 (線形スケーリングと対数・逆対数スケーリング) を示しています。内部的には、右図に示すように、選択したスケーリングに対してワープ機能を適用して、さらに多くのスケーリングを学習し、ベイズ最適化に利用します。

5月:ビルトインアルゴリズム Object2Vec の自動ネガティブサンプリング機能追加とスパースなデータの学習速度向上がありました。(紹介 blog

  • 自動ネガティブサンプリング

従来、ポジティブとラベル付けがされたデータのペアしか存在しない場合に、ペアとなるデータを意図的に組み替えることで、ネガティブなラベル付きデータのペアを事前準備する必要がありました。これに対して、学習時にネガティブなデータのペアを自動生成できるようになりました。

  • スパースなデータへの対応

従来、スパースなデータを学習させる際に、データサイズが大きくなると GPU を複数使用しても学習速度があがらないことがありました。これからは、データサイズによらず GPU を使った学習を高速に行うことができるようになりました。

  • 重みの共有

Object2Vec には入力ソースが 2つあり、それぞれがデータのエンコーダを持っています。これらのエンコーダが持つ重みを共有することで、パラメータの数を減らす選択ができるようになりました。

  • comparator のカスタマイズ

Object2Vec では 2つの入力ソースをエンコードしたのちに comparator でそれらを統合しますが、その際に使用する二項演算子の選択肢が増えました。「hadamard」 (要素ごとの積)、 「concat」 (連結)、「abs_dipp」 (絶対差) です。3つを組み合わせて使用することもできますし、単にそのうちの 1つをそのまま使用することもできます。

 

7月:Apache MXNet 1.4 と Model Server がサポートされるようになりました。(紹介 blog

Model Server for Apache MXNet (MMS) は深層学習モデルを推論用にデプロイする作業を簡素化するオープンソースのツールセットです。MMS を使用すると、MXNet やその他のフレームワークモデルを簡単に、素早く、そして大きな規模で提供できます。

MXNet 1.4 の更新には、ネットワークの分離、Julia バインディング、実験的な制御フロー演算子、JVM メモリ管理、グラフの最適化と量子化、使いやすさの向上など、いくつかの新機能が含まれています。

ONNX の 1.4.1 にも対応しました。1.4.1 には大規模モデルのサポート、データを外部に保存する機能、制御フロー演算子を含む大きな機能がいくつか付属しています。さらに、C++ テストを有効にする ONNXIFI 用テストドライバも追加されました。

 

8月:学習したモデルの検索が便利になりました。(紹介 blog

モデルの開発を行っていると、以前作成したモデルを再度利用したくなったり、性能が最も良いモデルを探したくなることがあります。使用したアルゴリズム、ハイパーパラメータの値、カスタムタグ情報を使って最良のモデルを検索できるようになりました。

以下では、カスタムタグを使った検索の手順について説明します。
まずトレーニングジョブを作成する際に、以下のようにカスタムタグを設定しておきます。

モデルの検索を行う際は、Amazon SageMaker コンソールの左側のナビゲーションペインから検索をクリックし、先ほど設定したカスタムタグで検索する場合は以下の図のように入力して検索すると、指定したタグがついているトレーニングジョブを見つけることができます。

検索結果から、データソースやモデルアーティファクトにアクセスすることが可能です。

 

8月:Amazon SageMaker Python SDK で学習/ホスティングする際に Git リポジトリからスクリプトを直接使用できるようになりました。(紹介 blog

従来、学習やホスティングでスクリプトを使用する場合はあらかじめ Git リポジトリからスクリプトをダウンロードしておく必要がありました。これからは、Amazon SageMaker Python SDK を使って学習やホスティングする際に Git リポジトリのスクリプトを直接使用することができます。

たとえば、ブランチ「training-scripts」の下にある「amazon-sagemaker-examples」の Git リポジトリの次の構造では、

amazon-sagemaker-examples 
   |
   |-------------char-rnn-tensorflow
   |                          |----------train.py
   |                          |----------utils.py
   |                          |----------other files
   |
   |-------------pytorch-rnn-scripts
   |-------------.gitignore
   |-------------README.md

次のように Estimator オブジェクトを作成できます。

git_config = {'repo': 'https://github.com/awslabs/amazon-sagemaker-examples.git', 'branch': 'training-scripts'}

estimator = TensorFlow(entry_point='train.py',
                       source_dir='char-rnn-tensorflow',
                       git_config=git_config,
                       train_instance_type=train_instance_type,
                       train_instance_count=1,
                       role=sagemaker.get_execution_role(), # このノートブックで使用している AWS ロールをコンテナに渡します
                       framework_version='1.13',
                       py_version='py3',
                       script_mode=True)

この例では、source_dir='char-rnn-tensorflow' は Git リポジトリ内の相対パスですが、entry_point='train.py' は ‘char-rnn-tensorflow’ の下の相対パスです。

 

8月:Amazon SageMaker Ground Truth を利用して、テキスト中の固有表現(人名、地名、日付等)をラベリングできるようになりました。(紹介 blog

Named entity recognition テンプレートを使ったテキストのラベリングが可能になりました。以下の図は、ラベリングジョブを作成する際にタスクのタイプを Text にしたときのスクリーンショットです。Named entity recognition というテンプレートが追加されていることがわかります。


タスクの選択時に Named entity recognition を選択すると、以下の図のようなテキストをラベリングするジョブを作成することができます。

8月:Amazon SageMaker ノートブックで R kernel が利用可能になりました。(News

R を使用できる Amazon SageMaker ノートブックが利用できるようになりました。このノートブックには Amazon SageMaker Python SDKの R インターフェイスを提供する reticulate ライブラリが事前インストールされているため、R スクリプト内から Python モジュールを呼び出すことができます。

 

以上、 2019年 4月から 8月までに Amazon SageMaker に追加された機能のご紹介でした。
これらのアップデートによって、みなさまにより快適に Amazon SageMaker を使っていただければ幸いです。