Files
2022-04-12 11:57:10 +08:00

2.0 KiB
Raw Permalink Blame History

编程接口

现代机器学习框架包含大量的组件。这些组件使得用户得以高效开发机器学习算法处理数据部署模型性能调优和使用硬件加速器。在设计这些组件的编程接口时一个核心的诉求是如何平衡框架性能和易用性为了达到最优的性能开发者需要利用硬件亲和的编程语言如C和C++来进行开发。这是因为C和C++的使用使得机器学习框架可以高效调用硬件的底层API从而最大限度发挥硬件性能。同时现代操作系统如Linux和Windows提供丰富的基于C和C++的编程接口如文件系统网络编程多线程管理等通过直接调用操作系统API可以降低框架运行的开销。

从易用性的角度分析机器学习框架的使用者往往具有丰富的行业背景如数据科学家生物学家化学家物理学家等。他们常用的编程语言是高层次脚本语言PythonMatlabR和Julia。相比于C和C++这些语言在提供编程的易用性的同时丧失了C和C++对底层硬件和操作系统进行深度优化的能力。因此机器学习框架的核心设计目标是其要具有易用编程接口来支持用户用高层次语言如Python来实现机器学习算法同时其也要具备以C和C++为核心的低层次编程接口使得框架开发者可以用C和C++实现大量高性能组件,从而在硬件上高效执行。在本章中,我们将会讲述如何达到这个设计目标。

本章的学习目标包括:

  • 理解机器学习系统的工作流和以Python为核心的编程接口设计。

  • 理解机器学习系统以神经网络模块为核心的接口设计原理和实现。

  • 理解机器学习系统的底层C/C++执行算子的实现和与上层Python接口的调用实现。

  • 了解机器学习系统编程接口的演进方向。

:maxdepth: 2

development_history
ml_workflow
neural_network_layer
c_python_interaction
summary