如何将tensorflow保存的模型加载到内存中,并且在谷歌应用程序引擎中部署后再也不用加载它



我使用的是tensorflow集线器模型"通用语句编码器";有时应用程序引擎会自动关闭,重新加载此模型需要更多时间。如何让那个模型留在记忆中?

runtime: python
env: flex

runtime_config:
python_version: 3

automatic_scaling:
min_num_instances: 1
max_num_instances: 1
cpu_utilization:
target_utilization: 1
readiness_check:
app_start_timeout_sec: 1800
liveness_check:
path: "/liveness_check"
check_interval_sec: 30
resources:
cpu: 1
memory_gb: 6
disk_size_gb: 15                        
entrypoint: gunicorn -k uvicorn.workers.UvicornWorker -w 4 app.main:app --timeout 1000

日志:

A 2021-03-22T10:53:59Z [2021-03-22 10:53:59 +0000] [8] [INFO] Started server process [8]

A 2021-03-22T10:53:59Z [2021-03-22 10:53:59 +0000] [8] [INFO] Waiting for application startup.

A 2021-03-22T10:53:59Z [2021-03-22 10:53:59 +0000] [8] [INFO] Application startup complete.

A 2021-03-22T11:01:03Z [2021-03-22 11:01:03 +0000] [1] [INFO] Handling signal: term

A 2021-03-22T11:01:03Z [2021-03-22 11:01:03 +0000] [8] [INFO] Shutting down

A 2021-03-22T11:01:03Z [2021-03-22 11:01:03 +0000] [8] [INFO] Error while closing socket [Errno 9] Bad file descriptor

A 2021-03-22T11:01:04Z [2021-03-22 11:01:04 +0000] [8] [INFO] Waiting for application shutdown.

A 2021-03-22T11:01:04Z [2021-03-22 11:01:04 +0000] [8] [INFO] Application shutdown complete.

A 2021-03-22T11:01:04Z [2021-03-22 11:01:04 +0000] [8] [INFO] Finished server process [8]

A 2021-03-22T11:01:04Z [2021-03-22 11:01:04 +0000] [8] [INFO] Worker exiting (pid: 8)

使用App Engine flex,应用程序在部署时启动(因为最小实例是1,所以总是启动1个实例(。在启动例程中,将模型加载添加到内存中,并将其保存在全局变量中。像这样,你在服务上收到的任何请求都可以使用它。

然而,一些注意事项:

  • App Engine flex每周至少重新启动一次,以更新底层平台。因此,至少每周一次,您的实例将重新启动。但是,因为您在启动时加载模态,所以无需担心请求响应时间
  • 当服务扩展时(不是您的情况(,将创建一个新实例,从而将模型再次加载到内存中
  • 类似地,如果实例崩溃(例如内存不足或未处理的异常(,则会创建一个新实例,因此此时会再次加载模型

相关内容

  • 没有找到相关文章

最新更新