人工智慧之 ONNX 簡介

關鍵字 :AI人工智慧

簡介

ONNX,Open Neural Network Exchange,即開放神經網絡交換,是一種針對機器學習模型而設計的開放文件格式,用於存儲訓練好的模型。不同的人工智慧框架(如Pytorch、MXNet等)可以採用相同格式存儲模型數據並進行交互。ONNX為AI模型提供了開放源代碼格式,包括深度學習和傳統機器學習。它定義了一個可擴展的計算圖模型,以及內置操作符和標準的數據類型。ONNX能夠讓AI開發人員隨著項目的發展選擇更合適的工具。目前,正專注於推斷(scoring)所需的功能。

ONNX的規範及代碼主要由微軟、亞馬遜、Facebook和IBM等科技公司和研究機構共同開發。其所建立的ONNX開源的人工智慧生態圈,旨在為機器學習算法和軟體工具制定開放標準,以促進人工智慧行業的創新與合作。

ONNX以開放源代碼的方式託管在Github上。目前,官方支持加載ONNX模型並進行推理的深度學習框架有: Caffe2、PyTorch、 MXNet、ML.NET、TensorRT 和 Microsoft CNTK,並且 TensorFlow 也非官方的支持ONNX。實現不同框架之間的互操作性,簡化從研究到生產的路徑,有助於提高AI社區的創新速度。

發展歷程

ONNX最初名為Toffee,由Facebook的PyTorch團隊開發。2017年9月,更名為ONNX,並由Facebook和Microsoft發布。後來IBM、Huawei、Intel、AMD、Arm和Qualcomm都宣布支持ONNX。

2017年10月,Microsoft宣布將其Cognitive Toolkit和Project Brainwave平台納入ONNX。2017年12月,ONNX發布第一個正式版本(v1.0)。

2019年11月,ONNX加入Linux Foundation AI。該組織是一家致力於構建人工智慧(AI)、機器學習(ML)和深度學習(DL)領域開源創新生態系統的組織,推動人工智慧和數據領域的開源創新。

2020年10月,Zetane Systems成為ONNX生態系統的成員。

ONNX的目的

ONNX使開發者能夠在不同框架間轉換,進行互操作。開發者可以使用喜歡的框架,而不用擔心對推理的影響。框架的共享優化還會使硬體供應商和其他公司能夠針對ONNX,可以一次性改進多個框架的人工神經網絡性能。

ONNX 支持的框架

ONNX社區提供工具,幫助開發者創建和部署深度學習模型,支持的框架有:

  • Yandex CatBoost

  • Chainer - 基於Python的深度學習框架

  • Cognitive Toolkit - Microsoft Cognitive Toolkit (CNTK) 是一個開源工具包,通過定向圖將神經網絡描述為一系列計算步驟。CNTK 已不再積極開發。

  • CoreML

  • Optimum - Optimum是Transformers的擴展,以包集合的形式進行分發。Optimum提供了一套性能優化工具,以最高效率在目標硬體上訓練和運行模型。

  • Keras - Python編寫的開源人工神經網絡庫

  • LibSVM - 支持向量機庫(Support Vector Machines,SVM),支持C-SVM分類、nu-SVM分類、one-class-SVM、epsilon-SVM回歸、nu-SVM回歸,以及C-SVM分類的自動模型選擇工具

  • Matlab - Deep Learning Toolbox 包含一系列算法、預訓練模型和應用程序,為您設計和實現深度神經網絡提供框架。

  • MindSpore - 是由華為推出的新一代全場景AI開源計算框架

  • MosaicML Composer - 是一個PyTorch庫,能夠更快、更低的成本和更高的精度訓練神經網絡。

  • MXNet - MXNet是一個深度學習框架。它讓您能夠將符號和命令式編程相結合,以實現最高效率和工作效率。MXNet的核心包含一個動態依賴調度器,可自動並行化符號和命令式操作。

  • MyCaffe - C++ CAFFE開源項目的 C# 重寫版本。

  • NCNN - 為手機端極致優化的高性能神經網絡前向計算框架。

  • NeoML - NeoML是一個端到端的機器學習框架,支持構建、訓練和部署機器學習模型。

  • Neural Network Libraries - 一個深度學習框架

  • PaddlePaddle - 飛槳(PaddlePaddle)以百度多年的深度學習技術研究和業務應用為基礎,是中國首個自主研發、功能完備、 開源開放的產業級深度學習平台,集深度學習核心訓練和推理框架、基礎模型庫、端到端開發套件和豐富的工具組件於一體。

  • PyTorch - 針對深度學習, 並且使用 GPU 和 CPU 來優化的 tensor library。

  • DLPy - SAS Viya中提供的SAS深度學習功能的高級Python庫。

  • Simcenter Amesim - 是一個系統仿真平台,允許設計工程師對系統性能進行虛擬評估和優化。

  • Simio - 全面向對象的仿真軟體

  • Singa - Apache SINGA是Apache頂級項目之一,專注於深度學習和機器學習模型的分布式訓練

  • SciKit Learn - 是一個建立在SciPy上的 Python 編程語言的機器學習庫

  • Tengine - 由 OPEN AI LAB 主導開發,實現了深度學習神經網絡模型在嵌入式設備上的快速、高效部署需求。

  • TensorFlow - 端到端開源機器學習平台

  • Tribuo - 一個用於構建和部署機器學習模型的Java庫。

  • XGBoost

  • Wolfram - 計算機編程語言,具有用於神經網絡機器學習系統的構建、培訓和部署的最先進的功能.

  • Zama - 使用同態加密保護隱私的開源加密工具

  • ...

 

結束語

ONNX是一種機器學習模型的開放標準,提供了開放的源代碼格式。許多AI框架的模型都可以轉換為標準的ONXX格式,可以在各種平台和設備上運行。

不同的AI框架差不多都有其自己的API,相對獨立,而應用可能會選擇不同的AI框架,不同AI框架的數據交換就顯得非常重要,ONNX使得不同框架間的互操作成為可能,大大促進了人工智慧的應用。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能