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

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

人工知能チュートリアル(IV):確率論入門

このシリーズの前回の記事では、行列と線形代数についてさらに詳しく説明し、JupyterLab を使用...

...

未来の戦場は「瞬殺」の時代へ、人工知能が威力を発揮

近年、人工知能技術は飛躍的な進歩を遂げ、戦闘指揮の分野で広く応用され、観察・判断・決定・行動(OOD...

OpenAIがついにオープン:DALL-E 3の論文が発表され、ChatGPTが開始、著者の半数が中国人

最後に、「OpenAI は再びオープンになりました。」 OpenAIが発表したばかりのDALL・E ...

グラフニューラルネットワークが深くなるほど、パフォーマンスは向上しますか?

数十または数百の層を持つニューラル ネットワークの応用は、ディープラーニングの重要な機能の 1 つで...

2022 年に予測されるロボティック プロセス オートメーションのトップ 10 トレンド

ロボティック プロセス オートメーション (RPA) を導入する企業の主な目標は、時間のかかる反復的...

マイクロソフト、AIを活用してがんの放射線治療時間を短縮:スキャン速度が2.5倍に向上、精度は90%に

6月28日、BBCによると、英国はNHS(国民保健サービス)の全トラストに新しい人工知能技術を原価で...

李開復、胡宇、張亜琴の GMIC 2018 対談: AI 戦略と AI 人材育成における中国と米国の違いは何ですか?

[[227402]]人工知能が急成長を遂げている現在、AI人材の不足は中国だけでなく、世界全体が直...

...

人工知能は個人情報詐欺の蔓延に対する優れた解決策である

オンライン詐欺は長い間、継続的な問題となっています。今日ではテクノロジーはより洗練されているかもしれ...

AIoT: 次世代コンバージェンスの利点と用途を理解する

人工知能 (AI) とモノのインターネット (IoT) は、過去 10 年間を定義してきました。ビッ...

DDLは第一の生産力です。科学的な説明があります。ネットユーザー:ビッグモデルで試してみましょう

年末です。大学生は期末試験の週で、労働者は KPI の達成に急いでいます。期限のない年末(DDL)は...

スマート端末AxPOS A8Sは単なるハードウェアのフラッシュではありません

AxPOS A8Sは、LianDi Commercialが2020年に構築に注力した新世代のスマート...

TensorFlow 学習ニューラルネットワーク構築

1. ニューラルネットワークを構築してレイヤーを追加する入力値、入力サイズ、出力サイズ、活性化関数ニ...