README.md 7.4 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)

7 8 9 10 11 12
## Latest News
- Version 0.4.0 is out!
  - New Pytorch flavored APIs (`import oneflow.experimental as flow`)
  - New [models and examples](https://github.com/Oneflow-Inc/models)
  - [Full changelog](https://github.com/Oneflow-Inc/oneflow/releases/tag/v0.4.0)

S
strint 已提交
13 14 15
## Install OneFlow

  ### System Requirements
16

S
Shenghang Tsai 已提交
17
  - Python 3.6, 3.7, 3.8
S
Shenghang Tsai 已提交
18 19
  - CUDA Toolkit Linux x86_64 Driver

S
Shenghang Tsai 已提交
20 21
    - 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 已提交
22
    - Please upgrade your Nvidia driver to version 440.33 or above and install OneFlow for CUDA 10.2 if possible.
S
Shenghang Tsai 已提交
23

S
strint 已提交
24
  ### Install with Pip Package
25

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

S
Shenghang Tsai 已提交
28 29
    ```bash
    python3 -m pip install -f https://release.oneflow.info oneflow==0.4.0+cu102 --user
30
    ```
31

S
Shenghang Tsai 已提交
32
  - To install nightly release of OneFlow with CUDA support:
S
Shenghang Tsai 已提交
33
    ```bash
S
Shenghang Tsai 已提交
34 35 36 37
    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 已提交
38 39 40 41 42 43 44 45 46 47 48
    - 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 |
      |---|---|---|
49
      | cu112  | >= 450.80.02  | GTX 10xx, RTX 20xx, A100, RTX 30xx |
S
Shenghang Tsai 已提交
50 51 52 53 54 55
      | 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 |
56

S
Shenghang Tsai 已提交
57 58 59 60 61 62
  - 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 已提交
63
### Build from Source
S
Shenghang Tsai 已提交
64 65
<details>
<summary>Clone Source Code</summary>
66

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

S
Shenghang Tsai 已提交
69 70 71
  ```bash
  git clone https://github.com/Oneflow-Inc/oneflow --depth=1
  ```
S
Shenghang Tsai 已提交
72

S
Shenghang Tsai 已提交
73
- #### Option 2: Download from Aliyun
S
Shenghang Tsai 已提交
74

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

S
Shenghang Tsai 已提交
77 78 79 80 81
  ```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 已提交
82

S
Shenghang Tsai 已提交
83
<details>
84
<summary>Build OneFlow</summary>
H
Houjiang Chen 已提交
85

86 87 88 89
- #### 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 已提交
90
  - In the root directory of OneFlow source code, run:
91

S
Shenghang Tsai 已提交
92 93 94
    ```
    python3 docker/package/manylinux/build_wheel.py
    ```
95

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

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

S
Shenghang Tsai 已提交
100 101 102
    ```
    --use_tuna --use_system_proxy --use_aliyun_mirror
    ```
103

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

S
Shenghang Tsai 已提交
106 107 108
    ```
    --cuda_version=10.1 --python_version=3.6,3.7
    ```
109

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

112
- #### Option 3: Build on bare metal
113 114 115
  - Install dependencies
    - on Ubuntu 20.04, run:
      ```
S
Shenghang Tsai 已提交
116
      sudo apt install -y libopenblas-dev nasm g++ gcc python3-pip cmake autoconf libtool
117 118 119 120 121
      ```
    - on macOS, run:
      ```
      brew install nasm
      ```
S
Shenghang Tsai 已提交
122
  - In the root directory of OneFlow source code, run:
123

S
Shenghang Tsai 已提交
124 125 126
    ```
    mkdir build
    cd build
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
    ```

  - 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 已提交
156
    make -j$(nproc)
157 158
    ```

159
  - Add oneflow to your PYTHONPATH, inside `build` directory, run:
160 161

    ```
162
    source source.sh
163 164 165 166 167 168 169 170
    ```

    Please note that this change is not permanent.

  - Simple validation

    ```
    python3 -m oneflow --doctor
S
Shenghang Tsai 已提交
171 172
    ```
</details>
S
Shenghang Tsai 已提交
173

174
### Troubleshooting
H
Houjiang Chen 已提交
175

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

S
strint 已提交
178
### Advanced features
S
Shenghang Tsai 已提交
179 180
<details>
<summary>XRT</summary>
H
Houjiang Chen 已提交
181

S
Shenghang Tsai 已提交
182 183
- 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 已提交
184 185

## Getting Started
S
Shenghang Tsai 已提交
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
<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 已提交
210 211

## Documentation
S
Shenghang Tsai 已提交
212 213 214
- [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 已提交
215 216

## Model Zoo and Benchmark
S
Shenghang Tsai 已提交
217 218 219 220 221
- [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 已提交
222 223

## Communication
224 225 226 227 228 229 230 231 232 233 234 235 236
- [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 已提交
237 238 239 240 241 242

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