安装tensorrt_llm踩坑总结

问题描述
最近在使用tensorrt_llm 框架给模型加速,没想到配置环境的时候就遇到了一堆坑,主要表现为:①安装mpi4py包的时候各种报错,②需要的配置文件找不到,③各种包的版本不适配,④导入tensorrt_llm 的时候无任何反应等问题,解决方法如下:

问题一:
安装mpi4py这个包是最大的坑,后面的几个坑大多都是没有处理好这个坑导致的,这个解决了后面的问题可能就不会碰到了。
安装mpi4py之前要先安装openmpi,步骤如下:

# 下载openmpi
wget https://www.open-mpi.org/software/ompi/v5.0/downloads/openmpi-5.0.2.tar.gz  
tar xvzf openmpi-5.0.2.tar.gz
cd openmpi-5.0.2

# 编译和安装
./configure
sudo make all install  # 我当时在这里遇到了问题,起初安装的是1.10的版本,导致这一步报错,也就是最后会有"error"这个关键字输出,如果这一步遇到报错可以换个版本安装

# 添加环境变量
vim ~/.bashrc
#mpi4py
export LD_LIBRARY_PATH+=:/usr/local/lib
source ~/.bashrc

# 测试是否安装成功,如果没有报错就表示安装成功了
cd openmpi-1.10.2/examples
make
mpirun -np 4 hello_c

接下来就是安装mpi4py,切记要用conda安装,不要用pip,安装命令:conda install mpi4py。
这一步解决之后就可以安装tensorr_llm了,安装命令:

pip3 install --no-cache-dir tensorrt_llm==0.8.0.dev2024012301 --extra-index-url https://pypi.nvidia.com

如果下载速度太慢了可以使用镜像安装,命令:

pip3 install --no-cache-dir tensorrt_llm==0.8.0.dev2024012301 --extra-index-url https://pypi.nvidia.com -i https://pypi.tuna.tsinghua.edu.cn/simple

问题二:

/root/miniconda3/envs/finetune/compiler_compat/ld: warning: libopen-rte.so.40, needed by /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so, not found (try using -rpath or -rpath-link)
/root/miniconda3/envs/finetune/compiler_compat/ld: warning: libopen-pal.so.40, needed by /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so, not found (try using -rpath or -rpath-link)
/root/miniconda3/envs/finetune/compiler_compat/ld: warning: libm.so.6, needed by /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so, not found (try using -rpath or -rpath-link)
/root/miniconda3/envs/finetune/compiler_compat/ld: warning: libhwloc.so.15, needed by /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so, not found (try using -rpath or -rpath-link)

解决办法:
这些警告信息表明在编译或链接过程中找不到某些共享库 (libopen-rte.so.40, libopen-pal.so.40, libm.so.6, libhwloc.so.15)。这些库是 OpenMPI(用于并行计算的消息传递接口)的依赖库。其实系统中是有这些文件的,只不过没有在指定的路径下,所以只需要找到这些文件,然后重新指定一下这些文件的路径。

# 使用find来找这些文件
sudo find / -name libopen-rte.so.40
sudo find / -name libopen-pal.so.40
sudo find / -name libm.so.6
sudo find / -name libhwloc.so.15

然后我的这些文件都在" /usr/lib/x86_64-linux-gnu/ "下面,重新定义文件位置的环境变量:

echo 'export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

问题解决~

问题三:
因为这个框架一直在迭代,还不是很稳定,经过一番踩坑之后,建议安装tensorrt_llm的0.8.0版本,这个版本比较稳定。对应版本如下:

  • python==3.10.8
  • cuda==12.1
  • torch==2.1.2.

问题四:
好不容易把tensorrt_llm 安装好了,幻想着终于可以跑代码了,结果一个脚本运行了半个小时还没有任何的输出,搞得一脸懵逼。通过debug定位到问题出在import tensorrt_llm,然后通过‘python3 -v -c “import tensorrt_llm”’查看详细的导入过程,最终定位到导入过程卡在了" # extension module ‘mpi4py.MPI’ loaded from ‘/root/miniconda3/lib/python3.10/site-packages/mpi4py/MPI.cpython-310-x86_64-linux-gnu.so’ "这一步,很明显是mpi4py这个包出问题了。

找了一圈解决方案,最终看到有人说要使用conda来安装mpi4py,给出的理由是:“它与通过 pip 安装不同,不同之处在于 conda 包提供了自己的 MPI 环境,而 pip 包使用系统上的环境。”。试了一下,果然OK了,tensorrt_llm 包成功导入,问题解决~


时隔多日再次更新,距上次更新之后又试了几次,这个项目好像是不能在colab的T4上面跑(报错:“ Assertion failed: Unsupported architecture”),最终还是在aws的A10机器上跑通的,这里给出最终的环境配置:

accelerate               0.32.1
addict                   2.4.0
aenum                    3.1.15
aiofiles                 23.2.1
aiohttp                  3.9.5
aiosignal                1.3.1
aliyun-python-sdk-core   2.15.2
aliyun-python-sdk-kms    2.16.4
annotated-types          0.7.0
anyio                    4.5.0
async-timeout            4.0.3
attrs                    23.2.0
audioread                3.0.1
blinker                  1.8.2
build                    1.2.1
certifi                  2024.7.4
cffi                     1.16.0
charset-normalizer       3.3.2
click                    8.1.7
click-option-group       0.5.6
cloudpickle              3.0.0
colored                  2.2.4
coloredlogs              15.0.1
contourpy                1.3.0
crcmod                   1.7
cryptography             43.0.0
cuda-python              12.5.0
cycler                   0.12.1
datasets                 2.20.0
decorator                5.1.1
diffusers                0.29.2
dill                     0.3.8
einops                   0.8.0
evaluate                 0.4.2
exceptiongroup           1.2.2
fastapi                  0.115.0
ffmpeg-python            0.2.0
ffmpy                    0.4.0
filelock                 3.15.4
flash-attn               2.6.2
Flask                    3.0.3
fonttools                4.53.1
frozenlist               1.4.1
fsspec                   2024.5.0
future                   1.0.0
gast                     0.6.0
gradio                   4.44.0
gradio_client            1.3.0
h11                      0.14.0
h5py                     3.10.0
httpcore                 1.0.5
httpx                    0.27.2
huggingface-hub          0.23.5
humanfriendly            10.0
idna                     3.7
importlib_metadata       8.2.0
importlib_resources      6.4.5
itsdangerous             2.2.0
janus                    1.0.0
Jinja2                   3.1.4
jmespath                 0.10.0
joblib                   1.4.2
kaldialign               0.9.1
kiwisolver               1.4.7
lark                     1.1.9
lazy_loader              0.4
librosa                  0.10.2.post1
llvmlite                 0.43.0
markdown-it-py           3.0.0
MarkupSafe               2.1.5
matplotlib               3.9.2
mdurl                    0.1.2
more-itertools           10.3.0
mpi4py                   3.1.6
mpmath                   1.3.0
msgpack                  1.0.8
multidict                6.0.5
multiprocess             0.70.16
networkx                 3.3
ninja                    1.11.1.1
numba                    0.60.0
numpy                    1.26.4
nvidia-cublas-cu12       12.1.3.1
nvidia-cuda-cupti-cu12   12.1.105
nvidia-cuda-nvrtc-cu12   12.1.105
nvidia-cuda-runtime-cu12 12.1.105
nvidia-cudnn-cu12        9.1.0.70
nvidia-cufft-cu12        11.0.2.54
nvidia-curand-cu12       10.3.2.106
nvidia-cusolver-cu12     11.4.5.107
nvidia-cusparse-cu12     12.1.0.106
nvidia-modelopt          0.15.1
nvidia-nccl-cu12         2.20.5
nvidia-nvjitlink-cu12    12.5.82
nvidia-nvtx-cu12         12.1.105
onnx                     1.16.1
openai-whisper           20231117
optimum                  1.21.2
orjson                   3.10.7
oss2                     2.18.6
packaging                24.1
pandas                   2.2.2
pillow                   10.3.0
pip                      24.2
platformdirs             4.2.2
polygraphy               0.49.9
pooch                    1.8.2
protobuf                 5.28.0rc1
psutil                   6.0.0
PuLP                     2.9.0
pyarrow                  17.0.0
pyarrow-hotfix           0.6
pycparser                2.22
pycryptodome             3.20.0
pydantic                 2.8.2
pydantic_core            2.20.1
pydub                    0.25.1
Pygments                 2.18.0
pynvml                   11.5.3
pyparsing                3.1.4
pyproject_hooks          1.1.0
python-dateutil          2.9.0.post0
python-multipart         0.0.9
pytz                     2024.1
PyYAML                   6.0.1
regex                    2024.5.15
requests                 2.32.3
rich                     13.7.1
ruff                     0.6.5
safetensors              0.4.3
scikit-learn             1.5.1
scipy                    1.14.0
semantic-version         2.10.0
sentencepiece            0.2.0
setuptools               70.3.0
shellingham              1.5.4
simplejson               3.19.3
six                      1.16.0
sniffio                  1.3.1
sortedcontainers         2.4.0
soundfile                0.12.1
soxr                     0.3.7
starlette                0.38.5
StrEnum                  0.4.15
sympy                    1.13.0
tensorrt                 10.3.0
tensorrt-cu12            10.3.0
tensorrt-cu12-bindings   10.3.0
tensorrt-cu12-libs       10.3.0
tensorrt-llm             0.13.0.dev2024082000
threadpoolctl            3.5.0
tiktoken                 0.7.0
tokenizers               0.19.1
tomli                    2.0.1
tomlkit                  0.12.0
torch                    2.4.0
torchaudio               2.4.0
tqdm                     4.66.4
transformers             4.42.4
triton                   3.0.0
typer                    0.12.5
typing_extensions        4.12.2
tzdata                   2024.1
urllib3                  2.2.2
uvicorn                  0.30.6
websockets               12.0
Werkzeug                 3.0.3
wheel                    0.43.0
xxhash                   3.4.1
yapf                     0.40.2
yarl                     1.9.4
zhconv                   1.4.3
zipp                     3.19.2

需要特别注意的是torch,mpi4py,tensorrt-llm的版本。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值