模型服务调试指南

本文演示了在使用模型服务终结点时用户可能会遇到的常见问题的调试步骤。 常见问题可能包括用户在终结点无法初始化或启动时遇到的错误、与容器相关的生成失败,或者在操作期间或在终结点上运行模型时出现的问题。

访问和查看日志

Databricks 建议查看生成日志,以便调试和排查模型服务工作负载中的错误。 有关日志以及如何查看日志的信息,请参阅监视模型质量和终结点运行状况

查看工作区 UI 中模型的事件日志,并检查是否有成功的容器生成消息。 如果一小时后未看到生成消息,请联系 Databricks 支持人员以获取帮助。

如果生成成功,但遇到其他错误,请参阅容器生成成功后的调试。 如果生成失败,请参阅容器生成失败后的调试

容器生成成功后的调试

即使容器成功生成,运行模型时或在终结点本身操作期间也可能存在问题。 以下小节详细介绍了常见问题以及如何进行故障排除和调试

缺少依赖项

可能会收到类似 An error occurred while loading the model. No module named <module-name>. 的错误。 此错误可能表明容器缺少依赖项。 验证是否正确表示了容器生成中应包含的所有依赖项。 请特别注意自定义库,并确保 .whl 文件作为项目包含在内。

服务日志循环

如果容器生成失败,请检查服务日志以查看终结点尝试加载模型时是否注意到它们循环。 如果看到此行为,请尝试下面的步骤:

  1. 打开笔记本并附加到使用 Databricks Runtime 版本的通用群集,而不是用于机器学习的 Databricks Runtime。
  2. 使用 MLflow 加载模型并尝试从那里进行调试。

还可以在电脑本地加载模型,并从那里进行调试。 使用以下内容在本地加载模型:

import os
import mlflow

os.environ["MLFLOW_TRACKING_URI"] = "databricks://PROFILE"

ARTIFACT_URI = "model_uri"
if '.' in ARTIFACT_URI:
    mlflow.set_registry_uri('databricks-uc')
local_path = mlflow.artifacts.download_artifacts(ARTIFACT_URI)
print(local_path)

conda env create -f local_path/artifact_path/conda.yaml
conda activate mlflow-env

mlflow.pyfunc.load_model(local_path/artifact_path)

当请求发送到终结点时,模型失败

在模型上调用 predict() 时,可能会收到类似于 Encountered an unexpected error while evaluating the model. Verify that the input is compatible with the model for inference. 的错误。

predict() 函数中存在代码问题。 Databricks 建议在笔记本中加载 MLflow 中的模型并调用它。 这样做会突出显示 predict() 函数中的问题,并且你可以看到方法中发生失败的位置。

工作区超过预配的并发

可能会收到 Workspace exceeded provisioned concurrency quota 错误。

可以根据区域可用性增加并发。 联系 Databricks 帐户团队,并提供工作区 ID 以请求增加并发。

容器生成失败后的调试

本节详细介绍了生成失败时可能出现的问题。

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 可用性而导致生成失败

可能会看到类似 Build could not start due to an internal error - please contact your Databricks representative. 的错误。

请联系 Databricks 客户团队来帮助解决。