ai芯片与systemverilog参数化

吴建明 吴建明     2023-05-01     684

关键词:

AI芯片与SystemVerilog参数化

大模型引发技术变革, AI芯片公司面临新挑战

 ChatGPT 在全球范围内掀起了一场技术革命与商业浪潮,AI 市场也迎来了前所未有的机遇与增量。

当前,AI 基础设施的算力、算法呈现新 “摩尔定律”:相同算力下能训练生产更优质的模型,同时最先进的 AI 模型约每几个月算力需求就会扩大一倍。

 根据斯坦福大学和麦肯锡联合发布的《2019 人工智能指数报告》,2012 年之前最先进 AI 模型计算量每两年翻一倍;2012 年之后计算量每 3.4 个月翻一番,从 2012 年到 2020 年 3 月已增长 30 万倍。

伴随着大模型的快速迭代,其对算力的要求也不断提高,而算力的核心就是人工智能芯片。因此,如何在新趋势、新挑战下快速响应客户需求,推出切实可用的软硬件解决方案,成为了摆在国内 AI 芯片企业面前的首要课题。
拥抱变化,聚焦提升产品力
ChatGPT 及大模型技术大会上,昆仑芯科技研发总监王志鹏表示:“作为一家芯片公司,需要对市场的需求和变化非常敏感,才能使硬件产品始终精准匹配主流需求。”
大模型对计算的要求主要体现在三个方面,一是算力,二是互联,三是成本。就大模型而言,昆仑芯科技在产品定义上已经做出布局 —— 相较第一代产品,昆仑芯 2 代 AI 芯片可大幅优化算力、互联和高性能,而在研的下一代产品则将提供更佳的性能体验。
昆仑芯科技成立于 2021 年,前身为百度智能芯片及架构部。在实际业务场景中深耕 AI 加速领域已逾 10 年,专注打造拥有强大通用性、易用性和高性能的通用人工智能芯片。
在持续推进核心技术攻关的同时,昆仑芯科技紧密关注科技前沿,精准匹配市场需求。目前,公司已实现两代通用 AI 芯片的量产及落地应用,在互联网、智慧金融、智慧交通等领域已规模部署数万片。

 昆仑芯在大模型场景的规模落地实践

“来自真实场景” 一直是昆仑芯科技最独特的身份标签,也是其规模部署数万片、在行业内 “领跑落地” 的核心优势所在。
王志鹏认为,只有基于真实业务场景中的数据进行端到端优化,才能顺利推进大模型落地。
目前市场上主流的大模型以 Transformer 架构为主,包含 Encoder 和 Decoder。Encoder 主要被应用于各类 NLP 的判别类任务;而 Decoder 更多被应用于翻译、图文生成等场景,最近出圈的 ChatGPT 就是典型代表。
针对大模型,昆仑芯持续打磨部署优化方案,领跑产业落地。昆仑芯已将大模型的 Transformer 相关优化技术沉淀为重要基建,优化后的性能比原有方案提升 5 倍以上,压缩显存 30% 以上。
以文生图大模型为例,昆仑芯已跑通一条端到端优化、规模落地之路。
AI 绘画模型的推理算力及显存需求随图像分辨率增大而指数级增加,同时,图像生成需要循环采样数十次,产业落地动辄需要高昂成本的部署集群,严重阻碍了 AIGC 模型大规模商业化落地。
2022 年第四季度,昆仑芯联合客户,基于飞桨 PaddlePaddle 发起了端到端联合优化项目。在 2-3 周内,项目组快速完成端到端优化,最终实现输入文本后 2 秒出图的优化效果,性能提升近 8 倍。
目前,昆仑芯 AI 加速卡 R200 已在该客户的大模型场景完成规模部署,性能数据全面超越同系列主流推理卡:

  1. 基于昆仑芯 AI 加速卡 R200 高效运算与推理能力,综合优化方案,在 dpm-25steps 算法下,利用昆仑芯 AI 加速卡 R200,生成 1024*1024 图像时的推理速度为 10.89 iters/s,相比同能力的主流推理卡快 20%。
  2. 昆仑芯 AI 加速卡 R200 拥有 32G GDDR6 显存,为大规模参数提供更大的存储容量、更高带宽的内存访问、更稳定的性能,生成更高分辨率的图片,为用户提供高性价比服务。
    与此同时,面向当前市场需求迫切的大模型场景,据悉昆仑芯科技即将推出一款加速器组解决方案。
    该加速器组搭载第二代昆仑芯 AI 芯片,是 AI 基础设施的重要组成部分,为 AI IAAS 平台、 AI PAAS 平台提供坚实算力支撑。该产品可提供更为集约的 AI 算力,具备分布式集群部署能力,支持弹性 RDMA 网络,对比传统网络通信时延降低 2~3 倍。该产品可明显提高并行加速比,训推一体化助力提高资源利用率,极大提升模型开发迭代效率。
    携手上层伙伴共拓 AI 芯生态
    ChatGPT 及大模型技术大会上,与会者提问:在生态建设方面,国内 AI 芯片产业面临的客观情况是什么?
    这也是昆仑芯科技经常被客户提及的现实问题。
    昆仑芯科技在努力进一步扩大生态影响力:首先要深刻理解客户的使用习惯,满足客户需求,踏踏实实把软硬件从产品和技术上做到位。随着产品的规模部署,客户越来越多,生态也就自然而然建立起来了。与此同时,产品也会因此得到更好的打磨,进入良性循环。
    在昆仑芯科技看来,AI 芯片看似是一个硬件,但其本质则是一款软件产品。这也证明了软件栈、生态对于 AI 芯片发展的关键作用。
    目前,昆仑芯已实现对飞桨的原生适配,并完成了 III 级兼容性测试,训练与推理性能可以满足用户的应用需求。从底层 AI 算力组件、AI 服务器,到操作系统,再到昆仑芯 SDK,昆仑芯和飞桨携手完成了一套端到端的 AI 计算系统解决方案,并致力于打造一个全栈式软硬一体的 AI 生态。
    为进一步完善软件生态,昆仑芯已与多款通用处理器、操作系统、主流框架完成端到端适配,实现了软硬件解决方案的技术栈,为客户提供开箱即用的 AI 芯片产品。

     昆仑芯软件栈

    结语
    谈及大模型趋势下 AI 芯片公司面对的变化,王志鹏说道: “必须快速调整心态,并拥抱大模型带来的变化。”
    而这也刚好印证了昆仑芯科技 “突破创新” 的公司文化:面对瞬息万变的外部环境,突破创新是适应行业的唯一方式。
    面对复杂多变的市场环境以及新场景新应用对研发和落地的重重挑战,国内 AI 芯片公司如何出圈?
    集十余年 AI 加速领域的技术积淀,曾任百度智能芯片及架构部首席架构师、现任昆仑芯科技 CEO 欧阳剑认为,“AI 芯片公司应抓住场景和技术创新‘双驱动’模式,驱动架构优化升级与软硬件产品迭代,这是持续保持竞争力的关键。”

SystemVerilog中的类的参数化能干啥

Verilog中,大家已经知道可以使用各种编译命令和parameter等实现参数化的设计,具体使用时只需要通过修改对应的参数,就可以实现在不修改原代码的情况下,使对应的模块适用于不同的应用场合,从而可以提高代码的重用性和对应模块的通用性。在SystemVerilog中除了继续向下通吃Verilog的各种参数化设计方法外,还可以实现类的参数化设计,可以基于相同的模板类通过传递不同的参数实现不同的类,提高了代码的重用性。SystemVerilog中,类的参数化主要是用过两种方式实现的,一种是数值参数化,一种是类型参数化,其通用格式如下:

 下面将通过示例说明类参数化的应用。

1.数值参数化

【示例】 

 【仿真结果】 

 示例中,参数化类carr定义时,指定了参数SIZE,该参数SIZE将用于限定类中属性arr数组的大小,当传入不同的参数时,参数化类carr将形成特定的一个类,其中arr数组的大小也由传递的具体参数决定。示例中分别声明了两个句柄c1和c2,并且在声明时指定了参数类的参数SIZE的值,然后通过这两个句柄分别调用参数类中的方法disp_size,通过仿真结果,此时这两个句柄指向对象中的数组的大小是不一样,分别是句柄声明时传入的参数10和20。那么句柄c1和c2可以互相传递吗?

【示例】 

 【仿真结果】 

 通过仿真结果可以看到,c1和c2是不能相互传递的,这主要是因为c1和c2在声明时传递给类carr的参数不同所以c1和c2句柄类型是不同的,即相互之间不能直接进行句柄的传递。由此可以知道,参数化类如果在声明句柄时指定不同的参数值,那么声明的句柄将不属于同一类型。实际使用时,参数化类不止可以将数值进行参数化,还可以将数据类型作为参数进行传递,下面示例说明。

2.类型参数化

【示例】 

 【仿真结果】 

 示例中,类typec在定义时,也使用了参数,但是此时使用的参数是“type”,即类型作为参数,并且该类型参数将决定整个参数类typec中使用该类型参数的所有类型。示例中声明句柄c1时,没有指定参数,因为typec定义时其中的参数指定了默认类型为int,所以此时c1中的类型T采用了默认类型int。c2声明时指定了typec的参数类型为real,则声明c2时,typec类中的T为real,同理c3中的T为bit[3:0]。然后通过句柄调用了方法calc返回不同类型的计算结果。这里需要注意的是,c3中T的类型为bit[3:0],所以调用方法calc返回的结果高位将被截掉,所以仿真最后的结果为“111”,即7(32+23=55,转换成二进制最低3位为“111”)。

3.参数默认值

上例中,c1声明时没有指定参数类型,就可以声明句柄,那么是不是所有的参数类都可以在声明句柄时不指定参数值或者参数类型呢?大家请看下例。

【示例】 

 【仿真结果】 

 示例中,参数类typec在定义时,虽然指定了类型参数,但是此时该类型参数并没有指定默认值,所以此时如果声明c1句柄时没有指定参数类型,那么typec中的类型T将会成为“游魂野鬼”,所以此时仿真器在编译析构时就会善意输出上述报错信息。所以,如果使用了参数类,并且参数有默认值,那么在声明句柄时不指定参数时,那么该参数将会使用默认值,如果在声明句柄时指定了参数,那么该参数类将会使用声明句柄时指定的参数。

4.父类子类都参数化

除了上述一些相对比较简单的类参数化模型之外,在实际使用时,经常会遇到父类子类都参数化的情况,汇总如下表所示。

 【示例】 

 【仿真结果】 

 示例中,类typed拓展自typec,并且在typed定义时指定了该来的类型参数为real,同时指定了typed父类typec的类型参数为int。示例中第15行声明了句柄c,在第18行创建对象,并且句柄c指向该对象。第19行给子类中的属性val2赋值为1.234,因为val2类型为real,所以此时赋给val2中的值仍为1.234.第20行通过句柄c访问typec中属性val1,并且给val1赋值为4.321,但是因为typed在定义时给父类typec的类型参数指定的类型为int,所以此时val1的类型为int,所以val1中的值是4而不是赋给其的4.321。第21行调用typed中方法calc同时传递给val3的值为3.111,因为val3的类型为real(由ST决定),所以赋给val3的值仍为3.111。最终val1中的值为4,val2中的值为1.234,val3中的值为3.111,三者之和为仿真结果中显示的8.345。

通过上述示例,可以看到在使用参数化类时,用户可以定义一个模板类,通过传递不同的参数使模板类定制化,从而可以有效提高代码的复用性,同时在使用时大家也需要注意以下几点:

l给模板类传递不同的参数,那么形成的类虽然使用的模板相同,但是属于不同的类,是不能直接进行句柄传递;

l模板类的参数如果指定了默认值,那么在声明句柄时如果不指定参数,那么模板类的中的参数将使用默认值;

l模板类的参数如果没有指定默认值,那么在声明句柄时必须给参数指定默认值;

l用户在使用参数类时,建议先从非参数化类的定义开始,之后再经过调试抽象将非参数化类“提纯”到参数化类;

 

 

参考文献链接

https://mp.weixin.qq.com/s/WcmjosE-_YOz5J2nHa8sYQ

https://mp.weixin.qq.com/s/9R7bhuSTmHLdtq4Nj72G8w

npu芯片技术与市场发展杂谈

NPU芯片技术与市场发展杂谈推出新一代NPU!安谋科技应战AI新时代,要催化本土芯片创新2023年,万象更新,AI芯片产业亦恢复生机。在生成式人工智能(AIGC)热潮的催化下,澎湃旺盛的研发和应用需求,令算力产业空前兴奋,连... 查看详情

如何生成依赖于 systemverilog 中先前参数的参数

】如何生成依赖于systemverilog中先前参数的参数【英文标题】:HowdoIgenerateparametersdependentonfpreviousparametersinsystemverilog【发布时间】:2020-01-2123:47:20【问题描述】:我最近从VHDL切换到SystemVerilog,并且正在转换我的一些代码。我想根... 查看详情

ai芯片在世界上有啥作用

参考技术A工具/材料AI芯片AI芯片使用可以深度学习的智能芯片,它可以把常用的计算函数快速的实现硬件化并且其所需能耗要比传统芯片所使用的能耗低。在手机上使用AI芯片使得我们的智能手机也可以像计算机一样进行自动化... 查看详情

SystemVerilog/Verilator WIDTH 参数和案例结构索引超出范围

】SystemVerilog/VerilatorWIDTH参数和案例结构索引超出范围【英文标题】:SystemVerilog/VerilatorWIDTHparameterandcasestructureindexingoutofbounds【发布时间】:2020-01-2110:39:48【问题描述】:我目前正在使用here中描述的LFSR在SystemVerilog中实现PRNG。宽... 查看详情

全球首个!7nm最大芯片ai集群

点上方人工智能算法与Python大数据获取更多干货在右上方 ··· 设为星标 ★,第一时间获取资源仅做学术分享,如有侵权,联系删除转载于:新智元突触是神经网络的「桥梁」。今日,Cerebras宣布世界首个「... 查看详情

全球首个!7nm最大芯片ai集群

点上方人工智能算法与Python大数据获取更多干货在右上方 ··· 设为星标 ★,第一时间获取资源仅做学术分享,如有侵权,联系删除转载于:新智元突触是神经网络的「桥梁」。今日,Cerebras宣布世界首个「... 查看详情

一文看懂ai芯片竞争五大维度

...+让位于人工智能+,已成业界共识。在AI的数据、算法和芯片之三剑客中,考虑到AI算法开源的发展趋势,数据与芯片将占据越来越重要的地位,而作为AI发展支柱的芯片更是AI业的竞争“核心”。在围绕AI芯片一系列跑马圈... 查看详情

ai简报20211119期全球ai芯片峰会全球首款4nm手机芯片(代码片段)

嵌入式AI1.全球AI芯片峰会延期至12月21日-22日!NVIDIA百度昆仑芯领衔,10位嘉宾率先揭晓原文链接:https://www.sohu.com/a/501737079_115978鉴于当前疫情防控形势依然严峻,为切实保障参会嘉宾及观众的身体健康与生命安全,... 查看详情

深挖cerebras:世界上最大ai芯片的架构设计

作者|SeanLie翻译|胡燕君、程浩源近年来,神经网络模型规模呈指数级增长,从2018年拥有超1亿参数的Bert到2020年拥有1750亿个参数GPT-3,短短两年模型的参数量增加了3个数量级,而且这种增长还看不到尽头... 查看详情

systemverilog中module与program的区别

我们知道,verilog语法标准中是没有program的,program是systemverilog语法标准新增的内容。 那么,为什么要新增一个program呢?主要考量是基于电路的竞争与冒险。 为避免仿真和设计竞争问题(racecondition),systemverilog中引入了pro... 查看详情

为何限制英伟达出售gpu芯片?中国的ai技术领先,让美国怕了

2022年下半年美国突然要求GPU芯片领军者NVIDIA停止对中国出售高端GPU芯片,此举让人疑惑不解,近期日本媒体《日本经济新闻》与荷兰的一家学术信息巨头的分析给出了答案,中国在AI技术上已领先于美国,而NVIDIA... 查看详情

[转]systemverilog的概念以及与verilog的对比

...   http://blog.csdn.net/gtatcs/article/details/8970489 SystemVerilog语言简介 SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE1364-2001Verilog硬件描述语言(HDL),并对其进行了扩展,包括扩充了C语言数据类型、结构、... 查看详情

嵌入式ai全志r329开箱与开发环境搭建(代码片段)

...ff0c;可能是因为qiong~1、参数介绍2、硬件介绍(1)芯片面 -芯片上粘贴了散热片,R329的标志被埋在下面了。 -板载了wifi+bt模块,那一小根是天线。 -那个小按键是FE 查看详情

ai简报20210709期ai芯片勘智k510发布githubcopilotai代码合成器上线

AI芯片嘉楠科技发布高性能图像及语音处理AI芯片勘智K510原文: https://mp.weixin.qq.com/s/c_k0gs686L7zAzqw-n-amQ7月8日,嘉楠科技正式发布AI芯片勘智K510。该芯片定位于中高端边缘推理市场,搭载自主研发IP核的升级版本KPU2.0,... 查看详情

数字视网膜芯片,云端实时ai高清视频处理,编解码融合架构,极致降本增效实践...

数字视网膜技术体系及芯片Topic《数字视网膜技术体系及芯片》贾惠柱 北京大学信息科学技术学院副研究员,北京大学数字媒体研究所副所长随着人工智能技术应用不断向纵深发展,视频系统也从建设期进入到全面应用期ÿ... 查看详情

模型训练与推理中为什么需要使用gpu?基本概念梳理

...显卡和AI有关系呢?而美国政府又为什么要出台关于GPU的芯片禁令呢?文章简单梳理了GPU的一些基本概念、GPU在模型训练和推理中的优势、国内外GPU/ASIC芯片的概况。随着AI尤其是ChatGPT的大火,像英伟达、国内的寒武纪等GPU芯片/A... 查看详情

fpga小白学习之路systemverilog的概念以及与verilog的对比

转自CSDN:http://blog.csdn.net/gtatcs/article/details/8970489SystemVerilog语言简介 SystemVerilog是一种硬件描述和验证语言(HDVL),它基于IEEE1364-2001Verilog硬件描述语言(HDL),并对其进行了扩展,包括扩充了C语言数据类型、结构、压缩和... 查看详情

systemverilog结构体

参考技术A本文所有源码可通过后台回复“结构体”获得结构体由关键字struct声明,且结构体中的成员可以是任何数据类型如下定义一个结构体:结构体就如同一个集合,集合中包含各种变量和常量,并且这些变量和常量可以用... 查看详情