Databricks Serving Endpoint身份验证错误排查求助
问题排查:UC注册模型创建Serving Endpoint后凭证验证失败
针对你遇到的MLflow读取Databricks凭证失败的BAD_REQUEST错误,结合你的注册代码,以下是具体排查和修复步骤:
1. 必须添加databricks-sdk依赖
错误提示明确要求安装databricks-sdk,但你的pip_requirements里没有包含这个包。Serving环境运行模型时需要它处理Databricks内部的凭证认证,一定要补上:
pip_requirements=[ "mlflow==" + mlflow.__version__, "langchain==" + langchain.__version__, "databricks-vectorsearch", "databricks-sdk>=0.20.0" # 新增依赖,指定最低兼容版本 ],
2. 恢复loader_fn的正确写法
loader_fn参数需要传入可调用的函数对象,而非函数执行后的结果。你之前改成get_retriever()是错误的,会导致MLflow序列化时无法正确保存检索器的初始化逻辑,改回loader_fn=get_retriever即可。
3. 确认模型权限与服务账号配置
- 确保创建Serving Endpoint时使用的服务账号(默认是
databricks-serving)拥有访问UC模型、关联的Vector Search索引以及底层数据表的权限 - 检查
full_table_name是否符合UC模型命名规范:catalog_name.schema_name.model_name,格式错误会导致模型访问路径异常
4. 补充MLflow运行环境配置(可选)
如果模型依赖Databricks内部服务,可以在log_model时指定env_manager="conda",确保依赖环境完整打包:
model_info = mlflow.langchain.log_model( chain, loader_fn=get_retriever, artifact_path="chain", registered_model_name=model_name, pip_requirements=[ "mlflow==" + mlflow.__version__, "langchain==" + langchain.__version__, "databricks-vectorsearch", "databricks-sdk>=0.20.0" ], input_example=question, signature=signature, env_manager="conda" # 新增,确保依赖环境被正确打包 )
修复以上点后,重新注册模型并创建Serving Endpoint,即可解决凭证读取失败的问题。
内容的提问来源于stack exchange,提问作者goda
相关产品推荐
相关产品推荐

