GCP App Engine部署含PyTorch的FastAPI应用构建失败解决方案
解决依赖PyTorch的FastAPI应用部署失败问题
构建失败的核心原因是PyTorch体积大、安装耗时久,默认安装方式可能触发源码编译或因超时导致失败,以下是针对性的配置修改方案:
1. 优化PyTorch安装方式(修改requirements.txt)
替换默认的torch安装行,使用CPU预编译轮子避免源码编译,同时指定兼容的依赖版本减少冲突:
# 指定CPU预编译版本的PyTorch,大幅缩短安装时间 torch==2.0.1+cpu --find-links https://download.pytorch.org/whl/cpu fastapi==0.95.2 uvicorn[standard]==0.22.0 gunicorn==20.1.0 sqlalchemy==2.0.19 google-api-python-client==2.97.0 google-auth-httplib2==0.1.0 google-auth-oauthlib==1.0.0 pydantic==2.0.3 # 指定与PyTorch兼容的transformers版本 transformers==4.30.2 cloud-sql-python-connector==1.10.0 pg8000==1.30.3
2. 启用pip依赖缓存(修改cloudbuild.yaml)
添加缓存机制,避免每次构建重复下载PyTorch这类大体积依赖:
# [START cloudbuild] volumes: - name: 'pip_cache' path: '/root/.cache/pip' steps: # 带缓存安装依赖 - name: 'python' entrypoint: pip3 args: ['install', '-r', 'requirements.txt'] volumes: - name: 'pip_cache' path: '/root/.cache/pip' # 部署命令 - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'bash' args: ['-c', 'gcloud config set app/cloud_build_timeout 3600 && gcloud app deploy'] timeout: '6000s' # [END cloudbuild]
3. 延长构建超时阈值
将App Engine构建超时从1600s调整为3600s(1小时),确保PyTorch有足够时间完成安装:
在cloudbuild.yaml的部署步骤中,修改命令为:gcloud config set app/cloud_build_timeout 3600 && gcloud app deploy
4. 可选:提升实例资源(修改app.yaml)
如果构建成功但应用启动失败,可调高实例规格避免内存不足:
env: standard runtime: python310 instance_class: F4 # 从F2升级到F4,提升CPU和内存资源 entrypoint: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app automatic_scaling: target_cpu_utilization: 0.65 min_instances: 5 max_instances: 100 min_pending_latency: 30ms max_pending_latency: automatic max_concurrent_requests: 50
内容的提问来源于stack exchange,提问作者Ahmad Coachendo
相关产品推荐
相关产品推荐

