Gavin老师Transformer直播课感悟 - 基于Transformer的Rasa Internals解密之定制Graph NLU及Policies组件(五)

        本文继续围绕工业级业务对话平台和框架Rasa从源码的角度来解析如何定制DAG图中的NLU组件和policies组件,在下面这幅图中,Rasa通过使用抽象的方法把每个节点所代表的一个NLU组件或者policy组件都视作一个Graph Component,而用每条边来表示每个Graph Component之间的依赖关系,即定义了节点之间的数据流向。我们只要遵循Rasa的架构层面的规范和代码层面的规范,就可以根据自己的业务对话系统实现需求来获得定制的TAG图和模型架构,而不需要去考虑模型架构应该基于什么样的底层基础架构,底层基础架构已由Rasa帮我们实现。

六、定制Graph Components

        Rasa开源框架提供了各种各样的NLU components和policies,你可以通过继承Rasa 3.0的NLU components和policies来定制自己的组件。当然也可以从零开始来创建自己的组件。

        举例说明,Rasa提供了一个通用的父类Tokenizer,这个类会帮你做一些通用的事情,如加载数据的过程,训练的过程,推理的过程等。而以下这几个类都继承了这个父类Tokenizer:

JiebaTokenizer,

SpacyTokenizer

WhitespaceTokenizer

为了在Rasa开源框架里使用自定义的组件,需要满足如下要求:

  1. 需要实现GraphComponent接口

e.g. 以Policy为例,实现了这个接口

     2. 需要使用模型配置文件进行注册

     3. 需要把自定义的组件添加到configure file里

     4. 需要使用Python的type annotation(通过使用annotation可以帮助构建self-documenting,对于参数:type = default_value,对于函数返回值:def function(…) -> type),Rasa会使用type annotation来验证你的模型配置,forward references不被允许,如果你使用的是Python 3.7版本,那么可以使用”from_future_import annotations”来去掉forward references,以下是示例:

关于Graph Components:

        DAG图描述了在模型配置文件里的各个组件之间的依赖关系以及数据流,这样做的好处主要有以下两点:

  1. Rasa能够使用DAG图来优化模型的执行(包括训练级别的和推理级别的),例如对已训练的步骤进行有效的缓存或者可以让有些步骤并行执行
  2. Rasa能够灵活地表达不同的模型架构,只要DAG图维持有向的状态,理论上Rasa能够基于模型配置传递任何数据到任何组件,而不必把基础软件架构绑定到具体所使用的模型架构,也就是说Rasa实现计算引擎和模型的解耦合,这样就可以在这个开放架构中使用任何模型。

当把模型配置转换为DAG图时,policies和NLU components就变成了这个图中的节点。在模型配置里,policies和NLU components是有区别的,然而把它们放到DAG图里时,这种所谓的区别已经通过抽象的方式被模糊掉了。所以基于这一点,policies和NLU components都成为了抽象的graph components。在实践中,policies和NLU components都必须继承接口GraphComponent,从而在DAG图中相互兼容并可执行。

开始使用Rasa的注意事项:

        在开始使用之前,你必须决定是否需要实现一个定制的NLU component或者一个policy。

1. 如果需要实现定制的policy,那么推荐继承现有的Policy:

2. 如果需要实现定制的NLU component,那么可以参照下面的方式来做:

在做推理的时候会调用下面的process方法

     3. 如果需要定制一个tokenizer,那么应该继承Tokenizer这个class,因为方法train和process都已经实现了,唯一要做的就是去重写tokenize方法。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值