清华类脑计算成果再登Nature:张悠慧施路平团队出品,有望打破冯诺依曼瓶颈-1

 

 

清华类脑计算研究成果,再登Nature。

新研究的关键词是:类脑计算新计算机系统框架通用人工智能(AGI)。

它的重要性,在于有希望打破如今冯·诺依曼型计算机,对人工智能的普遍限制,完全发挥类脑算法的潜力,使AGI更具可行性。

研究了些什么?

这并不是清华大学类脑计算中心的相关研究成果,第一次登上Nature。

去年8月,清华类脑计算中心施路平团队自行研发的类脑芯片“天机”,登上了Nature封面。

 

以这片类脑芯片为基础,研究团队实现了高度灵敏,并且能听懂自然语言指令的自行车

 

而最新发表的研究,则是为了解决类脑计算系统的“基础设施架构”问题。

在名为A system hierarchy for brain-inspired computing的论文中,施路平教授团队提出了一种全新的、突破性的类脑计算通用系统层次结构

这项研究中提出的神经形态完备性概念,这是一种更具适应性、更广泛的类脑计算完备性的定义,它降低了系统对神经形态硬件的完备性要求,提高了不同硬件和软件设计之间的兼容性。

 

这意味着这种专门为类脑计算任务设计的计算机结构,具备了和我们熟知的冯·诺依曼结构计算机相同的能力。

即避免系统中软件和硬件之间的紧密关联,实现了高效、兼容和独立的进程。不同的编程语言可通过编译器处理变为可供机器执行的指令。

这一点是十分重要关键的,因为以往,在冯·诺依曼结构计算机上,类脑计算缺乏合适的系统层次结构来支持整体开发,神经形态软件和硬件之间没有合适的接口。

 

一个特定的算法或类脑芯片,需要借助一系列特定的软件工具才能运行,

这种方法的弊端在于,类脑计算系统(包括应用程序模型、系统软件和神经形态设备)的各个层被紧密绑定在了一起,影响了软件和硬件之间的兼容性,降低了类脑计算系统的编程灵活性和开发效率。

解决这个问题的关键,是“神经形态完备性”。

神经形态完备的三层结构

这项研究中提出了神经形态完备性的概念。

这是一种类脑计算完备性的定义,与通用的图灵完备性类似,定义通用机器和语言的要求。

定义提出,如果一个类脑系统能够以规定的准确度执行一组给定的基本操作,那么它就是神经形态完备的。

这与图灵完备性有所不同。

 

在图灵完备性中,只有当一个系统为一组给定的基本运算提供了一个精确且等价的结果时,才可以将其定义为完备。

而在所提出的神经形态完备框架中的基本运算,包括两个已知的加权和运算,以及元素-整流线性运算,这使得硬件系统能够同时支持脉冲和非脉冲人工神经网络。

新定义降低了系统对神经形态硬件的完备性要求,使得不同硬件和软件设计之间的兼容性更易实现。

 

新的层次结构的一个重要特点是,提出了完整的连续性,根据类脑系统能够执行基本操作的精度,接受不同级别的算法性能。

完整的连续性还允许算法的不同实现路径在同一硬件上运行。例如,探索如何权衡算法精度与芯片尺寸,以降低功耗。

为满足神经形态完备性,团队提出一种全新的系统层次结构,这一结构包括软件、硬件和编译三个层次:

 

其中,软件层指的是编程语言或框架以及建立在它们之上的算法或模型。在这个层次上,团队提出了一种统一的、通用的软件抽象模式——POG 图(programming operator graph)——以适应各种类脑算法和模型设计。

POG 由统一的描述方法和事件驱动的并行程序执行模型组成,该模型集成了存储和处理,描述了什么是类脑程序,并定义了如何执行。由于 POG 是图灵完备的,它最大程度地支持各种应用程序、编程语言和框架。

硬件方面,则包括所有类脑芯片和架构模型。团队设计了抽象神经形态体系结构(ANA)作为硬件抽象,包括一个 EPG 图(execution primitive graph),作为上层的接口来描述它可以执行的程序。

EPG 具有控制、流、数据流的混合表示,满足它对不同硬件的适应性。

编译层,是将程序转换为硬件支持的等效形式的中间层。为实现可行性,研究人员提出了一套被主流类脑芯片广泛支持的基本硬件执行原语(hardware execution primitives)。

类脑计算领域的重要一步

近年来,随着摩尔定律逐渐失效,冯·诺依曼结构带来的局限日益明显,存储墙、功耗墙、智能提升等问题,让当前计算机发展面临重大挑战。

从人类大脑中汲取灵感的类脑计算或神经形态计算,是一种有潜力打破冯·诺伊曼瓶颈并推动下一波计算机工程的计算模型和架构。

 

而Nature给这项研究的评语是“a welcome step”。

比较实现相同算法的等效版本的不同硬件平台以及在同一硬件上实现的不同算法的比较

这些都是类脑结构的有效基准测试的关键。

新结构的另一个优势是它可以将类脑算法和相应的硬件开发分流。

 

类脑算法在不断实现强大功能的同时,算法的规模和复杂性将需要随着时间的推移而增加。因此这种分流将有助于研究人员专注于特定方向,避免复杂的端到端解决方案。

这项研究是类脑计算领域的重要一步。

尽管现在,人类大脑本身是否符合“神经形态完备”还有待观察,但这项研究仍然让类脑计算实用化,以及可能在此基础上发展的通用人工智能离我们更近了。

进击的清华类脑计算中心

清华大学类脑计算中心,由施路平教授2013年3月全职入职清华大学后组建,从基础理论、类脑计算系统芯片和软件系统全方位进行类脑计算研究。

 

去年 8 月,施路平团队的“天机芯”登上《自然》杂志封面   加链接,这是世界上首款异构融合类脑芯片,并通过自动驾驶自行车成功验证了通用智能的可行性。

团队很早就着手类脑计算的商业落地,2018年,北京灵汐科技作为清华大学类脑计算中心科技成果转化项目正式成立,施路平教授是联合创始人。

 

道翰天琼CiGril机器人API

道翰天琼CiGril认知智能机器人API用户需要按步骤获取基本信息:

  1. 在平台注册账号
  2. 登录平台,进入后台管理页面,创建应用,然后查看应用,查看应用相关信息。
  3. 在应用信息页面,找到appid,appkey秘钥等信息,然后写接口代码接入机器人应用。

开始接入

请求地址:http://www.weilaitec.com/cigirlrobot.cgr

请求方式:post

请求参数:

参数

类型

默认值

描述

userid  

String  

平台注册账号

appid  

String  

平台创建的应用id

key  

String  

平台应用生成的秘钥

msg  

String  

""

用户端消息内容

 

接口连接示例:http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552

注意事项:参数名称都要小写,五个参数不能遗漏,参数名称都要写对,且各个参数的值不能为空字符串。否则无法请求成功。userid,appid,key三个参数要到平台注册登录创建应用之后,然后查看应用详情就可以看到。userid就是平台注册账号。

示例代码JAVA:


import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class apitest {

    /**
     * Get请求,获得返回数据
     * @param urlStr
     * @return
     */
    private static String opUrl(String urlStr)
    {        
        URL url = null;
        HttpURLConnection conn = null;
        InputStream is = null;
        ByteArrayOutputStream baos = null;
        try
        {
            url = new URL(urlStr);
            conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(5 * 10000);
            conn.setConnectTimeout(5 * 10000);
            conn.setRequestMethod("POST");
            if (conn.getResponseCode() == 200)
            {
                is = conn.getInputStream();
                baos = new ByteArrayOutputStream();
                int len = -1;
                byte[] buf = new byte[128];

                while ((len = is.read(buf)) != -1)
                {
                    baos.write(buf, 0, len);
                }
                baos.flush();
                String result = baos.toString();
                return result;
            } else
            {
                throw new Exception("服务器连接错误!");
            }

        } catch (Exception e)
        {
            e.printStackTrace();
        } finally
        {
            try
            {
                if (is != null)
                    is.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }

            try
            {
                if (baos != null)
                    baos.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
            conn.disconnect();
        }
        return "";
    }
    
    
    public static void main(String args []){        
            //msg参数就是传输过去的对话内容。            
            System.out.println(opUrl("http://www.weilaitec.com/cigirlrobot.cgr?key=UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV&msg=你好&ip=119.25.36.48&userid=jackli&appid=52454214552"));
            
    }
}

 

你可能感兴趣的:(自然语言处理,神经网络,机器学习,深度学习)