機械学習モデルを .NET 環境にデプロイするにはどうすればよいでしょうか?

機械学習モデルを .NET 環境にデプロイするにはどうすればよいでしょうか?

データ中心のエンジニアにとって、Python と R はデータセンターで最も人気のあるプログラミング言語の 1 つです。ただし、アプリケーションの残りの部分が構築される言語が必ずしも同じであるとは限りません。そのため、Python や R で記述された機械学習モデルを .NET などの言語に基づく環境にデプロイする方法を見つける必要がある場合があります。

この記事では、Web API を使用して、機械学習モデルを .NET で記述されたアプリケーションに統合する方法を説明します。

入力: フラスコ

Flask は、機械学習の予測を共有およびホストする方法として使用できます。有名な Kaggle コンペティションの Titanic データセットを使用しましょう。まず、新しいファイルを作成し、titanic_app.py (または任意の名前) という名前を付けます。 Flask アプリケーションをインポートして初期化し、下部でサーバーを起動します。後でモデルやルートを中央に追加できるように、中央にスペースを残しておきます。

アプリケーションを実行するホストとポートを指定することに注意してください。

モデルを作成してトレーニングする

Titanic データセットをロードし、その上にモデルを作成します。

シンプルなAPIの作成

ここが面白いところです。これで予測ができましたが、予測するための値が必要です。これを行う 1 つの方法は、URL パラメータ、つまり URL 内のキー ? の後に続く値のペアから情報を取得することです。たとえば、http://localhost:4000/predict?pclass=1&sex=1&age=18&fare=500&sibsp=0 に移動すると、Flask がそのデータを取得できます。

ファイルを保存してアプリケーションを起動します。これでシンプルな API モデルが完成しました。

.NET 環境へのデプロイ

Flask を .NET 環境にデプロイするには多くのオプションがあり、それらはインフラストラクチャの選択に大きく依存します。このプロセスを理解するために、Microsoft Azure を使用して IIS 環境にデプロイする方法について見てみましょう。

前提:

  • Azure Cosmos データベースを作成しました (この記事の範囲外)。
  • Flask Web アプリケーションが作成されました (上記のとおり)。
  • Azure と Visual Studio に精通していること。

環境を正しく設定していれば、Web アプリケーションを Azure にデプロイできます。これは、Web サーバー上のファイルをインスタンス内のファイルと一致するように更新する web.config ファイルを作成することによって実行できます。これを行うには、次の手順に従います。

Visual Studio ソリューション エクスプローラーで、プロジェクトを右クリックし、[新しいプロジェクトの追加] を選択します。表示されるダイアログ ボックスで、Azure web.config (Fast CGI) テンプレートを選択し、[OK] を選択します。これにより、プロジェクトのルート ディレクトリに web.config ファイルが作成されます。

パスが Python インストールと一致するように web.config を変更します。たとえば、Python 2.7 x64 の場合、エントリは次のようになります。

次に示すように、プロジェクト名と一致するように、web.config の WSGI_HANDLER エントリを tutorial.app に設定します。

  • Visual Studio ソリューション エクスプローラーで、チュートリアル フォルダーを展開し、Static フォルダーを右クリックして、[追加] > [新しい項目] の順に選択し、Azure Static Files web.config テンプレートを選択して、[OK] を選択します。このアクションにより、static フォルダーに別の web.config が作成され、そのフォルダーの Python 処理が無効になります。この構成では、Python アプリケーションを使用する代わりに、静的ファイルの要求をデフォルトの Web サーバーに送信します。
  • ファイルを保存し、ソリューション エクスプローラーでプロジェクトを右クリックし (ローカルで実行されていないことを確認してください)、[発行] を選択します。
  • [発行] ダイアログ ボックスで、[Microsoft Azure App Service] を選択し、[新規] を選択して、[発行] をクリックします。
  • [アプリケーション サービスの作成] ダイアログ ボックスで、Web アプリケーションの名前、サブスクリプション、リソース グループ、アプリケーション サービス プランを入力します。次に、「作成」をクリックします。
  • 数秒後、Visual Studio はファイルをサーバーにコピーし終え、http://.azurewebsites.net/ ページに次のエラー メッセージが表示されました: 「内部サーバー エラーが発生したため、ページを表示できません」。
  • Azure ポータルで、新しい App Service アカウントを開きます。ナビゲーション メニューで、[開発ツール] セクションまで下にスクロールし、[拡張機能] を選択して [追加] をクリックします。
  • 「拡張機能の選択」ページで、最新の Python 2.7 インストールまで下にスクロールし、x86 または x64 ビット オプションを選択してから、「OK」をクリックして法的条項に同意します。
  • https://scm.azurewebsites.net/DebugConsole にある Kudu コンソールを使用して、アプリケーションの requirements.txt ファイルにリストされているパッケージをインストールします。これを行うには、Kudu 診断コンソールで、D:\home\Python27 の Python フォルダーに移動し、Kudu コンソール セクションで説明されているように、次のコマンドを実行します。

D: ホーム Python27> python -m pip install --upgrade -r /home/site/wwwroot/requirements.txt

  • [再起動] ボタンを押して新しいパッケージをインストールした後、Azure ポータルで App Service を再起動します。

サーバー環境が完全に構成されたら、ブラウザでページを更新して Web アプリケーションを表示します。

<<:  中飛愛威CEO曹飛氏:自動化からインテリジェンスへ、ドローン検査をよりスマートに

>>:  成長痛に遭遇: 2017 年の AI およびビッグデータ業界のレビュー

ブログ    
ブログ    

推薦する

李開復氏はAIバブルが年末までに崩壊すると予測、ルクン氏:それは本当だ

[[218838]] Innovation Works の創設者である Kai-Fu Lee 氏は、...

AIを使用するための実践的な方法論:次の5つのステップに従ってください

Gartner の調査によると、約 37% の組織が何らかの形で AI を実装しています。しかし、E...

起業の触媒としての AI: AI が提供できるものと提供できないもの

AI は、その潜在的パワーにもかかわらず、ビジネスを前進させるイノベーションの創出や推進において補助...

Python を使用したソーシャル メディア感情分析の入門

[[265146]]自然言語処理の基礎を学び、2 つの便利な Python パッケージを調べます。自...

マイクロソフトがニュースルーム向けのAI支援プログラムを開始:ジャーナリストはAIを最大限に活用する方法を学ぶための無料コースを受講できる

マイクロソフトは2月6日、現地時間5日にプレスリリースを発行し、複数の報道機関と生成AIベースのコラ...

新しい時代を受け入れよう: スマートホームが贅沢な生活を再定義する

イノベーションとテクノロジーの時代において、贅沢な暮らしはスマートホームによって変化しています。これ...

物流の新たな勢いを刺激するGewutaiは、Anjiのインテリジェントマシンビジョンのスマート化を支援します

[[417396]]上海にある新エネルギー車を製造する全自動立体倉庫では、受注から製品出荷までの時間...

...

この記事ではSentinelと一般的なフロー制御アルゴリズムを紹介します。

[[401361]]この記事では主に、カウンター アルゴリズム、リーキー バケット アルゴリズム、...

...

GoogleはAIを活用して古い地図情報を更新

Google はブログ投稿で、同社の AI がさまざまな要素を分析して、こうした更新を行うべきかどう...

...

...

効率的なトランスフォーマーが次々と登場、Googleチームが1つの記事ですべてをレビュー

Transformerモデルは2017年の誕生以来、自然言語処理やコンピュータービジョンなど多くの分...