你好,我是卢誉声,Autodesk 数据平台和计算平台资深软件工程师,也是《移动平台深度神经网络实战》和《分布式实时处理系统:原理架构与实现》的作者,主要从事 C/C++、JavaScript 开发工作和平台架构方面的研发工作,对 SWIG 也有比较深的研究。很高兴受极客时间邀请来做本次分享,今天,我们就来聊一聊 SWIG 这个话题。
我们都知道,Python 是一门易于上手并实验友好的胶水语言。现在有很多机器学习开发或研究人员,都选择 Python 作为主力编程语言;流行的机器学习框架也都会提供 Python 语言的支持作为调用接口和工具。因此,相较于学习成本更高的 C++ 来说,把 Python 作为进入机器学习世界的首选编程语言,就再合适不过了。
不过,像 TensorFlow 或 PyTorch 这样的机器学习框架的核心,是使用 Python 编写的吗?
显然不是。这里面的原因比较多,但最为显著的一个原因就是“性能”。通过 C++ 编写的机器学习框架内核,加上编译器的优化能力,为系统提供了接近于机器码执行的效率。这种得天独厚的优势,让 C++ 在机器学习的核心领域站稳了脚跟。我们前面所说的 TensorFlow 和 PyTorch 的核心,便都是使用 C/C++ 开发的。其中,TensorFlow 的内核,就是由高度优化的 C++ 代码和 CUDA 编写而成。