你好所有的,我已經部署了一個模型,它搬到生產和服務(mlflow),但是當測試它在python筆記本我得到一個400錯誤。代碼/細節如下:
進口操作係統
進口的要求
進口json
熊貓作為pd導入
進口numpy np
#創建兩個記錄測試的預測
test_input1 = {" OriginAirportCode”:“坐”,“月”:5“DayofMonth”: 5“CRSDepHour”: 13日“DayOfWeek”: 7,“航母”:“MQ”、“DestAirportCode”:“奧德”、“風速”:9,“SeaLevelPressure”: 30.03,“HourlyPrecip”: 0}
test_input2 = {" OriginAirportCode”:“ATL”、“月”:2,“DayofMonth”: 5“CRSDepHour”: 8“DayOfWeek”: 4,“航母”:“MQ”、“DestAirportCode”:“穆迪”、“風速”:3,“SeaLevelPressure”: 31.03,“HourlyPrecip”: 0}
#輸入打包成一個JSON字符串,並在當地的筆記本()測試運行
輸入= pd。DataFrame ([test_input1 test_input2])
打印(輸入)
def create_tf_serving_json(數據):
{返回“輸入”:{名稱:數據[名字].tolist()的名字data.keys()}如果isinstance(數據、dict)其他data.tolist ()}
def score_model(數據):
url = ' https://adb- <混淆>.azuredatabricks.net/model/Delay%20Estimator/Production/invocations' #在這裏輸入你的網址
personal_access_token = ' dapi2 <混淆> 853 - 2 #在這裏輸入你的個人訪問令牌
頭={“授權”:f 'Bearer {personal_access_token} '}
data_json = dataset.to_dict(東方= '分裂')如果其他isinstance(數據集,pd.DataFrame) create_tf_serving_json(數據集)
=響應請求。請求(=“POST”方法,頭=頭,url = url, json = data_json)
如果響應。status_code ! = 200:
提高異常(f 'Request失敗狀態{響應。status_code}, {response.text}”)
返回response.json ()
score_model(輸入)
CMD錯誤輸出:
例外:請求失敗狀態400 {“error_code”:“BAD_REQUEST”、“消息”:“輸入必須一個JSON字典的一個輸入字段{“dataframe_split”、“實例”,“輸入”、“dataframe_records”}。收到字典輸入字段:[“指數”,“列”、“數據”)。重要:在MLflow MLflow模型評分協議改變了2.0版。如果你看到這個錯誤,你可能使用一個過時的得分請求格式。解決錯誤,更新您的請求格式或調整你的MLflow模型的需求文件指定一個舊版本的MLflow(例如,改變“MLflow”要求說明符“MLflow = = 1.30.0”)。如果你使用MLflow客戶機發出請求(例如,通過“mlflow.pyfunc.spark_udf()”),升級你的MLflow客戶機版本> = 2.0為了使用新請求的格式。更多的信息更新MLflow模型評分MLflow 2.0協議,明白了https://mlflow.org/docs/latest/models.html deploy-mlflow-models。”}
我之前已經測試庫版本,沒有快樂,也嚐試不同的方法的代碼。有人知道是什麼問題或更好的方式來調用嗎?
我將從一個web應用程序調用相同的服務端點完成此工作。