将GCP AI Platform模型迁移至Vertex AI自定义作业遇包错误求助
问题排查与解决方案
核心问题分析
你遇到的错误本质是两点:一是Vertex AI预构建容器要求Python包必须包含setup.py或pyproject.toml(AI Platform对这一点的校验更宽松);二是命令中指定的包路径是本地file:///格式,容器无法访问到GCS上的包文件。
具体修复步骤
1. 确保Python包结构符合要求
Vertex AI预构建容器会通过pip install安装你的包,因此包的根目录必须存在setup.py或pyproject.toml文件,且正确配置模块信息。
- 示例
setup.py内容(适配trainer模块):
from setuptools import setup, find_packages setup( name="trainer", version="0.2", packages=find_packages(), install_requires=[ # 列出你的依赖包,比如tensorflow==2.13.0 ] )
- 重新打包时,确保
setup.py在tar.gz的根目录,而非子文件夹中。可以本地解压包文件验证结构:
解压后应看到:setup.py、trainer/(你的代码目录),而非嵌套在某个子目录下。
2. 修正gcloud命令中的包路径
提交作业时,必须使用GCS路径(gs://开头)而非本地路径,容器才能从GCS拉取你的包。
- 错误的路径写法:
--package-uris=file:///user_dir/trainer-0.2.tar.gz - 正确的路径写法:
--package-uris=gs://你的存储桶名/路径/trainer-0.2.tar.gz - 同时确保Vertex AI服务账号(默认是
service-PROJECT_NUMBER@gcp-sa-vertexai.iam.gserviceaccount.com)拥有该GCS存储桶的roles/storage.objectViewer权限。
3. 正确的gcloud命令示例
gcloud ai custom-jobs create \ --region=us-central1 \ --display-name=your-training-job \ --container-image-uri=us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-13.py310 \ # 选择匹配你环境的预构建容器 --python-module=trainer.task \ # 你的入口模块,比如trainer目录下的task.py --package-uris=gs://your-bucket/trainer-0.2.tar.gz \ --args="--your-arg1=value1,--your-arg2=value2"
4. 验证预构建容器兼容性
确保选择的预构建容器Python版本、依赖环境和你的训练代码兼容。比如你的代码用Python 3.10,就选择对应版本的容器(如tf-cpu.2-13.py310)。
内容的提问来源于stack exchange,提问作者Jiho Choi
相关产品推荐
相关产品推荐

