2

J'ai développé un modèle d'apprentissage automatique en local et je voulais le déployer en tant que service Web à l'aide des fonctions Azure. Au premier modèle, enregistrer en binaire à l'aide du module pickle, puis chargé dans le stockage blob associé à l'instance Azure Function (langage python, service http-trigger).Déploiement du modèle d'apprentissage machine python à l'aide des fonctions Azure

Ensuite, après avoir installé tous les modules requis, le code suivant a été utilisé pour faire un predicition sur l'échantillon des données:

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() 

où: predict_proba est une méthode d'un modèle formé utilisé pour la formation et scs variable est définie pour l'extraction de valeurs particulières (valeurs de variables pour le modèle) à partir de la requête POST.

Tout le code fonctionne bien, les prédictions sont envoyées en réponse, les valeurs sont correctes mais l'exécution après l'envoi d'une requête dure 150 secondes! (localement c'est moins de 1s). De plus, après avoir essayé de mesurer quelle partie d'un code prend tant de temps: c'est la 10ème ligne (pickle.loads (mod)).

Avez-vous des idées pour lesquelles cela prend énormément de temps? La taille du modèle est très petite (quelques kB).

Merci

Répondre

0

Lorsqu'un appel est fait à l'AML premier appel doit réchauffer le récipient . Par défaut, un service Web a 20 conteneurs. Chaque conteneur est froid, et un conteneur froid peut provoquer un délai important (30 s).

Je vous suggère de référence à ce fil Azure Machine Learning Request Response latency et this article à propos de Azure performances ML.

J'espère que ça vous aide.

+0

Notez que je n'appelle pas AML dans mon code. C'est une simple fonction Azure déclenchée par HTTP. Seule la partie non piquante est très lente. –

+0

@a_kord Désolé. Vous pouvez vous référer à ce numéro: https: //github.com/Azure/azure-webjobs-sdk-script/issues/1626. Peut-être que vous pourriez obtenir des indices. –