昇腾生态实战
「纸上得来终觉浅,绝知此事要躬行。」—— 陆游
阶段目标
这是整条学习路径中最核心的实战阶段。前四个阶段你在建立知识和能力,这个阶段你要把它们落到昇腾硬件上。
学完这个阶段,你将能够:
- 理解昇腾 NPU 与 NVIDIA GPU 的差异
- 了解昇腾硬件产品线(Atlas 系列)
- 掌握昇腾软件栈全貌(CANN → PyTorch/MindSpore → MindIE/MindSpeed)
- 在昇腾上完成模型推理部署
- 在昇腾上完成大模型微调
- 进行基本的性能分析和调优
- 规划昇腾认证路径
💡 学习建议
这个阶段必须动手。如果你没有实体昇腾设备,可以使用昇腾云 ModelArts 上的昇腾算力。光看文档是学不会的,一定要跑通完整的流程。
第一部分:昇腾 vs NVIDIA GPU
为什么要了解两者的差异?
如果你之前学的是 PyTorch + NVIDIA GPU,转到昇腾时需要理解:
不是简单换个硬件,而是换一套生态:
NVIDIA 生态:
GPU 硬件 → CUDA 驱动 → cuDNN → PyTorch → 应用
昇腾生态:
NPU 硬件 → CANN → PyTorch-NPU / MindSpore → 应用
大部分应用层代码不用改,但底层逻辑和工具链不同。架构差异
| 维度 | NVIDIA GPU | 昇腾 NPU |
|---|---|---|
| 架构类型 | GPU(图形处理器) | NPU(神经网络处理器) |
| 设计理念 | 通用并行计算 | AI 专用加速 |
| 核心计算 | CUDA Core / Tensor Core | AI Core(Cube/Vector) |
| 编程模型 | CUDA | CANN(Ascend C) |
| 优势 | 生态成熟、通用性强 | AI 算力效率高、能效比好 |
| 生态 | 全球最成熟 | 中国本土生态,快速成长 |
计算架构对比
NVIDIA GPU 架构(如 A100):
┌───────────────────────────┐
│ GPU 芯片 │
│ ┌──────┐ ┌──────┐ │
│ │SM 0 │ │SM 1 │ ... │ Streaming Multiprocessor
│ │Core× │ │Core× │ │ 每个 SM 包含多个 CUDA/Tensor Core
│ └──────┘ └──────┘ │
└───────────────────────────┘
昇腾 NPU 架构(如 Ascend 910):
┌───────────────────────────┐
│ NPU 芯片 │
│ ┌──────┐ ┌──────┐ │
│ │AI Core│ │AI Core│ ... │ 每个 AI Core 包含
│ │Cube │ │Cube │ │ Cube(矩阵运算)+
│ │Vector│ │Vector│ │ Vector(向量运算)
│ └──────┘ └──────┘ │
└───────────────────────────┘生态差异
| 层次 | NVIDIA | 昇腾 |
|---|---|---|
| 硬件 | GPU(A100/H100等) | NPU(Ascend 910/310等) |
| 驱动 | CUDA Driver | NPU Driver |
| 计算库 | cuDNN、cuBLAS | CANN(含算子库) |
| 框架适配 | PyTorch 原生 | PyTorch-NPU 适配层 / MindSpore 原生 |
| 推理引擎 | TensorRT、vLLM | MindIE |
| 训练加速 | Megatron、DeepSpeed | MindSpeed |
| 开发语言 | CUDA C++ | Ascend C |
迁移成本
好消息:
✅ PyTorch 代码大部分可以复用(通过 PyTorch-NPU)
✅ 模型结构和训练逻辑不用大改
✅ Hugging Face 模型大部分可在昇腾上运行
需要注意:
⚠️ 某些 CUDA 专用的算子可能不支持,需要替代方案
⚠️ 性能调优方法不同
⚠️ 调试工具和日志系统不同
⚠️ 部分模型需要额外适配第二部分:昇腾硬件认知
昇腾芯片系列
| 芯片 | 定位 | 算力 | 典型场景 |
|---|---|---|---|
| Ascend 910 | 训练芯片 | 最大约 320 TFLOPS FP16 | 大模型训练、大规模训练 |
| Ascend 910B | 训练芯片(升级版) | 高(较 910 提升) | 大模型训练(当前主力) |
| Ascend 310 | 推理芯片 | 最大约 22 TOPS INT8 | 边缘推理、轻量推理 |
| Ascend 310P | 推理芯片(升级版) | 中高 | 推理服务 |
Atlas 硬件产品线
Atlas 是基于昇腾芯片的硬件产品系列:
| 产品 | 形态 | 芯片 | 适用场景 |
|---|---|---|---|
| Atlas 200 DK | 开发者套件 | Ascend 310 | 边缘开发、学习实验 |
| Atlas 300I/T | PCIe 加速卡 | Ascend 910/310 | 服务器推理/训练 |
| Atlas 800 | 服务器 | 多颗 Ascend 910 | 数据中心训练 |
| Atlas 900 | 训练集群 | 大量 Ascend 910 | 超大规模训练 |
| Atlas 500 | 边缘设备 | Ascend 310 | 边缘推理 |
选择指南:
学习/实验 → Atlas 200 DK 或 云上 ModelArts
推理服务 → Atlas 300I(推理卡)
模型训练 → Atlas 300T(训练卡)或 Atlas 800
大规模训练 → Atlas 800/900 集群NPU 概念
NPU = Neural Processing Unit(神经网络处理器)
与 GPU 的区别:
GPU:通用并行处理器,图形渲染 + 通用计算 + AI
NPU:专门为神经网络计算设计的处理器
NPU 的优势:
1. AI 计算效率更高(专门的矩阵运算单元)
2. 能效比更好(单位功耗的算力更高)
3. 针对AI工作负载优化第三部分:软件栈全貌
业界主流 AI 全栈系统
在看昇腾自身的软件栈之前,先从业界视角看清一套完整的 AI 全栈系统是如何从底层硬件逐层支撑到行业应用的。昇腾软件栈正是这套五层架构中的一环,理解每一层的作用,能帮你在后续的学习中准确定位各个组件所处的位置。
业界主流 AI 全栈系统通常划分为五层:
| 层 | 功能 | 说明 |
|---|---|---|
| AI 芯片和硬件 | 提供算力底座 | 昇腾 NPU、GPU 等 |
| 芯片使能 | 屏蔽硬件复杂性,软硬结合发挥硬件性能,帮助开发者快速开发基础算子 | 昇腾 CANN |
| AI 框架 | 使能开发者高效开发、训练和部署模型 | TensorFlow、PyTorch、MindSpore 等 |
| 应用使能 | 凝聚成熟经验、沉淀最佳实践,加速应用开发,填平落地鸿沟 | AI 平台(ModelArts 等) |
| 行业应用 | 面向具体行业场景 | 智慧交通、智慧金融、智能制造、平安城市、视频分析、搜索推荐 |
有了这幅业界全景图,下面我们聚焦到昇腾:昇腾的软件栈是一个分层结构,从底层到上层:
┌──────────────────────────────────────────────────────┐
│ 应用层 │
│ 你的 AI 应用 / 大模型服务 │
├──────────────────────────────────────────────────────┤
│ 框架层 │
│ ┌──────────────┐ ┌──────────────┐ │
│ │PyTorch-NPU │ │ MindSpore │ │
│ │(PyTorch适配) │ │ (原生框架) │ │
│ └──────┬───────┘ └──────┬───────┘ │
├───────────┼───────────────────┼──────────────────────┤
│ │ 中间层 │ │
│ ▼ ▼ │
│ ┌──────────────────────────────┐ │
│ │ MindIE / MindSpeed │ │
│ │ (推理引擎) (训练加速) │ │
│ └──────────────┬───────────────┘ │
├───────────────────┼──────────────────────────────────┤
│ │ 异构计算架构 │
│ ▼ │
│ ┌─────────┐ │
│ │ CANN │ Compute Architecture for │
│ │ │ Neural Networks │
│ └────┬────┘ │
├───────────────────┼──────────────────────────────────┤
│ 驱动层 │
│ NPU Driver │
├──────────────────────────────────────────────────────┤
│ 硬件层 │
│ Ascend NPU │
└──────────────────────────────────────────────────────┘CANN(核心中间件)
CANN(Compute Architecture for Neural Networks)是昇腾的异构计算架构,相当于 NVIDIA 的 CUDA + cuDNN。
CANN 包含:
- 算子库:高效的 AI 算子实现
- 图编译引擎:将计算图编译为 NPU 可执行代码
- 运行时:管理 NPU 资源和执行
- Ascend C:底层算子开发语言框架层
PyTorch-NPU
PyTorch-NPU 是 PyTorch 在昇腾上的适配层:
# 原来的 PyTorch 代码
import torch
model = Model().cuda() # GPU
tensor = tensor.cuda() # GPU
# 昇腾上的代码(改动很小)
import torch
import torch_npu # 导入适配模块
model = Model().npu() # NPU
tensor = tensor.npu() # NPU
# 大部分代码完全一样!MindSpore
MindSpore 是开源框架,对昇腾有原生支持:
PyTorch-NPU:通过适配层使用昇腾 → 兼容性好,但可能有性能损耗
MindSpore:原生支持昇腾 → 性能最优,但需要学习新 API业界主流 AI 框架对比
前面介绍了昇腾生态自己的框架适配,这里再把视野拉回整个业界,横向看看主流训练框架与推理框架各自的定位。理解这些对比,能帮你在实际选型时做出更贴合项目需求的判断。
训练框架:
| 框架 | 发行公司 | 特点 |
|---|---|---|
| TensorFlow | Google(2015.11 开源) | TF1 静态图效率高;TF2 默认 eager 模式,推荐 Keras,v2.2 起支持 Profiler |
| PyTorch | Facebook(2017.01) | 动态图,支持 Tensor/Numpy 互转、ONNX、Tensorboard、分布式训练 |
| MindSpore | 开源(2019.08,2020.03 开源) | 全场景 AI 框架,支持可视化、二阶优化、量化训练、混合异构、Serving、MindIR、调试器 |
| PaddlePaddle | 百度(2016.08 开源) | 国内最早,v1.1 大规模异步分布式,PaddlePaddle 3.0 提供 VisualDL/PARL/AutoDL/EasyDL/AIStudio |
推理框架:
| 框架 | 发行方 | 特点 |
|---|---|---|
| TensorRT | NVIDIA(2017.09) | 高性能推理 SDK,含运行时与推理优化器,用于 CV 与推荐系统 |
| MNN | 阿里(2019.05 开源) | 全平台轻量级推理引擎,解决移动/嵌入式设备推理训练问题 |
| vLLM | UC 伯克利(2023.06 开源) | 最受欢迎推理引擎,提出 PagedAttention 显存管理,显存利用率高、吞吐数倍;支持多生态,并有 vLLM-Ascend 昇腾 NPU 生态 |
推理与训练加速
了解业界对比后,回到昇腾自身的加速工具箱:
| 工具 | 用途 | 说明 |
|---|---|---|
| MindIE | 推理加速引擎 | 大模型高效推理,类似 TensorRT |
| MindSpeed | 训练加速库 | 大模型分布式训练,类似 Megatron |
AI 平台层
在五层全栈架构里,AI 平台属于最上层的「应用使能」层,它把数据标注、模型构建、模型训练、模型部署到模型推理的整个生命周期串起来,帮助开发者把模型能力真正落到业务上。业界几个主流 AI 平台对比如下,其中昇腾云 ModelArts 正是昇腾生态侧的应用使能平台。
覆盖数据标注 → 模型结构 → 模型训练 → 模型部署 → 模型使用/推理:
| 平台 | 厂商 | 特点 |
|---|---|---|
| 百度 BML / EasyDL | 百度 | BML 全流程开发平台(高级用户);EasyDL 零门槛(新手),支持到数据训练级别 |
| 腾讯 TI-ONE | 腾讯 | 一站式机器学习平台,可视化 + AI 算法模板;预置模型较少、深度学习模型较少 |
| ModelArts | 昇腾云 | 数据标注到推理全流程,「自动学习」对标 EasyDL;支持多计算引擎与分布式训练 |
| Amazon SageMaker | AWS | 全面 AI 工具,含标注、数据集管理、建/训/部署;多计算引擎、预置算法与可视化 |
第四部分:实战路径
第一步:环境搭建
目标:在昇腾环境中搭建可用的开发环境
需要安装:
1. NPU 驱动
2. CANN 工具包
3. Python 环境
4. PyTorch + torch_npu(或 MindSpore)
验证:
运行 npu-smi info → 能看到 NPU 信息
运行简单 PyTorch 代码 → 能在 NPU 上计算详细的环境搭建步骤请参考:环境搭建指南 →
💡 快速验证环境
import torch
import torch_npu
print(f"PyTorch 版本: {torch.__version__}")
print(f"NPU 是否可用: {torch.npu.is_available()}")
print(f"NPU 数量: {torch.npu.device_count()}")
print(f"NPU 名称: {torch.npu.get_device_name(0)}")
# 简单测试
x = torch.randn(3, 3).npu()
y = torch.randn(3, 3).npu()
z = torch.matmul(x, y)
print(f"NPU 矩阵乘法结果:\n{z}")第二步:跑通第一个推理
目标:在昇腾 NPU 上运行大模型推理
推荐路径(从易到难):
路径A:使用 MindIE(推荐)
MindIE 是昇腾原生推理引擎,性能最优
支持主流大模型(Qwen、LLaMA、DeepSeek 等)
→ 详见 [推理部署文档](https://revolutionla.github.io/AscendMate/inference/)
路径B:使用 PyTorch + transformers
更灵活,适合开发调试
代码和 GPU 版几乎一样(.cuda() → .npu())
路径C:使用 MindSpore
原生支持,性能好
适合需要深度定制的场景PyTorch-NPU 推理示例
import torch
import torch_npu
from transformers import AutoTokenizer, AutoModelForCausalLM
# 加载模型到 NPU
model_path = "Qwen/Qwen2.5-7B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(
model_path,
torch_dtype=torch.float16,
device_map="npu" # 自动分配到 NPU
)
# 推理
messages = [
{"role": "user", "content": "你好,请介绍一下你自己"}
]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to("npu")
with torch.no_grad():
outputs = model.generate(**inputs, max_new_tokens=256)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)详细推理部署步骤请参考:推理部署指南 →
第三步:微调一个模型
目标:在昇腾上微调大模型
推荐工具:LLaMA-Factory
开源大模型微调框架
支持 LoRA、QLoRA、全量微调
支持昇腾 NPU
微调流程:
1. 准备数据集(JSON/JSONL 格式)
2. 配置训练参数
3. 启动训练
4. 合并 LoRA 权重
5. 部署微调后的模型使用 LLaMA-Factory 微调
# 1. 安装 LLaMA-Factory(昇腾适配版)
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch-npu,metrics]"
# 2. 准备数据(SFT 格式)
# data/my_dataset.json
[
{
"instruction": "请将以下句子翻译成英文",
"input": "今天天气真好",
"output": "The weather is really nice today."
}
]
# 3. 注册数据集
# 在 data/dataset_info.json 中添加你的数据集
# 4. 启动 LoRA 微调
llamafactory-cli train \
--model_name_or_path Qwen/Qwen2.5-7B-Instruct \
--dataset my_dataset \
--finetuning_type lora \
--lora_target q_proj,v_proj \
--output_dir ./output \
--per_device_train_batch_size 4 \
--learning_rate 5e-5 \
--num_train_epochs 3 \
--fp16 True详细微调步骤请参考:LLaMA-Factory 微调指南 →
💡 微调方法选择
| 方法 | 显存需求 | 训练速度 | 效果 | 适用场景 |
|---|---|---|---|---|
| 全量微调 | 高 | 慢 | 最好 | 有充足资源、追求最佳效果 |
| LoRA | 低 | 快 | 好 | 大多数场景的推荐选择 |
| QLoRA | 最低 | 中 | 较好 | 资源有限时使用 |
第四步:性能调优
目标:让模型在昇腾上跑得更快、更省资源
调优维度:
1. 模型层面:量化、剪枝
2. 推理层面:KV Cache、批处理
3. 系统层面:内存管理、并行策略
4. 算子层面:自定义算子优化常用调优工具
| 工具 | 用途 |
|---|---|
| npu-smi | 查看 NPU 状态(类似 nvidia-smi) |
| msprof | 性能分析工具(类似 nsight) |
| MindIE | 推理性能优化 |
| CANN 算子调优 | 算子级优化 |
性能调优基础
# 1. 监控 NPU 状态
npu-smi info
# 查看:NPU 利用率、显存占用、温度等
# 2. 性能分析
msprof --application="python inference.py" --output=./prof_data
# 生成性能报告,分析瓶颈
# 3. 常见优化手段
# - 使用 MindIE 替代纯 PyTorch 推理
# - 开启 KV Cache
# - 使用量化(INT8/INT4)
# - 调整 batch size
# - 使用连续批处理(Continuous Batching)详细性能调优步骤请参考:性能调优工具 →
调优检查清单
□ NPU 利用率是否够高?(目标 > 70%)
□ 显存利用率是否合理?
□ 是否启用了 KV Cache?
□ 是否使用了量化?
□ Batch size 是否最优?
□ 是否有不必要的数据拷贝?
□ 是否使用了 MindIE 等优化引擎?
□ 是否有算子不支持导致的回退?第五部分:昇腾认证
为什么要考认证?
认证的价值:
1. 系统学习:认证课程覆盖完整知识体系
2. 能力证明:简历加分,面试加分
3. 企业认可:产业及生态企业认可
4. 个人成长:以考促学,查漏补缺认证路径
┌─────────────────────────────────────────────────────┐
│ 昇腾 AI 认证体系 │
├─────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ HCIA-AI │ → │ HCIP-AI │ → │ HCIE-AI │ │
│ │ 初级 │ │ 高级 │ │ 专家 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ AI 通识 昇腾开发 架构设计 │
│ 基础概念 模型开发 复杂方案 │
│ │
└─────────────────────────────────────────────────────┘HCIA-AI(初级)
| 维度 | 说明 |
|---|---|
| 定位 | AI 通识认证,适合入门 |
| 内容 | AI 概述、数学基础、机器学习、深度学习概览 |
| 难度 | ★★☆☆☆ |
| 准备时间 | 1-2 个月 |
| 适合 | AI 新人、想系统了解 AI 的人 |
HCIP-AI(高级)
| 维度 | 说明 |
|---|---|
| 定位 | 昇腾 AI 开发高级认证 |
| 内容 | 昇腾软硬件、MindSpore 开发、模型训练部署 |
| 难度 | ★★★☆☆ |
| 准备时间 | 2-3 个月 |
| 适合 | 在昇腾生态中做开发的工程师 |
HCIE-AI(专家)
| 维度 | 说明 |
|---|---|
| 定位 | 昇腾 AI 解决方案专家认证 |
| 内容 | AI 解决方案设计、昇腾全栈技术、复杂场景落地 |
| 难度 | ★★★★★ |
| 准备时间 | 3-6 个月 |
| 适合 | 资深 AI 工程师、解决方案架构师 |
认证学习建议
认证 vs 实战:
❌ 只考证不实践 → 纸上谈兵,面试露馅
❌ 只实践不学理论 → 知识有盲区,遇到新问题不会
✅ 理论+实践+认证 → 系统学习 + 动手能力 + 能力证明
建议路径:
1. 跟着本学习路径完成阶段一到五
2. 在备考过程中查漏补缺
3. 先考 HCIA-AI 建立体系
4. 积累实战经验后考 HCIP-AI
5. 有丰富项目经验后考虑 HCIE-AI认证资源
| 资源 | 说明 |
|---|---|
| 昇腾人才在线 | 官方认证入口 |
| 昇腾云学院 | 官方培训课程 |
| 昇腾社区 | 技术文档和实战资源 |
| 认证考试指南 | 官方考试大纲和样题 |
常见问题
Q:没有昇腾硬件怎么办?
方案1:昇腾云 ModelArts
- 提供昇腾算力按需使用
- 适合学习和实验
- 按时计费,成本可控
方案2:昇腾开发板
- Atlas 200 DK 开发者套件
- 价格相对亲民
- 适合个人学习和边缘开发
方案3:公司资源
- 如果公司有昇腾服务器
- 申请使用权限进行实验Q:PyTorch 代码迁移到昇腾麻烦吗?
大部分情况下,改动很小:
1. 导入 torch_npu
+ import torch_npu
2. 设备指定
- .cuda() → .npu()
- "cuda" → "npu"
- device_map="auto" 通常自动适配
3. 个别算子适配
某些 CUDA 专有操作可能需要替换
4. 性能优化
- 考虑使用 MindIE 替代纯 PyTorch 推理
- 使用 CANN 优化工具Q:MindSpore 还是 PyTorch?
决策建议:
选 PyTorch-NPU 如果你:
✅ 已经熟悉 PyTorch
✅ 需要复用大量 PyTorch 代码/模型
✅ 团队以 PyTorch 为主
✅ 想要最低迁移成本
选 MindSpore 如果你:
✅ 追求昇腾上的最优性能
✅ 从零开始开发项目
✅ 需要使用 MindSpore 特有功能
✅ 在昇腾内部生态中工作
最佳策略:两个都了解,根据项目选择。阶段总结
知识点清单
完成本阶段后,确认你掌握了:
认知:
- [ ] 昇腾 NPU 与 NVIDIA GPU 的主要差异
- [ ] Atlas 硬件产品线
- [ ] CANN 在软件栈中的位置
- [ ] PyTorch-NPU 和 MindSpore 的选择策略
- [ ] MindIE 和 MindSpeed 的用途
实践:
- [ ] 搭建昇腾开发环境
- [ ] 在 NPU 上运行模型推理
- [ ] 使用 LLaMA-Factory 微调大模型
- [ ] 使用 npu-smi 监控 NPU 状态
- [ ] 进行基本的性能分析和调优
实战项目建议
| 项目 | 难度 | 涉及技能 |
|---|---|---|
| 在昇腾上部署 Qwen 推理服务 | ★★☆ | 推理部署 |
| 用 LLaMA-Factory 微调 7B 模型 | ★★★ | 微调训练 |
| 搭建 RAG 知识库问答系统 | ★★★ | RAG + 推理 |
| 性能调优对比报告 | ★★★★ | 性能分析 |
下一步
🚀 下一阶段
👉 阶段六:行业应用与进阶 —— 从技术走向业务
「你现在已经具备了在昇腾生态上做开发的基本能力。接下来的挑战是:如何把这些技术能力转化为业务价值——这是从'工程师'到'优秀工程师'的关键跨越。」