Python での自動 ML 実験のトラブルシューティング
適用対象: Python SDK azureml v1
このガイドでは、Azure Machine Learning SDK を使用して、自動機械学習の実験の既知の問題を特定して解決する方法について説明します。
バージョンの依存関係
新しいパッケージ バージョンへの AutoML
依存関係には、互換性がありません。 SDK バージョン 1.13.0 以降では、以前の AutoML
パッケージでピン留めされた古いバージョンと、現在ピン留めされている新しいバージョンとの間に互換性がないため、モデルが以前の SDK に読み込まれません。
次のようなエラーが発生します。
次のような、モジュールが見つからないエラー
No module named 'sklearn.decomposition._truncated_svd'
次のような、インポート エラー
ImportError: cannot import name 'RollingOriginValidator'
,次のような、属性エラー
AttributeError: 'SimpleImputer' object has no attribute 'add_indicator'
解決策は、お使いの AutoML
SDK のトレーニング バージョンによって異なります。
AutoML
SDK トレーニングのバージョンが 1.13.0 より新しい場合、pandas == 0.25.1
とscikit-learn==0.22.1
が必要です。バージョンが一致しない場合、次に示すように、scikit-learn と pandas を適切なバージョンにアップグレードします。
pip install --upgrade pandas==0.25.1 pip install --upgrade scikit-learn==0.22.1
AutoML
SDK トレーニングのバージョンが 1.12.0 以前の場合、pandas == 0.23.4
とsckit-learn==0.20.3
が必要です。バージョンが一致しない場合、次に示すように、scikit-learn と pandas を適切なバージョンにダウングレードします。
pip install --upgrade pandas==0.23.4 pip install --upgrade scikit-learn==0.20.3
セットアップ
バージョン 1.0.76 以降の AutoML
パッケージでの変更により、新しいバージョンに更新する前に、以前のバージョンをアンインストールする必要があります。
ImportError: cannot import name AutoMLConfig
v1.0.76 より前の SDK バージョンから v1.0.76 以降にアップグレードした後でこのエラーが発生した場合は、
pip uninstall azureml-train automl
を実行してからpip install azureml-train-automl
を実行してエラーを解決します。 これは、automl_setup.cmd スクリプトによって自動的に行われます。automl_setup が失敗する
Windows の場合は、Anaconda プロンプトから automl_setup を実行します。 Miniconda をインストールします。
Conda 64 ビット バージョン 4.4.10 以降がインストールされていることを確認します。 ビットは、
conda info
コマンドを使用して確認できます。platform
は、Windows の場合はwin-64
、Mac の場合はosx-64
にする必要があります。 バージョンは、コマンドconda -V
を使用して確認できます。 以前のバージョンがインストールされている場合は、conda update conda
コマンドを使用して更新できます。 実行して 32 ビットを確認しますConda がインストールされていることを確認します。
Linux -
gcc: error trying to exec 'cc1plus'
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
エラーが発生した場合は、Linux ディストリビューション用の GCC ビルド ツールをインストールします。 たとえば、Ubuntu では、コマンドsudo apt-get install build-essential
を使用します。新しい名前を最初のパラメーターとして automl_setup に渡して、新しい Conda 環境を作成します。
conda env list
を使用して既存の Conda 環境を表示し、conda env remove -n <environmentname>
を使用してそれらを削除します。
automl_setup_linux が失敗する:Ubuntu Linux で automl_setup_linus.sh がエラーで失敗する場合:
unable to execute 'gcc': No such file or directory
- 送信ポート 53 および 80 が有効になっていることを確認します。 Azure の仮想マシンでこれを行うには、Azure portal でその VM を選択し、 [ネットワーク] をクリックします。
sudo apt-get update
コマンドを実行しますsudo apt-get install build-essential --fix-missing
コマンドを実行しますautoml_setup_linux.sh
をもう一度実行します
configuration.ipynb が失敗する:
- ローカルの Conda の場合は、最初に
automl_setup
が正常に実行されていることを確認します。 - subscription_id が正しいことを確認します。 Azure portal で [すべてのサービス]、[サブスクリプション] の順に選択して、subscription_id を見つけます。 subscription_id 値に文字 "<" と ">" を含めることはできません。 たとえば、
subscription_id = "12345678-90ab-1234-5678-1234567890abcd"
は有効な形式です。 - 共同作成者または所有者がサブスクリプションにアクセスできることを確認します。
- リージョンがサポートされているリージョン (
eastus2
、eastus
、westcentralus
、southeastasia
、westeurope
、australiaeast
、westus2
、southcentralus
) のいずれかであることを確認します。 - Azure portal を使用してリージョンにアクセスできることを確認します。
- ローカルの Conda の場合は、最初に
workspace.from_config が失敗する:
呼び出し
ws = Workspace.from_config()
が失敗する場合:- configuration.ipynb ノートブックが正常に実行されていることを確認します。
- ノートブックが、
configuration.ipynb
が実行されたフォルダーの配下ではないフォルダーから実行されている場合は、フォルダー aml_config と、それに含まれているファイル config.json を新しいフォルダーにコピーします。 Workspace.from_config により、ノートブック フォルダーまたはその親フォルダーの config.json が読み取られます。 - 新しいサブスクリプション、リソース グループ、ワークスペース、またはリージョンが使用されている場合は、もう一度
configuration.ipynb
ノートブックを実行してください。 指定されたサブスクリプションの指定されたリソース グループにワークスペースが既に存在する場合にのみ、config.json を直接変更することができます。 - リージョンを変更する場合は、ワークスペース、リソース グループ、またはサブスクリプションを変更します。 指定されたリージョンが異なる場合でも、ワークスペースが既に存在する場合は、
Workspace.create
によりワークスペースが作成または更新されることはありません。
TensorFlow
SDK のバージョン 1.5.0 以降の自動機械学習では、TensorFlow モデルは既定ではインストールされません。 自動 ML 実験で TensorFlow をインストールして使用するには、CondaDependencies
を使用して tensorflow==1.12.0
をインストールします。
from azureml.core.runconfig import RunConfiguration
from azureml.core.conda_dependencies import CondaDependencies
run_config = RunConfiguration()
run_config.environment.python.conda_dependencies = CondaDependencies.create(conda_packages=['tensorflow==1.12.0'])
Numpy の失敗
import numpy
が Windows で失敗する:一部の Windows 環境で、Python の最新バージョン 3.6.8 を使用した NumPy の読み込みでエラーが発生することがあります。 この問題が発生した場合は、Python バージョン 3.6.7 を試してください。import numpy
が失敗する:自動 ML Conda 環境で TensorFlow のバージョンを確認します。 サポートされているバージョンは、1.13 未満です。 バージョンが 1.13 以降の場合は、環境から TensorFlow をアンインストールします。
TensorFlow のバージョンを確認し、アンインストールするには、次のようにします。
- コマンド シェルを起動し、自動 ML パッケージがインストールされている Conda 環境をアクティブにします。
pip freeze
と入力してtensorflow
を探します。見つかった場合は、表示されるバージョンは 1.13 未満になるはずです。- 表示されているバージョンがサポート対象のバージョンでない場合は、コマンド シェルで
pip uninstall tensorflow
を入力し、確認のために「y」を入力します。
jwt.exceptions.DecodeError
正確なエラー メッセージ: jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode()
。
SDK のバージョンが 1.17.0 以前の場合、サポートされていないバージョンの PyJWT がインストールされる可能性があります。 自動 ML Conda 環境の PyJWT バージョンが、サポートされているバージョンであることを確認します。 つまり、バージョン 2.0.0 より前の PyJWT です。
PyJWT のバージョンは次のようにして確認できます。
コマンド シェルを起動し、自動 ML パッケージがインストールされている Conda 環境をアクティブにします。
pip freeze
と入力してPyJWT
を探します。見つかった場合は、表示されるバージョンは 2.0.0 未満になるはずです。
表示されているバージョンがサポートされているバージョンでない場合:
最新バージョンの 自動 ML SDK へのアップグレードを検討してください:
pip install -U azureml-sdk[automl]
それが実行できない場合は、次のように環境から PyJWT をアンインストールし、適切なバージョンをインストールします。
- コマンド シェルで
pip uninstall PyJWT
を実行し、確認のために「y
」を入力します。 pip install 'PyJWT<2.0.0'
を使用してインストールします。
- コマンド シェルで
データ アクセス
自動 ML ジョブの場合は、AzureFile ストレージに接続するファイル データストアに適切な認証資格情報があることを確認する必要があります。 それ以外の場合、次のメッセージが表示されます。 データ アクセス認証の資格情報を更新する方法について説明します。
エラー メッセージ: Could not create a connection to the AzureFileService due to missing credentials. Either an Account Key or SAS token needs to be linked the default workspace blob store.
データ スキーマ
Azure Machine Learning スタジオの [編集および送信] ボタンで新しい自動 ML 実験を作成しようとする場合、新しい実験のデータ スキーマが、元の実験で使用したデータのスキーマと一致している必要があります。 それ以外の場合、次のようなエラー メッセージが表示されます。 スタジオの UI から実験を編集して送信する方法の詳細をご覧ください。
非 Vision 実験のエラー メッセージ: Schema mismatch error: (an) additional column(s): "Column1: String, Column2: String, Column3: String", (a) missing column(s)
Vision データセットのエラー メッセージ: Schema mismatch error: (an) additional column(s): "dataType: String, dataSubtype: String, dateTime: Date, category: String, subcategory: String, status: String, address: String, latitude: Decimal, longitude: Decimal, source: String, extendedProperties: String", (a) missing column(s): "image_url: Stream, image_details: DataRow, label: List" Vision dataset error(s): Vision dataset should have a target column with name 'label'. Vision dataset should have labelingProjectType tag with value as 'Object Identification (Bounding Box)'.
Databricks
Databricks を使用して自動 ML 実験を構成する方法 (Azure Machine Learning SDK v1) をご覧ください。
R2 スコアの予測が常にゼロになる
この問題は、指定されたトレーニング データに、最後の n_cv_splits
+ forecasting_horizon
データポイントと同じ値を含む時系列がある場合に発生します。
時系列でこのパターンが想定される場合は、プライマリ メトリックを正規化された二乗平均平方根誤差に切り替えることができます。
失敗したデプロイ
SDK のバージョンが 1.18.0 以前の場合、デプロイ用に作成された基本イメージが、エラー ImportError: cannot import name cached_property from werkzeug
で失敗することがあります。
この問題を回避するには、次の手順を実行します。
- モデル パッケージをダウンロードする
- パッケージの解凍
- 解凍した資産を使用してデプロイする
Azure Functions アプリケーション
自動化された ML では現在、Azure Functions アプリケーションがサポートされていません。
サンプル ノートブックの失敗
プロパティ、メソッド、またはライブラリが存在しないというエラーでサンプル ノートブックが失敗する場合:
Jupyter Notebook で正しいカーネルが選択されていることを確認します。 カーネルがノートブック ページの右上に表示されます。 既定値は azure_automl です。 カーネルはノートブックの一部として保存されます。 新しい Conda 環境に切り替える場合は、ノートブックで新しいカーネルを選択する必要があります。
- Azure Notebooks の場合は、Python 3.6 にする必要があります。
- ローカルの Conda 環境の場合は、automl_setup で指定した Conda 環境名にする必要があります。
ノートブックが、使用している SDK のバージョンに対応していることを確認するには、次のようにします。
- Jupyter Notebook のセルで
azureml.core.VERSION
を実行して SDK のバージョンを確認します。 - 以前のバージョンのサンプル ノートブックは、こちらの手段に従って GitHub からダウンロードできます。
Branch
ボタンを選択しますTags
タブに移動します- バージョンを選択します
- Jupyter Notebook のセルで
実験の調整
100 件を超える自動 ML 実験がある場合、新しい自動 ML 実験の実行時間が長くなることがあります。
VNet ファイアウォール設定のダウンロード失敗
仮想ネットワーク (VNet) 環境で、AutoML NLP の使用時にモデルのダウンロードが失敗する場合があります。 これは、ネットワーク トラフィックで Azure CDN からのモデルとトークナイザーのダウンロードがブロックされているためです。 このブロックを解除するには、VNet ファイアウォール ポリシーの [アプリケーション ルール] 設定で次の URL を許可リストに登録してください。
aka.ms
https://automlresources-prod.azureedge.net
こちらの手順に従ってファイアウォール設定を構成してください。
VNet 環境でワークスペースを構成する手順については、こちらを参照してください。
次のステップ
自動機械学習を使用して回帰モデルをトレーニングする方法またはリモート リソースに対して自動機械学習を使用してトレーニングする方法についてさらに詳しく学習する。
モデルをデプロイする方法と場所についてさらに詳しく学習する。