Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
原文地址:http://blog.csdn.net/jinzhuojun/article/details/77144590
和其它的机器学习方向一样,强化学习(Reinforcement Learning)也有一些经典的实验场景,像Mountain-Car,Cart-Pole等。话说很久以前,因为没有统一的开发测试平台,大家都会自己实现,有用C/C++的,有用Python,还有用Matlab的。所以大家论文中看到的场景虽然相似,但很多时候不完全一样。这样一方面重新造轮子,另一方面还有可能因为实验环境的差别影响结果的比较。于是后面大家渐渐开始建立统一的实验平台,另一方面,由于近年来深度强化学习(Deep Reinforcement Learning)的兴起,各种新的更复杂的实验场景也在不断涌现。于是出现了OpenAI Gym,MuJoCo,rllab, DeepMind Lab, TORCS, PySC2等一系列优秀的平台。你会在大量的强化学习相关论文中看到它们的身影。下面就简单介绍下这些平台在Ubuntu下的搭建过程。关于一些基础环境(如Cuda, Anaconda, TensorFlow)的搭建可参考前面的文章:http://blog.csdn.net/jinzhuojun/article/details/77140806。
MuJoCo(Multi-Joint dynamics with Contact)是一个物理模拟器,可以用于机器人控制优化等研究。官方网站为http://www.mujoco.org/index.html。最新版本为1.50。下载地址为https://www.roboti.us/index.html。如果是Linux系统可以点mjpro150 linux。下载完成后解压到~/.mujoco下。注意要用是需要license的,可以在https://www.roboti.us/license.html上申请试用版30天免费license。先下载网站上提供的getid_linux,加执行权限在本地运行得到机器id连同其它信息填到申请页面,提交后会收到邮件包含key文件mjkey.txt。下载key文件后,放到~/.mujoco目录下。之后可以运行解压目录下bin里的simulate试下是否正常(需要将key文件也拷到simulate同级目录)。运行后将model目录下的模型拖入窗口,会看到类似下面的输出: OpenAI对MuJoCo引擎做了Python 3的binding-mujoco-py,源码位于https://github.com/openai/mujoco-py。按readme中你可以通过下面命令安装: 如果安装过程中出现下面这种错误: sh: 2: Syntax error: "(" unexpected ? ? ? ?ERROR: In【【微信】】 你可以下载源码安装: 然后运行下readme中的例子看是否运行正常。 OpenAI Gym是OpenAI出的研究强化学习算法的toolkit,它里边cover的场景非常多,从经典的Cart-Pole, Mountain-Car到Atar,Go,MuJoCo都有。官方网站为https://gym.openai.com/,源码位于https://github.com/openai/gym,它的readme提供了安装和运行示例,按其中的安装方法: 最小安装: 完全安装: 然后可以跑readme中的例子,如SpaceIn【【微信】】, Go, LunarLander, CarPole, MuJoCo等等:? ? ? ?
通过源码下的examples/scripts/list_envs可以列出所有支持的场景。
如果装了Anaconda,过程中出现下面错误的话: OSError: /home/jzj/anaconda2/envs/py35/bin/http://www.taodudu.cc/lib/libstdc++.so.6: 【【微信】】 `GLIBCXX_3.4.20' not found (re【【微信】】 /home/jzj/anaconda2/envs/py35/lib/【【微信】】.5/site-packages/atari_py/ale_interface/build/libale_c.so) 可以通过在Anaconda环境中安装libgcc解决: 如果在运行依赖Box2d引擎的sample时出现下面错误: AttributeError: module 'Box2D._Box2D' has no attribute 'RAND_LIMIT' 可以先uninstall已有版本(如有),然后安装pybox2d: Gym中也可以通过mujoco-py集成MuJoCo。如果出现下面错误,说明mujoco-py版本不对。目前Gym中支持MuJoCo 1.31和mujoco-py 0.5。按前面说明装上相应版本后即可。 DependencyNotInstalled: No module named 'mujoco_py.mjlib'. (HINT: you need to install mujoco_py, and also perform the setup instructions here: https://github.com/openai/mujoco-py/.) 和OpenAI Gym类似,rllab也是一个研究强化学习算法的框架。官方网站为https://github.com/openai/rllab。官方支持【【微信】】.5+,基于Theano。与OpenAI Gym的区别在于OpenAI Gym支持更广泛的环境,且提供在线的scoreboard可以用于共享训练结果。rllab自己也提供一个基于pygame的可视环境,同时它也可兼容OpenAI Gym。除此之外,它提供了一些强化学习算法的实现,这些参考实现和一些组件可以使得强化学习算法的开发更快上手。安装步骤可按照官方网站:https://rllab.readthedocs.io/en/latest/user/installation.html。 如果要想要在rllab中用MuJoCo的话再用下面脚本安装。 rllab使用的是mujoco 1.31版本,这个脚本里会让指定相应的mujoco包和license key文件。以上安装脚本中会创建Anaconda环境,名为rllab3。通过下面命令进入环境: 然后就可以运行例子了。比如用TRPO算法训练Cart-Pole场景的话,运行:这些sample中默认是无UI的,如果要有UI,可以搜索其中的plot=True,将之反注释即可。
如果你很和我一样穷,用的是贫民版GPU,加速时分不出【【微信】】的话: RuntimeError: Cuda error: kernel_reduce_ccontig_node_m28488bfe450723【【微信】】: out of 【【微信】】. (grid: 1 x 1; block: 256 x 1 x 1) 可以退一步让Theano用纯CPU跑: DeepMind Lab(原Labyrinth)是由DeepMind发布的3D迷宫场景强化学习平台。之前是DeepMind内部使用的,后来开源了。官方介绍https://deepmind.com/blog/open-sourcing-deepmind-lab/。论文 https://arxiv.org/pdf/1612.03801.pdf。源码位于https://github.com/deepmind/lab。 最好在Python 2.7环境下编译运行。比如用Anaconda创建Python 2.7环境并进入: 然后按官方readme中的说明(https://github.com/deepmind/lab/blob/master/docs/build.md)安装。由于编译是基于bazel,所以需要先安装bazel。 如果在Anaconda环境中,有可能碰到下面错误: ImportError: cannot import name multiarray 表面上是缺少numpy,可以先看下numpy有没有装,没有的话可以用conda install numpy安装。如果装了有可能是串到~/.local或者/usr/lib/下的python package了(可以通过python -c "import sys; from pprint import pprint as p; p(sys.path)"检查)。简单点的方法就是将除了Anaconda环境下的numpy删除。 接下来,按readme说明,通过下面命令可以分别跑agent玩家和人类玩家的迷宫场景:然后通过python api(https://github.com/deepmind/lab/blob/master/docs/python_api.md)就可以让强化学习算法利用该环境进行训练了。
TORCS(The Open Racing Car Simulator)是一个跨平台的赛车游戏模拟器,也可作为强化学习的研究平台。官方网站:http://torcs.sourceforge.net/。但我们不需直接从官网下。gym_torcs是一个TORCS的强化学习环境,提供类似前面OpenAI Gym的接口,网站为https://github.com/ugo-nama-kun/gym_torcs。 假设已安装了上面提到的OpenAI Gym。还需要安装依赖: 官方声明依赖Python 3.5,那就进入Python 3的环境(假设已创建Python 3.5的Anaconda环境py35): 然后用conda install numpy安装numpy。 下载源码: 然后进入其【【微信】】子目录,按其中readme编译安装定制版torcs。安装完了运行torcs命令就能看到界面了。注意按readme说明需要进行一些设置,如赛道以及分辨率,因为实现中只支持64x64分辨率。运行示例代码可以跑一个随机选取动作的agent。 ps:截图还是用了默认分辨率,因为64x64太小看不清。 Readme中的Simple How-To示例了如何在Python中与该环境交互,然后就可以开发测试强化学习算法了。网上有个实现DDPG算法的例子可以参考:https://yanpanlau.github.io/2016/10/11/Torcs-Keras.html DeepMind的AlphaGo把围棋搞定之后,业界开始把目光投向即时策略游戏,如StarCraft II(星际争霸II)。最近DeepMind和Blizzard合作出了个StarCraft II的研究平台,称为PySC2。介绍网站:https://deepmind.com/blog/deepmind-and-blizzard-open-starcraft-ii-ai-research-en【【微信】】/。论文:https://deepmind.com/documents/110/sc2le.pdf。PySC2是基于Blizzard的StarCraft II Machine Learning API(https://github.com/Blizzard/s2client-proto)的Pythpython几个开源的ai库 python ai 算法一般用哪个ide
开源python ide,python开源代码去哪里找,python开源bi,python 开源ide目录
- 一、背景介绍
- 二、API申请
- 三、Python使用API
3月2日凌晨,OpenAI放出了真正的ChatGPT API,不是背后的GPT-3.5大模型,是ChatGPT的本体模型!ChatGPT API价格为1k tokens/$0.002,等于每输出100万个单词,价格才2.7美金(约18元人民币),比已有的GPT-3.5模型便宜10倍。
这将大大降低开发人员将ChatGPT集成到自家应用和服务的门槛,构建属于自己的AI聊天机器人。而且OpenAI将ChatGPT从去年12月至今的成本砍掉了90%,令此前许多靠开发私有ChatGPT API接口赚差价的中间商们再无用武之地。
ChatGPT官方API基于GPT-3.5-turbo模型,是GPT-3.5系列中最快速、最便宜、最灵活的模型。开发者可以通过OpenAI Playground和OpenAI Codex来使用和测试ChatGPT OpenAI。
此前一些公司已经率先接入ChatGPT API,包括生鲜电商平台Instacart、跨境电商平台Shopify、照片分享应用Snap、单词背诵应用【【微信】】等,用于提高客户服务、营销、教育等效率及体验。
OpenAI还在不断改进其ChatGPT模型,并希望将增强功能也提供给开发人员。
使用该gpt-3.5-turbo模型的开发人员将始终获得OpenAI发布的稳定模型,同时仍然可以灵活地选择特定模型版本。例如,今天发布的gpt-3.5-turbo-0301,它至少会在6月1日之前推出特定版本,OpenAI会将gpt-3.5-turbo在4月更新到新的稳定版本。
此外,OpenAI还推出了基于large-v2模型的【【微信】】官方API。【【微信】】是OpenAI去年9月发布的开源自动语音识别(ASR)模型。开发者可用该功能来转录或翻译音频,费用为每分钟0.006美元。
API地址:
目前openai提供免费试用,将会在2023年5月1日过期
生成API keys
key只在生成的时候完整展示,需要在key生成的时候复制下来,之后不会再看到完整的key。但是可以再生成新的key,并且可以删掉生成的key。
# coding=utf-8 import openai openai.api_key='输入你的key' def use(prompt): response=openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ ] ) return response['choices'][0]['message']['content'] if __name__=="__main__": r=use('输入你的问题') print(r)