精华内容
下载资源
问答
  • 日前,腾讯云高级工程师程力老师在ArchSummit 全球架构师峰会上分享了算分离架构下的数据湖架构。针对算分离架构带来的性能问题和数据本地性减弱问题,腾讯云的数据湖方案设计构建了新...

    日前,腾讯云高级工程师程力老师在 ArchSummit 全球架构师峰会上分享了存算分离架构下的数据湖架构。

    针对存算分离架构带来的性能问题和数据本地性减弱问题,腾讯云的数据方案设计构建了新一代分布式计算端缓存层。该缓存不仅兼容 Hadoop 和对象语义,同时具备了结构化元数据管理的特性,还充分利用了对象存储 COS 的弹性伸缩和低成本的优势。

    下面,让我们一起回顾下程老师的精彩演讲内容。

    数据存储发展趋

    可分为4个阶段:

    第一阶段:存算一体,孤岛

    十几年前,网络速度远低于本地磁盘吞吐速度的时候,本地化读取数据可以换取更高的吞吐性能。但随着网络速度不断加快,磁盘吞吐速度逐渐成为计算瓶颈,本地盘 HDFS 压力加大,运维成本升高,可网络带宽资源却闲置,导致业务效率低下。

    第二阶段:存算分离,存储、计算解耦

    解耦计算和存储负载,系统负载均衡调度更加灵活,系统的资源利用率提高,节约成本,可以满足业务快速增长的需求。

    第三阶段:数据湖,存储统一

    随着业务多样化发展,业务间数据共享变得困难,而数据湖是一个集中式存储池,支持多种数据源,无缝对接各种计算分析和机器学习平台,实现数据处理与分析,打破数据孤岛。

    第四阶段:云原生,计算统一

    随着数据湖计算节点调度效率降低,云原生技术能构建和运行可弹性扩展的应用,跨多云构建微服务,持续交付部署业务生产系统。

    云原生生态下的存算分离


    腾讯云上的数据湖生态如上图所示,

    • 数据湖底座:对象存储 COS;

    • 云原生:serverless 架构,免运维;

    • 数据共享:通过统一的对象存储 COS 作为弹性底座,结合三层加速器接入多种生态;

    • 结构化数据管理:感知数据 Table 格式,支持按照 Hive Table 预热,支持 IcebergTable 管理等;

    • 高性价比:弹性、按需扩容;

    • 生态支持:支持 Hadoop 生态,K8S 生态等多种生态的部署、运维、鉴权等;

    • 面向业务场景包括数据本地性加强、 数据湖结构化、容器化调度。

    以对象存储为底座的存算分离架构,腾讯云 COSN 对象⽂件系统接⼝:

    • 实现了 HCFS 接⼝,全覆盖 HDFS ⼤数据计算应⽤;

    • 实现了⽂件系统的扩展属性管理接⼝,允许⽤户对⽂件和⽬录设置 xAttr 的扩展属性;

    • 实现了包含 CVM/EMR instance ⾓⾊授权以及临时密钥访问的凭证获取机制。

    腾讯云数据湖三层加速

    1、GooseFS :计算端 - 湖仓缓存加速(Cache Accelerator)

    特点如下:

    • 运⾏在 EMR/AI/ML/K8S 集群内,基于集群 MEM/SSD 资源,提供 Data Cache 能⼒;

    • 热数据缓存在 Cache 中,对象存储保存全量数据;

    • 针对各种计算引擎,提供 Data Locality 能⼒;

    • 提供磁盘模式和内存模式,⽀持淘汰机制。

    2、元数据加速:数据端 - 元数据加速(Metadata Accelerator)

    特点如下:

    • 提供⽂件系统级别元数据操作能⼒;

    • Rename 操作,无需 Copy/Delete 数据;

    • List 操作,无频控;

    • 每个 Bucket,提供10 万QPS。

    3、COS 加速器:存储端- AZ 加速(Data Accelerator)

    特点如下:

    • AZ 级部署,全 SSD 存储介质,热数据读加速;

    • 提供 Tbps 带宽,满⾜⾼吞吐需求;

    • 提供 ms 级别时延。

    案例方案

    方案1:TKE + GooseFS + COS 支持 OCR 搜索框架实例

    方案2:GooseFS + COS + Tstor 支持云上云下打通应用实例

    • IOT 数据(⻋载数据、摄像头数据)上传到本地数据中心 TStor 对象存储;

    • 本地⼤数据集群通过 GooseFS 加速数据访问,完成数据清洗和标注,⽣成训练数据集;

    • TStor ⾃动同步训练数据集到云上 COS 对象存储;

    • 在云上按需拉起 GPU 训练集群,通过 GooseFS 加速,完成 AI 模型训练。

    以上是程力老师分享内容的简要概括,更多精彩内容,可点击下方视频观看。

    如您有疑问 请加群与我们交流

    — END —

    点「阅读原文」,元礼包等您领 & 点「在看」,让更多人发现精彩

    展开全文
  • 京东到家库存系统架构设计

    千次阅读 2017-09-21 15:36:15
    作者介绍:柳志崇,2008年计算机专业毕业,一直从事于移动移动互联网及O2O新零售业务领域的工作,参与过京东到家多个亿级PV系统的研发与架构,对高并发有着丰富的实战经验。 目前,京东到家库存系统经历两年多的...

    京东到家库存系统架构设计

    作者介绍:柳志崇,2008年计算机专业毕业,一直从事于移动移动互联网及O2O新零售业务领域的工作,参与过京东到家多个亿级PV系统的研发与架构,对高并发有着丰富的实战经验。

    目前,京东到家库存系统经历两年多的线上考验与技术迭代,现服务着万级商家十万级店铺的规模,需求的变更与技术演进,我们是如何做到系统的稳定性与高可用呢,下面将会给你揭晓答案

    库存系统技术架构图

    上图如果进行总结下,主要体现出以下几个方面

    1. 完善的基础设施 
      强大的基础服务平台让应用、JVM、Docker、物理机所有健康指标一目了然,7*24小时智能监控告警让开发无须一直盯着监控;
    2. 数据驱动 
      数据与业务相辅相成,用数据验证业务需求,迭代业务需求,让业务需求都尽可能的收益最大化,库存系统的开发同学只需要关注业务需求;
    3. 健全的测试团队 
      大版本上线前相应的测试同学会跟进帮你压测,防止上线后潜在的性能瓶颈。

    库存系统技术架构图解释说明

    Portal

    通过提供商家PC端、App端解决大部分中小商家的日常运营需求,另外提供开放平台满足大中型商家系统对接与数据共享互通的问题。

    Service

    这个板块涵盖了整个库存最核心的C&B数据业务。

    1.业务类

    • C正常流程:用户下单-商家拣货-快递员妥投
    • C异常流程-缺货:用户下单-商家缺货-用户协商-调整订单缺货商品-商家拣货-快递员妥投
    • C异常流程-取消:用户下单-用户反悔-订单取消
    • C异常流程-风控:用户下单-风控拦截-订单锁定-客服审核-订单取消/继续生产
    • B正常流程:商家维护可售库存数量,即时或者定时生效

    2.数据类

    除了业务类需求外,京东到家还提供了大量有商业价值的数据供商家作业务决策,比如

    • 商品销量Top榜-支持分城市分类目筛选
    • 热销商品库存不足预警-商家App版本Push通知及待办事项中可以醒目识别这部分商品并进行维护
    • 红黄线自动下架-近七日订单量大于5单,并且被踩率大于等于20%的商品,进行下架操作,每日执行。
    • 库存交易流水

    3.中间件类

    古人行军打仗,兵马未动,粮草先行,对于系统来说亦是如此,编码未动架构先行,架构的技术选型非常重要,在这里给大家分享京东技术体系上万码农都在使用的几个中间件。

    • JSF,类似于DUBBO,是一款非常优秀的RPC层框架,可以解决应用间的数据通信问题,它最主要的优势是长连接的实现以及高效的序列化组件。
    • JMQ,JMQ是京东自主研发的一款消息中间件系统,具有高可用、数据高可靠等特性。广泛应用于公司内部系统,包括订单、支付、库房、交易等场景。在库存系统中会优先更新Redis缓存数据,并发送变更MQ,供MySQL及ES异步更新。
    • O2OWORKER,早期淘宝开源的一款产品TBSCHEDULE,不这个只适用于单项目管理,多个系统使用的话权限无法隔离,另外参数配置过于繁琐,结合这两点进行了重构,从而形成了现在的整个京东到家都在使用的任务管理平台。

    DB

    1.MYSQL

    京东到家库存系统使用的关系型数据库是MYSQL,低成本、低耦合、轻量级,总之优势多多。

    2.REDIS

    丰富的数据结构&众多的原子性命令支持,非常适合库存系统进行缓存查询及扣减操作。

    3.ES

    库存系统的数据量非常大,首先MYSQL数据库通过水平扩容来解决单表数据量过大的问题,水平扩容的规则采取的是按门店维度进行分表(1.目前京东到家还没有到分库的阶段,2.按门店维度进行分表数据量会相对均衡一些,所以没有按照商家维度进行划分)。那么在商家PC端上查询所有商品库存及维护库存时带来了难度,比如查询该商家下所有的商品有多少条,同时处于上架状态的商品有哪些……,为了解决这一难题,引入了ES,将数据统一存储在ES集群中,解决一些涉及到聚合查询的场景。

    库存系统数据流转图

    库存系统数据流转图解释说明:

    • 库存系统的数据流转,指的都是销售库存的数据流转,在京东到家还有自营类业务板块,即上图中提到的城市仓,由于它涉及到采购入库及盘盈盘亏等问题所以会由一套WMS系统来支撑。
    • 京东到家设计初衷就是希望商家下的商品各门店共享,带来的问题就是商家新建一个商品时,需要推送到商家下所有的门店中,即所有的门店均可以看到这个商品, 或者商家新建一个门店时,需要将商家下所有的商品均推送到这个新建的门店中,所以这采用了MQ技术进行异步化批量处理。

    写到这里,相信对大家对库存系统有了初步的了解,从上图来看功能上其实并不复杂,但是他面临的技术复杂度却是相当高的,比如秒杀品在高并发的情况下如何防止超卖,另外库存系统还不是一个纯技术的系统,需要结合用户的行为特点来考虑,比如下文中提到什么时间进行库存的扣减最合适,我们先抛出几个问题和大家一起探讨下,如有有妥不处,欢迎大家拍砖。


    库存什么时候进行预占(或者扣减)呢

    商家销售的商品数量是有限的,用户下单后商品会被扣减,我们可以怎么实现呢?

    举个例子: 
    一件商品有1000个库存,现在有1000个用户,每个用户计划同时购买1000个。

    • (实现方案1)如果用户加入购物车时进行库存预占,那么将只能有1个用户将1000个商品加入购物车。
    • (实现方案2)如果用户提交订单时进行库存预占,那么将也只能有1个用户将1000个商品提单成功,其它的人均提示“库存不足,提单失败”。
    • (实现方案3)如果用户提交订单&支付成功时进行库存预占,那么这1000个人都能生成订单,但是只有1个人可以支付成功,其它的订单均会被自动取消。

    京东到家目前采用的是方案2,理由:

    • 用户可能只是暂时加入购物车,并不表示用户最终会提单并支付。
    • 所以在购物车进行库存校验并预占,会造成其它真正想买的用户不能加入购物车的情况,但是之前加车的用户一直不付款,最终损失的是公司。
    • 方案3会造成生成1000个订单,无论是在支付前校验库存还是在支付成功后再检验库存,都会造成用户准备好支付条件后却会出现99.9%的系统取消订单的概率,也就是说会给99.9%的用户体验到不爽的感觉。
    • 数据表明用户提交订单不支付的占比是非常小的(相对于加入购物车不购买的行为),目前京东到家给用户预留的最长支付时间是30分钟,超过30分钟订单自动取消,预占的库存自动释放

    综上所述,方案2也可能由于用户下单预占库存但最终未支付,造成库存30分钟后才能被其它用户使用的情况,但是相较于方案1,方案3无疑是折中的最好方案。

    重复提交订单的问题?

    重复提交订单造成的库存重复扣减的后果是比较严重的。比如商家设置有1000件商品,而实际情况可能卖了900件就提示用户无货了,给商家造成无形的损失

    可能出现重复提交订单的情况:

    • (1、用户善意行为)app上用户单击“提交订单”按钮后由于后端接口没有返回,用户以为没有操作成功会再次单击“提交订单”按钮
    • (2、用户恶意行为)黑客直接刷提单接口,绕过App端防重提交功能
    • (3、提单系统重试)比如提单系统为了提高系统的可用性,在第一次调用库存系统扣减接口超时后会重试再次提交扣减请求

    好了,既然问题根源缕清楚了,我们一一对症下药

    • (1、用户善意行为)app侧在用户第一次单击“提交订单”按钮后对按钮进行置灰,禁止再次提交订单
    • (2、用户恶意行为)采用令牌机制,用户每次进入结算页,提单系统会颁发一个令牌ID(全局唯一),当用户点击“提交订单”按钮时发起的网络请求中会带上这个令牌ID,这个时候提单系统会优先进行令牌ID验证,令牌ID存在&令牌ID访问次数=1的话才会放行处理后续逻辑,否则直接返回
    • (3、提单系统重试)这种情况则需要后端系统(比如库存系统)来保证接口的幂等性,每次调用库存系统时均带上订单号,库存系统会基于订单号增加一个分布式事务锁,伪代码如下:
        int ret=redis.incr(orderId);
        redis.expire(orderId,5,TimeUnit.MINUTES);
        if(ret==1){
            //添加成功,说明之前没有处理过这个订单号或者5分钟之前处理过了
            boolean alreadySuccess=alreadySuccessDoOrder(orderProductRequest);
            if(!alreadySuccess){
                doOrder(orderProductRequest);
            }else{
                return "操作失败,原因:重复提交";
            }
        }else{
            return "操作失败,原因:重复提交";
        }

    库存数据的回滚机制如何做

    需要库存回滚的场景也是比较多的,比如:

    • (1、用户未支付)用户下单后后悔了
    • (2、用户支付后取消)用户下单&支付后后悔了
    • (3、风控取消)风控识别到异常行为,强制取消订单
    • (4、耦合系统故障)比如提交订单时提单系统T1同时会调用积分扣减系统X1、库存扣减系统X2、优惠券系统X3,假如X1,X2成功后,调用X3失败,需要回滚用户积分与商家库存。

    其中场景1,2,3比较类似,都会造成订单取消,订单中心取消后会发送mq出来,各个系统保证自己能够正确消费订单取消MQ即可。而场景4订单其实尚未生成,相对来说要复杂些,如上面提到的,提单系统T1需要主动发起库存系统X2、优惠券系统X3的回滚请求(入参必须带上订单号),X2、X3回滚接口需要支持幂等性。

    其实针对场景4,还存在一种极端情况,如果提单系统T1准备回滚时自身也宕机了,那么库存系统X2、优惠券系统X3就必须依靠自己为完成回滚操作了,也就是说具备自我数据健康检查的能力,具体来说怎么实现呢?

    可以利用当前订单号所属的订单尚未生成的特点,可以通过worker机制,每次捞取40分钟(这里的40一定要大于容忍用户的支付时间)前的订单,调用订单中心查询订单的状态,确保不是已取消的,否则进行自我数据的回滚。

    多人同时购买1件商品,如何安全地库存扣减

    现实中同一件商品可能会出现多人同时购买的情况,我们可以如何做到并发安全呢?

    伪代码片段1:

    synchronized(this){
        long stockNum = getProductStockNum(productId);
        if(stockNum>requestBuyNum)  {
          String sql=" update stock_main "+
                     " set stockNum=stockNum-"+requestBuyNum +
                     " where productId="+productId;
          int ret=updateSQL(sql);
            if(ret==1){
                return "扣减成功";
            }else {
                return "扣减失败";
            }
        }
    }   

    伪代码片段1的设计思想是所有的请求过来之后首先加锁,强制其串行化处理,可见其效率一定不高,

    伪代码片段2:

    String sql=" update stock_main "+
               " set stockNum=stockNum-"+requestBuyNum +
               " where productId="+productId+
               " and stockNum>="+requestBuyNum;
    int ret=updateSQL(sql);
    if(ret==1){
       return "扣减成功";
    }else {
       return "扣减失败";
    }

    这段代码只是在where条件里增加了and stockNum>=”+requestBuyNum即可防止超卖的行为,达到了与上述伪代码1的功能

    如果商品是促销品(比如参与了秒杀的商品)并发扣减的机率会更高,那么数据库的压力会更高,这个时候还可以怎么做呢 
    海量的用户秒杀请求,本质上是一个排序,先到先得.但是如此之多的请求,注定了有些人是抢不到的,可以在进入上述伪代码Dao层之前增加一个计数器进行控制,比如有50%的流量将直接告诉其抢购失败,伪代码如下:

    public class SeckillServiceImpl{
        private long count=0;
    
        public BuyResult buy(User user,int productId,int productNum){
            count++;
            if(count%2=1){
                Thread.sleep(1000);
                return new BuyResult("抢购失败");
            }else{
                return doBuy(user,productId,productNum);
            }
        }
    }

    另外同一个用户,不允许多次抢购同一件商品,我们又该如何做呢

    public String doBuy(user,productId,productNum){
        //用户除了第一次进入值为1,其它时候均大于1
        int tmp=redis.incr(user.getUid()+productId); 
        if(tmp==1){
            //1小时后key自动销毁
            redis.expire(user.getUid()+productId,3600); 
            return doBuy1(user,productId,productNum);
        }else{
            return new BuyResult("抢购失败");
        }
    }

    如果同一个用户拥有不同的帐号,来抢购同一件商品,上面的策略就失效了 
    一些公司在发展早期几乎是没有限制的,很容易就可以注册很多个账号。也即是网络所谓的“僵尸账号”,数量庞大,如果我们使用几万个“僵尸号”去混进去抢购,这样就可以大大提升我们中奖的概率,那我们如何应对呢

    public String doBuy1(user,productId,productNum){
        String minuteKey=DateTimeUtil.getDateTimeStr("yyyyMMddHHmm");
        String minuteIpCount=redis.incr(minuteKey+user.getClientIp());
    
        // threshold为允许每分钟允许单个ip的最大访问次数
        if(minuteIpCount>threshold){
            //识别到这部分潜在风险用户时,会让这部分用户强制跳转到验证码页面进行校验
            //校验通过后才能继续抢购商品
            return getAndSendVerificationCode(user);
        }else{
            return doBuy2(user,productId,productNum);
        }
    }

    库存系统的核心表结构设计

    下面列出了库存系统的核心表结构,提供出来供大家在工作中能够有所参考

    库存主表,命名规则:stock_center_00~99 

    库存流水表,命名规则:stock_center_flow_00~99 

    库存批量操作日志表,命名规则:batch_upload_log 

    展开全文
  • 而模型每个计算周期的结果要么回到 PE 内存中以用于进一步计算,要么卸载回 DRAM 中。 用于架构探索的 ML 加速器(基于模板)概览 优化策略 在这项研究中,我们针对架构探索,探究了四种优化策略: 随机:对架构...

    文 / Amir Yazdanbakhsh,Google Research 研究员

    机器学习 (ML) 近期取得了长足进步,而促成这一进步的关键因素便是自定义加速器的研发(例如 Google TPU 和 Edge TPU)。自定义加速器能够显著提高可用算力,从而解锁各种功能,如 AlphaGo、RankBrain、WaveNets 和对话代理计算能力的提升,也进一步提高了神经网络训练和推理的性能,从而可以在视觉、语言、理解和自动驾驶汽车等广泛应用中实现更多新的可能。

    • Google TPU
      https://cloud.google.com/tpu

    • AlphaGo
      https://deepmind.com/blog/article/alphago-zero-starting-scratch

    为维持进步的势头,硬件加速器生态系统必须继续在架构设计上进行创新,并适应快速发展的 ML 模型和应用。要实现这一点,我们需要评估许多不同的加速器设计点,而每个点不仅可以提高计算能力,还可以解锁新的能力。这些设计点通常可根据各种软硬件因素(如内存容量、不同级别的计算单元数量、并行性、互连网络、流水线、软件映射等)来参数化。这是一项艰巨的优化任务,因为搜索空间会呈指数级增长1 ,而目标函数(例如,更低的延迟和/或更高的能效)需要耗费大量的计算能力以通过模拟或合成来进行评估,这使得找到可行的加速器配置具有一定的挑战性。

    在 “Appllo:可迁移架构探索 (Apollo: Transferable Architecture Exploration)” 一文中,我们介绍了我们在 ML 驱动的自定义加速器设计方面的研究进展。虽然近期的研究已经证明利用 ML 可以加快低阶布局规划过程(在这一过程中,硬件组件的空间布局和连接将在硅中进行),但在此研究中,我们会专注于将 ML 融合到高阶系统规范和架构设计阶段,该阶段是影响芯片整体性能的关键因素,而在此阶段建立的设计元素将能够控制高阶的功能。我们的研究表明 ML 算法能够促进对架构的探索,帮助在一系列深度神经网络中找出高性能架构,并且领域涵盖图像分类、目标检测、OCR 和语义分割。

    • Appllo:可迁移架构探索
      http://arxiv.org/abs/2102.01723

    • 近期的研究
      https://ai.googleblog.com/2020/04/chip-design-with-deep-reinforcement.html

    架构搜索空间和工作负载

    在进行架构探索时,我们的目标是为一组工作负载找到一组可行的加速器参数,从而在一组可选的用户定义约束条件下使所需的目标函数(例如,运行时的加权平均值)的值最小化。然而,架构搜索的流形决定了搜索过程通常会包含许多无法从软件映射到硬件的设计点。其中一些是先验已知的设计点,可以通过用户将其制定为优化约束条件来绕过(例如,在面积预算2 约束的情况下,总内存大小不能超过预定义的限制)。但是,由于架构和编译器的相互影响以及搜索空间的复杂性,有些约束条件可能无法正确地制定到优化中,因此编译器可能无法为目标硬件找到可行的软件映射。在优化问题中,这些不可行的设计点难以制定,并且一般在整个编译器通过之前始终为未知。因此,架构探索的主要挑战之一是如何有效地避开不可行的设计点,以最少次数的周期精确架构模拟对搜索空间进行有效探索

    下图显示了目标 ML 加速器的整体架构搜索空间。该加速器包含一个二维的处理元件 (Processing Elements, PE) 阵列,每个处理元件以单指令流多数据流 (SIMD) 的方式执行一组算术计算。每个 PE 的主要架构组件是处理核心,这些核心包含多个用于 SIMD 操作的计算通道。每个 PE 中都有供其所有计算核心共享的共享内存(PE 内存),主要用于存储模型激活、部分结果和输出,而供单个核心使用的内存则主要用于存储模型参数。每个核心都有多条具有多路乘法累加 (MAC) 单元的计算通道。而模型每个计算周期的结果要么回存到 PE 内存中以用于进一步计算,要么卸载回 DRAM 中。

    用于架构探索的 ML 加速器(基于模板)概览

    优化策略

    在这项研究中,我们针对架构探索,探究了四种优化策略:

    • 随机:对架构搜索空间进行均匀的随机采样。

    • Vizier:将贝叶斯优化用于目标函数评估时间较长(例如硬件模拟,可能需要几个小时才能完成)的搜索空间的探索。利用来自搜索空间的采样点集合,贝叶斯优化可形成一个替代函数(通常用高斯过程来表示),该函数可用于模拟搜索空间的流形。在替代函数值的引导下,贝叶斯优化算法会在探索和利用中进行权衡,决定是对流形中有希望的区域进行更多的采样(即利用),还是对搜索空间中未见的区域进行更多的采样(即探索)。然后,优化算法会使用这些新采样的点进一步更新替代函数,以更好地模拟目标搜索空间。Vizier 使用预期的改进 (Expected Improvement) 作为其核心采集函数。

    • Vizier
      https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf

    • 预期的改进
      https://proceedings.neurips.cc/paper/2011/file/86e8f7ab32cfd12577bc2619bc635690-Paper.pdf

    • 进化:使用具有 k 个个体的群体进行进化搜索,其中每个个体的基因组对应一个离散的加速器配置序列。新个体的产生方式为:利用 tournament selecting(联赛选择)方法从群体中为每个个体选择两个亲本,以一定的交叉率重组其基因组,并以一定的概率对重组后的基因组进行突变。

    • 进化
      https://arxiv.org/pdf/2006.03227.pdf

    • tournament selecting
      https://wpmedia.wolfram.com/uploads/sites/13/2018/02/09-3-2.pdf

    • 基于群体的黑盒优化 (P3BO):使用已被证明可以提高样本效率和稳健性的优化方法集合,包括进化和基于模型的方法。采样得到的数据在集合中的优化方法之间进行交换,而优化器则根据其性能历史记录进行加权以生成新的配置。我们在研究中使用的是 P3BO 的一个变体,该变体中优化器的超参数使用进化搜索动态更新。

    • 基于群体的黑盒优化
      https://arxiv.org/pdf/2006.03227.pdf

    加速器搜索空间嵌入向量

    为更好地呈现每个优化策略在导航加速器搜索空间中的有效性,我们使用 t-分布式随机邻域嵌入 (t-SNE) 将探索的配置映射到整个优化范围内的二维空间中。我们将所有实验的目标(回报)定义为每个加速器区域的吞吐量(推理/秒)。在下图中, x 和 y 轴表示嵌入空间的 t-SNE 组件(嵌入向量 1 和嵌入向量 2)。星形和圆形标记分别表示不可行(零回报)和可行的设计点,可行设计点的大小与其回报相对应。

    果不其然,随机策略以均匀分布的方式搜索该空间,最终在设计空间中找到了极少的可行设计点。

    可视化后的图像呈现了通过随机优化策略(最高回报 = 0.96)探索的设计点(约 4000 个)的 t-SNE 组件。最高回报点(红色十字标记)在动画的最后一帧突出显示

       

    与随机采样方法相比,Vizier 默认的优化策略在探索搜索空间和寻找更高回报(1.14 对比 0.96)的设计点之间取得了良好的平衡。然而,这种方法往往会卡在不可行的区域,虽然确实找到了几个具有最高回报的设计点(用红色十字标记表示),但在探索的最后一次迭代中,该方法找到的可行设计点很少。

    与上文图片相同,但使用的是 Vizier 默认优化策略(最高回报 = 1.14)。最高回报点(红色十字标记)在动画的最后一帧突出显示

    而进化策略则是在优化的很早的时候就找到了可行的解,并在其周围形成了可行设计点的集群。因此,这种方法主要做的是浏览可行区域(绿圈),并有效避开不可行的设计点。此外,进化搜索也能够找到更多具有最高回报的设计方案(用红色十字表示)。该方法能够提供多种具有高回报的解决方案,可以让设计者灵活探索各种具有不同设计权衡的架构。

    与上文图片相同,但使用的是进化优化策略(最高回报 = 1.10)。最高回报点(红色十字标记)在动画的最后一帧突出显示

    最后,基于群体的优化方法 (P3BO) 以更有针对性的方式(具有高回报点的区域)对设计空间进行探索,以找到最优解。P3BO 策略在约束条件较严(如不可行的设计点较多的情况)的搜索空间中找到了具有最高回报的设计点,显示出了其在浏览大量不可行点的搜索空间中的有效性。

    与上文图片相同,但使用的是 P3BO 优化策略(最高回报 = 1.13)。最高回报点(红色十字标记)在动画的最后一帧突出显示

    不同设计约束条件下的架构探索

    我们还研究了不同面积预算约束条件下(6.8 mm2、5.8 mm2 和 4.8 mm2)各优化策略的效益。下面的小提琴图 (Violin plots) 显示了在优化结束时(经过 10 次运行,每次 4000 次试验后),在所研究的优化策略中,最高可实现回报的完整分布。较宽的部分代表了有较高概率在特定的给定回报下观察到可行的架构配置。这意味着我们倾向于能够增加回报较高(性能较高)点的宽度的优化算法。

    架构探索中表现最好的两种优化策略分别是“进化”和 P3BO,这两种策略都能在多次运行中提供具有高回报和稳健性的解决方案。通过研究不同的设计约束条件,我们观察到,当面积预算约束条件收紧时,P3BO 优化策略会产生更多具有高性能的解。例如,当面积预算约束条件设置为 5.8 mm2 时,P3BO 找到的设计点的回报(吞吐量/加速器面积)为 1.25,优于其他所有优化策略。当面积预算约束条件设置为 4.8mm2 时,我们也观察到了同样的趋势,在多次运行中,该策略找到的点的回报略高,且稳健性更好(变异性更小)。

    小提琴图显示了在 6.8 mm2 的面积预算下,经过 4000 次试验评估后,10 次运行中各优化策略的最大可实现回报的完整分布。P3BO 和进化算法能够得到更多具有高性能的设计(具有更宽的部分)。x 和 y 轴分别表示所研究的优化算法,以及对比基线加速器得到的增速(回报)的几何平均值

    与上文图片相同,但面积预算约束为 5.8 mm2

       

    与上文图片相同,但面积预算约束为 4.8 mm2

       

    结论

    虽然 “Apollo” 一文朝更好理解加速器设计空间和构建更高效的硬件迈出了第一步,但发明具有新功能的硬件加速器仍然是一个充满未知的领域,同时也是新的前沿趋势。我们相信,这项研究会是一条令人振奋的前进之路,可以进一步探索由 ML 驱动,且适用于跨计算栈架构设计和协同优化(如编译器、映射和调度)的技术,以发明出能够适用于下一代应用的高效加速器。

    致谢

    这项研究由 Amir Yazdanbakhsh、Christof Angermueller 和 Berkin Akin 合作完成。我们还要感谢 Milad Hashemi、Kevin Swersky、James Laudon、Herman Schmit、Cliff Young、Yanqi Zhou、Albin Jones、Satrajit Chatterjee、Ravi Narayanaswami、Ray (I-Jui) Sung、Suyog Gupta、Kiran Seshadri、Suvinay Subramanian、Matthew Denton,以及 Vizier 团队的帮助和支持。

    1. 在我们的目标加速器中,设计点的总数约为 5 x 108。↩

    2. 芯片面积大约为芯片上所有硬件元件的总和,包括片上存储、处理引擎、控制器、I/O 引脚等。 ↩

    更多 AI 相关阅读:

    展开全文
  • 0. 什么是In Memory Computing(存内计算算一体、内存内计算)? In-memory Computing 技术就是以 RAM 取代 hard disk ,将 data 与 CPU 之间的距离缩短,在 RAM 完成所有运算工作,此举可将速度提升 5,000 ...

    什么是In Memory Computing(存内计算、存算一体、内存内计算)?

    • In-memory Computing 技术就是以 RAM 取代 hard disk ,将 data 与 CPU 之间的距离缩短,在 RAM 内完成所有运算工作,此举可将速度提升 5,000 甚至 10,000 倍。

    • 传统的运算方式,是从 hard disk (硬盘)取得资料,交到 RAM ,再传送到 CPU 计算,然后再放回 dard disk ,但这样很花时间。所以要从 RAM (记忆体)入手,即是 In-memory Computing 技术。

    • 在这里插入图片描述在这里插入图片描述

    推进In Memory Computing的动力

    • 深度神经网络的发展
      • 深度神经网络计算量比较大,现有的冯诺伊曼计算机架构凸显瓶颈
      • 人工智能希望能普及到移动端和嵌入式设备中
    • 新的存储器
      • 举例:ReRAM使用电阻调制来实现数据存储,因此每一位的读出使用的是电流信号而非传统的电荷信号。这样一来,由于电流做累加运算是非常自然而然的操作(把几路电流直接组合在一起就实现了电流的加和,甚至无需额外电路),因此ReRAM非常适合内存内计算

    注意区别AI芯片与存内计算

    要注意现在研究比较火热的AI芯片与存内计算的区别,这不是一个概念,研究的出发点也不一样。
    

    产品类型

    • 片外存储
    • 片内存储

    有哪些公司在做In Memory Computing的相关产品?

    • Mythic

      • 做基于Flash存储器的PCIe加速卡
    • GridGain

      • 参考链接:拆解In-memory Computing 奥义
      • 企业概括: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0P3SnCkK-1615597834083)(evernotecid://59201CC2-E917-4207-919C-4CB775C185EC/appyinxiangcom/1589666/ENResource/p1136)]
      • 产品特点:
        • GridGain可以支持超过1000台电脑串联,在hard disk和application之间增加一个acceleration layer,RAM负责计算、hard disk负责存储
        • 兼容多种语言和协议
    • IBM
      IBM在相变存储(PCRAM)里实现神经网络计算的功能,利用新型存储器件的模拟计算功能来实现神经网络的计算。

    • 加州大学圣芭芭拉分校谢源教授
      谢源教授的研究团队在新型存储器件ReRAM(阻变存储)里面做计算的功能,让存储器件做神经网络的计算,称之为PRIME架构。2018年谢源团队和新竹清华大学张孟凡教授团队以及北京清华大学刘勇攀教授团队和汪玉教授团队合作,把PRIME的架构在150nm工艺下流片,在阻变存储阵列里实现了计算存储一体化的神经网络,功耗降低20倍,速度提高50倍。
      谢源教授和三星存储研究部门推出DRISA架构就是在DRAM的工艺上,实现了卷积神经网络的计算功能。

    • 加利福尼亚州欧文市的Syntiant
      位于美国加利福尼亚州的AI芯片初创企业Syntiant打造一类全新的超低功耗、高性能深度神经网络处理器,Syntiant的神经决策处理器(Neural Decision Processor,NDP)没有传统处理器架构的限制,使用模拟神经网络,该网络可以通过极高的内存效率实现极低的功耗,并且具有大规模并行乘法累加计算的能力。Syntiant声称与传统的数字存储架构相比,使用整个网络的模拟电路,希望达到20TOPS/W,Nvidia Volta V100 GPU可以达到0.4TOPS/W,NPD的效率提高提高了约50倍。Syntiant的第一批产品已经成功流片,该公司在2018年早些时候演示了一个原型NDP,它可以同时支持数十种应用程序定义的音频和关键字分类,使开发人员能够创建定制的始终在线的语音用户界面。同时,该处理器针对音频数据速率进行了优化,能够进行扬声器识别,音频事件检测、环境分类、传感器分析,并开始研发其第二代芯片,将扩大Syntiant技术在视频方面的应用,该芯片是20 tera-operations/watt 的NPD,计划于2019上半年开始提供样品。2018年10月Syntiant获得由M12(前身为微软风险投资公司)领投的2500万美元B轮融资,其它战略投资者包括亚马逊Alexa基金、应用创投(Applied Ventures)、英特尔资本、摩托罗拉解决方案风险投资、博世风投。

    • 德克萨斯州奥斯汀的Mythic
      Mythic环绕着带有可编程数字电路的模拟闪存阵列,目标是每次乘法和累加运算仅消耗0.5焦耳,每瓦特可支持约4万亿次操作(TOPS/W)。2018年3月,Mythic宣布完成了由SoftBank Ventures领导的4000万美元的投资,以帮助将高速,低功耗AI芯片推向市场。Lockheed Martin Ventures对Mythic进行了战略投资。此轮融资包括来自Mythic现有投资者Draper Fisher Jurvetson,Lux Capital,Data Collective和AME Cloud Ventures。Sun Microsystems联合创始人Andy Bechtolsheim(曾是谷歌的早期投资人)也有所参与。Mythic计划在今年年底之前出厂第一批硅片样品,并于2019年全面投产。

    • 知存科技
      知存科技成立于2017年10月的知存科技,成为国内存算一体的标志企业,获得兆易创新、启迪方信、科大讯飞等投资,第一款芯片预计2019年量产,面向超低功耗语音识别,将达到三十倍功耗降低,三倍生产成本降低,未来将开发视频和图像AI芯片和加速卡、人机交互物联网芯片。

    • 新忆科技
      新忆科技成立于2018年,清华大学背景,致力于忆阻器的研发和产业化,清华华控投资。

    技术瓶颈

    • 计算精度低:
      • 目前的内存内计算使用模拟计算,通常精度上限在8bit左右,而且只能做定点数计算,难以做浮点数计算。
      • 不适合训练场景
      • 适合精度要求不高的嵌入式人工智能产品

    科研界在研究什么?

    参考文献

    1. 内存内计算,下一代计算的新范式?
    2. 存内计算的架构、挑战和趋势
    3. 内存计算
    展开全文
  • 2021年4月25-26日,ArchSummit 全球架构师峰会 2021(上海站)将在上海·宝华万豪酒店举办,本次峰会设置了云原生容器化、业务架构、Flutter 一线实战、网关系统实践...
  • 计算机CPU四大体系架构

    千次阅读 2019-11-14 16:41:24
    CPU架构 是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。 目前市面上的CPU分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为首的精简...
  • ARM、MIPS、PowerPC 均是基于精简指令集RISC机器处理器的架构 X86是基于复杂指令集的架构,Atom则基于是x86指令集的精简版 ARM架构 ARM架构,过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn ...
  • 苏宁库存架构转变

    千次阅读 2017-12-11 17:40:16
    ...2017双11大促刚刚过去,苏宁易购交易系统的请求量和订单量在双11当日呈现指数级的增长,更是实现了7秒破亿的最快破亿记录,...作为苏宁易购交易系统负责人,我给大家介绍一下交易核心系统之一,库存系统的架构
  • 计算机架构(一)

    千次阅读 2007-05-23 10:01:00
    信息技术在社会各个领域的渗透,使其面貌焕然一新,同时形成了一种新的文化形态——信息时代的计算机文化。以计算机网络为代表的信息技术的发展全面冲击着人类社会的产业结构、劳动组织、生产方式、精神文化乃至家庭...
  • 经过前两篇我们已经实现了所有的组合逻辑芯片和时序芯片...计算机架构 hack是基于经典的冯·诺伊曼体系架构,它的关键组成部分是将中央处理单元和存储器,通过存储器中存储的程序指令控制中央处理器的执行,即存储程...
  • 一直以来,总以为CPU内部真是如当年学习《计算机组成原理》时书上所介绍的那样,是各种逻辑门器件的组合。当看到纳米技术时就想,真的可以把那些器件做的那么小么?直到看了Intel CPU制作流程及AMD芯片的制作流程的...
  • 计算机原理架构

    2019-05-22 16:10:04
    他是通过存储器 和外存储器 组成主存 还有控制器和运算器组成的cpu 输入输出设备是外计算机 是软件和硬件的结合体 他们具有相互依存 相互协同 相互逻辑等效 他们两者密不可分 硬件的性能决定了软件的效率 ...
  • 什么是数据库“算分离”架构

    千次阅读 2020-12-26 15:42:46
    他认为普通MySQL云数据库用evs做存储,计算资源和存储资源是分开的,比如可以单独扩容计算资源或单独扩容存储资源,所以就是算分离的架构,其实这么理解是片面的。要理解“算分离”架构,还得追根溯源,从传统...
  • 本文讲的是计算机模型与架构发展史探讨,【IT168 资讯】按照图灵(Alan Turing)给出的计算机模型,计算机是由一个有限状态读写头和一个存储器构成。有限状态读写头从一个初始状态开始,对存储器上的(输入)数据...
  • 继领发布飞腾FT1500A 4核显控计算机几个月后,领又密集发布基于FT1500A的16核异构加速计算机,此计算机采用飞腾16核CPU+GPU架构组成,它允许对任务和数据进行分割交由CPU和GPU进行并行计算,从而大幅提高运算性能。...
  • 本文将结合业界实践,从架构演化的视角剖析这一架构模式,探索正交架构的前世今生,全面介绍这一架构的结构和优势,分析实践中的缺陷并探讨解决方案。 关于架构的基本认识 软件系统架构(简称架构)关注软件系统的...
  • 作为苏宁易购交易系统负责人,我给大家介绍一下交易核心系统之一,库存系统的架构演进与实践,并介绍库存系统是如何筹备和应对双11的流量洪峰的。本文推荐架构师、技术经理、开发工程师、技术总监等群体阅读,希望...
  • 许多用户是非计算机专业性的人员,对复杂的计算机软件系统的运用难以适应,因此诞生了新型的计算模式—云计算。 云计算主要技术 虚拟化技术: 虚拟化技术是指计算机在虚拟的基础上运行并扩大其容量,通过软件的...
  • 导语:无论是顶级学术会议,还是巨头公司都在寻找能够用存内计算打破AI芯片“内存墙”的最佳技术方案。 2012年,深度学习算法在图像分类竞赛中展现出的显著性能提升引发了新一轮的AI热潮。 2015年,深度学习算法对...
  • 有趣的是,ISSCC和IEDM上相关存内计算的论文正好对应了前文所说的存内计算的两种技术路线——ISSCC对应从电路侧做技术革新,而IEDM则主要对应器件方向的技术更新换代,通过引入新的存储器件并基于其新特性来开发高...
  • 四大 CPU 架构:ARM,X86,MIPS,PowerPC ARM 功耗低,在无线局域网,3G,手机终端,手持设备,有线网络通信设备应用广泛; MIPS:被CISCO公司大量采用在高端路由器上; PowerPC:是通信和工业控制领域应用广泛的...
  • 孙立林在分享中,从更高的角度提到了什么是计算架构的本质,同时,也提出了对于计算架构的三大矛盾:个体隐私和中心监管的矛盾,交易隐私和登记确权的矛盾,以及数据的归属权到底是谁的矛盾。同时,对于一个业内颇为...
  • 作者 |林钰登、高滨、王小虎、钱鹤、吴华强来源 | 《微纳电子与智能制造》期刊引言 过去半个世纪以来 ,芯片计算性能的提高主要依赖于场效应晶体管尺寸的缩小。随着特征尺寸的减小 ...
  • 架构设计(1)-谈谈架构

    万次阅读 多人点赞 2017-10-17 11:18:15
    1、什么是架构架构本质 在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。 此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这...
  • 术语 翻译 描述 ... 执行x86指令集的CPU架构 Pipeline 流水线 根据上下文,翻译做“流水线”或者“管道” Pipelined ...
  • 美国IBM公司发布消息称,该公司研究人员实现了在内存计算技术上的一次重大突破,发明了一种可以运行在100万个相变内存(PCM)上的无监督式机器学习算法,有望比传统计算机计算速度和能耗利用效率方面提升200倍,...
  • 作为苏宁易购交易系统负责人,我给大家介绍一下交易核心系统之一,库存系统的架构演进与实践,并介绍库存系统是如何筹备和应对双11的流量洪峰的。本文推荐架构师、技术经理、开发工程师、技术总监等群体阅读,希望...
  • spark高效的分布式计算架构

    千次阅读 2018-07-21 14:54:25
    目标Scope(解决什么问题) 在大规模的特定数据集上的迭代运算或重复查询检索 官方定义: a MapReduce-like cluster computing framework designed for low-latency ...首先,MapReduce-like是说架构上和多数...
  • 摘要:本文根据华为云NoSQL数据库架构师余汶龙,在今年的中国系统架构师大会SACC上的演讲整理而成,内容如下。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 103,066
精华内容 41,226
关键字:

存内计算架构