做者|Bruce H. Cottman, Ph.D.
编译|VK
来源|Towards Data Sciencepython
在过去两年半的工做中,咱们开发和维护了几个天然语言处理项目。咱们为每一个项目中的每一个版本控制中心建立了Docker镜像:Dev、Test和Stage。我将详细介绍Docker解决方案来建立生产NLP项目。git
代码开发、重构、bug修复和单元测试都是由Dev完成的。在提交Github Dev repo(sitory)以前,代码必须经过单元测试。其余开发团队在合并到Test Github repo(sitory)以前执行代码评审、集成测试。github
项目阶段管理(Project stage management)触发从开发人员到Test 存储库的推送。项目发布管理(Project release management)触发从Test 到Stage 存储库的推送。市场发布管理(Marketing release management)触发了从stage到Prod存储库的推送和半自动连续部署(CD)的推出。web
注意:云扩展和故障转移管理须要修改。咱们这里不讨论这些。
Docker是用于管理应用程序的单个容器镜像。docker
Docker Compose用于同一应用程序同时管理多个容器。此工具提供与Docker相同的功能,但容许你有更复杂的应用程序。安全
根据上述说明,在上述文章中,spacy和nltk都是经过在Dev、Test和Stage的dockerfile的中间添加如下内容来导入的:服务器
. . . RUN python -m spacy download en RUN python -m spacy download en_core_web_sm RUN python -m spacy download en_core_web_lg RUN python -m nltk.downloader stopwords && python -m nltk.downloader punkt && \ python -m nltk.downloader averaged_perceptron_tagger && \ python -m nltk.downloader wordnet . . .
将Jupyter支持添加到Dev dockerfile中:机器学习
. . . RUN python -m pip install --upgrade --no-deps --force-reinstall notebook # RUN python -m pip install jupyterthemes RUN python -m pip install --upgrade jupyterthemes RUN python -m pip install jupyter_contrib_nbextensions RUN jupyter contrib nbextension install --user RUN jupyter nbextensions_configurator enable --user RUN jupyter nbextension enable jupyter-js-widgets/extension RUN jupyter nbextension enable jupyter-notebook-gist/notebook-extension RUN jupyter nbextension enable contrib_nbextensions_help_item/main RUN jupyter nbextension enable autosavetime/main RUN jupyter nbextension enable codefolding/main RUN jupyter nbextension enable code_font_size/code_font_size RUN jupyter nbextension enable code_prettify/code_prettify RUN jupyter nbextension enable collapsible_headings/main RUN jupyter nbextension enable comment-uncomment/main RUN jupyter nbextension enable equation-numbering/main RUN jupyter nbextension enable execute_time/ExecuteTime RUN jupyter nbextension enable gist_it/main RUN jupyter nbextension enable hide_input/main RUN jupyter nbextension enable spellchecker/main RUN jupyter nbextension enable toc2/main RUN jupyter nbextension enable toggle_all_line_numbers/main
Dev、Test和Stage的requirements.txt:ide
###### Requirements without Version Specifiers ###### numpy matplotlib progressbar2 Pillow keras nilearn==0.5.0 pandas xlrd plotly statsmodels prettytable requests seaborn joblib dask distributed==v2.22.0 bs4 spacy textacy nltk spacy-transformers spacymoji pdfminer urllib3==1.25.10
注:该要求.txt上面显示的文件是为咱们的Dev、Test和Stage准备的。你可能不须要全部这些软件包,也可能须要其余软件包。。若是须要,能够随意删除或添加软件包。注意:Pycharm配置了开发和测试工具pytest、pylint、black、mypy等。Jupyter用户可使用!pip install <package>进行安装,而后安装可能须要的重要的额外包或工具。工具
通常的存储库结构是
|-- <project--repo-name> |-- docker |-- dev |--- Dockerfile |--- docker-compose.yml |--- requirements.txt |-- test |--- Dockerfile |--- docker-compose.yml |--- requirements.txt |-- stage |--- Dockerfile |--- docker-compose.yml |--- requirements.txt |-- src |-- test |--- requirements.txt |--- README.md . .
支持Jupyter的简要步骤:
volume:
- ./../../.
。,若有必要。jupyter的后续启动使用./../../.
做为其顶层目录。当你使用updev命令(在本文后面描述)时,docker-compose命令volume:
- ./../../.
使<path-to-projects>
映射到/docker,该目录是docker镜像的内部目录。jupyter的后续发布版本使用<path-to-projects>
做为其顶层目录。请使用上面显示的示例目录结构,或将本地目录结构替换为- ./../../.
。!docker system prune
!docker stats => CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 5d98fb8e8a66 dev_dev_1 0.11% 327.2MiB / 36.24GiB 0.88% 182MB / 9.62MB 0B / 0B 13
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
修复方法是等待2-3分钟,等待Docker守护进程完成,而后再试一次。若是不是这样,Docker守护进程的启动就有问题,必须进行诊断和修复。一个可能的问题是检查Docker镜像内存或CPU分配是否适合底层主机硬件。
我详细介绍了咱们如何为生产NLP应用程序生命周期设计和实现Docker解决方案。我展现了Dev、Test和Stage的目录结构和Docker代码。
本文中显示的全部代码都在这里:https://github.com/bcottman/N...
原文连接:https://towardsdatascience.co...
欢迎关注磐创AI博客站:
http://panchuang.net/
sklearn机器学习中文官方文档:
http://sklearn123.com/
欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/