簡體   English   中英

如何將 tensorflow 保存的 model 加載到 memory 中,並且在谷歌應用引擎中部署后無需再次加載?

[英]How to load tensorflow saved model into memory and never has to load it again after deploying in google app engine?

我正在使用 tensorflow 集線器 model “通用句子編碼器”,有時應用程序引擎會自動關閉,並且再次加載此 model 需要更多時間。 如何使 model 留在 memory 中?

   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 個實例)。 在您的啟動例程中,在 memory 中添加 model 加載並將其保存在全局變量中。 像這樣,您在服務上收到的任何請求都可以使用它。

但是有一些注意事項:

  • App Engine flex 至少每周重新啟動一次以更新底層平台。 因此,至少每周一次,您的實例將重新啟動。 但是因為你在啟動時加載了你的模式,所以不用擔心請求響應時間!
  • 當服務擴大(不是您的情況)時,會創建一個新實例,因此 model 再次加載到 memory
  • 同樣,如果您的實例崩潰(例如 memory 或未處理的異常),則會創建一個新實例,因此此時會再次加載 model。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM