本文示範使用服務端點的模型時,使用者可能會遇到的常見問題偵錯步驟。 常見問題可能包括使用者在端點無法初始化或啟動時遇到的錯誤、與容器相關的建置失敗,或在端點上作業或執行模型時發生問題。
:::提示 驗證再除錯 正在遇到部署問題嗎? 先從 部署前的驗證 開始,以在常見問題發生前發現。 :::
除錯你的容器建置
Databricks 建議檢視日誌,以便除錯和排除模型服務工作負載中的錯誤。 如需有關日誌的信息以及如何查看,請參閱 監控模型質量和端點狀態。
工作區介面中的事件日誌(點 選事件標籤 )會顯示容器建置進度的資訊。 成功的容器建置會以 SERVED_ENTITY_CONTAINER_EVENT 事件類型及訊息 Container image creation finished successfully標示。 如果建立端點一小時後仍看不到任何建置事件或訊息,請聯絡 Databricks 客服尋求協助。
如果你的建置成功,但遇到其他錯誤,請參考 容器建置成功後的除錯功能。 如果你的建置失敗,請參考 容器建置失敗後的除錯功能。
容器建置成功後除錯
即使容器建置成功,當您執行模型或在端點本身的作業期間可能會發生問題。 以下小節將說明常見問題及故障排除方法。
備註
如果您的模型程式代碼發生 MlflowException 錯誤,則預期回應碼會對應至 4xx 回應。 Databricks 會將這些模型程式代碼錯誤視為客戶造成的錯誤,因為它們可以根據產生的錯誤訊息加以解決。
5xx 錯誤碼是保留用來傳達 Databricks 責任錯誤的。
缺少依賴
你可能會收到類似 An error occurred while loading the model. No module named <module-name>. 的錯誤訊息,這可能表示容器缺少依賴性。 確認您已正確表示應該包含在容器組建中的所有相依性。 請特別注意自訂程式庫,並確保 .whl 檔案會包含為成品。
當要求傳送至端點時,模型會失敗或逾時
您在模型上呼叫Encountered an unexpected error while evaluating the model. Verify that the input is compatible with the model for inference.時,可能會收到類似predict()的錯誤。
此錯誤可能表示函式中有 predict() 程式碼問題。 Databricks 建議您從筆記本中的 MLflow 載入模型並加以呼叫。 這樣做會醒目提示 predict() 函式中的問題,而且您可以看到方法內發生失敗的位置。
失敗要求的根本原因分析
如果端點的要求失敗,您可以使用推斷數據表來執行根本原因分析。 啟用後,推論表會自動將所有對端點的請求與回應記錄在 Unity 目錄表格中,供你查詢。
- 如需外部模型、布建的輸送量端點和 AI 代理程式,請參閱 使用已啟用 AI 閘道的推斷數據表監視服務模型。
- 如需自定義模型,請參閱推斷數據表 以監視和偵錯模型。
若要查詢推斷資料表:
- 在您的工作區中,移至 [ 服務] 索引標籤,然後選取您的端點名稱。
- 在 [ 推斷數據表 ] 區段中,尋找推斷數據表的完整名稱。 例如:
my-catalog.my-schema.my-table。 - 在 Databricks 筆記本中執行下列命令:
%sql SELECT * FROM my-catalog.my-schema.my-table - 檢視和篩選
request、response、request_time和status_code等數據行,以瞭解要求並縮小結果範圍。%sql SELECT * FROM my-catalog.my-schema.my-table WHERE status_code != 200 - 如果您已啟用 AI 代理的追蹤功能,請參閱 響應 欄位以查看詳細追蹤。 請參閱 啟用 AI 代理程式的推斷資料表。
工作區超過配置的併發量
您可能會收到 Workspace exceeded provisioned concurrency quota 錯誤。 這表示你已經達到工作空間的預配置並行配額。 欲了解更多並行限制資訊,請參閱 模型服務限制與區域 。
此限制可依地區供應情況調整。 請聯絡您的 Databricks 帳戶團隊,並提供您的工作區 ID 以請求並行數量的增加。
工作區超出平行請求限制
您可能會收到以下429錯誤訊息: Exceeded max number of parallel requests. Please contact your Databricks representative to increase the limit。
這個限制表示你已經達到工作區可平行發送請求的最大上限。 欲了解更多此限值,請參閱 模型服務限制與區域 。
Databricks 建議改 為路由優化端點,因為這個限制已被移除。 如果你無法轉為路由優化端點,你可以選擇減少發送推論請求的客戶端數量,或聯絡你的 Databricks 代表申請增加配額。
同時請求太多
你可能會收到以下 429 錯誤: Too many concurrent requests. Consider increasing the provisioned concurrency of the served entity. 此錯誤表示你端點目前已配置的並行無法處理進來的流量。 如果你已啟用端點自動縮放,系統會自動在端點設定的限制範圍內提供額外的並發,以應付增加的負載。 如果沒有啟用自動縮放,可以考慮手動增加預備的並行性,或啟用自動擴展來處理流量激增。
容器建置失敗後除錯
本節詳細說明組建失敗時可能發生的問題。
OSError: [Errno 28] No space left on device
錯誤 No space left 可能是因為不必要地與模型一起記錄太多大型成品。 檢查 MLflow,確保額外的資料不會與模型一起記錄,並嘗試重新部署精簡過的套件。
Azure 防火牆在使用 Unity Catalog 發佈模型時出現的問題
您可能會看到錯誤:Build could not start due to an internal error. If you are serving a model from UC and Azure Firewall is enabled, this is not supported by default.。
若要協助解決,請連絡 Databricks 客戶團體。
建置失敗,因為 GPU 可用性不足
由於 GPU 供應與供應受限,您的 GPU 組裝可能會因以下錯誤而失敗: Build could not start due to an internal error - please contact your Databricks representative.。
若要協助解決,請連絡 Databricks 客戶團體。 根據區域可用性,團隊可以配置更多 GPU 資源。
已安裝的函式庫套件版本
Databricks 建議你將所有重要的函式庫定義為模型相依,以確保模型行為在各環境中一致且可重現。 在建置日誌中,你可以確認安裝正確的套件版本。
- 針對 MLflow 版本,如果您沒有指定版本,Model Serving 會使用最新版本。
- 針對自定義 GPU 服務,模型服務會根據公用 PyTorch 和 Tensorflow 文檔資料安裝
cuda和cuDNN的建議版本。
需要的記錄模型 flash-attn
如果您要記錄需要 flash-attn的模型,Databricks 建議使用 的 flash-attn自定義轉輪版本。 否則,可能會產生這類建置錯誤 ModuleNotFoundError: No module named 'torch'。
若要使用的自定義轉輪版本 flash-attn,請將所有 pip 需求指定為清單,並將它當做參數傳遞至您的 mlflow.transformers.log_model 函式。 您也必須指定與您的 flash attn 包中指定的 CUDA 版本相容的 pytorch、torch 和 torchvision 版本。
例如,Databricks 建議針對 CUDA 11.8 使用下列版本和方向盤:
- Pytorch
- 火炬 2.0.1+cu118
- Torchvision 0.15.2+cu118
- Flash-Attn
logged_model=mlflow.transformers.log_model(
transformers_model=test_pipeline,
artifact_path="artifact_path",
pip_requirements=["--extra-index-url https://download.pytorch.org/whl/cu118", "mlflow==2.13.1", "setuptools<70.0.0", "torch==2.0.1+cu118", "accelerate==0.31.0", "astunparse==1.6.3", "bcrypt==3.2.0", "boto3==1.34.39", "configparser==5.2.0", "defusedxml==0.7.1", "dill==0.3.6", "google-cloud-storage==2.10.0", "ipython==8.15.0", "lz4==4.3.2", "nvidia-ml-py==12.555.43", "optree==0.12.1", "pandas==1.5.3", "pyopenssl==23.2.0", "pytesseract==0.3.10", "scikit-learn==1.3.0", "sentencepiece==0.1.99", "torchvision==0.15.2+cu118", "transformers==4.41.2", "https://github.com/Dao-AILab/flash-attention/releases/download/v2.5.8/flash_attn-2.5.8+cu118torch2.0cxx11abiFALSE-cp311-cp311-linux_x86_64.whl"],
input_example=input_example,
registered_model_name=registered_model_name)