仓又加错-刘成岗 的讨论

发布于: 修改于: 雪球回复:0喜欢:10
网页链接 Google不直接卖TPU,而是提供Cloud TPU,不过Cloud GPU和Cloud TPU比例数据没有披露。
网页链接 这篇介绍在TPU上运行PyTorch代码,网页链接 这篇介绍在TPU上运行Tensorflow代码, 网页链接 这篇介绍在TPU上运行JAX代码。
部分证实我的猜想,torch们隔离了硬件层。

热门回复

通过讨论,“torch们隔离了硬件层”我这个观点看来是正确的。另外,亚马逊和微软也自研芯片了,这块可以持续观察。

现阶段是隔离不了的,跑一下代码就知道了。一样的代码,在cuda 和 cpu 上能跑通,在 xla 和 mps 上就有可能报错,而且这种情况很常见。当然这里说的只是现在的情况。

我刚打赏了这条讨论 ¥6,也推荐给你。

仓老师有兴趣可以看看这篇文章:网页链接。总结:一小半函数在不同硬件上完全不兼容。兼容的部分,大部分有十倍以上速度的差距。

kimi chat提供的摘要:
您提供的链接指向了一篇名为 "The Grand Illusion: The Myth of Software Portability and Implications for ML Progress" 的研究论文。这篇论文由 Fraser Mince、Dzung Dinh、Jonas Kgomo、Neil Thompson 和 Sara Hooker 共同撰写,探讨了机器学习(ML)软件框架在不同硬件类型上的可移植性问题。研究者们通过大规模研究主流 ML 框架(如 TensorFlow、PyTorch 和 JAX)在不同硬件上的可移植性,发现框架在移植到其他硬件时可能会丢失超过 40% 的关键功能,且即使功能可移植,性能的下降也可能极端严重。
研究的主要发现包括:
PyTorch 和 TensorFlow 在 GPU 上的可移植性问题尤为突出,例如在 TPU 上,PyTorch 的 44% 基准测试功能部分或完全失败。即使功能可移植,性能差距也显著,例如 PyTorch 在 GPU 到 TPU 的迁移中,81.4% 的功能表现出超过 10 倍的减速。JAX 在 TPU 上的性能表现更好,91.8% 的 JAX 函数集在 TPU 上更快。硬件和软件的专业化趋势对 ML 研究的创新产生了阻碍。
这篇论文强调了在硬件和软件专业化日益增长的背景下,进行比较性评估的重要性,并指出未来在设计既高效又可移植的工具时,量化可移植性分析将变得更加重要。
如果您有关于这篇论文的具体问题或需要更详细的信息,请告诉我,我会尽力帮助您。

谢谢仓老师找的链接。
我是这个行业的工程师。准确的说,有“隔离层”,但是这个抽象层并没有完全隔离性能和可用性。
TPU不好用可以从没听说过外部大客户成功案例看出来。如果从本质出发,还是因为对最主流的framework pytorch支持的不好。pytorch的支持是通过pytorch xla实现的,但是pytorch xla做得很差。例子可以看:网页链接。 简单说很多operator不支持/支持的不好。这可能和google的工程师文化也有关,拉不下来脸伺候大客户。
另外,xla的全局编译比pytorch的eager mode开发者体验差很多。虽然性能有提升,但是值不值得牺牲开发者体验还是一个问题。

我认识不少微软azure的朋友,两周前吃饭说他们俩今年都没奖金,都被公司拿去买英伟达芯片了。我说不能自研吗?他俩说需要十倍的资金,巨多的时间,还不能保证成功。早放弃了

我读出了两个强,英伟达很强、kimi chat 很强[狗头]

Claude 总结:
这里是用中文总结该论文的关键要点:
本文研究了流行的机器学习框架(如TensorFlow、PyTorch和JAX)在不同硬件类型(如GPU和TPU)之间的可移植性。可移植性被定义为代码、数据和模型在硬件之间传输的难易程度。作者整理了每个框架的代表性函数数据集,并修改测试以在特定设备上运行。
结果揭示了硬件类型之间存在主要的可移植性问题。许多函数在GPU和TPU之间传输时会完全或部分失败,尤其是PyTorch在TPU上的失败率非常高(44%)。即使函数可移植,在许多情况下性能也会严重下降,80%以上的PyTorch函数在TPU上比GPU慢10倍。而JAX由于专门针对TPU设计,在TPU上表现得更好。
失败最常见的原因是目标设备上缺少对操作的实现。TPU也展现出比GPU更多的类型错误和精度问题。新硬件代数并没有改进软件的可移植性。像JAX这种为硬件定制的框架表现更好,这表示软硬件设计需要紧密结合才能获得更好的性能。
总的来说,硬件之间缺乏可移植性限制了机器学习研究的创新。研究人员会避免可移植性有限的软硬件组合,这限制了新思路的探索。偏离主流组合的高成本限制了实验和进步。软硬件的定制化协同设计提高了效率但降低了研究的灵活性。
综上所述,本文定量分析了机器学习框架中的软件可移植性问题,揭示了不同硬件类型之间高失败率、性能差距和创新受限的情况。结果强调了需要更高的可移植性来支持机器学习研究的多样性和探索。
这里是用中文总结文本的10个主要要点:
1. 本文量化了流行的机器学习框架(如TensorFlow、PyTorch和JAX)在不同硬件类型(如GPU和TPU)之间的可移植性。
2. 可移植性被定义为代码、数据和模型之间的传输难易程度。完全失败、部分失败和不可容忍的延迟都被归类为可移植性失败的类型。
3. 通过分层抽样顶级和随机函数,整理了每个框架的代表性函数数据集。从框架中提取测试,并修改以在特定设备上运行。
4. 在GPU和TPU之间转换时,许多函数出现完全或部分失败 - TensorFlow在GPU上为22%,PyTorch在TPU上为44%。JAX失败最少。
5. 即使函数可移植,在许多情况下性能也会受到严重影响。对于PyTorch,超过80%的函数在TPU上的速度比GPU慢10倍。JAX在TPU上更快。
6. 失败最常见的原因是目标设备上缺少对操作的实现。TPU比GPU也看到了更多的类型错误和精度问题。
7. 为硬件定制的框架(如JAX对TPU)的性能更好,这表明性能高度依赖软硬件的共同设计。
8. 较新版本的硬件(如A100 GPU)与旧版本相比没有改进软件的可移植性。
9. 缺乏可移植性限制了创新,因为研究人员会避免不兼容的软硬件组合,尽管它们有优点。
10. 结果揭示了偏离主流软硬件组合的高成本,限制了机器学习研究的探索和进步。

正好,晚点用kimi阅读下[狗头]