Skip to content

Latest commit

 

History

History
255 lines (225 loc) · 11.7 KB

MachineLearningEcosystem.md

File metadata and controls

255 lines (225 loc) · 11.7 KB

Mermaid diagrams appear broken now on GitHub since some backend change. So this diagram is all messed up.

This may have typos, incorrect connections, and incomplete nodes.

%%{ init: { 'flowchart': { 'curve': 'linear' } } }%%
flowchart-elk TB
    subgraph ML_Operator_Set_Definitions
        ONNX[<a href='https://onnx.ai/onnx/operators/index.html'><abbr title='Open Neural Network Exchange'>ONNX</abbr></a>]
        ARM_TOSA[<a href='https://www.mlplatform.org/tosa/tosa_spec.html'><abbr title='Advanced RISC Machines Tensor Operator Set Architecture'>ARM TOSA</abbr></a>]
        OpenXLA_Stable_HLO[<a href='https://github.com/openxla/stablehlo/blob/main/docs/spec.md'><abbr title='Open Accelerated Linear Algebra Stable High Level Optimizer'>OpenXLA StableHLO</abbr></a>]
    end

    subgraph Model_Formats
        TF2_Saved_Model_File
        TF1_Hub_Format_File
        TensorFlowLiteRT_File
        PyTorch_PTH_File
        ONNX_File[<a href='https://onnx.ai/onnx/operators/index.html'><abbr title='Open Neural Network Exchange'>ONNX</abbr> File</a>]
        ORT_File[<a href='https://onnxruntime.ai/docs/performance/model-optimizations/ort-format-models.html'>Microsoft <abbr title='Open Neural Network Exchange Runtime'>ORT</abbr> File</a>]
        NCNN_Param_File[<a href='https://github.com/Tencent/ncnn/wiki/param-and-model-file-structure'>Tencent <abbr title='Next/New/Naive/Neon Convolutional Neural Network'>NCNN</abbr> Param File</a>]
    end

    subgraph Machine_Learning_Libraries_High_Level
        Microsoft_WinML[<a href='https://learn.microsoft.com/en-us/windows/ai/windows-ml/'>Microsoft <abbr title='Windows Machine Learning'>WinML</abbr></a>]
        Microsoft_ONNX_Runtime[<a href='https://github.com/microsoft/onnxruntime'>Microsoft <abbr title='Open Neural Network Exchange'>ONNX</abbr> Runtime</a>]
        PyTorch
        Google_TensorFlow
        Apple_CoreML[<a href='https://developer.apple.com/documentation/coreml'>Microsoft <abbr title='Apple Core Machine Learning'>Apple CoreML</abbr></a>]
        subgraph ORT_EP_subgraph[ ]
            ORT_EPs[EPs: CPU DML CUDA OpenVINO ROCM WebNN WebGPU QNN CoreML]
        end
        Apple_MLX[<a href='https://github.com/ml-explore/mlx'>Apple <abbr title='Machine Learning Explore'>MLX</abbr></a>]
        ONEIROS_Keras
        Facebook_Caffe2
        MILA_Theano[<a href='https://github.com/Theano/Theano'><abbr title='Montreal Institute for Learning Algorithms Theano'>MILA Theano</abbr></a>]
        PyMC_PyTensor
    end

    subgraph Machine_Learning_Libraries_Low_Level
        Microsoft_DirectML[<a href='https://learn.microsoft.com/en-us/windows/ai/directml/dml-intro'>Microsoft <abbr title='Direct Machine Learning'>DirectML</abbr></a>]
        Intel_OpenVINO[<a href='https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/overview.html'>Intel <abbr title='Open Visual Inference and Neural Network Optimization'>OpenVINO</abbr></a>]
        Intel_OneDNN[<a href='https://oneapi-src.github.io/oneDNN/'>Intel <abbr title='One Deep Neural Network library'>OneDNN</abbr></a>]
        AMD_ROCM[<abbr title='Advanced Micro Devices Radeon Open Compute Platform'>AMD ROCM</abbr>]
        Google_XNNPack[<a href='https://github.com/google/XNNPACK/blob/master/include/xnnpack.h'>Google <abbr title='X Neural Network Package'>XNNPack</abbr></a>]
        Apple_MPS[<a href='https://developer.apple.com/documentation/metalperformanceshadersgraph/mpsgraph'>Apple <abbr title='Metal Performance Shaders'>MPS</abbr></a>]
        Apple_BNNS[<a href='https://developer.apple.com/documentation/accelerate/bnns'>Apple <abbr title='Basic Neural Network Subroutines'>BNNS</abbr></a>]
        Google_NNAPI[<a href='https://developer.android.com/ndk/guides/neuralnetworks'>Google <abbr title='Android Neural Network API'>NNAPI</abbr></a>]
        Qualcomm_QNN
        NVidia_cuDNN[<a href="https://docs.nvidia.com/deeplearning/cudnn/developer-guide/index.html">NVidia <abbr title='CUDA Deep Neural Network'>cuDNN</abbr></a>]
        Microsoft_CNTK[Microsoft <abbr title='Cognitive Tooklit'>CNTK</abbr>]
        Tencent_NCNN[<a href='https://github.com/Tencent/ncnn/wiki#faq'>Tencent <abbr title='Next/New/Naive/Neon Convolutional Neural Network'>NCNN</abbr></a>]
        W3C_WebNN[<a href='https://www.w3.org/TR/webnn/'><abbr title='World Wide Web, Web Neural Network'>W3C WebNN</abbr></a>]
        NVidia_TensorRT[NVidia <abbr title='Tensor Runtime'>TensorRT</abbr>]
        Google_JAX[<a href='https://jax.readthedocs.io/en/latest/' title="NumPy-like API">Google <abbr title='Just After Execution'>JAX</abbr></a>]
    end

    subgraph Instruction_Compilers[<abbr title='Lower level individual instructions rather than operator granularity'>Instruction Compilers</abbr>]
        LLVM_MLIR[<a href='https://mlir.llvm.org/'><abbr title='Low Level Virtual Machine Multi-level Intermediate Representation'>LLVM MLIR</abbr></a>]
        IREE_MLIR[<a href='https://iree.dev/'><abbr title='Intermediate Representation Execution Environment'>IREE</abbr></a>]
        Intel_PlaidML[<a href="https://plaidml.github.io/plaidml/"><abbr title='Tile Based Machine Learning'>Intel PlaidML</abbr></a>]
    end

    subgraph Compute_Shading_Languages
        HLSL[<abbr title='High Level Shading Language'>HLSL</abbr>]
        WGSL[<abbr title='WebGPU Shading Language'>WGSL</abbr>]
        GLSL[<abbr title='Open Graphics Library Shading Language'>GLSL</abbr>]
        MSL[<abbr title='Metal Shading Language'>MSL</abbr>]
        SPIRV[<abbr title='Standard Portable Intermediate Representation Vulkan'>SPIRV</abbr>]
        CUDA_CPP[<abbr title='Compute Unified Device Architecture'>CUDA</abbr>]
        SYCL_CPP[<abbr title='SYstem-wide Compute Language'>SYCL</abbr>]
    end

    subgraph Graphics_Compute_Libraries
        W3C_WebGPU[<abbr title='World Wide Web, Web Graphics Processing Unit'>W3C WebGPU</abbr>]
        Microsoft_Direct3D
        Khronos_OpenGL[Khronos <abbr title='Open Graphics Library'>OpenGL</abbr>]
        Khronos_Vulkan
        Khronos_SYCL[Khronos <abbr title='SYstem-wide Compute Language'>SYCL</abbr>]
        Khronos_OpenCL[Khronos <abbr title='Open Computing Language'>OpenCL</abbr>]
        Apple_Metal
        NVidia_CUDA[NVidia <abbr title='Compute Unified Device Architecture'>CUDA</abbr>]
    end

    subgraph Graphics_Drivers
        Microsoft_WARP
        NVidia_GPU_Driver
        AMD_GPU_Driver
        Qualcomm_GPU_Driver
        Intel_GPU_Driver
    end

    subgraph Hardware
        Apple_ANE[<a href='https://machinelearning.apple.com/research/neural-engine-transformers'>Apple <abbr title='Apple Neural Engine'>ANE</abbr></a>]
        NVidia_GPU
        AMD_GPU
        Qualcomm_GPU
        Intel_GPU
        NPU
        TPU
    end

    subgraph Unknowns
        Apache_TVM[<a href='https://tvm.apache.org/docs/'>Apache <abbr title='Tensor Virtual Machine'>TVM</abbr></a>]
        Halide[<a href='https://halide-lang.org/'>Halide</a>]
        OpenXLA_XLA[<a href='https://github.com/openxla/xla'><abbr title='Open Accelerated Linear Algebra'>OpenXLA XLA</abbr></a>]
        NVidia_Triton_MLIR
    end

    ONNX --> ONNX_File
    OpenXLA_Stable_HLO --> TF2_Saved_Model_File
    NCNN_Param_File --> Tencent_NCNN

    ONNX_File --> Microsoft_ONNX_Runtime
    ONNX_File --> Microsoft_WinML
    ORT_File --> Microsoft_ONNX_Runtime
    PyTorch_PTH_File --> PyTorch
    TensorFlowLiteRT_File --> Google_TensorFlow
    TF1_Hub_Format_File --> Google_TensorFlow
    TF2_Saved_Model_File --> Google_TensorFlow

    Microsoft_WinML --> Microsoft_ONNX_Runtime
    Microsoft_ONNX_Runtime --> ORT_EPs

    ORT_EPs --> Microsoft_DirectML
    ORT_EPs --> NVidia_CUDA
    ORT_EPs --> Intel_OpenVINO
    ORT_EPs --> AMD_ROCM
    ORT_EPs --> W3C_WebNN
    ORT_EPs --> WGSL
    ORT_EPs --> Apple_CoreML
    ORT_EPs --> Qualcomm_QNN

    Microsoft_DirectML --> HLSL
    W3C_WebNN --> Microsoft_DirectML
    W3C_WebNN --> Google_XNNPack
    W3C_WebGPU --> Microsoft_Direct3D
    W3C_WebGPU --> Khronos_Vulkan
    W3C_WebGPU --> Apple_Metal
    WGSL --> W3C_WebGPU
    HLSL --> Microsoft_Direct3D
    GLSL --> Khronos_OpenGL
    MSL --> Apple_Metal
    SPIRV --> Khronos_Vulkan
    SYCL_CPP --> Khronos_SYCL
    CUDA_CPP --> NVidia_CUDA
    Apple_CoreML --> Apple_BNNS
    Apple_CoreML --> Apple_MPS
    Apple_CoreML --> Apple_ANE
    Apple_MPS --> MSL
    Apple_MLX --> Apple_MPS
    Apple_MLX --> Apple_Metal
    PyTorch --> NVidia_CUDA
    Google_TensorFlow --> NVidia_CUDA
    PyTorch --> Microsoft_DirectML
    Google_TensorFlow --> Microsoft_DirectML
    NVidia_TensorRT --> NVidia_CUDA
    NVidia_cuDNN --> NVidia_CUDA
    Facebook_Caffe2 --> NVidia_CUDA

    Microsoft_Direct3D --> NVidia_GPU_Driver
    Microsoft_Direct3D --> AMD_GPU_Driver
    Microsoft_Direct3D --> Microsoft_WARP
    Microsoft_Direct3D --> Intel_GPU_Driver
    Microsoft_Direct3D --> Qualcomm_GPU_Driver
    Khronos_OpenGL --> NVidia_GPU_Driver
    Khronos_OpenGL --> AMD_GPU_Driver
    Khronos_OpenGL --> Intel_GPU_Driver
    Khronos_OpenGL --> Qualcomm_GPU_Driver

    NVidia_CUDA --> NVidia_GPU_Driver
    AMD_ROCM --> AMD_GPU_Driver
    Intel_OpenVINO --> Intel_GPU_Driver
    Intel_OneDNN --> Intel_GPU_Driver

    NVidia_GPU_Driver --> NVidia_GPU
    AMD_GPU_Driver --> AMD_GPU
    Qualcomm_GPU_Driver --> Qualcomm_GPU
    Intel_GPU_Driver --> Intel_GPU
Loading