【问题标题】:Flask app continuously restarting after downloading huggingface models下载拥抱脸模型后,Flask 应用程序不断重启
【发布时间】:2021-01-15 01:34:45
【问题描述】:

在我的 docker 容器中,我有一个烧瓶应用程序(在 nginx 和 uwsgi 之后),它从拥抱脸/变压器实例化模型。 由于某种原因,在下载模型后尝试重新启动应用程序时会不断重启

应用:

### app.py
server = Flask(__name__)
cors = CORS(server)
server.config["CORS_HEADERS"] = "Content-Type"
log.info("Instantiating model")
model = AutoModelForTokenClassification.from_pretrained('dbmdz/bert-large-cased-finetuned-conll03-english')
tokenizer = AutoTokenizer.from_pretrained('bert-base-cased')
pipe = pipeline('ner', model=model, tokenizer=tokenizer)

if __name__ == "__main__":
    server.run(host=appconf.host, port=appconf.port, debug=appconf.isdev, use_reloader=False)

日志:

[2020-09-29 14:13:11,704] {./app.py:14} INFO - Instantiating model
[2020-09-29 14:13:11,708] {/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:939} DEBUG - Starting new HTTPS connection (1): s3.amazonaws.com:443
[2020-09-29 14:13:12,170] {/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:433} DEBUG - https://s3.amazonaws.com:443 "HEAD /models.huggingface.co/bert/dbmdz/bert-large-cased-finetuned-conll03-english/config.json HTTP/1.1" 200 0
[2020-09-29 14:13:12,176] {/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:939} DEBUG - Starting new HTTPS connection (1): cdn.huggingface.co:443
[2020-09-29 14:13:12,317] {/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:433} DEBUG - https://cdn.huggingface.co:443 "HEAD /dbmdz/bert-large-cased-finetuned-conll03-english/pytorch_model.bin HTTP/1.1" 200 0
[uWSGI] getting INI configuration from /etc/uwsgi/uwsgi.ini
*** Starting uWSGI 2.0.19.1 (64bit) on [Tue Sep 29 14:13:55 2020] ***
...
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 1727064 bytes (1686 KB) for 16 cores
*** Operational MODE: preforking ***
mounting app:server on /
Comment: FROM HERE IT REPEATS
[2020-09-29 14:13:57,254] {./app.py:14} INFO - Instantiating model <-- AGAIN!
[2020-09-29 14:13:57,257] {/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:939} DEBUG - Starting new HTTPS connection (1): s3.amazonaws.com:443
[2020-09-29 14:13:57,686] {/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:433} DEBUG - https://s3.amazonaws.com:443 "HEAD /models.huggingface.co/bert/dbmdz/bert-large-cased-finetuned-conll03-english/config.json HTTP/1.1" 200 0
[2020-09-29 14:13:57,693] {/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:939} DEBUG - Starting new HTTPS connection (1): cdn.huggingface.co:443
[2020-09-29 14:13:57,790] {/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:433} DEBUG - https://cdn.huggingface.co:443 "HEAD /dbmdz/bert-large-cased-finetuned-conll03-english/pytorch_model.bin HTTP/1.1" 200 0

我确定在 Docker 容器中设置了 http_proxyhttps_proxy

感谢您的帮助

【问题讨论】:

  • 您应该在容器构建期间下载模型,以避免在应用程序启动时必须这样做(这很慢并且可能会失败,而且对 Huggingface 的那些必须支付托管费用和重复下载)。
  • 请也显示 uwsgi 配置 - 很可能 uWSGI 不太喜欢应用程序对象在导入您的 app 模块后需要很长时间才能可用。
  • 当我实例化模型时,我已经在使用.from_pretrained('name', cache_dir=/path/to/cache/)(上面的代码中没有显示)所以我希望它会从那里加载模型
  • 嗯,很明显,模型的 HTTP(S) 请求正在发出。只要容器启动,缓存就会一直工作(除非您已绑定安装它或对其进行卷);当容器重新启动时,它会重新下载数据,这是不友好的。

标签: python huggingface-transformers


【解决方案1】:

通过增加运行容器的服务器上的 CPU 和内存容量来解决问题。

【讨论】:

    猜你喜欢
    • 2021-08-08
    • 2022-01-17
    • 2020-11-06
    • 2022-01-04
    • 1970-01-01
    • 2021-11-02
    • 2014-10-22
    • 2021-12-21
    • 2020-12-18
    相关资源
    最近更新 更多