IT技術者のAIに関する雑記

AI関連のMicrosoft技術やデータサイエンスの話をメインに。

Azure Machine Learning WorkbenchからSparkクラスタを使う場合の注意点

最近リリースされたAzure Machine Learning Workbenchは、機械学習の実行環境を

  • ローカルPC
  • ローカルPC上のDocker

から選択できます。

リモートPCのDocker及びAzure HDInsightのSparkクラスタを使う際の設定方法については

Azure ML のコンピューティング ターゲットとして DSVM と HDI を作成する方法 | Microsoft Docs

に記述されているのですが、追加の設定が必要になる場合があります。

上記のドキュメントに記載されている設定手順は

  1. Sparkクラスタを作成(OSはLinux、バージョンはSpark2.1 (HDI 3.6)を選択)
  2. Sparkクラスタをコンピューティングターゲットとしてアタッチ

になります。例えばクラスタ名がmksparkcluster01の場合には、Azure Machine Learning Workbenchからコマンドプロンプトを開き(FileメニューからOpen Command Promptメニューを選択)、以下のコマンドを実行すると、Sparkクラスタにアタッチできます。

az ml computetarget attach --name mksparkcluster01 --address mksparkcluster01.azurehdinsight.net --username <ssh username> --password <ssh password> --type cluster
az ml experiment prepare -c mksparkcluster01


ただし、これで機械学習スクリプトを記述して実行すると、以下のエラーが発生することがあります。

ImportError: libmpi_cxx.so.1: cannot open shared object file: No such file or directory


この問題は、MMLSpark (Microsoft Machine Learning Library for Apache Spark) を明示的にSparkクラスタにインストールすることで解消されます (プロジェクトフォルダ配下のaml_config/spark_dependencies.ymlに記述された構成に従ってMMLSparkはインストールされるはずなのですが。。)。


MMLSparkのインストール方法は以下になります。

Azureポータルで作成したHDInsightクラスタを選択し、「スクリプト操作」メニューを選択
f:id:masakykato:20171108132744p:plain

「新規で送信」ボタンをクリックし、スクリプト操作として以下を入力します。

  • 名前:(適切な名前を入力、例えばMMLSparkInstall)
  • ノードの種類:「ヘッド」と「ワーカー」を選択

f:id:masakykato:20171108133237p:plain

「作成」ボタンをクリックすると、ヘッドノードとワーカーノードに、MMLSparkがインストールされます。


最新のスクリプトは以下のGitHubで確認してください。
github.com