什么是AI算子开发

今天在某离职群里看到前同事聊天,说到国内某大厂的一个面试,本来求职面试的岗位是通信库,类似于英伟达的 nccl, 但是却被问到了很多与算子开发相关的问题

图片

看来算子开发岗位依然很稀缺。

联想到之前写过的一篇关于AI算子开发的文章,那时是一个做大模型的公司需要AI算子开发:有前途!大模型也需要AI算子开发岗。

不少小伙伴看了这篇文章之后,对算子开发这个岗位有了了解,也十分感兴趣。

刚好今天朋友圈不少人都发了一个图片,调侃大模型的算法开发,拥有优先择偶权。

图片不知真假,大家感受下。

图片

其实算子开发岗位,与算法岗位有相似之处,但又不是纯算法,还需要和硬件、芯片打交道。

需要对底层芯片很了解,才能把算法更好的部署在芯片上,实现推理的低延时高性能。

1、纯算法的传奇工资

很早之前网上就流传着一些算法工程师的传奇:毕业去大厂做算法,白菜价30-40w起步!

图片

这让工作了很多年的老工程师们都愤愤不平,纷纷大呼薪资被倒挂。

虽然这几年市场冷静了一些,但不可否认的是,搞算法依然是香饽饽,而与算法相关的岗位中,有一个独特的存在,那就是AI 算子开发工程师。

2、AI 算子开发是做什么的?

算子,英文名为 Operator,简称 OP。指的是神经网络中完成特定功能的一些算法节点。比如在CNN网络中,一个卷积节点就属于一个卷积算子。

往大了讲,甚至一个CNN网络也可以称作一个大算子,只不过这个大算子比较复杂。

AI算子开发的岗位主要集中在与底层芯片相关的公司的招聘需求中,或者需要对神经网络有优化需求的公司招聘需求中。

但是问题来了,现在哪个做AI的,稍微有点技术原创型的公司,无论用GPU,还是ASIC,不需要对神经网络做优化呢?

所以,需求很多。那这个职位具体是做什么的呢?

做过深度学习或者使用框架搭过神经网络的同学都知道,一个神经网络就是由一层层的算子构成的。

但在使用框架搭网络的过程,基本上是搭积木似的调用算子接口。

比如在 tensorflow 中调用一个卷积,一行代码就可以搞定:

tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)

看似很简单,但在这个过程中,你根本看不到这个卷积算法是如何实现的。

你唯一知道的是,给定了一个输入,这一行代码做了卷积运算。

而卷积运算的实际执行过程,恰恰就是算子开发工程师需要做的事:把卷积的运算,在更底层实现出来。

如果在x86的架构下实现,可能就是直接用循环嵌套的方式来实现了,比如:

#include <stdio.h>#define N 4 // 输入数组大小#define K 3 // 卷积核大小void conv2d(float input[N][N],            float kernel[K][K],            float output[N-K+1][N-K+1]) {  int i, j, m, n;      float sum;      // 遍历输出数组      for (i = 0; i < N-K+1; i++) {            for (j = 0; j < N-K+1; j++) {                  sum = 0;                  // 遍历卷积核                  for (m = 0; m < K; m++) {                        for (n = 0; n < K; n++) {                              // 对应元素相乘并累加                              sum += input[i+m][j+n] * kernel[m][n];                        }                  }                  output[i][j] = sum; // 存储卷积结果            }      }}

这是因为x86的架构和指令集并没有针对卷积这一算法做特殊的指令设计,因此我们要想实现这个功能,基本上也只能根据卷积的运算逻辑,来一层层的循环遍历完成。

而有些芯片作为专用AI加速部件,会为卷积这一运算单独设计硬件来完成计算,相对应的,也会设计单独的卷积指令。

因此,在AI芯片上,一个卷积的运算实现,可能就用一条指令,就可以完成很多个数据的乘累加操作,不需要再像上面的代码一样,写那么多循环来遍历卷积核。

当然实现出来只是第一步,更重要的是要优化。利用硬件架构的特性来完成算子的性能优化,从而实现计算加速。

3、算子开发需要什么技能?

了解了算子开发是干什么的,那大概就知道需要什么技能了。

首先,一定要对算法本身很熟悉,甚至是了熟于心才行。

因为算子开发是要真正实现这个算法,而不是在框架侧简单的进行一行python代码的调用。

要在芯片上实现一个算法,需要知道算法的每一个细节,只有这样,才能完成一个算法的功能交付。

其次,还需要对AI芯片的架构特别了解。

需要知道芯片上有哪些硬件模块可以实现这个算法,这些硬件模块之间有什么依赖关系,如何并行、如何同步、如何做优化等,做到了这一点,才能完成一个算法的性能交付。

可以说,算子开发,是一个软硬兼具的岗位。

除此之外,C++/python语言也是不可少的。

因此,算子开发需要的技能,可以大概有3方面:扎实的算法基础、扎实的硬件知识(计算机体系结构相关)以及扎实的编程技能。

4、算子开发的岗位待遇如何?

我从boss直聘上找了一个比较有代表性的职位描述和薪资。

图片

图片

这是北京某公司招聘的5年经验算子岗位的职位和薪资描述。

感兴趣的同学可以去Boss直聘上搜一搜看看。

我个人感觉,算子开发岗的薪资与纯算法岗位其实差不多,但是对算法的要求应该是没有纯算法岗位高的。

因为AI算子开发需要的能力不单单是算法能力,还需要一些硬件知识,甚至是编译器知识。

在现在纯算法工程师越来越卷,恨不得把leetcode刷一遍都不一定过得了纯算法岗面试的情况下,如果你具备算法+硬件+编程能力的技能,不妨试试算子开发岗。

试问,这种可以拥有优先择偶权的岗位,谁不喜欢呢?

参考:^ AI算子开发是什么​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/134912.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA进阶篇】与数据结构结合?这些知识你应该知道

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️JAVA进阶】 文章目录 前言关与JAVA中的数据结构Java中的数据结构 枚举位集合创建一个初始大小的位集合设置特定的位从另一个位集合中复制位迭代位集合中设置为1的位将位集合转换为字节数组将字节数组…

如何在 Azure 中使用自动机器学习进行模型训练

自动机器学习&#xff08;Automated Machine Learning&#xff0c;简称为AutoML&#xff09;是一种通过自动化流程来简化模型训练和调优的技术。在Azure机器学习平台中&#xff0c;AutoML提供了丰富的功能和工具&#xff0c;使我们能够快速地训练和优化机器学习模型。本文将介绍…

nodejs多版本管理

背景 在开发过程中经常会用到不同的nodejs版本&#xff0c;程序在不同版本之间又可能不兼容的情况。一般的做法就是卸载nodejs然后安装需要的版本&#xff0c;这样太过于麻烦。实际上跟conda一样&#xff0c;可以做多版本的管理 解决方法 安装nvm管理nodejs版本&#xff0c;…

windows上运行yolov3代码详解(小白)

batch_normalize1 # 是否做BN 代码链接 环境配置 没有Anaconda的话可以安装下 首先创建虚拟环境&#xff0c;名称随意&#xff0c;版本3.9.我觉得挺好的 激活虚拟环境 conda activate 刚刚创建的环境名称 切换到requirements.txt目录下&#xff0c;直接vscode打开yolov3文件…

Linux应用开发基础知识——字符文字编码(五)

前言&#xff1a; TXT 文件中保存的是字符的核心&#xff1a;它的编码值。而 Notepad 上显示时&#xff0c; 这些字符对应什么样的形状态&#xff0c;这是由字符文件决定的。编码值&#xff0c;字体是两个不一样的东西&#xff0c;比如 A 的编码值是 0x41&#xff0c;但是在屏幕…

2.2 CE修改器:未知数值扫描

本关需要扫描未知数只扫描&#xff0c;要在不知道初始值的情况下找到一个在0到500之间的数值。首先&#xff0c;选择“未知的初始值”扫描方式&#xff0c;在数值类型中选择 4 字节&#xff0c;并点击“首次扫描”以开始扫描。扫描结束后&#xff0c;点击“打我”按钮进行一些操…

CS224W5.3——信念传播

此文中&#xff0c;我们介绍信念传播&#xff0c;这是一种回答图中概率查询的动态规划方法。通过迭代传递消息给邻居节点&#xff0c;如果达成共识&#xff0c;则计算最终的信念值。然后&#xff0c;我们通过示例和泛化树结构展示消息传递。最后讨论了循环信念传播算法及其优缺…

建行驻江门市分行纪检组以政治谈话压责任促发展

开展政治谈话&#xff0c;是加强“一把手”和领导班子监督、严肃党内政治生活、加强对党员领导干部日常教育管理的有效手段。 为督促“一把手”和领导班子成员依法依规履行职责、行使权力&#xff0c;推动党中央重大决策部署以及建设银行总行、广东省分行党委的决策部署在本单…

数据结构之红黑树

红黑树的概念 红黑树&#xff08;Red-Black Tree&#xff09;同AVL树一样, 也是一种自平衡的二叉搜索树, 但在每个结点上增加一个存储位表示结点的颜色, 可以是Red或Black, 通过对任何一条从根到叶子的路径上各个结点着色方式的限制, 红黑树确保没有一条路径会比其他路径长出俩…

Vue23组件自定义事件 和 解绑事件

Vue2&3组件自定义事件 和 解绑事件 Vue2组件自定义事件 功能&#xff1a;父组件绑定数据&#xff0c;子组件触发事件。&#xff08;父绑子触发&#xff09; 实现步骤&#xff08;前三步在父组件实现&#xff0c;第四步在子组件实现&#xff09;&#xff1a; 第一步&#…

测试用例的设计方法(黑盒)

1.基于需求的设计方法 比如针对网易邮箱进行测试&#xff1a;分为功能相关和非功能相关两大类 但是这么设计的话&#xff0c;有无数多个测试用例&#xff0c;我们现在看到的只是一些大概的测试用例&#xff0c;要想设计具体的测试用例&#xff0c;需要用到下面测试用例的方法…

盘点双11!阿里妈妈助这些品牌短视频赢增长!

刚刚&#xff01;一年一度的双11落下帷幕&#xff0c;很多新变化值得回味。 尽管天气在变凉&#xff0c;但市场出现了逐渐回暖的迹象。在此背景下&#xff0c;大量商家特别关心如何在双11打一场漂亮的胜仗。 卖方如何行动&#xff0c;关键在于买方的变化。在阿里妈妈发布的《…

神经网络(第二周)

一、简介 1.1 需求预测示例 1.1.1 逻辑回归算法 根据价格预测商品是否畅销。特征&#xff1a;T恤的价格&#xff1b;分类&#xff1a;销售量高1/销售量低0&#xff1b;使用逻辑回归算法进行分类&#xff0c;拟合效果如下图所示&#xff1a; 1.1.2 神经元和神经网络 将逻辑回…

【LeetCode刷题-二分查找】--162.寻找峰值

162.寻找峰值 方法一&#xff1a;寻找最大值 题目保证了nums[i]≠nums[i1]&#xff0c;所以数组nums中最大值两侧的元素一定严格小于最大值本身&#xff0c;因此最大值所在的位置就是一个可行的峰值位置 class Solution {public int findPeakElement(int[] nums) {int idx 0…

分类网络搭建示例

搭建CNN网络 本章我们来学习一下如何搭建网络&#xff0c;初始化方法&#xff0c;模型的保存&#xff0c;预训练模型的加载方法。本专栏需要搭建的是对分类性能的测试&#xff0c;所以这里我们只以VGG为例。 请注意&#xff0c;这里定义的只是一个简陋的版本&#xff0c;后续一…

什么是数据库事务、事务的ACID、怎么设置/禁止自动提交?

数据库事务及ACID 数据库事务是指作为单个逻辑工作单元执行的一组操作。这组操作要么全部成功地执行&#xff0c;要么全部不执行&#xff0c;不允许出现部分执行的情况。数据库事务通常需要满足ACID属性&#xff0c;即原子性&#xff08;Atomicity&#xff09;、一致性&#x…

第2关:还原键盘输入(list)

题目&#xff1a; 知识点&#xff1a; 列表list相较于数组&#xff1a; 优势&#xff1a;可在任意指定位置插入或者删除元素而不影响列表其他地方 。 劣势&#xff1a;无法直接进行下标索引&#xff0c;需要迭代器it逐个遍历。 代码&#xff1a; #include <iostream>…

企业级信息化系统 ERP、OA、CRM、EAM、WMS、MES、PM

微服务架构&#xff0c;前端采用微应用架构&#xff0c;可做到不同服务使用不同数据库独立运行。全平台采用基于模型驱动的设计模式&#xff0c;并在前后端留有大量的代码植入入口&#xff0c;方便开发者对平台进行改造扩充。企业信息中心开发ERP、OA、CRM、EAM、WMS、MES、PM等…

R系组播调优方案

修改/etc/sysctl.conf添加如下内容&#xff1a; Vim /etc/sysctl.con net.ipv4.ip_forward1 net.ipv4.ip_nonlocal_bind1 net.ipv4.conf.all.rp_filter0 net.ipv4.conf.default.rp_filter0 net.bridge.bridge-nf-call-arptables 0 net.bridge.bridge-nf-call-ip6tables 0 …

【踩坑】Putty报错: Can’t agree a key change algorithm

原因可能是putty版本太老了&#xff0c;更新putty就好了 下载地址&#xff1a;https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 根据需要选择自己想要下载的版本&#xff0c;我是下载的如下图所示的版本。 另外&#xff0c;了解了一下Putty是用来远程连接…