README.md 7.1 KB
Newer Older
1 2
# OneFlow

S
strint 已提交
3
**OneFlow is a performance-centered and open-source deep learning framework.**
S
strint 已提交
4

5 6
[![Simple CI](https://github.com/Oneflow-Inc/oneflow/actions/workflows/simple.yml/badge.svg)](https://github.com/Oneflow-Inc/oneflow/actions/workflows/simple.yml)

S
strint 已提交
7 8 9
## Install OneFlow

  ### System Requirements
10

S
Shenghang Tsai 已提交
11
  - Python 3.6, 3.7, 3.8
S
Shenghang Tsai 已提交
12 13
  - CUDA Toolkit Linux x86_64 Driver

S
Shenghang Tsai 已提交
14 15
    - 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).

S
Shenghang Tsai 已提交
16
    - Please upgrade your Nvidia driver to version 440.33 or above and install OneFlow for CUDA 10.2 if possible.
S
Shenghang Tsai 已提交
17

S
strint 已提交
18
  ### Install with Pip Package
19

S
Shenghang Tsai 已提交
20
  - To install latest stable release of OneFlow with CUDA support:
21

S
Shenghang Tsai 已提交
22 23
    ```bash
    python3 -m pip install -f https://release.oneflow.info oneflow==0.4.0+cu102 --user
24
    ```
25

S
Shenghang Tsai 已提交
26
  - To install nightly release of OneFlow with CUDA support:
S
Shenghang Tsai 已提交
27
    ```bash
S
Shenghang Tsai 已提交
28 29 30 31
    python3 -m pip install oneflow --user -f https://staging.oneflow.info/branch/master/cu102
    ```

  - To install other available builds for different variants:
S
Shenghang Tsai 已提交
32 33 34 35 36 37 38 39 40 41 42
    - Stable
      ```bash
      python3 -m pip install --find-links https://release.oneflow.info oneflow==0.4.0+[PLATFORM] --user
      ```
    - Nightly
      ```
      python3 -m pip install oneflow --user -f https://staging.oneflow.info/branch/master/[PLATFORM]
      ```
    - All available `[PLATFORM]`:
      | Platform |CUDA Driver Version| Supported GPUs |
      |---|---|---|
43
      | cu112  | >= 450.80.02  | GTX 10xx, RTX 20xx, A100, RTX 30xx |
S
Shenghang Tsai 已提交
44 45 46 47 48 49
      | cu111  | >= 450.80.02  | GTX 10xx, RTX 20xx, A100, RTX 30xx |
      | cu110, cu110_xla  | >= 450.36.06  | GTX 10xx, RTX 20xx, A100|
      | cu102, cu102_xla  | >= 440.33  | GTX 10xx, RTX 20xx |
      | cu101, cu101_xla  | >= 418.39  | GTX 10xx, RTX 20xx |
      | cu100, cu100_xla  | >= 410.48  | GTX 10xx, RTX 20xx |
      | cpu  | N/A | N/A |
50

S
Shenghang Tsai 已提交
51 52 53 54 55 56
  - 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
strint 已提交
57
### Build from Source
S
Shenghang Tsai 已提交
58 59
<details>
<summary>Clone Source Code</summary>
60

S
Shenghang Tsai 已提交
61
- #### Option 1: Clone source code from GitHub
H
Houjiang Chen 已提交
62

S
Shenghang Tsai 已提交
63 64 65
  ```bash
  git clone https://github.com/Oneflow-Inc/oneflow --depth=1
  ```
S
Shenghang Tsai 已提交
66

S
Shenghang Tsai 已提交
67
- #### Option 2: Download from Aliyun
S
Shenghang Tsai 已提交
68

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

S
Shenghang Tsai 已提交
71 72 73 74 75
  ```bash
  curl https://oneflow-public.oss-cn-beijing.aliyuncs.com/oneflow-src.zip -o oneflow-src.zip
  unzip oneflow-src.zip
  ```
</details>
H
Houjiang Chen 已提交
76

S
Shenghang Tsai 已提交
77
<details>
78
<summary>Build OneFlow</summary>
H
Houjiang Chen 已提交
79

80 81 82 83
- #### Option 1: Build with Conda (recommended)
  Please refer to [this repo](https://github.com/Oneflow-Inc/conda-env)

- #### Option 2: Build in docker container (recommended)
S
Shenghang Tsai 已提交
84
  - In the root directory of OneFlow source code, run:
85

S
Shenghang Tsai 已提交
86 87 88
    ```
    python3 docker/package/manylinux/build_wheel.py
    ```
89

S
Shenghang Tsai 已提交
90
    This should produce `.whl` files in the directory `wheelhouse`
91

S
Shenghang Tsai 已提交
92
  - If you are in China, you might need to add these flags:
93

S
Shenghang Tsai 已提交
94 95 96
    ```
    --use_tuna --use_system_proxy --use_aliyun_mirror
    ```
97

S
Shenghang Tsai 已提交
98
  - You can choose CUDA/Python versions of wheel by adding:
99

S
Shenghang Tsai 已提交
100 101 102
    ```
    --cuda_version=10.1 --python_version=3.6,3.7
    ```
103

S
Shenghang Tsai 已提交
104
  - For more useful flags, plese run the script with flag `--help` or refer to the source code of the script.
105

106
- #### Option 3: Build on bare metal
107 108 109 110 111 112 113 114 115
  - Install dependencies
    - on Ubuntu 20.04, run:
      ```
      sudo apt install -y libopenblas-dev nasm g++ gcc python3-pip cmake
      ```
    - on macOS, run:
      ```
      brew install nasm
      ```
S
Shenghang Tsai 已提交
116
  - In the root directory of OneFlow source code, run:
117

S
Shenghang Tsai 已提交
118 119 120
    ```
    mkdir build
    cd build
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
    ```

  - Config the project, inside `build` directory:
    - If you are in China

      run this to config for CUDA:
      ```
      cmake .. -C ../cmake/caches/cn/cuda.cmake
      ```

      run this to config for CPU-only:
      ```
      cmake .. -C ../cmake/caches/cn/cpu.cmake
      ```

    - If you are not in China

      run this to config for CUDA:
      ```
      cmake .. -C ../cmake/caches/international/cuda.cmake
      ```

      run this to config for CPU-only:
      ```
      cmake .. -C ../cmake/caches/international/cpu.cmake
      ```

  - Build the project, inside `build` directory, run:
    ```
S
Shenghang Tsai 已提交
150
    make -j$(nproc)
151 152
    ```

153
  - Add oneflow to your PYTHONPATH, inside `build` directory, run:
154 155

    ```
156
    source source.sh
157 158 159 160 161 162 163 164
    ```

    Please note that this change is not permanent.

  - Simple validation

    ```
    python3 -m oneflow --doctor
S
Shenghang Tsai 已提交
165 166
    ```
</details>
S
Shenghang Tsai 已提交
167

168
### Troubleshooting
H
Houjiang Chen 已提交
169

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

S
strint 已提交
172
### Advanced features
S
Shenghang Tsai 已提交
173 174
<details>
<summary>XRT</summary>
H
Houjiang Chen 已提交
175

S
Shenghang Tsai 已提交
176 177
- You can check this [doc](oneflow/xrt/README.md) to obtain more details about how to use XLA and TensorRT with OneFlow.
</details>
S
strint 已提交
178 179

## Getting Started
S
Shenghang Tsai 已提交
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203
<details>
<summary>3 minutes to run MNIST.</summary>

- Clone the demo code from OneFlow documentation
  ```
  git clone https://github.com/Oneflow-Inc/oneflow-documentation.git
  cd oneflow-documentation/cn/docs/code/quick_start/
  ```
- Run it in Python
  ```
  python mlp_mnist.py
  ```

- 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).
</details>
S
strint 已提交
204 205

## Documentation
S
Shenghang Tsai 已提交
206 207 208
- [API Reference](https://oneflow.readthedocs.io/en/master/)
- [Usage & Design Docs](http://docs.oneflow.org/)
- [System Design](https://github.com/Oneflow-Inc/oneflow-documentation/blob/master/en/docs/basics_topics/essentials_of_oneflow.md)
S
strint 已提交
209 210

## Model Zoo and Benchmark
S
Shenghang Tsai 已提交
211 212 213 214 215
- [OneFlow-Benchmark](https://github.com/Oneflow-Inc/OneFlow-Benchmark)
- [GPT](https://github.com/Oneflow-Inc/OneFlow-Benchmark/tree/master/LanguageModeling/GPT)
- [CNNs(ResNet-50, VGG-16, Inception-V3, AlexNet)](https://github.com/Oneflow-Inc/OneFlow-Benchmark/tree/master/Classification/cnns)
- [Wide&Deep](https://github.com/Oneflow-Inc/OneFlow-Benchmark/tree/master/ClickThroughRate/WideDeepLearning)
- [BERT](https://github.com/Oneflow-Inc/OneFlow-Benchmark/tree/master/LanguageModeling/BERT)
S
strint 已提交
216 217

## Communication
218 219 220 221 222 223 224 225 226 227 228 229 230
- [GitHub issues](https://github.com/Oneflow-Inc/oneflow/issues): any install, bug, feature issues.
- [www.oneflow.org](http://www.oneflow.org): brand related information.

- ### 中文
  - QQ 群: 331883
  - 微信号(加好友入交流群): OneFlowXZS
  - [知乎](https://www.zhihu.com/org/oneflow-17)

- ### International
  - [Discord](https://discord.gg/4kpjGA5bZY)
  - [Twitter](https://twitter.com/OneFlowNews)
  - [LinkedIn](https://www.linkedin.com/company/oneflow-inc)
  - [Medium](https://oneflow2020.medium.com)
S
strint 已提交
231 232 233 234 235 236

## 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)