parlai环境搭建以及模型训练

来源:互联网 发布:电子相册软件排行 编辑:程序博客网 时间:2024/06/08 16:20

下载parlai:

git clone https://github.com/facebookresearch/ParlAI

安装依赖库:

cd ParlAI; python3 setup.py develop

安装pytorch for python3:

按照http://pytorch.org/提示安装即可

安装好之后,终端运行:

python3import torch

成功则表示成功安装pytorch

安装regex:

sudo pip3 install regex

运行示范程序:

python examples/memnn_luatorch_cpu/full_task_train.py -t babi:task10k:1 -nt 8

无法找到lzmq库,这是因为没有安装lzmq,sudo luarocks install lzmq

接着继续运行,提示无法找到libmemnn.so,但是在/home/pythonWork/qa/ParlAI/downloads/memnnlib/KVmemnn/library/c/libmemnn.so找到,因此添加库目录路径:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/pythonWork/qa/ParlAI/downloads/memnnlib/KVmemnn/library/c/

在pycharm中仍无法找到libmemnn.so库,这时候可以:

sudo vim /etc/ld.so.conf

并在该文件中添加该库的路径:

/home/pythonWork/qa/ParlAI/downloads/memnnlib/KVmemnn/library/c/

在pycahrm中无法找到luajit,这时候可以设置luajit的安装路径到pycharm的environment path ,可以在代码中添加环境路径:

a=os.getenv('PATH')+':/home/program/torch_src/torch/install/bin'os.environ['PATH']=a

继续运行该命令,发现提示无法找到tds,直接sudo luarocks install tds无法安装tds,需要手动下载tds,并编译:

git clone https://github.com/torch/tds.gitcd tdsluarocks make rocks/tds-scm-1.rockspec

再运行

python examples/memnn_luatorch_cpu/full_task_train.py -t babi:task10k:1 -nt 8

成功.

运行机制

多重世界;代理;老师

在ParlAI主要的概念(类)是多重世界,代理,和老师。世界是说话者所生活的环境,可以从简单的双向对话变化到更复杂的场景,如反应性游戏环境。代理是可以在世界上表演和说话的东西。代理可以是一个学习者,如机器学习的系统,或一个硬编码的机器人,用来与学习者互动,如游戏中的非玩家角色。最后,老师是一种和学习者交流的代理,例如,实现了以前列出的任务。

简单来说为每个task对应一个world和agent,例如doc reader agent的类为DocReaderAgent,在DocReaderAgent中调用模型model(line141,self.model = DocReaderModel(self.opt, self.dict, self.state_dict)),在agent中得到model的输入数据,传入model,model的返回值给agent,agent控制model的参数更新,模型保存,以及打印loss等训练信息.

所有代理使用一个单一的格式-观察/操作对象(一个Python)-交换文本,标签,并与其他代理互相奖励。

Facebook推开源软件平台ParlAI,能否解决机器人灵魂缺失问题?

代理发送此消息来说话,并通过接收到相同形式的消息来发现在环境中的其他说话者。这使我们能够解决各种对话问题,从强化学习到完全监督学习,同时保证所有的数据集符合相同的标准。当研究人员建立新的模型,他们可以很容易地应用在许多任务上。

在定义了一个世界和它的代理之后,主回路调用其中的函数 world.parley ( ).运行用来训练,测试,或显示,世界。在左边的面板显示的一个例子,主回路的框架,右边是parley ( )实际代码。

Facebook推开源软件平台ParlAI,能否解决机器人灵魂缺失问题?

在ParlAI选择一个任务和在命令行中指定它一样简单。如果数据集尚未使用,ParlAI会自动下载它。因为所有的数据集都在ParlAI都会以相同的方式处理,对话代理可以在它们的训练和测试之间切换。你也可以通过提供一个以逗号分隔的列表进行一次性多任务指定;例如命令行 -t babi, squad 用了两个数据集,所有的QA数据立刻集合-t #qa; 或者ParlAI中每个任务立刻集合-t #all,目的是为了让构建和评估一个丰富的对话模型变得简单。

原创粉丝点击