README.md 7.8 KB
Newer Older
S
strint 已提交
1
**OneFlow is a performance-centered and open-source deep learning framework.**
S
strint 已提交
2 3 4 5 6 7 8 9 10 11 12

- [Install OneFlow](#install-oneflow)
  - [System Requirements](#system-requirements)
  - [Install with Pip Package](#install-with-pip-package)
  - [Build from Source](#build-from-source)
  - [Troubleshooting](#troubleshooting)
  - [Advanced features](#advanced-features)
- [Getting Started](#getting-started)
- [Documentation](#documentation)
    - [Usage & Design Docs](#usage--design-docs)
    - [API Reference](#api-reference)
13
    - [OneFlow System Design](#oneflow-system-design)
S
strint 已提交
14 15 16 17 18 19 20 21 22 23 24 25
- [Model Zoo and Benchmark](#model-zoo-and-benchmark)
  - [CNNs(ResNet-50, VGG-16, Inception-V3, AlexNet)](#cnnsresnet-50-vgg-16-inception-v3-alexnet)
  - [Wide&Deep](#widedeep)
  - [BERT](#bert)
- [Communication](#communication)
- [Contributing](#contributing)
- [The Team](#the-team)
- [License](#license)

## Install OneFlow

  ### System Requirements
26

27
  - Python >= 3.5
S
Shenghang Tsai 已提交
28 29 30
  - CUDA Toolkit Linux x86_64 Driver
    | OneFlow |CUDA Driver Version|
    |---|---|
S
Shenghang Tsai 已提交
31
    | oneflow_cu111  | >= 450.80.02  |
S
Shenghang Tsai 已提交
32
    | oneflow_cu110  | >= 450.36.06  |
S
Shenghang Tsai 已提交
33 34 35
    | oneflow_cu102  | >= 440.33  |
    | oneflow_cu101  | >= 418.39  |
    | oneflow_cu100  | >= 410.48  |
S
Shenghang Tsai 已提交
36
    | oneflow_cpu  | N/A  |
S
Shenghang Tsai 已提交
37

S
Shenghang Tsai 已提交
38 39 40
    - CUDA runtime is statically linked into OneFlow. OneFlow will work on a minimum supported driver, and any driver beyond. For more information, please refer to [CUDA compatibility documentation](https://docs.nvidia.com/deploy/cuda-compatibility/index.html).

    - Support for latest stable version of CUDA will be prioritized. Please upgrade your Nvidia driver to version 440.33 or above and install `oneflow_cu102` if possible.
41

S
Shenghang Tsai 已提交
42 43
    - We are sorry that due to limits on bandwidth and other resources, we could only guarantee the efficiency and stability of `oneflow_cu102`. We will improve it ASAP.

S
strint 已提交
44
  ### Install with Pip Package
45

S
Shenghang Tsai 已提交
46
  - To install latest release of OneFlow with CUDA support:
47

48
    ```
S
Shenghang Tsai 已提交
49
    python3 -m pip install --find-links https://release.oneflow.info oneflow_cu102 --user
50
    ```
51

S
Shenghang Tsai 已提交
52
  - To install master branch release of OneFlow with CUDA support:
S
Shenghang Tsai 已提交
53 54

    ```
S
Shenghang Tsai 已提交
55
    python3 -m pip install --find-links https://staging.oneflow.info/branch/master oneflow_cu102 --user
S
Shenghang Tsai 已提交
56 57
    ```

S
Shenghang Tsai 已提交
58 59
  - To install latest release of CPU-only OneFlow:

S
Shenghang Tsai 已提交
60
    ```
S
Shenghang Tsai 已提交
61
    python3 -m pip install --find-links https://release.oneflow.info oneflow_cpu --user
S
Shenghang Tsai 已提交
62 63
    ```

64 65 66 67 68 69 70 71
  - To install legacy version of OneFlow with CUDA support:

    ```
    python3 -m pip install --find-links https://release.oneflow.info oneflow_cu102==0.3.1 --user
    ```

    Some legacy versions available: `0.1.10`, `0.2.0`, `0.3.0`, `0.3.1`

S
Shenghang Tsai 已提交
72 73 74 75 76 77
  - If you are in China, you could run this to have pip download packages from domestic mirror of pypi:
    ```
    python3 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    ```
    For more information on this, please refer to [pypi 镜像使用帮助](https://mirror.tuna.tsinghua.edu.cn/help/pypi/)

S
Shenghang Tsai 已提交
78 79
  - Releases are built with G++/GCC 4.8.5, cuDNN 7 and MKL 2020.0-088.

S
strint 已提交
80
### Build from Source
81

S
Shenghang Tsai 已提交
82
1. #### System Requirements to Build OneFlow
83

S
Shenghang Tsai 已提交
84
    - Please use a newer version of CMake to build OneFlow. You could download cmake release from [here](https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0-Linux-x86_64.tar.gz).
85

S
Shenghang Tsai 已提交
86
    - Please make sure you have G++ and GCC >= 4.8.5 installed. Clang is not supported for now.
87

S
Shenghang Tsai 已提交
88
    - To install dependencies, run:
89

90
      On CentOS:
91

S
Shenghang Tsai 已提交
92 93 94 95
      ```
      yum-config-manager --add-repo https://yum.repos.intel.com/setup/intelproducts.repo && \
      rpm --import https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB && \
      yum update -y && yum install -y epel-release && \
qq_22305325's avatar
qq_22305325 已提交
96
      yum install -y intel-mkl-64bit-2020.0-088 nasm rdma-core-devel
S
Shenghang Tsai 已提交
97 98 99
      ```

      On CentOS, if you have MKL installed, please update the environment variable:
100

S
Shenghang Tsai 已提交
101 102 103
      ```
      export LD_LIBRARY_PATH=/opt/intel/lib/intel64_lin:/opt/intel/mkl/lib/intel64:$LD_LIBRARY_PATH
      ```
H
Houjiang Chen 已提交
104

Z
zhou.yue 已提交
105 106
      If you don't want to build OneFlow with MKL, you could install OpenBLAS.
      On CentOS:
S
Shenghang Tsai 已提交
107
      ```
S
Shenghang Tsai 已提交
108
      sudo yum -y install openblas-devel
S
Shenghang Tsai 已提交
109
      ```
Z
zhou.yue 已提交
110 111 112 113
      On Ubuntu:
      ```
      sudo apt install -y libopenblas-dev
      ```
H
Houjiang Chen 已提交
114

115
2. #### Clone Source Code
H
Houjiang Chen 已提交
116

S
Shenghang Tsai 已提交
117
    - #### Option 1: Clone source code from GitHub
S
Shenghang Tsai 已提交
118 119

      ```bash
120
      git clone https://github.com/Oneflow-Inc/oneflow --depth=1
S
Shenghang Tsai 已提交
121 122
      ```

123 124 125
    - #### Option 2: Download from Aliyun

      If you are in China, please download OneFlow source code from: https://oneflow-public.oss-cn-beijing.aliyuncs.com/oneflow-src.zip
S
Shenghang Tsai 已提交
126 127

      ```bash
128 129
      curl https://oneflow-public.oss-cn-beijing.aliyuncs.com/oneflow-src.zip -o oneflow-src.zip
      unzip oneflow-src.zip
S
Shenghang Tsai 已提交
130
      ```
H
Houjiang Chen 已提交
131

132
3. #### Build and Install OneFlow
H
Houjiang Chen 已提交
133

134 135
    - #### Option 1: Build in docker container (recommended)
      - In the root directory of OneFlow source code, run:
136

137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
        ```
        python3 docker/package/manylinux/build_wheel.py
        ```

        This should produces `.whl` files in the directory `wheelhouse`

      - If you are in China, you might need to add these flags:

        ```
        --use_tuna --use_system_proxy --use_aliyun_mirror
        ```

      - You can choose CUDA/Python versions of wheel by adding:

        ```
        --cuda_version=10.1 --python_version=3.6,3.7
        ```

      - For more useful flags, plese run the script with flag `--help` or refer to the source code of the script.

    - #### Option 2: Build on bare metal
      - In the root directory of OneFlow source code, run:

        ```
        mkdir build
        cd build
        cmake ..
        make -j$(nproc)
        make pip_install
        ```
H
Houjiang Chen 已提交
167

168 169
      - If you are in China, please add this CMake flag `-DTHIRD_PARTY_MIRROR=aliyun` to speed up the downloading procedure for some dependency tar files.
      - For pure CPU build, please add this CMake flag `-DBUILD_CUDA=OFF`.
S
Shenghang Tsai 已提交
170

171
### Troubleshooting
H
Houjiang Chen 已提交
172

S
Shenghang Tsai 已提交
173
Please refer to [troubleshooting](docs/source/troubleshooting.md) for common issues you might encounter when compiling and running OneFlow.
H
Houjiang Chen 已提交
174

S
strint 已提交
175
### Advanced features
H
Houjiang Chen 已提交
176

177
- #### XRT
H
Houjiang Chen 已提交
178

S
Shenghang Tsai 已提交
179
  You can check this [doc](oneflow/xrt/README.md) to obtain more details about how to use XLA and TensorRT with OneFlow.
S
strint 已提交
180 181 182 183 184 185

## Getting Started
3 minutes to run MNIST.
1. Clone the demo code from OneFlow documentation
```
git clone https://github.com/Oneflow-Inc/oneflow-documentation.git
S
Shenghang Tsai 已提交
186
cd oneflow-documentation/cn/docs/code/quick_start/
S
strint 已提交
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
```
2. Run it in Python
```
python mlp_mnist.py
```

3. Oneflow is running and you got the training loss
```
2.7290366
0.81281316
0.50629824
0.35949975
0.35245502
...
```
More info on this demo, please refer to [doc on quick start](http://docs.oneflow.org/quick_start/quickstart_in_3_min.html).

## Documentation
#### Usage & Design Docs
* [link](http://docs.oneflow.org/)
#### API Reference
L
Lyon 已提交
208
* [link](https://oneflow.readthedocs.io/en/master/)
209 210 211
#### OneFlow System Design
For those who would like to understand the OneFlow internals, please read the document below:
* [link](https://github.com/Oneflow-Inc/oneflow-documentation/blob/master/en/docs/basics_topics/essentials_of_oneflow.md)
S
strint 已提交
212 213 214 215

## Model Zoo and Benchmark
* [link](https://github.com/Oneflow-Inc/OneFlow-Benchmark)
### CNNs(ResNet-50, VGG-16, Inception-V3, AlexNet)
S
ShawnXuan 已提交
216
* [CNNs](https://github.com/Oneflow-Inc/OneFlow-Benchmark/tree/master/Classification/cnns)
S
strint 已提交
217 218

### Wide&Deep
S
ShawnXuan 已提交
219
* [OneFlow-WDL](https://github.com/Oneflow-Inc/OneFlow-Benchmark/tree/master/ClickThroughRate/WideDeepLearning)
S
strint 已提交
220
### BERT
S
Shenghang Tsai 已提交
221
* [BERT](https://github.com/Oneflow-Inc/OneFlow-Benchmark/tree/master/LanguageModeling/BERT)
S
strint 已提交
222 223

## Communication
S
Shenghang Tsai 已提交
224
* GitHub issues : any install, bug, feature issues.
S
strint 已提交
225 226 227 228 229 230 231 232 233 234
* [www.oneflow.org](http://www.oneflow.org) : brand related information.

## Contributing
*  [link](http://docs.oneflow.org/contribute/intro.html)

## The Team
OneFlow was originally developed by [OneFlow Inc](http://www.oneflow.org) and [Zhejiang Lab](http://www.zhejianglab.com/).

## License
[Apache License 2.0](LICENSE)