Google Vertex AI托管Jupyter笔记本执行日志缺失及模块报错问题
问题解决指南
一、修复 ModuleNotFoundError: No module named 'bq_stats'
- 先明确
bq_stats的来源:- 若为公开PyPI包:在自定义任务的依赖配置中添加该包(比如创建
requirements.txt写入bq_stats,提交任务时指定该文件),或在自定义任务执行的代码开头加入!pip install bq_stats。 - 若为内部自定义包:需将包文件打包到自定义任务的镜像中,或上传至GCS存储桶,在任务启动时通过
pip install gs://你的存储桶路径/bq_stats.tar.gz安装。
- 若为公开PyPI包:在自定义任务的依赖配置中添加该包(比如创建
二、让自定义任务日志显示在Vertex AI任务日志中
你当前的日志配置代码仅在笔记本本地执行,不会作用于Vertex AI自定义任务的运行环境,这是核心问题。针对自定义任务的日志,有两种实用方案:
方案1:直接用标准输出/错误输出
Vertex AI自定义任务会自动捕获容器内的stdout和stderr并同步到Cloud Logging,无需额外配置日志客户端:
# 自定义任务代码中直接用print输出 print("这条内容会出现在任务日志里") # 或用Python内置logging模块输出到stdout import logging logging.basicConfig(level=logging.INFO) logging.info("这条日志也会同步到任务日志")
方案2:正确配置Cloud Logging客户端(需精细化日志管理时用)
若必须使用Cloud Logging客户端,要确保配置代码包含在自定义任务的执行代码中,而非仅在笔记本运行:
# 安装依赖(若自定义任务镜像未预装) !pip install google-cloud-logging import logging from google.cloud import logging as gcp_logging from google.cloud.logging.handlers import CloudLoggingHandler # 初始化客户端 client = gcp_logging.Client() handler = CloudLoggingHandler(client) # 配置根日志器 root_logger = logging.getLogger() root_logger.setLevel(logging.INFO) root_logger.addHandler(handler) # 可选:添加StreamHandler让日志同时输出到stdout,方便本地调试 stream_handler = logging.StreamHandler() root_logger.addHandler(stream_handler) # 测试日志 root_logger.info("自定义任务日志测试内容")
额外注意事项
- 确认自定义任务使用的服务账号拥有
Logs Writer权限:笔记本的服务账号和自定义任务的服务账号可能不同,需检查Vertex AI自定义任务配置里指定的账号是否具备roles/logging.logWriter角色。 - 日志存在延迟:Cloud Logging同步可能有1-2分钟延迟,执行任务后不要立即刷新,稍等片刻再查看日志。
内容的提问来源于stack exchange,提问作者Pinky
相关产品推荐
相关产品推荐

