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
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. –
@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. –