强化学习分布式经验回放框架(experience replay)reverb的安装

框架reverb的相关介绍:

https://www.cnblogs.com/devilmaycry812839668/p/16260799.html

 

 

 

==================================================

 

 

 

reverb框架为python语言环境下的,由于该框架需要和python和TensorFlow进行混合编译,因此需要用到python的libpython.so共享库,因此使用conda创建python环境就不是很好用了,这里的python环境采用从源码编译,具体参看:

https://www.cnblogs.com/devilmaycry812839668/p/16281134.html

 

 

这里采用python3.9的环境,并在 .bashrc 文件下配置python环境的变量:

 

export PATH=/home/devil/python3.9/bin:$PATH
export LD_LIBRARY_PATH=/home/devil/python3.9/lib:$LD_LIBRARY_PATH

 

 



 

安装TensorFlow,经过测试reverb暂时不支持TensorFlow=2.9.0版本,因此这里使用TensorFlow-2.8.0版本:

pip install tensorflow==2.8.0

 

安装reverb:

pip install dm-reverb

 

 

 

 

 测试代码:

import reverb

server = reverb.Server(tables=[
    reverb.Table(
        name='my_table',
        sampler=reverb.selectors.Uniform(),
        remover=reverb.selectors.Fifo(),
        max_size=100,
        rate_limiter=reverb.rate_limiters.MinSize(1)),
    ],
)


client = reverb.Client(f'localhost:{server.port}')
print(client.server_info())
# Creates a single item and data element [0, 1].
client.insert([0, 1], priorities={'my_table': 1.0})


# Appends three data elements and inserts a single item which references all
# of them as {'a': [2, 3, 4], 'b': [12, 13, 14]}.
with client.trajectory_writer(num_keep_alive_refs=3) as writer:
  writer.append({'a': 2, 'b': 12})
  writer.append({'a': 3, 'b': 13})
  writer.append({'a': 4, 'b': 14})

  # Create an item referencing all the data.
  writer.create_item(
      table='my_table',
      priority=1.0,
      trajectory={
          'a': writer.history['a'][:],
          'b': writer.history['b'][:],
      })

  # Block until the item has been inserted and confirmed by the server.
  writer.flush()

print('...........')
# client.sample() returns a generator.
print(list(client.sample('my_table', num_samples=2)))

 

 

成功运行:

 

 

 

 

 

安装诀窍:

安装reverb第一点就是要注意python环境一定要有动态链接库.so文件并且路径中可以搜索到,使用conda的python环境一般都是静态库.a文件,因此这里我们使用的是源码编译python环境;

第二点就是TensorFlow的版本,因为我们pip方式安装的reverb都是编译好的而不是像其他库如numpy那种会下载后重新编译的,因此就需要安装与之对应的TensorFlow版本(官方编译reverb时候的TensorFlow版本),而这个信息我们往往是获得不到的,一个好的解决方法就是安装最新版的reverb然后从最新版的TensorFlow开始试,这里我们最新的TensorFlow版本是2.9.0,发现版本不匹配后直接换为2.8.0版本的TensorFlow就成功匹配最新版的reverb了。

 

 

 

============================================

 

 

 

 

如果安装的是TensorFlow-2.9.0,那么安装reverb后运行则会报错:

 

这个错误大致意思就是说reverb编译时的TensorFlow和现在安装环境下的TensorFlow版本不同,这里安装的最新版本dm_reverb-0.7.3.dist-info,不支持TensorFlow-2.9.0但支持TensorFlow-2.8.0 。

 

 

 

================================================

 

posted on 2022-05-17 23:56  Death_Knight  阅读(33)  评论(0编辑  收藏  举报

导航