Files
2023-03-09 16:21:00 +08:00

26 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 编程接口
现代机器学习框架包含大量的组件辅助用户高效开发机器学习算法、处理数据、部署模型、性能调优和调用硬件加速器。在设计这些组件的应用编程接口Application Programming InterfaceAPI一个核心的诉求是如何平衡框架性能和易用性为了达到最优的性能开发者需要利用硬件亲和的编程语言如C和C++来进行开发。这是因为C和C++可以帮助机器学习框架高效地调用硬件底层API从而最大限度发挥硬件性能。同时现代操作系统如Linux和Windows提供丰富的基于C和C++的API接口如文件系统、网络编程、多线程管理等通过直接调用操作系统API可以降低框架运行的开销。
从易用性的角度分析机器学习框架的使用者往往具有丰富的行业背景如数据科学家、生物学家、化学家、物理学家等。他们常用的编程语言是高层次脚本语言Python、Matlab、R和Julia。相比于C和C++这些语言在提供编程易用性的同时丧失了C和C++对底层硬件和操作系统进行深度优化的能力。因此机器学习框架的核心设计目标是具有易用的编程接口来支持用户使用高层次语言如Python实现机器学习算法同时也要具备以C和C++为核心的低层次编程接口来帮助框架开发者用C和C++实现大量高性能组件,从而在硬件上高效执行。在本章中,将讲述如何达到这个设计目标。
本章的学习目标包括:
- 理解机器学习系统的工作流和以Python为核心的编程接口设计。
- 理解机器学习系统以神经网络模块为核心的接口设计原理和实现。
- 理解机器学习系统的底层C/C++执行算子的实现和与上层Python接口的调用实现。
- 了解机器学习系统编程接口的演进方向。
```toc
:maxdepth: 2
development_history
ml_workflow
neural_network_layer
c_python_interaction
ml_programming_paradigm
summary
```