2.5.2 项目工程模板

请读者下载本书附带的cute-datascience-sem,并使用cookiecutter进行构建,根据提示操作,示例如下。


[ ~ ]# cookiecutter  /root/pkgs/cute-datascience-sem
project_name [project_name]: example_project
repo_name [example_project]: 
author_name [Your name (or your organization/company/team)]: chansonz
description [A short description of the project.]: example for readers
Select open_source_license:
1 - MIT
2 - BSD-3-Clause
3 - No license file
Choose from 1, 2, 3 [1]: 
Select python_interpreter:
1 - python3
2 - python
Choose from 1, 2 [1]: 
Select use_nvidia_docker:
1 - no
2 - yes
Choose from 1, 2 [1]: 1

1.工程目录

上述命令,最终在当前目录生成example_project文件夹。其目录结构如下:


[ example_project ]# tree
.
├── data
│   ├── external
│   ├── processed
│   ├── raw
│   └── tmp
├── docker-compose_with_build.yml
├── docker-compose.yml
├── Dockerfile
├── docs
│   ├── commands.rst
│   ├── conf.py
│   ├── getting-started.rst
│   ├── index.rst
│   ├── make.bat
│   └── Makefile
├── LICENSE
├── Makefile
├── models
├── notebooks
├── README.md
├── references
├── reports
│   └── figures
├── requirements.txt
├── src
│   ├── data
│   │   └── make_dataset.py
│   ├── features
│   │   └── build_features.py
│   ├── __init__.py
│   ├── models
│   │   ├── predict_model.py
│   │   └── train_model.py
│   └── visualization
│       └── visualize.py
├── start.sh
├── stop.sh
├── test_environment.py
└── tox.ini
16 directories, 23 files

其中主要文件和文件夹解释如下:

1)Dockerfile:可直接在这里指定镜像或构建镜像的指令。示例如下:


FROM chansonz/ml_dev_env:v1.3

2)docker-compose.yml和docker-compose_with_build.yml:Docker Compose的配置文件可使用docker-compose-f指定。内容示例如下:


version: '3'
services:
    notebook-server:
        build: .
        ports:
            - "0.0.0.0:8889:8888"
        #  - "127.0.0.1::8888"
        volumes:
            - ./:/mnt
        entrypoint: bash -c "cd /mnt && jupyter notebook --NotebookApp.token='' --ip=0.0.0.0 --allow-root && /bin/bash" 
        stdin_open: true
        tty: true

我将解释如下的几个字段,其他内容读者可自行实践理解。

·ports:宿主机开发的端口,此处为8889,也是我们在浏览器中访问的端口。8888为Docker内部端口。0.0.0.0的IP地址表明不限制IP访问,只限本机使用时可使用127.0.0.1。

·volumes:宿主机中当前目录映射到容器中的/mnt目录,实现数据共享。

·entrypoint:进入容器启动点。

·stdin_open和tty:支持shell登录到容器。

3)在docs文件夹中,用户可编写文本rst格式的项目文件,并可使用make html生成相应的项目文档作为报告分享,如图2-5所示。

图2-5 doc文件夹下使用make html生成项目文档

2.环境管理

该模板中包含的环境管理工具是make,支持的命令定义在Makefile中。该环境管理提供如下的make命令,读者可以直接输入make命令查看,如表2-4所示。

表2-4 数据科学工程中常用命令介绍

一个常用的管理流程如下。

·启动:start.sh。

·查看端口信息:make profile。

·停止:stop.sh。

注意:make(GNU Make)是Linux系统中程序构建的工具,可完成具有复杂依赖程序模块的构建工作,Linux系统级开源软件的构建几乎都使用make。make当然也可用于管理建模流程的pipeline,建模流程的依赖关系定义在Makefile即可。读者可自行实践。