build.md 2.46 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 编译和安装

LMDeploy 提供了预编译包,可以很方便的通过 `pip install lmdeploy` 安装和使用。

如果有源码编译的需求,请先下载 lmdeploy 源码:

```shell
git clone --depth=1 https://github.com/InternLM/lmdeploy
```

然后,参考以下章节编译和安装。

## 在 docker 内编译安装(强烈推荐)

LMDeploy 提供了编译镜像 `openmmlab/lmdeploy-builder:cuda11.8`。使用之前,请确保 docker 已安装。

在 lmdeploy 源码的根目录下,运行以下命令:

```shell
zhouxiang's avatar
zhouxiang committed
20
21
# lmdeploy 源码根目录
cd lmdeploy
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
bash builder/manywheel/build_all_wheel.sh
```

即可在 `builder/manywheel/cuda11.8_dist` 文件夹下,得到 lmdeploy 在 py3.8 - py3.11 下所有的 wheel 文件。比如,

```text
builder/manywheel/cuda11.8_dist/
├── lmdeploy-0.0.12-cp310-cp310-manylinux2014_x86_64.whl
├── lmdeploy-0.0.12-cp311-cp311-manylinux2014_x86_64.whl
├── lmdeploy-0.0.12-cp38-cp38-manylinux2014_x86_64.whl
└── lmdeploy-0.0.12-cp39-cp39-manylinux2014_x86_64.whl
```

如果需要固定 python 版本的 wheel 文件,比如 py3.8,可以执行:

```shell
bash builder/manywheel/build_wheel.sh py38 manylinux2014_x86_64 cuda11.8 cuda11.8_dist
```

wheel 文件存放在目录 `builder/manywheel/cuda11.8_dist` 下。

在宿主机上,通过 `pip install` 安装和宿主机python版本一致的 wheel 文件,即完成 lmdeploy 整个编译安装过程。

## 在物理机上编译安装(可选)

首先,请确保物理机环境的 gcc 版本不低于 9,可以通过`gcc --version`确认。

然后,按如下步骤,配置编译环境:
50
51
52
53

- 安装编译和运行依赖包:
  ```shell
  pip install -r requirements.txt
54
  apt-get install rapidjson-dev
55
  ```
56
57
58
59
60
- 安装 [nccl](https://docs.nvidia.com/deeplearning/nccl/install-guide/index.html),设置环境变量
  ```shell
  export NCCL_ROOT_DIR=/path/to/nccl/build
  export NCCL_LIBRARIES=/path/to/nccl/build/lib
  ```
61
- 源码编译安装 openmpi:
62
63
  ```shell
  wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.5.tar.gz
64
65
66
67
  tar xf openmpi-4.1.5.tar.gz
  cd openmpi-4.1.5
  ./configure
  make -j$(nproc) && make install
68
  ```
69
70
- lmdeploy 编译安装:
  ```shell
zhouxiang's avatar
zhouxiang committed
71
72
73
74
  # 安装更快的 Ninja
  apt install ninja-build
  # lmdeploy 源码的根目录
  cd lmdeploy
75
76
  mkdir build && cd build
  sh ../generate.sh
77
78
  ninja && ninja install
  ninja -j$(nproc) && ninja install
79
  ```
80
81
82
83
84
- 安装 lmdeploy python package:
  ```shell
  cd ..
  pip install -e .
  ```