2

私は機械学習モデルをローカルに開発し、Azure関数を使用してWebサービスとして展開したかったのです。Azure関数を使用したPythonマシン学習モデルのデプロイ

最初のモデルでは、pickleモジュールを使用してバイナリに保存してから、Azure Function(Python言語、http-triggerサービス)インスタンスに関連付けられたBLOBストレージにアップロードしました。 predict_probaトレーニングとSCSのために使用される訓練されたモデルの方法であって

import json 
import pickle 
import time 

postreqdata = json.loads(open(os.environ['req']).read()) 

with open('D:/home/site/wwwroot/functionName/model_test.pkl', 'rb') as txt: 
    mod = txt.read() 
txt.close() 

model = pickle.loads(mod) 
scs= [[postreqdata['var_1'],postreqdata['var_2']]] 

prediciton = model.predict_proba(scs)[0][1] 

response = open(os.environ['res'], 'w') 
response.write(str(prediciton)) 
response.close() 

そして、すべての必要なモジュールをインストールした後、次のコードは、サンプルデータにpredicitionを作製するために使用しました。変数は、POST要求から特定の値(モデルの変数の値)を抽出するために定義されます。

全体コードは正常に動作し、予測は応答として送信されますが、値は正しいですが、要求を送信した後の実行は150秒間続きます! (ローカルでは1秒未満です)。さらに、コードのどの部分が長くかかるかを測定しようとすると、10行目(pickle.loads(mod))になります。

なぜこのような膨大な時間がかかるのですか?モデルサイズは非常に小さい(数kB)。

おかげ

答えて

0

コールがAMLに行われると、最初の呼び出しが コンテナを温める必要があります。デフォルトでは、Webサービスには20のコンテナがあります。各容器 は寒く、冷たい容器は大きな(30秒)遅延を引き起こす可能性があります。

このスレッドについてのコメントをお送りしますAzure Machine Learning Request Response latencythis articleについてAzure MLパフォーマンス。

お手伝いします。

+0

私のコードでAMLを呼び出すのではないことに注意してください。単純なHTTPトリガAzure関数です。 unpickling部分だけが非常に遅いです。 –

+0

@a_kord申し訳ありません。この問題は、https://github.com/Azure/azure-webjobs-sdk-script/issues/1626を参照してください。多分あなたは手がかりを得ることができます。 –

関連する問題