transformer_engine 安装

1 训练模型,需要使用transformer_engine

系统ubuntu 22.04,

#uname -a

Linux ubuntu-workstation 6.8.0-54-generic #56~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Sat Feb  8 11:41:24 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

conda 虚拟环境内:

python=3.11

transformers==4.57

pytorch=2.7.0

cuda=12.6,cudnn =8.9.7

cmake version 3.22.1

gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0

1 按照资料1 的pip 安装方式

pip3 install --no-build-isolation transformer_engine[pytorch]

安装完毕,开始测试,命令行输入python,然后import transformer_engine,也可以按照参考资料4给出的例子进行测试

刚开始报第一个错

  File "/***/TransformerEngine/transformer_engine/__init__.py", line 11, in <module>
    import transformer_engine.common
  File "/***/TransformerEngine/transformer_engine/common/__init__.py", line 392, in <module>
    sanity_checks_for_pypi_installation()
  File "/***/TransformerEngine/transformer_engine/common/__init__.py", line 206, in sanity_checks_for_pypi_installation
    assert te_installed_via_pypi, "Could not find `transformer-engine` PyPI package."
           ^^^^^^^^^^^^^^^^^^^^^
AssertionError: Could not find `transformer-engine` PyPI package.

最后发现,目前的目录是从github 上克隆的TransformerEngine,里面有个transformer_engine 文件夹,这个文件夹里也有__init__.py,所以导入的不是已安装好的transformer 包,而是这个文件夹的transfromer_engine,所以报错(当transformer_engine 和torch 版本不匹配时也会报这个类型错误),更换目录后,导入成功
继续测试

import transformer_engine.pytorch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ubuntu/anaconda3/envs/finetuning/lib/python3.11/site-packages/transformer_engine/pytorch/__init__.py", line 18, in <module>
    load_framework_extension("torch")
  File "/home/ubuntu/anaconda3/envs/finetuning/lib/python3.11/site-packages/transformer_engine/common/__init__.py", line 190, in load_framework_extension
    solib = importlib.util.module_from_spec(spec)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: /home/ubuntu/anaconda3/envs/finetuning/lib/python3.11/site-packages/transformer_engine/wheel_lib/transformer_engine_torch.cpython-311-x86_64-linux-gnu.so: undefined symbol: _ZN3c104cuda9SetDeviceEab
此时,删掉整个conda 虚拟环境,然后重新安装transformer_engine,第一个安装transformer_egnine,由于虚拟环境是干净的,它会安装一些附属的包,也包含transformer_engine_torch-2.10.0,安装完成后,再导入就不会报错。不过也安装了torch,这个torch 版本有可能不是想要的,可以重装

上述默认安装最新版本的torch_engine(目前是2.10.0),如果安装之前的版本,则使用

pip3 install --no-build-isolation transformer_engine[pytorch]==2.8.0,则是安装2.8.0版本的transformer_engine

2 从github 安装

pip install git+https://github.com/NVIDIA/TransformerEngine.git@stable

因为有3个子项目也要克隆下来,很容易出现超时,

2 源码安装

# Clone repository, checkout stable branch, clone submodules
git clone --branch stable --recursive https://github.com/NVIDIA/TransformerEngine.git

cd TransformerEngine
export NVTE_FRAMEWORK=pytorch         # Optionally set framework
pip3 install --no-build-isolation .   # Build and install

克隆源码,相关的包也要克隆下来,如不能自动克隆,可以手工克隆或下载对应的目录 ./Transformer_Engine/3rdpary

遇到了如下错误

(1)error Version mismatch in cuDNN GRAPH!!!

这是因为cudnn 版本过低导致的,参考资料的安装说明给出以下几个前提条件:

  1. Linux x86_64

  2. CUDA 12.1+ (12.8+ for Blackwell support)

  3. NVIDIA Driver supporting CUDA 12.1 or later.

  4. cuDNN 9.3 or later.

第4条,要求cudnn 版本不低于9.3,下载最新的cudnn 版本并更新

https://developer.nvidia.com/cudnn-downloads,按照说明安装了9.17.0 的版本

(2)缺少nccl 2

#include <nccl.h> no such name or directory

按照参考资料:https://zhuanlan.zhihu.com/p/25513394133安装nccl 2,安装后需要从github 下载nccl-tests,然后测试,只有1张显卡,g 为1

 ./build/all_reduce_perf -b 8 -e 128M -f 2 -g 1
# nccl-tests version 2.17.6 nccl-headers=22403 nccl-library=22403
# Collective test starting: all_reduce_perf
# nThread 1 nGpus 1 minBytes 8 maxBytes 134217728 step: 2(factor) warmup iters: 1 iters: 20 agg iters: 1 validation: 1 graph: 0
#
# Using devices
#  Rank  0 Group  0 Pid 424079 on ubuntu-workstation device  0 [0000:04:00] NVIDIA GeForce RTX 4090
#
#                                                              out-of-place                       in-place          
#       size         count      type   redop    root     time   algbw   busbw  #wrong     time   algbw   busbw  #wrong 
#        (B)    (elements)                               (us)  (GB/s)  (GB/s)             (us)  (GB/s)  (GB/s)         
           8             2     float     sum      -1     1.97    0.00    0.00       0     0.06    0.13    0.00       0
          16             4     float     sum      -1     2.52    0.01    0.00       0     0.06    0.26    0.00       0
          32             8     float     sum      -1     2.21    0.01    0.00       0     0.06    0.52    0.00       0
          64            16     float     sum      -1     1.84    0.03    0.00       0     0.06    1.03    0.00       0
         128            32     float     sum      -1     1.82    0.07    0.00       0     0.06    2.12    0.00       0
         256            64     float     sum      -1    10.49    0.02    0.00       0     0.06    4.25    0.00       0
         512           128     float     sum      -1     2.40    0.21    0.00       0     0.06    8.76    0.00       0
        1024           256     float     sum      -1     2.41    0.43    0.00       0     0.06   17.39    0.00       0
        2048           512     float     sum      -1     2.46    0.83    0.00       0     0.06   34.83    0.00       0
        4096          1024     float     sum      -1     2.42    1.69    0.00       0     0.06   67.87    0.00       0
        8192          2048     float     sum      -1     2.01    4.07    0.00       0     0.06  137.33    0.00       0
       16384          4096     float     sum      -1     2.05    8.00    0.00       0     0.06  284.69    0.00       0
       32768          8192     float     sum      -1     2.50   13.12    0.00       0     0.06  539.84    0.00       0
       65536         16384     float     sum      -1     1.93   33.97    0.00   

再次安装,不再报这个错误,代表已安装

(3)第3个错误

 RuntimeError: Error when running CMake: Command '['/usr/bin/cmake', '-S', '/***/TransformerEngine/transformer_engine/common', '-B', '/***/TransformerEngine/build/cmake', '-DPython_EXECUTABLE=/home/ubuntu/anaconda3/envs/finetuning/bin/python3.11', '-DPython_INCLUDE_DIR=/home/ubuntu/anaconda3/envs/finetuning/include/python3.11', '-DPython_SITEARCH=/home/ubuntu/anaconda3/envs/finetuning/lib/python3.11/site-packages', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_INSTALL_PREFIX=/***/TransformerEngine/build/lib.linux-x86_64-cpython-311', '-DCMAKE_CUDA_ARCHITECTURES=70;80;89;90', '-Dpybind11_DIR=/home/ubuntu/anaconda3/envs/finetuning/lib/python3.11/site-packages/pybind11/share/cmake/pybind11', '-GNinja']' returned non-zero exit status 1.
      [end of output]
按照参考资料2的说明

pip list |grep nvidia

nvidia-cudnn-cu12                    9.10.2.21
其次导入环境变量

  1. export CUDNN_PATH=/path/to/cudnn
  2. export CPLUS_INCLUDE_PATH=/path/to/cudnn/include

并查看环境变量

echo $CUDNN_PATH
/home/ubuntu/anaconda3/envs/finetuning/lib/python3.11/site-packages/nvidia/cudnn

echo $CPLUS_INCLUDE_PATH
/home/ubuntu/anaconda3/envs/finetuning/lib/python3.11/site-packages/nvidia/cudnn/include
 再次执行安装,问题依旧,还是按照第1种方式安装吧

参考资料:1

1 https://docs.nvidia.com/deeplearning/transformer-engine/user-guide/installation.html

https://blog.youkuaiyun.com/kurumigao/article/details/152820808

https://blog.youkuaiyun.com/qq_41185868/article/details/130983787

4https://pypi.org/project/transformer-engine/

https://blog.youkuaiyun.com/weixin_74277223/article/details/151863470

<think>嗯,用户遇到了ModuleNotFoundError: No module named 'transformer_engine'的错误。我需要帮他解决这个问题。首先,这个错误通常是因为没有安装对应的Python库。用户之前可能参考过解决类似transformers库缺失的问题,比如安装transformers的方法,但这次是transformer_engine,所以需要具体针对这个库来处理。 首先,我应该检查这个库是否存在。transformer_engine是由NVIDIA开发的,用于加速Transformer模型的训练和推理,特别是在GPU上。所以用户可能在用NVIDIA的硬件或者相关框架,比如PyTorch或TensorFlow时遇到这个问题。 接下来,我需要考虑安装方法。通常,直接用pip安装应该可行,但可能需要注意版本兼容性。比如,是否依赖特定版本的CUDA或者PyTorch。用户可能需要安装正确版本的库,或者安装额外的依赖,比如flash-attn。 另外,用户的环境可能存在问题,比如虚拟环境未激活,或者安装到了错误的Python环境。这时候需要提醒用户检查当前的Python环境,确保他们是在正确的环境中安装。 还有可能,库的名称是否正确。比如,用户可能拼写错误,或者库在PyPI上的名称不同。比如,transformer-engine的正确名称应该是transformer_engine,所以需要确认用户是否正确拼写。 此外,可能需要安装依赖项,如NVIDIA的CUDA工具包,或者相关的深度学习框架。比如,transformer_engine可能需要PyTorch或TensorFlow已经安装,并且版本匹配。 如果用户已经安装了库但仍然报错,可能需要检查安装路径,或者是否有权限问题。比如,在Linux系统中,可能需要使用sudo,或者在用户目录下安装。 最后,可能需要从源码安装,如果官方推荐这种方式,或者预编译的包不兼容用户的系统。比如,GitHub仓库可能有安装指南,需要用户克隆并安装。 总结一下,解决步骤应该是:1. 确认库名称和安装命令;2. 使用pip安装;3. 检查依赖和环境;4. 安装依赖库如flash-attn;5. 从源码安装;6. 验证安装。同时,提醒用户注意CUDA版本和Python环境的问题。</think>要解决Python中$ModuleNotFoundError: \text{No module named 'transformer_engine'}$错误,需按以下步骤操作: --- ### 1. **确认库名称与安装命令** `transformer_engine`是由NVIDIA开发的**高性能Transformer模型加速库**,需通过以下命令安装: ```bash pip install transformer-engine ``` **注意**:安装前需确保已安装兼容的CUDA工具包(推荐CUDA 12.x)和深度学习框架(如PyTorch ≥2.1.2或TensorFlow ≥2.12)[^4]。 --- ### 2. **检查CUDA与框架版本** - **CUDA版本验证**: ```bash nvcc --version # 查看CUDA版本 ``` 若版本低于12.x,需升级CUDA或安装兼容的`transformer_engine`旧版本(如`0.10`): ```bash pip install transformer-engine==0.10 ``` - **PyTorch/TensorFlow安装**: ```bash pip install torch>=2.1.2 # PyTorch安装 pip install tensorflow>=2.12 # TensorFlow安装 ``` --- ### 3. **安装依赖项`flash-attn`** `transformer_engine`依赖`flash-attn`实现注意力加速,需单独安装: ```bash pip install flash-attn --no-build-isolation ``` --- ### 4. **从源码编译安装(可选)** 若预编译包不兼容,可通过GitHub源码安装: ```bash git clone https://github.com/NVIDIA/TransformerEngine.git cd TransformerEngine && pip install . ``` --- ### 5. **验证安装** 在Python中执行导入测试: ```python import transformer_engine # 无报错则安装成功 ``` --- ### 常见问题排查 | 问题类型 | 解决方案 | |-------------------|----------------------------------| | 虚拟环境未激活 | 激活环境:`conda activate <env>` | | 多Python版本冲突 | 使用绝对路径:`/usr/bin/python3 -m pip install ...` | | 权限不足 | 添加`--user`或使用`sudo` | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值