sionna是NVIDIA开发的一款用于链路级仿真的GPU加速开源库,基于Tensorflow架构能够对复杂的通信系统进行快速的原型设计,验证信号处理算法在端到端系统中的性能,是世界上第一个能够在物理层使用神经网络的框架,并且不需要为数据生成、培训和性能评估使用单独的工具链,结合了R&S用于信号生成和分析的高端测试解决方案在2023年2月的世界移动通信大会(MWC)巴塞罗那世界移动通信(MWC)大会上,展示了业界首个神经接收机的硬件在环演示。
为了使用sionna,需要基于tensorflow-gpu 2.10搭建环境,由于tensorflow-gpu 2.10是最后一个可以直接下载的支持GPU的版本,再往后需要使用WSL2进行下载,因此为简单起见,直接使用2.10版本。
首先在anaconda中进行tensorflow-gpu 2.10的安装(我使用的python版本是3.8)
(建议先装sionna,再装tensorflow-gpu2.10不然在后续的降版本中操作中,可能破坏了tensorflow-gpu2.10的某些参数,导致无法调用)
conda install cudnn==8.2.1
pip install tensorflow-gpu==2.10.0
安装完后,使用conda list查看,如下图
接着安装sionna
pip install sionna
安装完后,会显示如下的结果
可以看见,sionna和tensorflow-gpu 2.10的依赖库发生了冲突,可以选择升级tensorflow-gpu的版本到2.13,但由于这个下载起来太麻烦了,我们选择直接降版本,根据提示,总共有四个库版本起冲突了,keras,protobuf,tensorboard和tensorflow-estimator。
pip install keras==2.10.0
得到下面的结果
继续降版本
pip install tensorboard==2.10
可以看见,这时出现一个tensorflow-intel的库和tensorflow-gpu 2.10起冲突了,先不管,先保证tensorflow-gpu2.10
pip install tensorflow-estimator==2.10.0
现在就只有tensorflow-intel 有问题,直接把它版本降了(O(∩_∩)O哈哈~)
pip install tensorflow-intel==2.10.1
降了之后发现它又出问题了,这是因为pip 安装的sionna是默认匹配tensorflow2.13的,所需要通通降版本
pip install tensorflow==2.10.1
好了,这下库冲突问题解决了,我们用python测试一下,在anaconda prompt 中输入 python
import sionna
print(sionna.__version__)
然后测试tensorflow-gpu2.10
import tensorflow as tf
print(tf.test.is_gpu_available())
一开始发现是false吓了一跳,后面想着可能是因为在安装sionna和降版本操作后,可能改变了tensorflow-gpu2.10的某些参数,导致无法调用,所以直接删了重装
pip uninstall tensorflow-gpu==2.10.0
pip install tensorflow-gpu==2.10.0
再测试一下,发现好了,sionna的调用也没问题。
如果在测试调用中出现,这样的protobuf的builder调用错误问题:
from google.protobuf.internal import builder as _builder
ImportError: cannot import name 'builder' from 'google.protobuf.internal' (C:\Users\bachir\PycharmProjects\pythonProject\venv\lib\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版本),在粘贴回去即可。就我而言使用的是anacond,build.py文件的位置在
C:\Users\ {userX} \anaconda3\envs\ {envname} \Lib\site-packages\google\protobuf\internal
之后测试就可以顺利进行了