在kfp-1.8.12中有一个非常有用的新特性,我们可以在组件装饰器中为python依赖项指定自定义索引(参见此PR)。
我有一个组件,它使用了一个python包,这个包已经托管在pypi存储库下的GCP Artifact Registry上。现在,为了使用它,我正在生成一个单独的Docker映像,包括该包,并使用它作为我的组件的基本映像。
如果我可以直接从内部pypi索引安装包,那就更干净了,但身份验证似乎不起作用。如果我将我的内部索引作为pip_index_urls
的一部分,组件将提示User
并立即失败:
User for <region-redacted>-python.pkg.dev:
是否有一种方法可以使用托管在工件注册表上的pypi存储库来验证顶点管道?
您需要按照说明为您的Artifact Registry Python Index运行设置身份验证,然而,您必须在 KFP开始尝试安装包之前执行。
因为设置它需要安装一些软件包,如果这需要身份验证…
因此,解决方案是将设置身份验证的指令(只是pip install keyring keyrings.google-artifactregistry-auth
)放入Dockerfile
并生成自定义映像。不要安装Docker,使用Cloud Build来构建镜像。然后使用自定义图像在Vertex AI上运行Kubeflow组件。
另一个解决方案当然是将安装添加到您想要的Cloud Build的软件包中,这样您的自定义映像就已经拥有了您需要的一切。这有一个额外的好处,你的KFP组件启动得更快,因为它不需要安装任何东西。