1. 这条新闻背后,真正值得技术人关注的是什么

先说说标题里的这个热点:00后辍学做AI芯片,估值223亿元。消息一出,很多人的第一反应是“又有人在制造焦虑”“什么时候芯片的门槛这么低了”。但如果只停留在吃瓜层面,可能就错过了一个对技术人很有参考价值的信号。

我对这条新闻的判断是: AI芯片创业的门槛确实在发生结构性变化,但变化的不是芯片设计本身变简单了,而是“芯片+软件+场景”的闭环路径比过去更容易跑通。

过去做芯片,是重资产、重经验、长周期的代名词。一个团队没有十年以上的工艺积累,没有几个亿的流片预算,很难做出一颗有竞争力的芯片。但AI芯片这个细分赛道出现了一个变化: 应用层需求爆发,芯片架构和软件工具链的耦合度变得极高,很多创新机会出现在“懂算法、懂场景、能写驱动、能调算子”这一层。

这不是说所有AI芯片都能靠年轻人做出来。更准确的理解是: AI芯片的开发模式正在从“硬件主导”转向“软硬协同主导”,而软硬协同恰恰是大量开发者可以切入的入口。

那么,这篇博客我想和你聊的就不是那条新闻本身,而是更值得技术人搞清楚的三件事:

  1. AI芯片到底解决了什么问题,它和普通芯片有什么本质区别。
  2. 所谓“AI芯片驱动开发”到底是什么,需要掌握哪些技能,有没有可上手的路径。
  3. 普通开发者能不能吃到AI芯片这波趋势的红利,机会在哪个层级。

我用尽量清楚的语言,把这个行业的前因后果、技术逻辑、实践路径和常见误区讲透。建议收藏备用,尤其是对芯片方向感兴趣的开发者。

2. AI芯片的核心概念:从“通用计算”到“专用计算”的思维切换

要理解AI芯片,先要理解一个背景:传统CPU是为“通用计算”设计的。

CPU的设计哲学是应对各种不可预知的指令流和控制流。它有强大的分支预测、乱序执行、大容量Cache,目标是把单个任务的响应速度做到最好。但通用性是有代价的:CPU的计算单元占比很低,大量晶体管用在了控制逻辑和缓存上。

人工智能计算恰好相反。神经网络的核心运算,尤其是卷积、矩阵乘法、激活函数,本质上都是 大量重复、高度并行的简单运算 。一个典型的卷积层,可能要对输入特征图做成千上万次乘加操作。这种工作负载的特点是:

  • 计算密集,数据复用率高。
  • 控制逻辑简单,不需要复杂的分支跳转。
  • 对“某个单独任务”的响应速度不敏感,但对“整体吞吐量”极度敏感。

这时候如果用CPU去算,效率非常低。不是因为CPU性能差,而是它把大量资源浪费在了“不需要的控制能力”上。

AI芯片的思路很直白: 抛弃不必要的通用性,把大部分晶体管都做成计算单元,用极度并行的方式去完成神经网络里的矩阵运算。

一个通俗的类比是:CPU像是一个全科医生,什么病都能看,但每次只能看一个病人;AI芯片更像是一个流水线体检中心,每个科室只做一种检查,但可以同时服务几千个人。让全科医生去给一万人抽血化验,他累死也做不完;但体检中心的专项流水线可以轻松完成。

所以,AI芯片的本质竞争力,不是“跑得更快”,而是 在特定计算模式下的能效比更高 。这也是为什么AI芯片常常被称作“专用芯片”或“领域专用架构芯片”。

2.1 通用芯片与AI专用芯片的对比

对比维度 CPU(通用芯片) GPU/AI芯片(专用计算)
设计目标 通用计算,处理不可预知的任务 大规模并行计算,高效处理神经网络运算
计算单元占比 低,大量晶体管用于控制逻辑和缓存 极高,大部分面积用于计算单元
擅长的任务 逻辑控制、分支跳转、单线程响应 矩阵乘法、卷积、图像处理、批量推理
不擅长的任务 大规模并行矩阵运算 复杂控制流、系统调度
典型代表 Intel/AMD服务器CPU、ARM核心 NVIDIA GPU、各类NPU/TPU芯片

这里要特别提醒一个认知误区: GPU不等于AI芯片的全部。

GPU最初是为图形渲染设计的,恰好图形渲染和神经网络都喜欢矩阵运算,所以GPU被“顺手”用来做AI计算。但真正为AI设计的专用芯片,比如TPU、NPU,在架构上做了更多针对性的优化,比如更小的数据精度、更紧密的片上存储调度、更激进的脉动阵列设计。AI芯片驱动开发的工作内容,很大程度上就是围绕这些专用硬件的计算特性,把算法层的算子高效地映射到底层硬件上。

3. AI芯片驱动开发:这可能是最接近“造芯片”的软件岗位

热搜词里有“ai芯片驱动开发”,我猜很多搜索这个词的人,并不清楚它具体指什么。我拆解一下。

在很多人的直觉里,驱动开发是“写Linux内核代码,控制硬件寄存器”,非常底层,也非常小众。但AI芯片的驱动开发,和传统网卡驱动、磁盘驱动不太一样。 它处于算法框架、芯片硬件和应用场景的交汇处,是让AI模型能在芯片上顺利跑起来的关键咽喉。

一颗AI芯片流片回来后,如果只跑hello world级别的小程序,那跟一颗普通芯片没有区别。真正让它发挥价值的是:一个PyTorch训练出来的模型,如何通过推理引擎,经过图优化、算子选择、内存分配,最终映射到NPU上的数千个计算核上执行。这个过程中所有软件栈的开发和优化工作,都可以归入“AI芯片驱动开发”或更宽泛的“AI芯片软件栈开发”。

具体来说,这块工作通常包括以下几个层面。

3.1 第一层:算子开发与优化

神经网络里的卷积、矩阵乘法、归一化、池化等操作,在最底层都是一段需要运行在硬件上的计算逻辑。通用框架如ONNX Runtime、PyTorch,它们提供的算子未必直接在每颗NPU上有高效实现。这时候就需要开发者针对芯片的计算特性,编写算子的高性能实现。

这部分工作很像“用C++和底层指令集写高性能算法”,但它比普通算法开发更强调对硬件的理解。你要知道你的计算单元有几个核,每个核的局部存储有多大,数据在DRAM和片上存储之间怎么搬运最快,如何做数据切分和流水线调度。

// 伪代码示例:NPU算子高性能实现的基本思考方式
// 目标:实现一个卷积算子,适配某款NPU的计算特性
// 核心关注点:数据分块、访存调度、计算流水线

void Conv2d_NPU_Kernel(float* input, float* weight, float* output,
                       int batch, int in_channels, int out_channels,
                       int height, int width, int kernel_size) {
    // Step1: 把输入数据按 计算核数 切块,分发给各计算核
    int core_id = GetCurrentNPUCoreId();
    int block_size = height / NUM_CORES;
    int h_start = core_id * block_size;
    int h_end = h_start + block_size;

    // Step2: 数据从DRAM搬运到片上局部存储(这是性能关键)
    LoadToLocalMemory(input, h_start, h_end);

    // Step3: 避免直接双层for循环算卷积,先做im2col变换
    // 让矩阵乘法尽可能使用向量计算单元
    Im2colTransform(input, h_start, h_end);

    // Step4: 调用向量化矩阵乘计算单元
    VectorMatMul(input_block, weight, output_block,
                 block_size, in_channels * kernel_size * kernel_size,
                 out_channels);

    // Step5: 结果写回DRAM
    StoreFromLocalMemory(output, h_start, h_end);
}

这个伪代码想表达的是一个核心思想:在AI芯片上写算子, 95%的时间不是在写数学计算,而是在和存储体系和数据搬运做斗争 。谁把数据流动安排得最合理,谁就拿到了性能优势。

3.2 第二层:运行时调度与任务下发

芯片上的计算单元不会自动开始工作,需要一个运行时(Runtime)来承接上层推理引擎发来的任务,把它翻译成硬件能理解的指令序列,并安排计算单元、内存、DMA通道等资源。

这里涉及到的很多概念,跟做后端服务的开发者有相似之处,比如调度队列、资源池、任务依赖、同步与异步。差异在于,你调度的对象不是微服务,而是 计算核、DMA通道、片上存储这些细粒度硬件资源

// 伪代码示例:AI芯片Runtime的任务调度骨架
// 文件路径:runtime/task_scheduler.cpp

struct NPUTask {
    int task_id;
    int core_mask;          // 需要哪些计算核
    int input_addr;         // 输入数据地址
    int output_addr;        // 输出数据地址
    int weight_addr;        // 权重地址
    bool is_sync;           // 是否同步执行
};

class NPURunner {
public:
    int Submit(const NPUTask& task) {
        // 1. 校验任务合法性:地址对齐、计算核编号是否越界
        ValidateTask(task);
        // 2. 分配DMA通道,准备数据搬运
        int dma_channel = AllocateDMAChannel();
        // 3. 下发计算指令到指定计算核
        DispatchComputeCommand(task);
        // 4. 无需等待硬件完成,立即返回,实现异步执行
        return task.task_id;
    }

    void Synchronize() {
        // 等待所有已下发任务执行完成
        WaitForAllTaskDone();
    }
};

上层AI框架调用时,一般会走这样一个链路:

# AI框架侧调用NPU的伪代码
import torch_npu  # 假设场景:通过桥接层调用NPU

input_tensor = torch.randn(1, 3, 224, 224).to("npu")
model = ResNet18().to("npu")
output = model(input_tensor)  # 这里的调用链:
# PyTorch -> 图优化 -> 算子分发 -> NPU Runtime -> 驱动 -> 硬件

3.3 第三层:与上游AI框架的适配

现在的AI生态不是从零开始的。PyTorch、TensorFlow已经占据主导,任何人想做AI芯片,都不能忽略兼容性问题。如果开发者用PyTorch训练好的模型,无法在你的芯片上跑,那么芯片性能再强也卖不出去。

所以AI芯片公司通常会做一层框架适配,让PyTorch的 Tensor 可以落在NPU上,让 torch.nn.Module 能调用NPU算子。这件事的技术深度很高,因为它涉及对PyTorch底层设备分发机制的理解。

简单来说是这样一个逻辑:

# 通过自定义设备类型接入PyTorch的伪代码结构
# 实际工程里会实现更复杂的Device/Hook机制
class NPUDevice:
    def __init__(self):
        self.device_type = "npu"

    def can_access(self, tensor):
        # 判断tensor是否在NPU显存上
        return tensor.device.type == self.device_type

    def copy_tensor_to_device(self, tensor):
        # CPU Tensor -> NPU Tensor
        return tensor.npu()

# 在模型训练时,只需要把模型和数据迁移到npu设备
model = model.to("npu")
data = data.to("npu")

3.4 这一层工作的核心困难

如果总结一下AI芯片驱动开发的难点,可以归纳为三点:

第一, 你必须同时理解算法、框架、编译原理和计算机组成原理 。只会写pytorch脚本远远不够,只懂内核驱动也不够,你必须能够在四个层次之间来回跳转,知道问题出在前端、中端、后端还是硬件层。

第二, 性能优化的瓶颈往往不是计算本身,而是访存 。同样一个算子,实现方式不同,性能差距可能是几十倍。有时候仅仅因为把数据访问顺序调整了一下,性能就翻倍了。

第三, 调试工具相对缺乏 。在CPU上写代码有gdb、有IDE,在GPU上有CUDA的调试分析工具,但AI芯片的软件栈成熟度参差不齐,很多问题要靠打开日志看一层层堆栈,甚至直接看硬件计数器,这非常考验耐心。

4. 为什么AI芯片创业会出现“00后”也能做的窗口期

讲完驱动开发的技术细节,回到开头那个新闻:00后辍学做AI芯片,估值223亿元。这个“为什么能”的解释,不是“天才少年”,而是 AI芯片领域的技术栈正在经历一次平台式重构

我把这个过程分为三个阶段来理解。

4.1 早期:大厂垄断阶段

在AI芯片发展的早期,主要玩家是Google、NVIDIA、Intel这些巨头。研发一颗芯片需要几百人团队,流片成本极高,软件生态要自己从零搭建。那个阶段,创业公司几乎无法入局。

4.2 中期:IP和工具链成熟阶段

随着Arm、RISC-V等IP授权模式成熟,以及EDA工具链逐步完善,芯片设计的“前端成本”被显著拉低。一些创业公司开始能够基于成熟IP做SoC集成,把主要精力放在差异化的AI计算引擎上,而不需要从指令集、CPU核开始造轮子。

4.3 当前:算法与场景定义芯片阶段

到了现在,一个更重要的变化发生了: AI的应用场景变得极其细分 。端侧推理、自动驾驶、边缘计算、生成式AI,这些场景对芯片的需求各不相同。有的要求极低功耗,有的要求高吞吐量,有的要求低延迟,有的要求特定精度。

这就意味着,芯片设计不再是一张通用的“标准答案”,而是越来越像“解题思路的竞争”。创业团队如果对某一个场景理解得足够深,知道这个场景下的模型结构长什么样、数据流有什么特点、瓶颈在哪里,就有机会用更小的团队、更灵活的架构,做出针对这个场景的专用AI芯片。

这种“从场景反推芯片架构”的思维方式,恰恰是年轻开发者更容易掌握的。因为他们的算法经验更贴合最新的模型生态,没有被过去十年硬件设计思维固化。这一点,确实降低了AI芯片创业的“经验门槛”。

但要注意,这不等于“只要懂算法就能造芯片”。它仍然是极其硬核的领域,只是在 架构定义、软硬件协同设计、生态适配 这些环节上,给了新玩家更多参与机会。

5. 想切入AI芯片赛道,普通开发者应该学什么

我想上面的分析已经说明了一个关键判断:对于绝大多数CSDN读者来说,直接创业做AI芯片不现实,但切入AI芯片相关的软件栈开发,是完全可行的路径。甚至可以说, AI芯片行业现在最缺的,不是硬件设计人才,而是软件栈人才

从产业现状来看,芯片流片之后,软件适配周期往往比芯片设计周期还要长。各家AI芯片公司的软件栈,从编译器、Runtime到上层框架适配,都需要大量的人力。而且,这部分工作对“芯片架构”和“算法模型”都要有理解,门槛不低,薪资自然也不低。

下面给出一条可执行的学习路径。

5.1 打好计算机体系结构基础

无论你是做上层应用的,还是做算法的,要想进入AI芯片领域, 计算机组成原理、操作系统、编译原理这三门课的基础必须补起来 。尤其是存储层次、缓存一致性、中断、DMA这些概念。这些在普通应用开发中不一定常用,但在AI芯片开发中是基本功。

5.2 掌握一个AI框架的底层机制

不要停留在“会调用PyTorch训练模型”的层面。要深入理解PyTorch的扩展机制:

  • torch.autograd.Function 如何自定义算子。
  • torch.device 的分发逻辑。
  • torch.nn.Module 注册到自定义设备的流程。
  • 算子是如何被注册到 torch.ops 中的。

写一个简单的自定义设备或自定义算子,是最直接的入门方式。

# 文件路径:custom_op_demo.py
# 演示如何用PyTorch自定义一个算子(CPU实现)

import torch
from torch.autograd import Function


class MyScaledAddFunction(Function):
    @staticmethod
    def forward(ctx, input_tensor, scale):
        ctx.save_for_backward(input_tensor, scale)
        return input_tensor * scale + 1.0

    @staticmethod
    def backward(ctx, grad_output):
        input_tensor, scale = ctx.saved_tensors
        grad_input = grad_output * scale
        return grad_input, None


def my_scaled_add(input_tensor, scale):
    return MyScaledAddFunction.apply(input_tensor, scale)


if __name__ == "__main__":
    x = torch.randn(4, 4, requires_grad=True)
    y = my_scaled_add(x, 2.0)
    y.sum().backward()
    print(y)
    print(x.grad)

这段代码不是真正的AI芯片开发,但它能让你理解“自定义算子如何接入框架”这件事,理解之后再看NPU算子接入的流程,会顺畅很多。

5.3 了解AI编译技术

现代AI芯片几乎都要依赖AI编译器来完成“从模型到硬件指令”的映射。主流的思路包括:

  • 图优化:对神经网络计算图做融合、精简。
  • 算子选择:为每个算子挑选最优实现。
  • 调度与代码生成:把算子映射到具体硬件指令。

推荐从TVM或MLIR入手。

# 文件路径:tvm_demo.py
# 演示TVM的基本工作流程:定义计算 -> 调度 -> 编译 -> 运行

import tvm
from tvm import te

# 定义一个简单的矩阵乘法计算
n = 1024
A = te.placeholder((n, n), name="A")
B = te.placeholder((n, n), name="B")
k = te.reduce_axis((0, n), name="k")
C = te.compute((n, n), lambda i, j: te.sum(A[i, k] * B[k, j], axis=k), name="C")

# 创建调度
s = te.create_schedule(C.op)

# 编译成可执行模块
mod = tvm.build(s, [A, B, C], target="llvm")

# 运行验证
import numpy as np
a_np = np.random.rand(n, n).astype("float32")
b_np = np.random.rand(n, n).astype("float32")
c_np = np.zeros((n, n), dtype="float32")
mod(tvm.nd.array(a_np), tvm.nd.array(b_np), tvm.nd.array(c_np))

# 对比结果
expected = np.dot(a_np, b_np)
print("结果验证:", np.allclose(c_np, expected, atol=1e-3))

TVM的价值在于,它的“计算定义与调度分离”的编程模型,天然适合理解AI芯片软件栈。你写一份计算定义,可以针对不同的硬件后端生成不同的代码,这正是AI芯片开发中的核心思想。

5.4 找一个开源的AI芯片软件栈做实战

理论学得再多,不如动手跑通一个真实项目。以下方向可供参考:

  • 在RISC-V模拟器上运行一个简单的NPU算子。
  • 用QEMU模拟的嵌入式环境实现一个简单的AI推理程序。
  • 研究开源AI芯片项目(比如一些开源的NPU IP核)自带的软件栈。
  • 为一个开源推理引擎添加一个新的后端。

这个阶段的重点不是“做出多厉害的性能优化”,而是 完整理解从模型到算子的执行链路,跑通一遍,知道哪个环节是干什么的

6. AI芯片开发中的常见误区与事实澄清

这个领域由于风口属性强,网络上流传着不少理解偏差。我把常见的误解集中澄清一下。

6.1 误解一:AI芯片 = 硬件设计,和软件关系不大

这是最容易出现的误区。事实是,AI芯片的价值几乎完全依赖软件栈的完成度。一颗AI芯片如果没有配套的编译器、Runtime、算子库、框架适配,就像没有操作系统的电脑,根本无法让用户使用。

6.2 误解二:AI芯片的算力越强越好

算力只是芯片能力的一个维度,真正决定用户体感的是 可用算力 。有些芯片理论算力很高,但因为软件优化不到位,实际能发挥出来的性能只有理论值的30%。反而是一些芯片虽然理论算力不高,但算子优化成熟,实测表现反而领先。

6.3 误解三:驱动开发 = 写寄存器

AI芯片驱动开发的工作已经大范围上移到“软硬件协同设计”层面。写寄存器只是最底层的执行动作,更多时间是在设计调度策略、做性能剖析、调算子映射策略。

6.4 误解四:学好PyTorch就能做AI芯片

会用PyTorch只是第一步。AI芯片开发需要的是对计算机系统、算法框架、编译原理的综合理解。如果让我排序,计算机体系结构的权重甚至高于算法本身。

6.5 误解五:辍学做芯片说明芯片行业门槛低

这个新闻很容易让人得出错误结论。更合理的解读是:行业处于“架构创新+场景机会”的窗口期,给了新团队切入空间,但技术门槛并没有降低,只是门槛分布的位置发生了变化。

7. 面向AI芯片开发者的实践建议与工程经验

如果你已经决定深入这个方向,这几条建议是从工程实践角度提炼的,值得收藏。

7.1 先跑通最小链路,再考虑性能优化

在AI芯片开发中,最大的工程陷阱是 一开始就盯着性能优化 。正确做法是先让任何实现能跑出正确结果,哪怕是慢的、简单的实现,先把完整链路打通。之后再逐步调优,每一步都做性能对比和结果验证。

7.2 建立“数据搬运优先”的心智模型

AI芯片开发的性能瓶颈,绝大多数绕不开“数据搬运”。计算核在绝大多数时候不是算不过来,而是在等数据。任何时候做算子优化,优先思考:

  • 数据在DRAM和片上存储之间搬运了哪些?
  • 有没有办法提高数据复用?
  • 能不能用DMA异步搬运覆盖计算时间?

这个心智模型比你会多少指令集都重要。

7.3 重视正确性验证,建立可回归的测试集

AI芯片软件栈牵涉的层次很多,任何一层出错,最后跑到应用层都可能是“结果偏一点点”。建议从第一天开始就建立回归测试集,每次改动算子或调度策略,都要用连续的输入验证,不能只看一两个案例的通过情况。

# 文件路径:test_ops.py
# 建立算子正确性回归测试模板

import torch
import pytest


class TestConv2dCorrectness:
    def test_conv2d_small_case(self):
        input_tensor = torch.randn(1, 3, 32, 32)
        conv = torch.nn.Conv2d(3, 16, kernel_size=3, padding=1)
        # 假设这里调用的是NPU算子实现
        output_npu = conv(input_tensor.to("npu")).to("cpu")
        output_cpu = conv(input_tensor)
        assert torch.allclose(output_npu, output_cpu, atol=1e-4), \
            "NPU算子结果与CPU结果不一致,请检查算子实现"

7.4 用“分层归因”排查问题

AI芯片软件栈的运行链路很长。排查问题时,切忌在整个链路里瞎猜。建议建立分层排查意识:

  • 模型层出错:检查模型定义和输入数据预处理。
  • 图优化层出错:关闭图优化,对比关闭前后的结果。
  • 算子层出错:单独调用该算子,与CPU结果做对比。
  • Runtime层出错:打开详细日志,检查任务下发时序。
  • 硬件层出错:查看硬件计数器、中断状态、寄存器配置。

7.5 关注生态兼容,而不是单一产品

选择研究哪个AI芯片方向时,不要只看芯片本身跑分,更要关注它的软件生态。一个软件生态活跃的芯片平台,会让你学到更多通用的开发能力;一个封闭的平台,即使性能亮眼,对你个人能力的可迁移性也帮助有限。

8. 总结与后续学习方向

回到开头那条新闻。00后辍学做AI芯片,估值223亿元,这件事最值得技术人关注的不是“辍学”的话题性,而是它揭示的产业趋势: AI芯片已经进入“算法定义架构、软件决定成败”的阶段。

芯片设计本身仍然是一件极难、极硬核的事情,但AI芯片的软件栈正在为大量开发者打开入口。如果你有计算机体系结构基础,又熟悉AI框架和模型生态,你完全可以在这个领域找到自己的位置。行业缺的从来不是吃瓜的人,而是能动手的人。

对于后续的学习方向,我建议从以下几条线推进:

  • 第一,深耕一个主流AI框架,把它的自定义算子、设备扩展、Graph模式吃透。
  • 第二,学习AI编译器,建议从TVM入手,再延伸到MLIR。
  • 第三,补强体系结构基础知识,特别是存储层次和并行计算。
  • 第四,关注开源芯片项目的软件栈,找一个真实项目做贡献或二次开发。

另外,如果你想快速验证自己的兴趣和匹配度,可以先做一个最简单的任务:用PyTorch的 torch.ops 注册一个自定义算子,然后尝试分析它在CPU上的执行性能瓶颈。再逐步移步到TVM,在一个模拟或真实的目标后端上跑通一个完整的推理模型。这个过程走完,你对“AI芯片驱动开发”的理解,就已经超过大多数只有概念认知的人了。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐