Update programming model (#425)

This commit is contained in:
Cheng Lai
2023-03-09 16:21:00 +08:00
committed by GitHub
parent f80e6559b0
commit 3d7c502c68
6 changed files with 81 additions and 41 deletions

View File

@@ -1,8 +1,8 @@
# 编程接口
现代机器学习框架包含大量的组件。这些组件使得用户得以高效开发机器学习算法处理数据部署模型性能调优和使用硬件加速器。在设计这些组件的编程接口时一个核心的诉求是如何平衡框架性能和易用性为了达到最优的性能开发者需要利用硬件亲和的编程语言如C和C++来进行开发。这是因为C和C++的使用使得机器学习框架可以高效调用硬件底层API从而最大限度发挥硬件性能。同时现代操作系统如Linux和Windows提供丰富的基于C和C++的编程接口(如文件系统网络编程多线程管理等通过直接调用操作系统API可以降低框架运行的开销。
现代机器学习框架包含大量的组件,辅助用户高效开发机器学习算法处理数据部署模型性能调优和用硬件加速器。在设计这些组件的应用编程接口Application Programming InterfaceAPI一个核心的诉求是如何平衡框架性能和易用性为了达到最优的性能开发者需要利用硬件亲和的编程语言如C和C++来进行开发。这是因为C和C++可以帮助机器学习框架高效调用硬件底层API从而最大限度发挥硬件性能。同时现代操作系统如Linux和Windows提供丰富的基于C和C++的API接口(如文件系统网络编程多线程管理等通过直接调用操作系统API可以降低框架运行的开销。
从易用性的角度分析,机器学习框架的使用者往往具有丰富的行业背景(如数据科学家生物学家化学家物理学家等。他们常用的编程语言是高层次脚本语言PythonMatlabR和Julia。相比于C和C++,这些语言在提供编程易用性的同时丧失了C和C++对底层硬件和操作系统进行深度优化的能力。因此,机器学习框架的核心设计目标是:其要具有易用编程接口来支持用户用高层次语言如Python实现机器学习算法同时也要具备以C和C++为核心的低层次编程接口,使得框架开发者可以用C和C++实现大量高性能组件,从而在硬件上高效执行。在本章中,我们将会讲述如何达到这个设计目标。
从易用性的角度分析,机器学习框架的使用者往往具有丰富的行业背景(如数据科学家生物学家化学家物理学家等。他们常用的编程语言是高层次脚本语言PythonMatlabR和Julia。相比于C和C++这些语言在提供编程易用性的同时丧失了C和C++对底层硬件和操作系统进行深度优化的能力。因此,机器学习框架的核心设计目标是:具有易用编程接口来支持用户使用高层次语言如Python实现机器学习算法同时也要具备以C和C++为核心的低层次编程接口来帮助框架开发者用C和C++实现大量高性能组件,从而在硬件上高效执行。在本章中,讲述如何达到这个设计目标。
本章的学习目标包括:
@@ -21,5 +21,6 @@ development_history
ml_workflow
neural_network_layer
c_python_interaction
ml_programming_paradigm
summary
```