PyWren と IBM Cloud Functions を利用して AI データの前処理を加速化する

概要

このコード・パターンでは Watson Studio 内で稼働する Jupyter Notebook を使用して、サーバーレス・コンピューティングで AI データの前処理に大きなメリットをもたらす方法を説明します。例として Watson Machine Learning サービスを利用した深層学習による顔認識を用い、深層学習のデータを準備するフェーズで、PyWren と IBM Cloud Functions を利用してデータを前処理します。これにより、サーバーレス・コンピューティングを使用せずに同じコードを実行する場合に比べ、プロセス全体の処理速度が 50 倍向上します。

説明

例えば、データを処理して分析する関数を Python で作成するとします。この関数を少量のデータを使ってテストすると、うまく動作しました。そこで、次はこの関数をテラバイト・クラスのデータに対して大規模並列処理が可能なサーバーレス・アクションとして実行することにします。

それには、どのような方法があるでしょうか?今からクラウド IT の手法を学んで、仮想マシンをセットアップすることは、当然したくありません。また、入力データのスケーリング、出力処理、並列実行のモニタリングに長けたサーバーレス・コンピューティング・エキスパートになりたいわけでもありません。

答えは PyWren にあります。PyWren を使用すると、大規模なデータ・セットに対してコードを実行し、結果を取得してデータから引き出した洞察の価値を確認することができます。しかも、複数のジョブが同様の方法で並列処理されるため、処理時間が大幅に短縮します。

このコード・パターンでは、PyWren でデータを前処理するワークフローを最初から最後まで確認した後、前処理されたデータを使用して AI モデルをトレーニングします。

フロー

前処理の高速化

  1. IBM Watson Studio にログインします。
  2. Watson Studio 内で Jupyter Notebook を実行します。
  3. 画像データを Cloud Object Storage バケットにロードします。
  4. PyWren と IBM Cloud Functions を利用して画像を前処理します。
  5. Watson Machine Learning で TensorFlow と scikit-learn を使用してモデルを作成し、トレーニングします。

手順

このパターンの詳細な手順については、README を参照してください。手順の概要は以下のとおりです。

  1. Cloud Object Storage インスタンスをセットアップします。
  2. Watson Machine Learning サービス・インスタンスを作成します。
  3. IBM Cloud Functions サービス・インスタンスを作成します。
  4. Watson Studio プロジェクトを作成します。
  5. カスタムのランタイム環境を作成します。
  6. ノートブックを作成します。
  7. ノートブックを実行します。
  8. 結果を確認します。