链接地址:Myia

    Myia是一种新的可微的程序设计语言。 它目的是支持大规模高性能计算(例如 线性代数)和他们的梯度。 这个主要的 应用目的是支持 研究人工智能, 尤其是深度学习算法。

    • 通过使用Python定义模型 , 并将其编译到Myia (通过接口的形式与python绑定其他语言). 这个子集是通用目的和包括循环构造与递归。 它排除副作用影响和替换操作。
    • 求你的模型的导数。所有控制流和所有可微原语都完全支持导数。
    • 编译成高效的CPU和GPU代码,优化资源的使用。

    动机
    在过去的十年里,人工智能的发展经历了一个繁荣时期,这主要归功于深层神经网络的成功。神经网络的训练是一种可微程序:编写一个程序来计算输出和成本,然后计算该成本相对于模型参数的导数,以确定如何更新它们。
    差异化可以自动实现,但主流编程语言对此不提供支持,因此需要能够可靠地支持这些应用程序的库或编程语言。

    目前领先的深度学习解决方案分为两大阵营:
    基于计算图的解决方案,如TensorFlow、Theano和MXNet,支持自动微分,并得到了很好的优化,但它们并不是完全通用的,只支持有限的循环,不支持一般的递归。因此,像递归神经网络这样的模型很难编写。
    PyTorch或Autograd等运算符重载解决方案使用动态方法来自动区分,这使它们更通用,但它们与Python语言紧密耦合,无法获得优化编译器的好处。它们还涉及每个操作的一定数量的开销,这不利于组成小型廉价操作。

    Myia的解决方案是定义一个强类型、通用的中间表示,并使用IR级别的自动区分转换,然后可以针对不同的目标进行编译和优化,从而充分利用这两种主要方法。