GCP Vertex AI 训练:自动打包的自定义训练作业产出巨大 Docker 图片
GCP Vertex AI Training: Auto-packaged Custom Training Job Yields Huge Docker Image
我正在尝试 运行 Cloud Platform 的 Vertex AI 训练服务中的自定义训练作业。
该工作基于 a tutorial from Google that fine-tunes a pre-trained BERT model(来自 HuggingFace)。
当我使用 gcloud
CLI 工具将我的训练代码自动打包成 Docker 图像并将其部署到 Vertex AI 训练服务时,如下所示:
$BASE_GPU_IMAGE="us-docker.pkg.dev/vertex-ai/training/pytorch-gpu.1-7:latest"
$BUCKET_NAME = "my-bucket"
gcloud ai custom-jobs create `
--region=us-central1 `
--display-name=fine_tune_bert `
--args="--job_dir=$BUCKET_NAME,--num-epochs=2,--model-name=finetuned-bert-classifier" `
--worker-pool-spec="machine-type=n1-standard-4,replica-count=1,accelerator-type=NVIDIA_TESLA_V100,executor-image-uri=$BASE_GPU_IMAGE,local-package-path=.,python-module=trainer.task"
...我最终得到了一个大约 18GB (!) 的 Docker 图像,需要很长时间才能上传到 GCP 注册表。
同意 the base image is around 6.5GB 但 额外的 >10GB 是从哪里来的?我有什么办法可以避免这种“图像膨胀”?
请注意,我的工作在 运行 时使用 datasets
Python 包加载训练数据,AFAIK 不将其包含在自动打包的 docker 中图片。
UI中显示的图片尺寸为图片的虚拟尺寸。它是将通过网络下载的压缩总图像大小。一旦图像被拉出,它就会被提取出来,结果尺寸会更大。在这种情况下,PyTorch image's virtual size 为 6.8 GB,而实际大小为 17.9 GB。
此外,当执行 docker push
命令时,进度条会显示未压缩的大小。实际推送的数据量为compressed before sending,所以进度条不会反映上传的大小
要减小 docker 图像的大小,可以使用自定义容器。在这里,只能配置必要的组件,这将导致更小的 docker 图像。有关自定义容器的更多信息 here。
我正在尝试 运行 Cloud Platform 的 Vertex AI 训练服务中的自定义训练作业。
该工作基于 a tutorial from Google that fine-tunes a pre-trained BERT model(来自 HuggingFace)。
当我使用 gcloud
CLI 工具将我的训练代码自动打包成 Docker 图像并将其部署到 Vertex AI 训练服务时,如下所示:
$BASE_GPU_IMAGE="us-docker.pkg.dev/vertex-ai/training/pytorch-gpu.1-7:latest"
$BUCKET_NAME = "my-bucket"
gcloud ai custom-jobs create `
--region=us-central1 `
--display-name=fine_tune_bert `
--args="--job_dir=$BUCKET_NAME,--num-epochs=2,--model-name=finetuned-bert-classifier" `
--worker-pool-spec="machine-type=n1-standard-4,replica-count=1,accelerator-type=NVIDIA_TESLA_V100,executor-image-uri=$BASE_GPU_IMAGE,local-package-path=.,python-module=trainer.task"
...我最终得到了一个大约 18GB (!) 的 Docker 图像,需要很长时间才能上传到 GCP 注册表。
同意 the base image is around 6.5GB 但 额外的 >10GB 是从哪里来的?我有什么办法可以避免这种“图像膨胀”?
请注意,我的工作在 运行 时使用 datasets
Python 包加载训练数据,AFAIK 不将其包含在自动打包的 docker 中图片。
UI中显示的图片尺寸为图片的虚拟尺寸。它是将通过网络下载的压缩总图像大小。一旦图像被拉出,它就会被提取出来,结果尺寸会更大。在这种情况下,PyTorch image's virtual size 为 6.8 GB,而实际大小为 17.9 GB。
此外,当执行 docker push
命令时,进度条会显示未压缩的大小。实际推送的数据量为compressed before sending,所以进度条不会反映上传的大小
要减小 docker 图像的大小,可以使用自定义容器。在这里,只能配置必要的组件,这将导致更小的 docker 图像。有关自定义容器的更多信息 here。