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

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

推薦する

Pythonアルゴリズムの正しい実装の紹介

経験豊富な Python プログラマーにとって、Python アルゴリズムの実装は難しくありません。...

メモリ帯域幅とコンピューティング能力、どちらがディープラーニング実行パフォーマンスの鍵となるのでしょうか?

モデルのハードウェア要件に関して、まず頭に浮かぶのは計算量、つまりディープラーニング モデルがフィー...

人工知能の便利な日常的な活用例8つ

「人工知能」という用語を Google で検索して、何らかの形でこの記事にたどり着いた場合、または ...

AIがビジネスとマーケティングの未来をどう形作るのか

ここで、AI がビジネスとマーケティングの未来をどのように形作っていくのかを見てみましょう。有名な諺...

人工知能エンジニアリングについて知らないかもしれない7つのこと

[[387622]]ビジネスの世界が人々の想像よりも速く変化することは周知の事実です。この問題に対処...

...

Googleの上級研究員ネイチャーが記事を公開: 機械学習の3つの大きな「落とし穴」を避ける

アルゴリズム分析は科学研究の重要な方法となっている。生物学者、高エネルギー物理学者、病理学者など、多...

AIの到来、将来のアプリケーション開発における7つのトレンド

最近テクノロジーのニュースに注目しているなら、良いことであれ悪いことであれ、人工知能に関する何かを読...

知っておくべき10の機械学習アルゴリズム

機械学習は、確率論、統計、近似理論、凸解析、アルゴリズム複雑性理論など、多くの分野が関わる多分野にわ...

2020 年に注目すべき 6 つの機械学習のユースケース

2020 年には人工知能 (AI) が飛躍的に進歩し、機械学習はこのテクノロジーの最も成功し、広く普...

人工知能と医師が出会ったら何が起こるかを伝える7つの短編物語

[[187416]] Huxiu 注: この記事は、4 月 3 日に The New Yorker ...

数独問題を解くには人工知能や量子コンピューティングを使うべきでしょうか?

楽しいボードゲームとして誕生してから 100 年経った今、数独はどのようにして計算研究の焦点となった...

LIama2を運営して8400万元稼ごう!最速のAI推論チップのコスト見積もりが白熱した議論を巻き起こす

史上最速の大規模モデル推論を実現するには、1171万ドル(8410万元)の費用がかかりますか? ? ...

顔の照明を自由に編集:ジェネレーティブモデルに基づく3Dリライティングシステムがリリース

実際の人間の顔の 3 次元モデリング、合成、再照明は、コンピュータ グラフィックスの分野で高い応用価...