<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>对话模型 &#8211; 编码无悔 /  Intent &amp; Focused</title>
	<atom:link href="https://www.codelast.com/tag/%E5%AF%B9%E8%AF%9D%E6%A8%A1%E5%9E%8B/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.codelast.com</link>
	<description>最优化之路</description>
	<lastBuildDate>Sun, 11 Dec 2022 14:21:25 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>[原创] 调戏了一番度娘&quot;最先进&quot;的PLATO-2预训练模型之后，我还是回到了和人类交谈...</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e8%b0%83%e6%88%8f%e4%ba%86%e4%b8%80%e7%95%aa%e5%ba%a6%e5%a8%98%e6%9c%80%e5%85%88%e8%bf%9b%e7%9a%84plato-2%e9%a2%84%e8%ae%ad%e7%bb%83%e6%a8%a1%e5%9e%8b%e4%b9%8b%e5%90%8e/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e8%b0%83%e6%88%8f%e4%ba%86%e4%b8%80%e7%95%aa%e5%ba%a6%e5%a8%98%e6%9c%80%e5%85%88%e8%bf%9b%e7%9a%84plato-2%e9%a2%84%e8%ae%ad%e7%bb%83%e6%a8%a1%e5%9e%8b%e4%b9%8b%e5%90%8e/#comments</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Mon, 13 Jul 2020 17:35:58 +0000</pubDate>
				<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[综合]]></category>
		<category><![CDATA[NLP]]></category>
		<category><![CDATA[PLATO-2]]></category>
		<category><![CDATA[对话模型]]></category>
		<category><![CDATA[机器学习]]></category>
		<guid isPermaLink="false">https://www.codelast.com/?p=12698</guid>

					<description><![CDATA[<p><img decoding="async" alt="plato-2 network arch" src="https://www.codelast.com/wp-content/uploads/2020/07/plato_2_network_arch.png" style="width: 660px; height: 268px;" /><br />
（莫慌，这图是拿出来撑场面的，我可能和你一样看不懂）</p>
<p>前言：这是一篇很不严肃的实验文章。每一个会修电脑的人，都可以很容易地照着本文的描述，自己去操作一遍。</p>
<p>大概一周前，百度不是发布了一个&#8220;取得重要进展&#8221;的对话生成网络 PLATO-2&#160;吗？我当时一看到那消息，精神就来了，为什么？这得先从解释一下&#8220;这玩意是干什么用的&#8221;说起&#8212;&#8212;毕竟，这篇文章要让每一个群众都能看得懂，大家好才是真的好。</p>
<blockquote>
<p>
		近日，百度发布对话生成网络 PLATO-2，宣布在开放域对话生成模型上迎来重要进展。PLATO-2 承袭 PLATO 隐变量进行回复多样化生成特性，模型参数高达 16 亿，涵盖中英文版本，可就开放域话题深度畅聊。实验结果显示，PLATO-2 中英文对话效果已超越谷歌 Meena、微软小冰和 Facebook Blender 等先进模型。</p>
</blockquote>
<p>咳咳，这些专业术语说的是什么鬼？<br />
如果你完全看不明白这段话，只需要知道：它说的是和<a href="https://zh.wikipedia.org/wiki/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86" rel="noopener noreferrer" target="_blank">NLP</a>（自然语言处理，一门机器学习的分支学科）相关的一些东西。<br />
可能有的人只听说过这段话里提到的&#8220;微软小冰&#8221;&#8212;&#8212;她的主要功能就是一个【聊天机器人】，和小米的&#8220;小爱同学&#8221;颇为相似。<br />
&#8220;小爱同学，帮我把空调打开！&#8221; &#8220;好的，开啦！&#8221;<br />
&#8212;&#8212;相信这样的场景，早已飞入我国千千万万寻常百姓家。<br />
所以，百度发布的这个 PLATO-2，它可以用来做&#8220;小爱同学&#8221;的大脑，也就是最核心的那一块功能。不过现实中的&#8220;小爱同学&#8221;远比这个复杂，在这里只是做一个比喻而已。<br />
<span id="more-12698"></span><!--more--><br />
其实我对NLP也是一窍不通，但是我却算是半个<a href="https://www.codelast.com/?p=12576">英语学习</a>爱好者，每周几乎都要在<a href="http://cambly.com/invite/DZZZ" rel="noopener noreferrer" target="_blank">Cambly</a>平台上和native English speaker对话交流两次。另外，2020年1月的时候，Google发布了一个号称是技术极其牛B的聊天机器人：<a href="https://www.codelast.com/?p=11992">Meena</a>，我做梦都想能把花在<a href="http://cambly.com/invite/DZZZ" rel="noopener noreferrer" target="_blank">Cambly</a>上练口语的钱给省下来啊！苦于Google只是写了篇文章把Meena推到众人面前，却没有提供任何代码以及demo，所以当我看到度娘说&#8220;我整了一个比Meena还要牛B的机器人&#8221;的时候，我简直要感动哭了&#8212;&#8212;度娘，你是我的救世主！<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
还等什么？赶紧把这个机器人的代码跑起来啊！等不及了我马上就要上车！<br />
2话不说，找到PLATO-2的<a href="https://github.com/PaddlePaddle/Knover" rel="noopener noreferrer" target="_blank">GitHub</a>地址，checkout下来，看了一眼 README，貌似开箱即可用，我的心情乐开了花。<br />
看一下运行PLATO-2的要求：</p>
<pre style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; overflow-wrap: normal; padding: 16px; overflow: auto; line-height: 1.45; background-color: rgb(246, 248, 250); border-radius: 6px; color: rgb(36, 41, 46);">
<code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace; font-size: 13.6px; padding: 0px; margin: 0px; background: initial; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit; overflow-wrap: normal;">- python &#62;= 3.7.0
- paddlepaddle-gpu &#62;= 1.8.1
- numpy
- sentencepiece
- termcolor</code></pre>
<p>没有什么过多的依赖，这很好。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e8%b0%83%e6%88%8f%e4%ba%86%e4%b8%80%e7%95%aa%e5%ba%a6%e5%a8%98%e6%9c%80%e5%85%88%e8%bf%9b%e7%9a%84plato-2%e9%a2%84%e8%ae%ad%e7%bb%83%e6%a8%a1%e5%9e%8b%e4%b9%8b%e5%90%8e/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" alt="plato-2 network arch" src="https://www.codelast.com/wp-content/uploads/2020/07/plato_2_network_arch.png" style="width: 660px; height: 268px;" /><br />
（莫慌，这图是拿出来撑场面的，我可能和你一样看不懂）</p>
<p>前言：这是一篇很不严肃的实验文章。每一个会修电脑的人，都可以很容易地照着本文的描述，自己去操作一遍。</p>
<p>大概一周前，百度不是发布了一个&ldquo;取得重要进展&rdquo;的对话生成网络 PLATO-2&nbsp;吗？我当时一看到那消息，精神就来了，为什么？这得先从解释一下&ldquo;这玩意是干什么用的&rdquo;说起&mdash;&mdash;毕竟，这篇文章要让每一个群众都能看得懂，大家好才是真的好。</p>
<blockquote>
<p>
		近日，百度发布对话生成网络 PLATO-2，宣布在开放域对话生成模型上迎来重要进展。PLATO-2 承袭 PLATO 隐变量进行回复多样化生成特性，模型参数高达 16 亿，涵盖中英文版本，可就开放域话题深度畅聊。实验结果显示，PLATO-2 中英文对话效果已超越谷歌 Meena、微软小冰和 Facebook Blender 等先进模型。</p>
</blockquote>
<p>咳咳，这些专业术语说的是什么鬼？<br />
如果你完全看不明白这段话，只需要知道：它说的是和<a href="https://zh.wikipedia.org/wiki/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86" rel="noopener noreferrer" target="_blank">NLP</a>（自然语言处理，一门机器学习的分支学科）相关的一些东西。<br />
可能有的人只听说过这段话里提到的&ldquo;微软小冰&rdquo;&mdash;&mdash;她的主要功能就是一个【聊天机器人】，和小米的&ldquo;小爱同学&rdquo;颇为相似。<br />
&ldquo;小爱同学，帮我把空调打开！&rdquo; &ldquo;好的，开啦！&rdquo;<br />
&mdash;&mdash;相信这样的场景，早已飞入我国千千万万寻常百姓家。<br />
所以，百度发布的这个 PLATO-2，它可以用来做&ldquo;小爱同学&rdquo;的大脑，也就是最核心的那一块功能。不过现实中的&ldquo;小爱同学&rdquo;远比这个复杂，在这里只是做一个比喻而已。<br />
<span id="more-12698"></span><!--more--><br />
其实我对NLP也是一窍不通，但是我却算是半个<a href="https://www.codelast.com/?p=12576">英语学习</a>爱好者，每周几乎都要在<a href="http://cambly.com/invite/DZZZ" rel="noopener noreferrer" target="_blank">Cambly</a>平台上和native English speaker对话交流两次。另外，2020年1月的时候，Google发布了一个号称是技术极其牛B的聊天机器人：<a href="https://www.codelast.com/?p=11992">Meena</a>，我做梦都想能把花在<a href="http://cambly.com/invite/DZZZ" rel="noopener noreferrer" target="_blank">Cambly</a>上练口语的钱给省下来啊！苦于Google只是写了篇文章把Meena推到众人面前，却没有提供任何代码以及demo，所以当我看到度娘说&ldquo;我整了一个比Meena还要牛B的机器人&rdquo;的时候，我简直要感动哭了&mdash;&mdash;度娘，你是我的救世主！<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
还等什么？赶紧把这个机器人的代码跑起来啊！等不及了我马上就要上车！<br />
2话不说，找到PLATO-2的<a href="https://github.com/PaddlePaddle/Knover" rel="noopener noreferrer" target="_blank">GitHub</a>地址，checkout下来，看了一眼 README，貌似开箱即可用，我的心情乐开了花。<br />
看一下运行PLATO-2的要求：</p>
<pre style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 16px; overflow-wrap: normal; padding: 16px; overflow: auto; line-height: 1.45; background-color: rgb(246, 248, 250); border-radius: 6px; color: rgb(36, 41, 46);">
<code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, monospace; font-size: 13.6px; padding: 0px; margin: 0px; background: initial; border-radius: 6px; word-break: normal; border: 0px; display: inline; overflow: visible; line-height: inherit; overflow-wrap: normal;">- python &gt;= 3.7.0
- paddlepaddle-gpu &gt;= 1.8.1
- numpy
- sentencepiece
- termcolor</code></pre>
<p>没有什么过多的依赖，这很好。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
看到 paddlepaddle-gpu&nbsp;的时候，就知道用CPU的机器还不行，可能是inference的速度真的太慢了吧？但我去哪搞一台GPU的机器呢？当然是蹭公司的啦。感谢公司！<br />
为了干净，最好还是在Anaconda下新建一个Python 3.7的 env，然后再安装其他依赖的 Python package。<br />
按百度<a href="https://www.paddlepaddle.org.cn/install/quick#show_info" rel="noopener noreferrer" target="_blank">官方文档</a>就可以很容易搞定一切。<br />
我这里只简要地把几个主要步骤描述一下。<br />
先添加清华的源，再创建为PaddlePaddle创建一个单独的 env：</p>
<blockquote>
<p>
		conda create --name paddle python=3.7<br />
		conda activate paddle</p>
</blockquote>
<p>完了之后，剩下的安装步骤就简单啦：</p>
<blockquote>
<p>
		conda install paddlepaddle-gpu cudatoolkit=10.0<br />
		conda install -c conda-forge sentencepiece<br />
		conda install termcolor</p>
</blockquote>
<p>注意，这里我使用的是 cudatoolkit=10.0，这是因为我机器上的&nbsp;CUDA Version&nbsp;是10.x&nbsp;版本。<br />
最后按百度官方文档测试一下安装上的 PaddlePaddle&nbsp;是否正常，就行了。<br />
<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
现在可以把 PLATO-2&nbsp;用起来了。把它&nbsp;<a href="https://github.com/PaddlePaddle/Knover" rel="noopener noreferrer" target="_blank">GitHub</a>&nbsp;页面上提供的那两个预训练模型下载到GPU机器上（一个体积小参数少，另一个体积大参数多），按百度的文档里说的，解压到&nbsp;<span style="color:#0000ff;">Knover</span> 目录下：<br />
<a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><img decoding="async" alt="plato-2 pre-trained models" src="https://www.codelast.com/wp-content/uploads/2020/07/plato_2_pre_train_models.png" style="width: 300px; height: 94px;" /></a></p>
<p>下面就可以把&ldquo;交互式对话&rdquo;的程序跑起来了（会加载刚下载的模型）：</p>
<blockquote>
<p>
		cd Knover/plato-2/<br />
		bash ./scripts/32L_plato_interact.sh</p>
</blockquote>
<p>在这里，我用的是体积大参数多的那个模型 32L。<br />
经过一小段时间的耐心等待，模型完全加载好了，看一下显存占用情况，17个G：</p>
<blockquote>
<div>
		+-------------------------------------------------------------------------+</div>
<div>
		| Processes:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GPU Memory |</div>
<div>
		|&nbsp; GPU&nbsp; &nbsp; &nbsp; &nbsp;PID&nbsp; &nbsp;Type&nbsp; &nbsp;Process name&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Usage&nbsp; &nbsp; &nbsp; |</div>
<div>
		|============================================================|</div>
<div>
		|&nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp;38736&nbsp; &nbsp; &nbsp; C&nbsp; &nbsp;python&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;17229MiB |</div>
</blockquote>
<div>
	由于在&nbsp;<span style="color:#0000ff;">32L_plato_interact.sh</span>&nbsp;脚本里默认使用的是第一张卡（export CUDA_VISIBLE_DEVICES=0），所以这里看到的 GPU 0&nbsp;就是了。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	虽然预训练的模型肯定达不到我的期望，不过我还是想看看这个聊天机器人的实际聊天效果怎么样。毕竟百度用了64张V100显卡+3周时间才训练出的模型，我怎么可能去自己训练一个模型呢？我没钱也没资源。</p>
<p>	我试着和机器人聊一下新冠肺炎(<span style="color: rgb(0, 0, 255);">COVID-19</span>)这个主题，但它显然&ldquo;完全不懂&rdquo;，可能是它的训练数据里完全没有这方面的数据吧。不过它不懂也就算了，而且它还一直对 <span style="color:#0000ff;">covid</span>&nbsp;这个它不懂的词纠缠不休，并且还误认成别的东西(pet)。我说东，它说西，最后实在没法聊下去，我只能输入一个 <span style="color:#ff0000;">[NEXT]</span>&nbsp;来让它开始一个新的会话过程。<br />
	下面这张图就是我和机器人的对话过程截图。<br />
	<a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><img decoding="async" alt="chat with plato-2 bot" src="https://www.codelast.com/wp-content/uploads/2020/07/chat_with_baidu_plato_bot.png" style="width: 660px; height: 536px;" /></a><br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	原来我还想着，这个预训练的模型聊天效果要是&ldquo;还行&rdquo;的话，我再给它套一个语音识别的功能，这样就可以真正地和它说话了，现在看来，暂时还是不行。<br />
	于是我又回到了<a href="http://cambly.com/invite/DZZZ" rel="noopener noreferrer" target="_blank">Cambly</a>和真人老外聊天去了。</p>
<p>	后记：从目前的技术发展情况来看，微软小冰、Meena之类的机器人要想在&ldquo;语言学习&rdquo;方面能代替一部分人类教师，真的太难了，如果要有令人直观感受强烈的突破的话，说10年那可能都是少的了。<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
	转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
	感谢关注我的微信公众号（微信扫一扫）：</p>
<p>
		<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="color: rgb(77, 77, 77); font-size: 13px; width: 200px; height: 200px;" /><br />
		以及我的微信视频号：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
		<img decoding="async" alt="" src="https://www.codelast.com/wechat_shipinhao_qr_code.jpg" style="text-align: center; width: 200px; height: 199px;" /></p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b-%e8%b0%83%e6%88%8f%e4%ba%86%e4%b8%80%e7%95%aa%e5%ba%a6%e5%a8%98%e6%9c%80%e5%85%88%e8%bf%9b%e7%9a%84plato-2%e9%a2%84%e8%ae%ad%e7%bb%83%e6%a8%a1%e5%9e%8b%e4%b9%8b%e5%90%8e/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
	</channel>
</rss>
