sionna是Nvidia推出的专用于通信领域的SDK,简单介绍windows中如何在虚拟环境中安装sionna

安装步骤-CPU

​ 以下是CPU版的sionna安装步骤

​ sionna基于tensorflow,在虚拟环境中使用pip安装sionna时,会自动安装与其适配的最新版本tensorflow,因此不用事先安装tf

pip install sionna

​ 安装完成后import sionna会报错,无法找到LLVM-C.dll,这是因为sionna中部分内容需要LLVM编译框架,缺少该动态链接库,报错信息如下

AttributeError: jit_init_thread_state(): the LLVM backend is inactive because the LLVM shared library ("LLVM-C.dll") could not be found! Set the DRJIT_LIBLLVM_PATH environment variable to specify its path.

​ LLVM是什么可以自行了解,简单说它是一个编译框架,以此为基础衍生出很多编译工具

解决方案:Windows: run one of the official installers (many files can be downloaded from this page, look for ones with the pattern LLVM-<version>-win64.exe). It is important that you let the installer adjust the %PATH% variable so that the file LLVM-C.dll can be found by Dr.Jit.

​ 这是LLVM手册提供的安装LLVM教程,我们进入网页,寻找满足版本要求(大于等于8)的LLVM-<version>-win64.exe文件,下载后以管理员身份运行,在安装过程中勾选添加至环境变量中

​ 安装完成后import sionna仍然会报同样的错,这是因为虚拟环境并不会去系统环境变量中查找需要的文件,因此找到LLVM的安装路径,找到LLVM-C.dll文件,复制粘贴至虚拟环境的目录下即可

安装步骤-GPU

​ 以下是GPU版的sionna安装步骤。上述pip install sionna默认安装tensorflow 2.13-CPUsionna支持的tensorflow2.10-2.15

​ 截止2024年5月17日通过conda安装的tf-GPU版本最高为2.10,更高版本可从源码编译安装。

conda create -n sionna python=3.9
conda activate sionna
pip install tensorflow-gpu==2.10.0 # 安装tf-2.10-GPU

​ 安装完后进入python编程环境,import tensorflow as tf报错缺少cudaexit()退出python

conda install cuda  # 自动寻找符合tf-2.10-GPU的cudatoolkit
conda install cudnn

​ 此时再进入python测试tf.test.is_gpu_available()显示True,则tf-GPU安装成功

pip install sionna

​ 安装过程中,安装脚本会自动下载tf-2.13及其依赖库,安装完成后报错,红色报错提示四个依赖库的版本冲突,分别为keras,protobuf,tensorboardtensorflow-estimator

​ 依次降低版本,优先满足tensorflow-gpu-2.10

pip install keras==2.10.0  # 安装完成后红色报错数量不会减少,但keras版本变成满足tensorflow-gpu而不满足tensorflow-intel
pip install tensorboard==2.10 # 红色报错同上
pip install tensorflow-estimator==2.10.0
pip install tensorflow-intel==2.10.1

​ 上述四个版本降完后,仍然报tensorflow 2.13.0需要tensorflow-intel 2.13.0,这是因为sionna默认安装tensorflow2.13,因此降低版本

pip install tensorflow==2.10.1

​ 此时不再报错,进行测试

python
>> import sionna
>> sionna.__version__
>> import tensorflow as tf
>> tf.test.is_gpu_available()
>> True

​ 如果返回False,则

pip uninstall tensorflow-gpu==2.10.0
pip install tensorflow-gpu==2.10.0

​ 如果在使用sionna过程中报错,

from google.protobuf.internal import builder as _builder
ImportError: cannot import name 'builder' from 'google.protobuf.internal' (D:\......\site-packages\google\protobuf\internal\__init__.py)

​ 这是因为protobuf的版本问题,由于tensorflow-gpu需要的是protobuf==3.19.6,但是 protobuf v3.20.0 以来,python 类得到了简化,生成的 python 代码现在引用一个build模块,如果不是最新版本的protobuf是找不到该模块的。

​ 因此可以在安装完sionna后(此时protobuf是最新版),在anaconda环境下找到该文件将它复制下来,在安装完tensorflow-gpu2.10后(protobuf变成了3.19.6版本),在粘贴回去即可。就我而言使用的是anacondabuild.py文件的位置在D:Programs\anaconda3\envs\envname\Lib\site-packages\google\protobuf\internal