# 二階段敗血症安裝 ###### tags: `二階段敗血症` ## 如何下載 Docker Image ## 如何匯入 Docker Image ## 如何安裝/啟動/停止 1. **下載 Docker Image 的 `.tar` 檔,並將 `.tar` 檔放到專案的路徑** 2. **使用 `.tar` 檔建立 Docker Image** ``` docker load --input sepsis_2nd_api_bentoml_image_test_20230426v1.tar ``` 3. **查看 Docker Image 是否成功建立** ``` docker images ```  4. **執行 Docker** ``` docker run --name sepsis_2nd_app -it --rm \ -p <PORT NUMBER>:3000 \ -v <LOG PATH>:/home/bentoml/bento/src/logs \ sepsis_2nd_model_serving:latest \ serve --production ``` :::info 1. `<PORT NUMBER>`: request 欲發送的端口號。 2. `<LOG PATH>`: 紀錄日誌的路徑。 3. `--rm`: **control + C** 結束;`-d`: 背景執行 4. `serve --production`: **CLI** ::: 7. **停止 Docker Container** + **查看 Docker Container ID** ``` docker ps ```  + **停止 Docker Container** ``` docker stop <CONTAINER ID> ``` ## 如何測試服務是否可以正常運行 bentoml service 有自帶 health checker。使用 GET 方法發送 request 到 `healthz` endpoint,回覆 200 response,確認 bentoml service 已啟動。 準備發送 request 的範例程式 ```python= import requests url = "http://127.0.0.1:3000/healthz" response = requests.get(url=url) print(response.status_code, response) ```   ## 如何查看 log 在執行 docker run 的時候有帶以下指令 `-v <LOG PATH>:/home/bentoml/bento/src/logs` 其中 `<LOG PATH>` 是本機存放 logs 檔案的目錄。移動至該目錄即可查看log  ## 常見問題排除 出現問題時,會回傳下列訊息格式 ```json { "id": <this_prediction_uuid>, "message": "Error happen in stage : <process_stage>. Tracing Exception: <e>" } ``` 其中,**`<this_prediction_uuid>`**, **`<process_stage>`** 與 **`<e>`** 分別為 **該筆資料對應的 ID**,**發生錯誤所在階段** 與 **對應的錯誤訊息**,程式做預測共分為下列 4 個階段: + **`RawDataProcess`**: 資料前處理階段,會對 Sepsis 資料與 NIS 資料做一系列的處理,包含資料表連接、資料清洗、計算 NIS 特徵等操作。 + **`BentoRunnerInference`**:將 **`RawDataProcess`** 階段處理過後的資料放入 XGBoost 模型做四個任務(帶藥回家,死亡,一般病房,ICU)機率值預測的階段。 + **`ShapValueCalc`**:分別計算四個任務各特徵所對應 shap 值的階段。 + **`OrganizeResult`**:將 **`BentoRunnerInference`** 與 **`ShapValueCalc`** 階段的計算結果整理成醫院需要的回傳格式的階段,回傳格式詳見 **`輸入輸出格式.md`** 中 Output 格式部分。 各執行階段常見的錯誤訊息如下: #### **RawDataProcess** 1. `Invalid input! Input data missing {table_name} key`**(422)**:輸入資料缺少資料表,詳見 **`輸入輸出格式.md`** 中 Input 格式規範 1, 2。 2. `Invalid input! {table_name} table is empty.`**(422)**:輸入資料的 **`{table_name}`** 為空,詳見 **`輸入輸出格式.md`** 中 Input 格式規範 4。 3. `Fail to convert {table_name} json data to pandas Dataframe`**(422)**:輸入資料的 **`{table_name}`** 表所對應的資料格式錯誤,無法將其轉換為 **`pandas.DataFrame`**。 4. `{table_name} table missing columns: {missing_columns}`**(422)**:輸入資料的 **`{table_name}`** 表缺少 **`{missing_columns}`** 欄位,詳見 **`輸入輸出格式.md`** 中 Input 格式規範 5。 5. `Got empty dataframe after data cleaning. Please check feature values are in reasonable range!`**(422)**:輸入資料的年齡欄位(AGE)超出合理範圍,詳見 **`輸入輸出格式.md`** 中 Input 格式規範 7。 6. `Unexpect Exception happen, please check the input data.`**(400)**:輸入資料有誤,導致無法成功進行前處理,此錯誤通常不會發生,若發生,請檢查資料格式是否正確無誤,若資料沒有問題,請聯絡維運人員協助釐清。 #### BentoRunnerInference 1. `Unexpect Exception happen, please check the input data.`**(400)**:輸入資料有誤,導致模型無法正常預測,此錯誤通常不會發生,若發生,請檢查資料格式是否正確無誤,若資料沒有問題,請聯絡維運人員協助釐清。 #### ShapValueCalc 1. `Unexpect Exception happen, please check the input data.`**(400)**:輸入資料有誤,導致無法計算 shap 值,此錯誤通常不會發生,若發生,請檢查資料格式是否正確無誤,若資料沒有問題,請聯絡維運人員協助釐清。 #### OrganizeResult 1. `Unexpect Exception happen, please check the input data.`**(400)**:輸入資料有誤,導致無法計算 shap 值,此錯誤通常不會發生,若發生,請檢查資料格式是否正確無誤,若資料沒有問題,請聯絡維運人員協助釐清。 ## 其他維運相關內容 ## 壓力測試報告 測試機器 Macbook Pro 2019 intel core Docker 使用資源限制: 使用核心數 vCPU 4 使用記憶體 8GB 壓力測試 Response Time  壓力測試 TPS 
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.