在GCP Vertex AI的KFP组件中安装apache-beam==2.35.0遇依赖冲突
在Vertex AI Pipeline的KFP组件中安装apache-beam==2.35.0时遇到依赖冲突问题
我的KFP组件运行在GCP Vertex AI Pipeline中,用于安装apache-beam==2.35.0,组件头部代码如下:
@component( base_image="dockerhub/python:3.7.12", packages_to_install=["tensorflow-data-validation==1.6.0", "apache-beam==2.35.0"] ) def generate_statistics( statistics: Output[Artifact], dataset: str, ) -> None: ...
运行时出现以下错误:
ERROR: Cannot install apache-beam==2.35.0, apache-beam[gcp]==2.35.0, apache-beam[gcp]==2.39.0, apache-beam[gcp]==2.45.0, apache-beam[gcp]==2.47.0 and apache-beam[gcp]==2.48.0 because these package versions have conflicting dependencies.
我不清楚为什么系统会尝试同时安装多个版本的apache-beam?
问题原因分析
- 依赖传递冲突:你指定的
tensorflow-data-validation==1.6.0自身依赖特定版本的apache-beam[gcp],且这个依赖版本和你显式指定的apache-beam==2.35.0不兼容。从错误信息来看,TFDV 1.6.0要求的apache-beam版本至少是2.39.0,导致pip在解析依赖树时出现多版本冲突。 - pip依赖解析逻辑:当你在
packages_to_install中同时列出多个包时,pip会递归拉取所有包的依赖。如果不同包对同一依赖的版本要求不一致,就会触发这种多版本冲突报错。
解决方案
方案1:调整TFDV版本适配apache-beam==2.35.0
查找与apache-beam==2.35.0兼容的TFDV版本,根据官方发布记录,tensorflow-data-validation==1.5.0和apache-beam 2.35.0兼容,修改组件代码如下:
@component( base_image="dockerhub/python:3.7.12", packages_to_install=["tensorflow-data-validation==1.5.0", "apache-beam==2.35.0"] ) def generate_statistics( statistics: Output[Artifact], dataset: str, ) -> None: ...
方案2:升级apache-beam版本适配TFDV 1.6.0
如果必须使用TFDV 1.6.0,需要将apache-beam升级到它要求的最低版本(>=2.39.0),比如指定apache-beam==2.39.0:
@component( base_image="dockerhub/python:3.7.12", packages_to_install=["tensorflow-data-validation==1.6.0", "apache-beam==2.39.0"] ) def generate_statistics( statistics: Output[Artifact], dataset: str, ) -> None: ...
方案3:使用GCP预构建的兼容镜像
GCP提供了预安装TFDV和Apache Beam的Vertex AI Pipeline官方镜像,直接使用可以避免依赖冲突,例如:
@component( base_image="gcr.io/deeplearning-platform-release/tf2-cpu.2.6:latest", packages_to_install=[] ) def generate_statistics( statistics: Output[Artifact], dataset: str, ) -> None: ...
内容的提问来源于stack exchange,提问作者Maha Amin
相关产品推荐
相关产品推荐

