已关闭
[Course-Feedback|课程反馈]: 04_hello_world_npu:低精度优化部分表述不准确 #571
2301_76493720创建于  8月25日关闭于  9月7日
2301_76493720
2301_76493720
8月25日 创建

一、课程名称 (必填)

二、反馈类型 (必填)

三、反馈详情 (必填)

四、环境信息 (可选)

💡 备注(选填)

一、课程名称 (必填)

课程名称:Hello World:在 NPU 上跑通第一个加法

课程链接:https://gitcode.com/cann/cann-learning-hub/blob/master/quick_start/cann_basics/04_hello_world_npu.ipynb

二、反馈类型 (必填)

课程内容错误

三、反馈详情 (必填)

课程 Step 8“NPU 加速的优势分析”中写道:

低精度优化:CPU 以 FP64 为主,NPU 针对 FP16/BF16 优化。

该表述不准确,容易使初学者误以为 CPU 上的 AI 计算通常使用 FP64。

PyTorch 的初始默认浮点数据类型是 torch.float32,而不是 FP64。官方接口文档中,torch.get_default_dtype() 的初始返回值也是 torch.float32:

https://docs.pytorch.org/docs/stable/generated/torch.get_default_dtype.html

课程自身的示例也使用了 FP32。例如以下代码未指定 dtype,默认创建 FP32 张量:

a_cpu = torch.ones(3, 3)
b_cpu = torch.full((3, 3), 2.0)

后面的性能测试则显式指定了 FP32:

a_large = torch.randn(N, N, dtype=torch.float32)
b_large = torch.randn(N, N, dtype=torch.float32)

因此,“CPU 以 FP64 为主”的说法不仅与 PyTorch 默认行为不符,也与当前课程示例实际使用的 FP32 不一致。部分现代 CPU 还可以通过相应的硬件指令支持 FP32、BF16 等数据类型,CPU 与 NPU 的区别不能简单概括为“CPU 使用 FP64、NPU 使用 FP16/BF16”。

同一小节还写道:

FP16/BF16/FP8,甚至是 Int8/FP4 可满足需求。

这里也缺少适用范围说明。FP8、FP4、INT8 等低精度数据类型能否使用,以及能够用于哪些计算,取决于具体昇腾芯片型号、CANN 版本、框架版本和算子支持情况。当前表述容易让学习者误认为所有昇腾 NPU 和所有算子都支持这些数据类型。

建议修改为:

AI 工作负载通常使用 FP32 或混合精度。昇腾 NPU 针对矩阵、向量计算及部分低精度数据类型提供专用硬件加速能力,可在满足精度要求的场景中提高计算吞吐。具体支持的数据类型取决于芯片型号、CANN 版本和算子。

同时建议:

  1. 删除“CPU 以 FP64 为主”的表述。
  2. 将 PyTorch 默认浮点类型明确说明为 FP32。
  3. 避免将 CPU 与 NPU 的差异简化为 FP64 与 FP16/BF16 的对立。
  4. 对 FP8、FP4、INT8 等低精度能力注明具体支持范围。
  5. 增加对应昇腾型号和 CANN 版本的数据类型支持文档链接。
  6. 如需展示低精度优势,可增加 FP32 与 FP16/BF16 的实际示例,并在运行前检查当前设备是否支持对应数据类型。

期望修改后:

  • 正文不再声称 CPU 以 FP64 为主。
  • 课程说明 PyTorch 默认浮点数据类型为 FP32。
  • FP8、FP4、INT8 等能力均注明依赖芯片型号、软件版本和算子支持。
  • CPU 与 NPU 的性能差异从专用计算单元、并行能力、内存带宽和低精度吞吐等方面进行更准确的解释。

四、环境信息 (可选)

  • 昇腾硬件型号:Ascend 910
  • CANN 版本:
  • 操作系统:
  • npu-smi 版本:25.5.5
  • NPU 驱动版本:25.5.5
  • PyTorch 版本:
  • torch_npu 版本:

💡 备注(选填)

该问题属于课程中的通用概念表述问题,与特定硬件故障无关。即使不具备 NPU 环境,也可以通过 PyTorch 官方文档及 torch.get_default_dtype() 验证默认浮点数据类型为 torch.float32。

likedislike
ink_polymer
ink_polymer成员
8月25日 评论:

尊敬的开发者您好,您提出的问题已收到,待内部评估后反馈,感谢您的支持

likedislike
ink_polymerink_polymer成员
8月28日 关联了pull request:fix: 修正 CPU 精度描述,FP64 改为 FP32
ink_polymerink_polymer成员
8月28日 关联了pull request:fix: 修正 CPU 精度描述,FP64 改为 FP32
ink_polymer
ink_polymer成员
9月1日 评论:

尊敬的开发者您好,您提出的问题目前已经解决,该issue将在七天后关闭,若后续还有问题欢迎通过issue与我们交流,感谢您的支持

likedislike
ink_polymerink_polymer成员
9月7日 issue状态由 进行中 改变为 已完成
ink_polymerink_polymer成员
9月7日 关闭了 issue
CANN-robotCANN-robot成员
9月7日 添加了label:resolved