有些问题的答案已经没有悬念。
就像程序员讨论“什么才是世界上最好的语言?”这一终极命题一样。在医疗 AI 领域,围绕芯片和 AI 开源框架的讨论也一直热度不减。《后浪》视频一夜刷屏。
其实在 AI 时代,芯片和开源框架也有诸多不断赶超“前浪”的搅局者和颠覆者。为了抢占市场、营造生态,科技巨头也都推出了自己的开源深度学习框架,如 Google 的 TensorFlow、Amazon 的 MXNet、Facebook 的 Pytorch 和 Microsoft 的 CNTK 等。而在国内,也有百度飞奖、旷视 MegEngine 等框架进入越来越多开发者的视野。
但这个行业无时不刻都在洗牌中。有开发者向雷锋网 AI 掘金志表示,大名鼎鼎的 Caffe 因其灵活性等相对较差,导致用户逐年流失。虽然 Caffe2 在一定程度上进行了改善,但是已经错过了重要的框架发展窗口期。新势力也逐渐崛起。今年 4 月底,英伟达也与伦敦国王学院共同宣布了 Project MONAI 的开源 alpha 版本。MONAI 是 AI Medical Open Network 的缩写。
这个框架针对医疗保健研究人员的需求进行了优化,并且可以与 PyTorch 和 Ignite 等深度学习框架一起运行。这个框架推出之时,国内就有学者评价到,“为医学影像研究者量身打造,是真正的良心之作。”当然,除了开源框架,AI 芯片也一直都是行业巨头酣战的领域,英特尔、英伟达以及众多 AI 专用芯片公司的医疗 AI 相关产品层出不穷。
作为开源框架和芯片的“首席体验官”,算法工程师们如何看待芯片、开源框架等领域的诸多选择,我们采访了四家主流医疗 AI 公司的技术人员。
AI 掘金志:你们会选择哪种深度学习开源框架?Pytorch 还是 Caffe、TensorFlow?各家的优缺点都有哪些?
柏视医疗董事长陆遥:快速验证模型效果使用 Pytorch,工业化部署使用 TensorFlow。
TensorFlow:TensorFlow 提供全面的服务,无论是 Python,C++,JAVA,Go,甚至是 JavaScript,Julia,C#;TensorFlow 良好的文档和社区支持,大大降低了学习成本;提供直观的可视化计算图;模型能够快速的部署在各种硬件机器上,从高性能的计算机到移动设备,再到更小的更轻量的智能终端。但构建 TensorFlow 深度学习框架需要更复杂的代码,还要重复地多次构建静态图。不过到2.0 以后,tensorflow 将 keras 融合进来,很多操作都简化了。
Pytorch:Pytorch 的风格和 python 很像,使用的是动态图,搭建模型比较快,方便调试,能够很快验证方法的有效性,新手上手快,而且库足够简单,跟 NumPy、SciPy 等可以无缝连接;设计简单,动态地设计网络,而无需定义静态网络图,非常灵活。但 pytorch 在生产环境部署还不成熟。
Caffe:Caffe 是一个优先考虑表达、速度和模块化来设计的框架。支持 C、C++、Python 等接口以及命令行接口。但是,Caffe 不支持精细粒度网络层,给定体系结构,对循环网络和语言建模的总体支持相当差,必须用低级语言建立复杂的层类型,使用门槛很高。虽然开源比 Pytorch 和 Tensorflow 要早一点,早期的很多机器视觉的算法是基于 Caffe 框架,但是 Caffe 社区比较前两个框架要小很多,更新迭代的也比较慢。
连心医疗算法经理 Fisher:我们目前用的主要是 Tensorflow 以及依据 Tensorflow 的 Keras 框架,选择 Tensorflow 的主要原因是市场占有率大、社区支持好,而且最主要的是工业部署非常成熟。
Pytorch 现在研究人员用的比较多,最主要的优点是其动态图的实现方案,对于测试等非常友好。但是,在工业部署上,和 Tensorflow 还是有一定差距。目前,这两个框架选择的人比较多。
Caffe 用的人已经在逐渐减少,主要还是其灵活性等相对较差,虽然 Caffe2 在一定程度上进行了改善,但是已经错过了重要的框架发展窗口期。
联影智能研发科学家:相比其他两个,Pytorch 在算法实现灵活度更强,比较贴近机器学习研发工程师。同时学术界对 Pytorch 的支持也较为强大,整个圈子比较活跃。因为我们部署这块都是采用内部开发的部署框架,所以我们更为看中训练研发阶段框架的灵活性和高效性。
汇医慧影算法总监刘鹏飞:Pytorch 上手难度低,调试方便,代码写起来比较 pythonic,但目前对部署的支持相对较弱,TensorFlow 对部署支持比较好,但相对上手难度高,调试困难。
Caffe 是第一代深度学习框架,虽然仍然用于成熟模型部署,但基于 Caffe 的模型研发成本比较高,比如,很多情况下用户需要自己实现反向传播代码,不适用于快速模型开发和迭代。
AI 掘金志:如何评价国内的开源框架,如百度飞桨、旷视 MegEngine 等?
柏视医疗董事长陆遥:国内的开源框架,比如百度的飞桨和最近推出的清华大学 Jittor、旷视的 MegEngine 和华为的 MindSpore,这都是很好的尝试,但是国内开源框架都面临和 Caffe 一样的问题,使用者较少,资源比 Pytorch、Tensorflow 少很多,和 Pytorch 和 Tensorflow 框架的兼容性不好,在这些框架上做开发的难度相对比较大。
因此,国内这些框架的社区还是比较小。百度在飞桨的推广上做了很多的工作,可能也发现在通用框架上,和这些国外成熟框架竞争所面临的困境。
近期推出的影像 AI 专用框架,是一个不错的想法,因为 Pytorch 和 Tensorflow 这类框架是针对通用性设计的,在细分领域并不算非常好。如果影像 AI 这一块,飞桨能做的足够出色,吸引更多的研发者进来,做好生态,也能形成自己的社区,希望国内开源框架的生态越做越好。
连心医疗算法经理 Fisher:我们一直和飞桨有合作,在春节期间还一起推出了新冠肺炎的检测模型。最近除了百度,华为以及旷视等也都推出了自己的框架,百度应该是国内开发最早、发展最成熟的框架。国内框架的优点是中文的支持友好,和企业直接合作较多以及硬件的直接融合开发等,但是致命的缺点在于其学术界的缺位。
放眼最新的论文,其开源的代码基本都是 Tensorflow 以及 PyTorch 的实现。当然如果是比较火热的论文,框架一般也都会及时把相应的代码跟上,但是如果不是大热的论文,都需要自己再复现一下论文。在目前工程师基本都要掌握 Tensorflow 和 Pytorch 两种框架的情景下,让他们再去掌握第三种框架是缺乏动力的。
联影智能研发科学家:基本没有太多接触,主要还是基于飞桨的应用以及开源代码,资料这方面比较少,暂时没有 Pytorch 和 Tensorflow 生态圈庞大。所以无论上手,学习,成本都会相应增高。
AI 掘金志:如何评价英伟达刚刚开源的医疗 AI 专用框架 MONAI?是否会取代 Pytorch 在医疗界的位置?
柏视医疗董事长陆遥:MONAI 使用 PyTorch 深度学习框架,旨在提供一种开源、标准化程度高、用户友好、可复现性好、易于集成、高质量的、针对医疗领域特定优化的深度学习框架。
从长期来看,这是趋势,但需要吸引更加多的开发者加入,壮大社区的力量。它和飞桨影像 AI 是一个思路,走的是细分领域,依托于英伟达自身的硬件基础,在医疗 AI 影像上,可以做出更出色的性能。在医疗 AI 领域,和 Pytorch 兼容,减少 Pytorch 用户迁移到 MONAI 的难度,提高用户对 MONAI 的使用率,可以实现和 Pytorch 共同发展。
MONAI 在计算效率、并行化训练和部署,以及医疗特定任务的支持上应该会有更好的效果,而 Pytorch 是一个更基础通用的框架。二者各有所长,未来应该是相互促进的关系。连心医疗算法经理 Fisher:简单的总结就是,不会。
首先,我们要搞清楚 MONAI 是什么,它在 Github 上的解释是:MONAI is a PyTorch-based, open-source framework for deep learning in healthcare imaging。也就是说,首先它和 Pytorch 并不是排他的关系,MONAI 就是基于 Pytorch 构建的,包括官方的一些例子,都是会引入 Torch,也就没有了什么取代。
在我看来,MONAI 更像是一个基于 Pytorch 的医疗图像数据处理库,针对医疗图像增添了许多图像处理的方法,弥补了 Pytorch 对于医疗图像的支持不足。
AI 掘金志:你们购买哪个厂商的服务器?为什么?
柏视医疗董事长陆遥:服务器的选购主要是考虑成本以及售后服务,在满足基本配置要求的前提下,选用价格成本较低,售后服务较为完善的服务器供应商。NVIDIA 提供一站式解决方案,且计算性能优秀,是很好的选择。连心医疗算法经理 Fisher:目前,我们服务器供应商有多家,其中 DELL 的机器较多,主要的原因还是 DELL 在端机上成熟的解决方案、稳定的品质。
联影智能研发科学家:目前购买过 AMAX、NVIDIA DGX 系列,前者用于部署、后者用于训练,各有好处。NVIDIA DGX 在整体解决方案上更为成熟,技术支持也会好些。
汇医慧影算法总监刘鹏飞:服务器基本就是 NVIDIA GPU + Intel CPU。用户基数大,社区比较成熟,遇到问题可以很容易找到解决方案。
AI 掘金志:主要用哪家厂商的 AI 芯片?
柏视医疗董事长陆遥:英伟达。连心医疗算法经理 Fisher:据我所知,在端侧基本只能用英伟达的芯片,因为各家的框架都是构建于 CUDA 之上,而只有英伟达的卡才可以使用 CUDA。联影智能研发科学家:现在市面主流还是 NVIDIA,无论是 CUDA 还是深度学习,NVIDIA 的显卡对各个框架的支持都很好,而且可以兼容三维渲染、并行编程,这方面较其他芯片来说优势目前还是很大的。
汇医慧影算法总监刘鹏飞:这两家的 AI 芯片我们都在用,目前实时性要求比较高应用主要还是基于 NVIDIA 芯片,计算量相对少的应用一般基于英特尔的芯片。
AI 掘金志:英伟达的硬件和软件包,有哪些优势?尤其是 CUDA
柏视医疗董事长陆遥:英伟达系列显卡最早能够支持诸如 Tensorflow 、Pytorch 一类的深度学习框架的部署,技术起步早,国内外相关的研究者比较多,技术生态比较成熟。
英伟达还有专门针对深度学习优化的工具 tensorRT,能够更好地结合深度学习框架与显卡硬件资源之间的优势,充分发挥显卡的计算性能。CUDA 很好地封装了一些对显卡硬件资源调度和使用的 API 接口,能够让研发人员方便高效地对显卡的计算资源进行利用,上手难度较低。
连心医疗算法经理 Fisher:正如上边所说,虽然有一些解决方案也可以不用 CUDA 而使用 OpenCL,但是基本工业界只有 CUDA 这一个选项,这主要是其统一的开发套件、非常丰富的库以及 NVCC 所具备的 PTX 代码生成以及离线编译等更成熟的编译器特性。另外,众多的开源框架也都是建立在 CUDA 之上。
联影智能研发科学家:CUDA 有很长的一段发展历史,沉淀比较多,资料也比较多,优势很大。特别是现在除了 CUDA C,还有 Thrust 这种 C++库,选择余地大。另外,CUDNN 也可以和 CUDA 一起兼容,所以除了深度学习,还可以做其他 GPGPU 并行编程,整体就非常方便。
汇医慧影算法总监刘鹏飞:对于性能要求比较高的场景,英伟达硬件软件包是比较有优势的。CUDA、TensorRT 等工具都是经过高度优化,执行速度上有比较明显的优势。
AI 掘金志:英特尔 Xeon 系列 AI 芯片在医疗领域应用颇多,其明显大于 GPU 的显存,是否在 CT、MRI 和病理这类比较大的图像处理上更有优势?
柏视医疗董事长陆遥:医疗 AI 专用芯片,具有非常巨大的市场空间,人工智能技术的快速发展,让 AI 算法在医疗领域已经得到了行业认可,但医疗行业有其行业特点:数据量大、高维度、多模态,显存更大的芯片能够加速 AI 算法落地复杂的医疗环境。对医疗 AI 专用芯片的选择,内存是考虑因素之一,同时计算力也是一个考量的因素,在这点上英伟达更有优势。
所以选择上,看个人更看重哪个因素。英特尔的医疗 AI 专用芯片技术起步比较晚,在技术生态环境上暂时比不上英伟达,研发人员对英特尔系列的 AI 芯片的应用有一定的上手难度。对英特尔芯片的应用,很多技术人员还处于摸索阶段。从研发效率和稳定性来考虑。目前,选择英伟达的芯片是大多数的选择。更大显存对医疗 AI 领域确实有着一定的优势。随着技术的发展,使用英特尔的医疗 AI 专用芯片做部署环境也是可以考虑的技术路线之一。
连心医疗算法经理 Fisher:从我个人角度来看,硬件是服务于项目的,而项目中硬件只是制约的一部分因素,更重要的是开发效率。诚然,显存是会让算法有更多的可能性,但是开发效率会是工程上更关注的部分。如果没有良好的社区支持以及市场支持,再好的硬件也只能是和一些特定厂商的定制硬件选项而不是广泛的工程选择。就像显卡上 NVIDIA 和 AMD 的竞争,由于 CUDA 的存在以及已经发展起来的良好社区,如果想要进行科学计算,那么可以说,英伟达是唯一的选项。
汇医慧影算法总监刘鹏飞:据我所知,目前英特尔的 AI 芯片主要应用在推理阶段。在训练阶段,大家基本还是使用 NVIDIA GPU。另外,对 3D 医疗图像来说,Intel OpenVino 目前还有一些常用算子没有完全支持。