README.md 2.46 KB
Newer Older
yuguo's avatar
yuguo committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 使用 docker 生成 OneFlow wheel 包

### 创建 docker 容器

在 OneFlow 源码根目录下运行:
```
docker build -f docker/package/manylinux/Dockerfile --build-arg from=nvidia/cuda:10.2-cudnn7-devel-centos7 -t oneflow:manylinux2014-cuda10.2 .
```

### 打包 manylinux python wheel

这里有 manylinux2014(centos7) + cuda10.2 的 Dockerfile,里面安装了编译 oneflow 所需的库,假设你已经用 Dockerfile build 了一个 docker 镜像,叫做 oneflow:manylinux2014-cuda10.2,那么只要在 oneflow 源码目录运行

```bash
docker run --rm -it -v `pwd`:/oneflow-src -w /oneflow-src oneflow:manylinux2014-cuda10.2
```


If you prefer operate inside docker:

```bash
docker run --rm -it -v `pwd`:/oneflow-src -w /oneflow-src oneflow:manylinux2014-cuda10.2 bash
```

```bash
/oneflow-src/docker/package/manylinux/build_wheel.sh --python3.6 --wheel-dir /oneflow-src/wheel-test
```

就会在 docker 镜像里执行 build_wheel.sh 来编译生成 python 3.5 到 python 3.8 的 oneflow manylinux2014 wheel。生成的包在 oneflow 源码目录下的 wheelhouse/ 文件夹内

#### 注意事项

1. 运行 `docker run` 时可能需要添加 `-e http_proxy=$http_proxy -e https_proxy=$https_proxy` 参数,以在容器内使用宿主机的代理,避免编译第三方库时因为网络问题而出错

2. 只要运行了 `cmake -DTHIRD_PARTY=ON ..`,oneflow 本体都会从头编译,所以如果第三方库已经由 docker 容器编译过,这次只想增量编译 oneflow 本体,可以用命令

    ```bash
    docker run --rm -it -v `pwd`:/oneflow-src oneflow:manylinux2014-cuda10.2 /oneflow-src/docker/package/manylinux/build_wheel.sh --skip-third-party
    ```

   这会给 build_wheel.sh 传一个 `--skip-third-party` 参数,跳过第三方库的编译

3. 只想在生成某些 python 版本的包,例如 python3.5,可以用命令

    ```bash
    docker run --rm -it -v `pwd`:/oneflow-src oneflow:manylinux2014-cuda10.2 /oneflow-src/docker/package/manylinux/build_wheel.sh --python3.5
    ```

    支持的参数是 `--python3.5`、`--python3.6`、`--python3.7`、`--python3.8`,需要生成多个版本可以同时传入多个参数。不传入版本参数则会生成所有的 python 版本的包

3. 如果想自定义 oneflow 编译时的 cmake 参数,可以直接把 cmake 参数写出来,如:

    ```bash
    docker run --rm -it -v `pwd`:/oneflow-src oneflow:manylinux2014-cuda10.2 /oneflow-src/docker/package/manylinux/build_wheel.sh -DWITH_XLA=ON
    ```