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

ブログ    
ブログ    
ブログ    

推薦する

...

2022年の企業向け人工知能技術の開発動向

調査によると、企業が人工知能を導入する方法が増え、開発者がユーザーに AI サービスを提供する新しい...

重要インフラのサイバーセキュリティリスク管理における AI の影響

AIがサイバー攻撃から重要なインフラを守るためにどう役立つか 電力網、水道システム、交通網などの重要...

ChatGPT: 機械学習とディープラーニングを簡単かつ楽しく

ディープラーニングと機械学習は、今日のテクノロジーのホットな話題ですが、初心者にとっては少し複雑で難...

クラウドがチャットボットの体験をどのように変えるか

チャットボットの無限ループや同じ質問の繰り返しにイライラしていませんか? これは顧客にとってよくある...

ChatGPT に複数のバージョンのコンテンツを入力して一度に選択できるようにする方法

人工知能が進歩するにつれて、AI ツールに対する需要も高まっています。特に GPT のような高度なツ...

人工知能とビッグデータは私たちの生活をこのように変えるだろう

現在、知能ロボットが急速に発展していますが、機械を知能化するための鍵は実はビッグデータです。ビッグデ...

張 楊: カーディナリティ推定アルゴリズムの概要

繰り返し項目を含む巨大なデータセットがあり、それが大きすぎてメモリに収まらないとします。ここで、この...

スマートテクノロジーは高齢化問題の解決に役立つでしょうか?

世界保健機関によれば、2050年までに世界中で約20億人が60歳以上になると予想されています。これら...

...

清華大学と中国気象局の大規模モデルがネイチャー誌に掲載:世界レベルの問題を解決、「幽霊天気」の予報時間が初めて3時間に到達

本当に「雨の日」に備えるために、清華大学の「幽霊天気」予報モデルが登場しました!世界の未解決の問題を...

...

ケンブリッジ大学チームは約50年後に初めて量子スピン液体を検出し、その研究はサイエンス誌に掲載された。

[[439547]]一部の研究者は、量子コンピューターがいつの日かデジタル暗号の解読や薬剤の設計な...

5四半期連続で前年同期比で減少: AIはデルの危機を逆転できるか?

企業の時代はなく、時代の企業だけがある!新たなトレンドに直面しても、古い大手企業は反応が遅く、固定観...

さまざまな機械学習アルゴリズムの選択の考え方を説明する記事

序文これは Zhihu に関する質問です: k 近傍法、ベイズ法、決定木、SVM、ロジスティック回帰...