问题描述
我将keras模型(在python中)部署到ML Azure。部署以不正常状态结束。这意味着什么? 我使用以下代码部署模型:
image_config = ContainerImage.image_configuration(execution_script='script.py',runtime='python',conda_file='config_conda.yml')
aciconfig = AciWebservice.deploy_configuration(cpu_cores=1,memory_gb=1,description='')
service = Webservice.deploy_from_model(workspace=ws,name=model_name,deployment_config=aciconfig,models=[model],image_config=image_config)
service.wait_for_deployment(show_output=True)
在config_conda.yml文件中,“ pip”部分和“ dependencies”部分之间有什么区别? 我在script.py中使用以下软件包:
import pandas as pd
import numpy as np
import string
#scikit-learn
from sklearn.metrics import roc_curve
from sklearn.metrics import roc_auc_score
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import gridsearchcv
from sklearn.preprocessing import LabelEncoder
import nltk
from nltk.corpus import stopwords
from nltk.corpus import wordnet
from nltk.stem import WordNetLemmatizer
from nltk.stem.porter import Porterstemmer
# Word2vec
import gensim
# Keras
from tensorflow import keras
from keras import metrics
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import Embedding
from keras.layers import LSTM
from keras.layers import GlobalMaxPool1D
from keras import utils
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
import multiprocessing
解决方法
有关了解服务状态的信息,请参见https://docs.microsoft.com/en-us/azure/machine-learning/how-to-deploy-and-where?tabs=azcli#understanding-service-state。
“依赖项”将与conda install x
一起安装,而“ pip”下列出的内容将与pip install x
一起安装。尝试使用conda版本,因为它使用的预编译二进制文件不太可能引起问题。
根据我的经验,评分脚本或.yml文件(在您的情况下为script.py和config_conda.yml)出现问题时,端点最终处于不正常状态。您可以使用此命令查看日志,通常可以告诉您问题所在:
print(service.get_logs())
另一种调试方法是尝试首先将服务部署为LocalService:
myenv = Environment.from_conda_specification(name = "myenv",file_path = "config_conda.yml")
inference_config = InferenceConfig(entry_script = "script.py",environment = myenv)
deployment_config = LocalWebservice.deploy_configuration(port=6789)
local_service = Model.deploy(ws,"local-test",[model],inference_config,deployment_config)
local_service.wait_for_deployment(show_output = True)
这样,就可以打印出Docker容器构建过程的所有步骤(包括软件包安装)。完成后,您可以删除本地服务(local_service.delete())。
另外,您还可以使用Model.deploy而不是Webservice.deploy_from_model部署ACI Web服务(请参阅https://docs.microsoft.com/en-us/python/api/azureml-core/azureml.core.webservice(class)?view=azure-ml-py)。据我所知,通常速度更快