现代机器学习系统通常建立在一个(或多个)机器学习框架之上,如TensorFlow、PyTorch或scikit-learn,甚至是一个集成平台,如Azure Machine Learning、Amazon SageMaker或Google Cloud Vertex AI。从建模的角度来看,这些平台允许开发者以极快的速度和极大的灵活性来创建模型,在许多情况下,能够使用硬件加速器,如GPU和TPU或基于云的计算,而不需要大量的额外工作。
从系统的角度来看,使用这样的平台会带来一系列的依赖性,这通常是我们无法控制的。我们可能会受到软件包升级的影响,其修复可能不向后兼容,或者组件可能不向前兼容。被发现的错误可能很难修复,或者可能需要等待平台所有者优先接受我们提出的修复。总的来说,使用这些框架或平台的好处几乎总是超过这些缺点,但仍然必须考虑成本,并将其纳入任何长期维护计划或机器学习运维战略。
另一个考虑是,由于这些平台通常是作为通用工具创建的,我们通常需要创建大量的适配器组件或 胶水代码 ,以帮助我们将原始数据或特征转化为平台使用的正确格式,并在服务时与模型对接。这种胶水代码在规模、范围和复杂性上都会很快变得非常重要,而且必须与系统其他组件一样支持严格的测试和监控。