有些问题的答案已经没有悬念。
就像程序员讨论“什么才是世界上最好的语言?”这一终极命题一样。在医疗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目前还有一些常用算子没有完全支持。