mirror of
https://github.com/openmlsys/openmlsys-zh.git
synced 2026-02-04 10:54:57 +08:00
2.0 KiB
2.0 KiB
编程接口
现代机器学习框架包含大量的组件。这些组件使得用户得以高效开发机器学习算法,处理数据,部署模型,性能调优和使用硬件加速器。在设计这些组件的编程接口时,一个核心的诉求是:如何平衡框架性能和易用性?为了达到最优的性能,开发者需要利用硬件亲和的编程语言如:C和C++来进行开发。这是因为:C和C++的使用使得机器学习框架可以高效硬件的底层API,从而最大限度发挥硬件。同时,现代操作系统(如Linux和Windows)提供丰富的基于C和C++的编程接口(如文件系统,网络编程,多线程管理等),通过直接调用操作系统API,可以降低框架运行的开销。
从易用性的角度分析,机器学习框架的使用者往往具有丰富的行业背景(如数据科学家,生物学家,化学家,物理学家等)。他们的常用的编程语言是高层次脚本语言:Python,Matlab,R和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