Azure ML Service を使用して機械学習モデルを構築およびデプロイする

Azure ML Service を使用して機械学習モデルを構築およびデプロイする

[[256196]]

[51CTO.com クイック翻訳] このチュートリアルでは、Stackoverflow データセットを使用して給与を予測する機械モデルを構築してデプロイします。 この記事を読んだ後、RESTful Web サービスを呼び出して予測結果を取得できるようになります。

目的はワークフローをデモンストレーションすることなので、勤務経験年数と給与を含む単純な 2 列のデータセットを使用して実験します。データセットの詳細については、線形回帰を紹介した前回の記事を参照してください。

前提条件

1. PythonとScikit-learnの基礎知識

2. 有効なMicrosoft Azureサブスクリプション

3. アナコンダまたはミニコンダ

開発環境の設定

Azure ML SDK を使用して仮想環境を構成します。 次のコマンドを実行して Python SDK をインストールし、Jupyter Notebook を起動します。 Jupyter から新しい Python 3 カーネルを起動します。

  1. $ conda作成-n aml -y Python=3.6  
  2. $ conda をアクティブ化します。  
  3. $ conda をインストール nb_conda  
  4. $ pip インストール azureml-sdk[ノートブック]  
  5. $ ジュピターノートブック

Azure ML環境を初期化する

まず、標準の Scikit-learn モジュールや Azure ML モジュールなど、必要なすべての Python モジュールをインポートします。

  1. 日時をインポート 
  2. numpyをnpとしてインポートする 
  3. pandasをpdとしてインポートする 
  4. sklearn.model_selectionからtrain_test_split をインポートします 
  5. sklearn.linear_modelからLinearRegression をインポートします 
  6. sklearn.externalsからjoblibをインポートする 
  7. azureml.core をインポートする 
  8. azureml.coreからワークスペースをインポート 
  9. azureml.core.modelからモデルをインポートします
  10. azureml.coreから実験をインポート 
  11. azureml.core.webserviceからWebservice をインポートします 
  12. azureml.core.imageからContainerImage をインポートします 
  13. azureml.core.webserviceからAciWebservice をインポートします 
  14. azureml.core.conda_dependenciesからCondaDependencies をインポートします

実験の論理境界として機能する Azure ML ワークスペースを作成する必要があります。ワークスペースは、データセットを保存するためのストレージ アカウント、秘密情報を保存するための Key Vault、イメージ センターを維持するためのコンテナー レジストリ、メトリックを記録するための Application Insights を作成します。

プレースホルダーをサブスクリプション ID に置き換えることを忘れないでください。

  1. ws = Workspace.create ( name = '給与' ,  
  2. サブスクリプションID = '' ,  
  3. リソースグループ = 'mi2'  
  4. create_resource_group = True  
  5. 場所 = '東南アジア'    

数分後、ワークスペースに作成されたリソースが表示されます。

これで、実験を作成し、指標の記録を開始できます。記録するパラメータはそれほど多くないので、トレーニング プロセスの開始時刻を取得しましょう。

  1. exp = 実験(ワークスペース = ws、名前= 'salexp' )  
  2. 実行 = exp.start_logging()  
  3. run.log( "実験開始時刻" , str(datetime.datetime.now()))

Scikit-learn MLモジュールのトレーニングとテスト

次に、Scikit-learn の助けを借りてモデルのトレーニングとテストに進みます。

  1. sal = pd.read_csv( 'data/sal.csv' 、ヘッダー=0、インデックス列=なし)  
  2. X = sal[[ 'x' ]]  
  3. y = sal[ 'y' ]  
  4. X_train、X_test、y_train、y_test = train_test_split(X、y、test_size=0.25、random_state=10) です。  
  5. lm = 線形回帰()  
  6. lm.fit(X_train,y_train)

トレーニングされたモデルは、出力ディレクトリ内の pickle ファイルにシリアル化されます。 Azure ML は出力ディレクトリの内容を自動的にクラウドにコピーします。

  1. ファイル名 = 'outputs/sal_model.pkl'    
  2. joblib.dump(lm, ファイル名)

トレーニング ジョブの傾き、切片、終了時間を記録して、実験を完了しましょう。

  1. run.log( 'インターセプト:' , lm.intercept_)  
  2. run.log( '傾き:' , lm.coef_[0])  
  3. run.log( "実験終了時刻" , str(datetime.datetime.now()))  
  4. 実行完了()

Azure ダッシュボードを通じてメトリックと実行時間を追跡できます。

トレーニング済みモデルの登録と読み込み

モデルをフリーズするたびに、一意のバージョンで Azure ML に登録できます。これにより、ロード時にさまざまなモデルを簡単に切り替えることができます。

SDK を PKL ファイルの場所を指定して、上記のトレーニング ジョブから給与モデルを登録しましょう。また、タグの形式でモデルに追加のメタデータを追加します。

  1. モデル = Model.register(model_path = "outputs/sal_model.pkl" ,  
  2. モデル名 = "sal_model"  
  3. タグ = { "キー" : "1" },  
  4. description = "給与予測" ,  
  5. ワークスペース = ws)

ワークスペースのモデル セクションをチェックして、モデルが登録されていることを確認します。

次に、モデルをコンテナ イメージ (Web サービスとして公開されます) にパッケージ化してデプロイします。

コンテナー イメージを作成するには、モデルに必要な環境を Azure ML に伝える必要があります。代わりに、受信したデータ ポイントに基づいて値を予測するコードを含む Python スクリプトを渡します。

Azure ML API は、どちらにも便利なメソッドを提供します。まず、ランタイム環境にコンテナ イメージに Scikit-learn を含めるように指示する環境ファイル salenv.yaml を作成します。

  1. salenv = CondaDependencies()  
  2. salenv.add_conda_package( "scikit-learn" )  
  3.   open ( "salenv.yml" , "w" )f:として開きます。  
  4. f.write(salenv.serialize_to_string())  
  5.   ( "salenv.yml" "r" )f:として開きます  
  6. 印刷( f.read ())

次のコード スニペットを Jupyter Notebook から実行すると、モデルの推論ロジックを含む score.py というファイルが作成されます。

  1. %%writefile score.py  
  2. jsonをインポート 
  3. numpyをnpとしてインポートする 
  4. インポートOS  
  5. 輸入ピクルス 
  6. sklearn.externalsからjoblibをインポートする 
  7. sklearn.linear_modelからLogisticRegression をインポートします 
  8. azureml.core.modelからモデルをインポートします 
  9. def init():  
  10. グローバルモデル 
  11. #モデルを使用してモデルファイルへのパスを取得します   
  12. model_path = Model.get_model_path( 'sal_model' )  
  13. モデル = joblib.load (モデルパス)  
  14. 定義実行(raw_data):  
  15. データ = np.array(json.loads(raw_data)[ 'データ' ])  
  16. # 予測する 
  17. y_hat = モデル.予測(データ)  
  18. json.dumps(y_hat.tolist())を返します

ここで、推論ファイルと環境設定をイメージに渡すことで、点と点を結び付けます。

  1. %%時間   
  2. image_config = ContainerImage.image_configuration(実行スクリプト = "score.py" ,  
  3. ランタイム = "python"
  4. conda_file = "salenv.yml" )

これにより、最終的に、ワークスペースの [イメージ] セクションに表示されるコンテナ イメージが作成されます。

ターゲット環境を定義し、Azure コンテナー インスタンスでホストされる Web サービスとして実行するデプロイ構成を作成する準備が整いました。また、展開先として AKS または IoT Edge 環境を選択することにしました。

  1. aciconfig = AciWebservice.deploy_configuration(cpu_cores=1,  
  2. メモリ_GB=1、  
  3. tags={ "データ" : "給与" , "メソッド" : "sklearn" },  
  4. 説明 = 'Stackoverflow の給与を予測する' )  
  5. サービス = Webservice.deploy_from_model(ワークスペース=ws,  
  6. 名前= '給与-svc'  
  7. デプロイメント構成=aciconfig、  
  8. models=[モデル],  
  9. イメージ構成=イメージ構成)  
  10. service.wait_for_deployment(show_output= True ) は

Azure リソース グループには、モデルの推論を実行する Azure コンテナー インスタンスが作成されました。

推論サービスの URL は次の方法で取得できます。

  1. 印刷(service.scoring_uri)

次に、cURL を介して Web サービスを呼び出します。同じ Jupyter Notebook からこれを実行できます。

データセットと Jupyter Notebook には Github リポジトリからアクセスできます。

このアプローチのユニークな点は、Jupyter Notebook 内で実行されている Python カーネルからすべてのタスクを実行できることです。開発者はコードを使用して、ML モデルのトレーニングとデプロイに必要なタスクを完了できます。これこそが、ML Service などの ML PaaS を利用するメリットです。

Azure ML Service を使用した機械学習モデルの構築とデプロイ (Janakiram MSV 著)

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください]

<<:  調査によると、ヨーロッパ人はロボットに対してますます懐疑的になっている

>>:  今年の2つのホットスポット、5Gと人工知能に冷水を浴びせる

ブログ    

推薦する

人工知能は産業の発展を促進し、産業構造のアップグレードを加速する

トップレベルの設計を継続的に改善し、コンピュータービジョン、音声認識、機械学習、ナレッジグラフなどの...

人間の敵の99.8%を圧倒する星間AIがネイチャー誌に登場、その技術が初めて完全公開された

StarCraft 2 のプレイヤーのうち、AI にまだ負けていないのはわずか 0.2% です。これ...

フラッシュは廃止されるが、5G時代の新技術は過去を思い出す暇を与えないだろう

Adobe が 2020 年 12 月 31 日をもって有名な Flash ソフトウェアのサポートを...

...

A* 検索アルゴリズム (実行可能なソース コード付き)

最近、少し時間ができたので、Java で A* 検索を作成し、表示に swing を使用しました。ア...

デジタル画像処理における画像操作

画像操作は、コンピュータービジョンと画像処理において重要な役割を果たします。これらの操作は、前処理、...

一貫性のあるハッシュは難しいですか?これを読んで全て理解できました

[51CTO.com からのオリジナル記事] この記事では、コンシステント ハッシュとは何か、そして...

中間レビュー: 2021 年に最も注目される AI スタートアップ 10 社

[[407377]] 2021年はまだ半分しか経っていませんが、人工知能に注力する人気のスタートアッ...

自動応答は人工知能ではなく、自律応答は

セキュリティ オペレーション センター (SOC) のアナリストは推論と意思決定に優れていますが、2...

「ZAO」かっこいいですね!ディープフェイクを使って顔を変える方法

最近、SNS上で「ZAO」と呼ばれるAI顔変換ソフトが話題になっている。人気が出る一方で、多くの疑問...

見事な! ! !テスラのエンドツーエンドのデモンストレーションビデオ分析

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

時間畳み込みネットワーク: 時系列の次の革命?

この投稿では、最近の TCN ベースのソリューションをいくつかレビューします。まず、動き検出のケース...

...

機械学習を活用して人事部門の時間を節約する方法

導入履歴書データベースに「ソフトウェア エンジニア」という名前の履歴書が 10,000 件あるとしま...

...