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と人工知能に冷水を浴びせる

ブログ    
ブログ    

推薦する

人工知能はどのような通信分野に応用されていますか?

1. 異常なネットワークトラフィックの検出コンピュータネットワークは現代人の生活に欠かせないもので...

人工知能は偏見の岐路に立っている

企業がより多くの機械学習や人工知能モデルを本番環境に導入するにつれて、システム内の偏りに対する認識が...

待望のWeb顔認識ログインのフルバージョンが登場しました。気に入っています

[[436944]]この記事はWeChatの公開アカウント「Programmer Insider T...

携帯電話開発者の年収は153万元、機械学習は最高ではない:IEEEの最新給与レポート

私たちは皆工学を勉強していますが、どの分野を選択すべきでしょうか?給与水準は、人々が将来のキャリアを...

疫病との戦いにおけるドローン:監視、空中管制、そして徹底的な説得

ドローンと聞いて何を思い浮かべますか?おそらくほとんどの人の答えは写真撮影でしょう。しかし、今回の疫...

Alibaba Cloud がバッチおよびストリーム機械学習プラットフォーム Alink をオープンソース化し、アルゴリズム開発のハードルを下げる

11月28日、アリババクラウドは、世界初の統合バッチ・ストリームアルゴリズムプラットフォームでもある...

工業情報化部:中国初の個人情報保護AIモデル「智慧」アシスタントをリリース

2月29日、工業情報化省は2023年第4四半期の電気通信サービスの品質に関する通知を発行した。通知で...

機械学習: 密度ベースの外れ値検出アルゴリズム

外れ値検出 (異常検出とも呼ばれる) は、機械学習において、予想とは大きく異なる動作をするデータ オ...

iQIYI CTO 唐星氏:AIはビデオプロセス全体にわたって実行され、理解と意思決定を開発する必要がある

[51CTO.com からのオリジナル記事] 歴史が示しているように、コンテンツの各形態は多数のイン...

中国の人工知能はどれほど強力か?将来ロボットが手術を行えるようになるか?外国人は信じられないと言う

写真は人工知能中国の人工知能はどれほど強力か?将来ロボットが手術を行えるようになるか?多くの中国人は...

...

毎日のアルゴリズム: 二分木のレベルトラバーサル

[[423982]]バイナリ ツリーが与えられた場合、そのノード値のボトムアップ レベルのトラバーサ...

速報です!ヒントンがロボットスタートアップに参入、同社は9000万ドルの新規投資を受ける

チューリング賞受賞者であり、ディープラーニングの父であるジェフリー・ヒントンの次の旅が決まりました。...