国庆节前9月30日 10点01分,DeepSeek 干了件不太上热搜、但可能比发模型更重要的事,DeepSeek 悄无声息地扔出一枚"深水炸弹",一次性开源了面向华为昇腾平台的六大基础设施组件:TileLang、DeepGEMM、DeepEP、TileKernels、FlashMLA、DeepSelect。
翻译成人话就是:DeepSeek 把自己训练大模型用的"锅碗瓢盆",在国产芯片上也做了一套,然后开源了,免费送给全行业用。
DeepSeek瞬间格局拉满了,作为 SmartAdmin 的用户,你可能第一反应是——这跟我一个写 Java + Vue 中后台的有什么关系?别急,看完本文,你大概会改变想法。
一、为什么这件事值得单独说?
因为这是第一次,一家中国头部大模型公司,把在国产芯片上跑通生产级训练的完整底层软件栈,全部开源。
这不是一份 PPT,也不是一个 demo,而是 DeepSeek V4 训练真刀真枪用过的东西。
DeepSeek把"国产算力能不能训练顶级大模型"这个问号,改成了句号。
全球 AI 行业苦英伟达、苦 CUDA 垄断久矣;而现在,又是DeepSeek ,用一行行开源代码,为国产算力趟出了一条康庄大道,致敬DeepSeek。
二、DeepSeek 到底开源了个啥?
AI 模型训练,本质是海量数据计算,跑在算力芯片GPU上,目前用得最多的是英伟达 GPU。
但芯片是硬件,硬件自己不会干活,得有人告诉它怎么算。 这套"告诉它怎么算"的东西,就是基础软件组件。
英伟达最牛的地方不只是先进的芯片,还有它 2006 年就推出了 CUDA,然后围绕 CUDA 用了近二十年把 cuDNN、NCCL、TensorRT 这些配套库、教程、工具、社区等生态全部建起来。
结果是:全世界的 AI 开发者,只要使用英伟达就必须写 CUDA。 换一家芯片,等于让写了十年 Java 的人突然改用汇编重写全部业务代码, 想想这是一件多么难的事情。
DeepSeek 这次开源的,具体如下:
| 层级 | 英伟达生态(NVIDIA) | 国产华为昇腾(Ascend) | 简单概要 |
| 算子 DSL | CUDA | TileLang(昇腾版) | 用简单写法,写出能跑满硬件性能的算子 |
| 通用算子库 | cuBLAS | DeepGEMM | AI 里最核心的"乘法"怎么算最快 |
| 通信库 | NCCL | DeepEP | 几百张卡之间怎么"说话"不堵车 |
| 注意力算子 | FlashAttention | FlashMLA | 超长文本处理更省更快 |
| 向量/访存算子 | CUTLASS | TileKernels | 数据搬进搬出、常规处理 |
| 数据管线 | DALI等 | DeepSelect | 从海量数据里快速挑出要用的 |
两个关键点:
- 这 6 个组件,和 DeepSeek 此前面向英伟达平台的开源组件一一对应,所以现在:英伟达有一份,昇腾现在也一份。
- TileLang 不是纸上谈兵:引用DeepSeek官方原话,它"已承载了 DeepSeek V4 系列模型训练中大部分算子的实现"。
结论:
以前国产芯片是"服务器参数很漂亮,但没人敢往上迁。
现在,DeepSeek 把操作系统、基础库、源代码都开源了,还顺带告诉大家,别的芯片也能照着用。
再次致敬DeepSeek。
三、零基础也能看懂:英伟达CUDA与国产TileLang对比
这一节写给完全没写过算子的同学。核心只有一句话:CUDA相当于手动挡,TileLang相当于自动挡。
如果你写过数据库,这个最好懂:
写 SQL 时,你只写
SELECT ... FROM a JOIN b WHERE ...——你不管数据库先扫哪张表、走不走索引、用不用哈希连接,这些交给查询优化器。写 CUDA 时,相当于你手写执行计划——每一步都得自己安排,写错一处就慢一半,甚至结果错。
TileLang 干的事,就是让你重新回到"写 SQL"这一层:你描述"要算什么、切成多大块",线程怎么排、数据怎么搬、同步插在哪、用哪条硬件指令,全交给编译器。
1、先看下 GPU 软硬件基础
如下图,在GPU内部是:CUDA 的并行执行模型是层次化的,从大到小依次为:Grid→ Block→ Thread。
• Thread(线程):最基础的单个理货员,每个人只负责手头的一件小事(比如扫描一个商品)。
• Block(线程块):由几百个理货员组成的工作小组,组员之间可以交头接耳(共享内存)、互相配合。
• Grid(线程格):整个超市大厂,由无数个工作小组拼成,大家都在同一个大厂里各司其职,共同完成海量的任务。
简单来说:Thread 是单兵作战,Block 是小队协同,Grid 是全军出击。

2、传统 CUDA 代码 VS TileLang 代码 对比
我们用一个最简单的任务:矩阵乘法来做对比。为了加速矩阵乘法,我们通常会使用一种叫 “分块(Tiling)” 的技术。简单来说,就是把一个大矩阵拆成许多个小方块(Tile),一小块一小块地搬进 GPU 的超高速缓存(Shared Memory)里进行计算。
下面我们来看看,为了实现这个“分块矩阵乘法”,传统 CUDA 和新一代的 TileLang 分别是怎么写代码的。
1. 传统 CUDA 代码(手动挡,硬核)
在 CUDA 中,程序员需要像一个硬核的“端茶倒水工”,手动控制线程怎么走、数据怎么搬、什么时候原地等待(同步)。
// CUDA 核函数:分块矩阵乘法
__global__ void matrixMulCUDA(float* A, float* B, float* C, int N) {
// 1. 定义两个小方块(Tile),放在 GPU 的高速共享内存里
__shared__ float subA[BLOCK_SIZE][BLOCK_SIZE];
__shared__ float subB[BLOCK_SIZE][BLOCK_SIZE];
int row = blockIdx.y * BLOCK_SIZE + threadIdx.y;
int col = blockIdx.x * BLOCK_SIZE + threadIdx.x;
float value = 0.0;
// 2. 循环遍历大矩阵,把数据一小块一小块地搬进来
for (int m = 0; m < N / BLOCK_SIZE; ++m) {
// 【手动搬运】每个线程负责把大内存(Global Memory)里的一个点搬到小方块里
subA[threadIdx.y][threadIdx.x] = A[row * N + (m * BLOCK_SIZE + threadIdx.x)];
subB[threadIdx.y][threadIdx.x] = B[(m * BLOCK_SIZE + threadIdx.y) * N + col];
// 【手动同步】必须等所有线程都搬完了,才能开始算,否则数据会乱掉!
__syncthreads();
// 【计算】在高速小方块里进行乘加运算
for (int k = 0; k < BLOCK_SIZE; ++k) {
value += subA[threadIdx.y][k] * subB[k][threadIdx.x];
}
// 【再次手动同步】必须等大家都算完了,才能让下一批数据进来覆盖这个小方块
__syncthreads();
}
// 3. 把最终算好的结果写回大内存
if (row < N && col < N) {
C[row * N + col] = value;
}
}
特点:
• 指针计算密密麻麻(如 row * N + (m * BLOCK_SIZE + threadIdx.x)),一步算错,满盘皆输。
• 必须小心翼翼地写 __syncthreads()(线程同步)。如果漏掉了,或者写错位置,程序就会遭遇“数据竞争”,算出来的结果全是乱码,而且极难排查。
2. TileLang 代码(自动挡,现代)
TileLang 是专为分块计算设计的语言(通常嵌入在 Python 中)。它把矩阵和“小方块(Tile)”当成了基本对象。你只需要告诉它“我想怎么切块”,剩下的搬运和同步,它自动帮你搞定。
// python
# TileLang 函数:分块矩阵乘法
@tl.kernel
def matrix_mul_tilelang(A, B, C, N: tl.int32):
# 1. 直接声明我们要处理的“分块(Tile)”形状
# 比如每次处理 BLOCK_SIZE x BLOCK_SIZE 的小方块
tile_A = tl.layout((BLOCK_SIZE, BLOCK_SIZE))
tile_B = tl.layout((BLOCK_SIZE, BLOCK_SIZE))
# 2. 只要用高级的算子,一句话就能把数据从“大内存”加载到“小方块”
# TileLang 会在底层自动帮你处理线程分配和写回
for m in range(0, N, BLOCK_SIZE):
# 【高级搬运】直接加载一个切片(Block)
local_A = tl.load(A[tl.pid(0) * BLOCK_SIZE : (tl.pid(0) + 1) * BLOCK_SIZE, m : m + BLOCK_SIZE])
local_B = tl.load(B[m : m + BLOCK_SIZE, tl.pid(1) * BLOCK_SIZE : (tl.pid(1) + 1) * BLOCK_SIZE])
# 【高级计算】直接让两个小方块做矩阵乘法(tl.gemm 是一条指令)
# 底层自动处理了同步(__syncthreads),程序员根本不需要关心!
local_C += tl.gemm(local_A, local_B)
# 3. 一句话把算好的大方块存回去
tl.store(C[tl.pid(0) * BLOCK_SIZE :, tl.pid(1) * BLOCK_SIZE :], local_C)
特点:
- 没有复杂的指针和下标计算,用类似 Python 切片语法(
A[start:end])就能操作数据。 - 没有
__syncthreads()! 因为 TileLang 知道你在做分块计算,它在编译成底层机器码时,会自动帮你把同步指令插到最完美的位置。 - 代码量大幅减少,逻辑非常清晰。
两者对比
| 特性 | CUDA (传统) | TileLang (现代) |
|---|---|---|
| 驾驶体验 | 手动挡老卡车。离合、换挡全靠手动,技术不好容易熄火(死机/算错)。 | 自动挡新能源车。设定好目的地(切块大小),一脚油门(tl.gemm)自动驾驶。 |
| 数据搬运 | 必须由每个线程一个点一个点地去大内存搬运。 | 支持整块(Tile)直接加载和存储。 |
| 线程同步 | 必须手动写 __syncthreads(),多一个少一个都会崩溃。 |
全自动。编译器自动分析数据依赖并帮你同步。 |
| 硬件优化 | 想要达到极高速度,需要手写非常复杂的特定硬件指令(如 Tensor Core)。 | 封装了高级算子(如 tl.gemm),自动在底层调用最强的硬件加速。 |
四、行业影响:这波开源接下来会怎么变?
跳出 DeepSeek 本身,我觉得这次开源对整个行业至少有三个层面的冲击。
冲击一:国产算力的"软件短板"被实质性补上了一块。
过去几年,"国产 GPU 硬件参数不输英伟达,但生态差一大截"几乎是共识。DeepSeek 这套组件开源后,昇腾在大模型训练这个最硬核的场景里,第一次拥有了对标 CUDA 生态的"生产级"软件栈,这会显著加快其他国产芯片厂商跟进的节奏。
冲击二:中小 AI 公司的算力选型自由度大幅提升。
以前创业公司做 AI,基本没有第二条路——融资、买英伟达、烧钱。现在多了一个真实可选项:昇腾 + DeepSeek 开源栈。哪怕只是用来做推理集群、做垂直模型微调,成本结构都会明显变化。
冲击三:AI 编程语言的"战国时代"开启。
TileLang、Triton、Mojo、Ascend C、CUDA……未来几年,AI 底层语言赛道会非常热闹。这对开发者是好事,能写高性能算子、懂国产芯片调优的工程师本就极少,需求一上来,价格必然动,又一波新行情。
五、对大家的影响:机会藏在哪里
终于聊到跟你我最相关的部分了,咱们大多数读者是做互联网或者企业级应用的的 Java、Go、 前端等工程师,平时不训练模型,模型层的红利吃不到,但"让 AI 在企业里真正跑起来"的红利,咱们还是可以分层预估下机会的。
1) 短期(3-6 个月):不用做任何事,但可以开始关注
- Java/go/python + Vue/React/Uniapp 等技术栈不会因此改变;
- 但可以花半天时间把 TileLang 仓库代码下载下来,多看看,有机会的跑一遍,提前建立知识储备和认知提升。
2) 中期(6-18 个月):AI 成本会显著下降,你能接的单子变多了
这个是重点:过去在系统里想加个"智能摘要""智能问答""文档理解",走的路径通常是:调 OpenAI/文心/通义 API → 按 token 付费 → 数据出内网 → 采购。
未来的可选路径会变成:
- 私有化部署一个开源大模型(如 DeepSeek V4 蒸馏版);
- 跑在国产算力集群上(昇腾 + DeepSeek 开源栈);
3) 长期(1-3 年):技能储备的方向要重新校准
如果当前你已经跻身 AI 相关方向的同学,或者你自己在考虑转型,几个建议:
- 别只押注 CUDA:TileLang 值得投入学习时间,它是跨硬件的;
- 关注国产算力生态:昇腾、寒武纪、摩尔线程、燧原……未来会有大量企业级需求;
- AI 工程化能力 > 模型训练能力:对绝大多数企业团队来说,会用比会训更重要;
- 业务理解 + AI 落地能力,才是最稀缺的组合。
- 机会不在写算子,在最后一公里,国产算力进企业内网,需求会落到应用层,让 AI 在企业系统里真正可用的那部分,正是我们这拨人的主场。
六、3 条结论,值得转给你的同事
如果这篇你只记三件事,记这三个:
1)这次开源的是“让人能用起来”的那一层,不是模型。 6 个组件(TileLang / DeepGEMM / DeepEP / TileKernels / FlashMLA / DeepSelect)与 DeepSeek 在英伟达平台上的开源组件一一对应——以前是“英伟达有一份”,现在昇腾也有了一份。按 DeepSeek 官方说法,TileLang“已承载 V4 系列模型训练中大部分算子的实现”。这不是 demo,是生产级。
2)卡住国产算力的从来不是芯片,是“迁移要重写一遍”。 CUDA 2006 年就发布,用近二十年把 cuDNN、NCCL、TensorRT 和社区踩坑经验堆成了护城河。TileLang 做的事,是把“手写执行计划”退回“写 SQL”:你只描述要算什么、切成多大块,线程怎么排、数据怎么搬、同步插在哪,全交给编译器。迁移成本因此从“重写一遍”压向“改几行”。
3)不训练模型的人,机会不在写算子,在最后一公里。
| 时间窗口 | 能做什么 |
|---|---|
| 短期(3-6 个月) | Java / Go / 前端技术栈不会因此改变;值得花半天把 TileLang 仓库拉下来跑一遍,先建立认知储备。 |
| 中期(6-18 个月) | AI 成本显著下降:“智能摘要 / 智能问答 / 文档理解”这类需求,路径会从“调 API、按 token 付费、数据出内网”,变成“私有化部署开源模型 + 国产算力集群上”,你能接的单子变多。 |
| 长期(1-3 年) | 别只押注 CUDA,TileLang 是跨硬件的;AI 工程化能力比模型训练能力更重要;业务理解 + AI 落地能力,才是最稀缺的组合。 |
你怎么看这次开源?你们公司的 AI 服务现在跑在什么卡上? 留言聊聊。
关注「六边形工程师」,关注 AI发展与AI变现、关注健康问题,分享AI经验、互联网产品经验、技术经验,不断踩坑与爬坡中。
下一篇预告:《SmartAdmin 里 90% 人没写对的 Controller 层》——回到你每天都在写的那一层,把最常见的几个坑一次说清。
(本文事实部分依据 DeepSeek 2026 年 9 月 30 日官方公众号开源公告、TileLang 官方仓库及论文信息;CUDA 示例为典型教学写法示意;分析与判断部分为作者观点。)