Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
bf06c93
feat(am62d-audioai): add config files and buildable doc skeleton
junechul Sep 3, 2026
f1bd267
feat(am62d-audioai): add Section 1 introduction with TVM+TIDL diagram
junechul Sep 3, 2026
4c1c7d1
feat(am62d-audioai): add Section 2 Audio AI Model Zoo on-target demos
junechul Sep 3, 2026
6f16447
feat(am62d-audioai): add Section 3 compile/evaluate/inspect workflow
junechul Sep 3, 2026
6cf0df0
feat(am62d-audioai): add Section 4 performance benchmark tables
junechul Sep 3, 2026
0db7cfb
feat(am62d-audioai): integrate navigation, cross-links, and full build
junechul Sep 3, 2026
283617c
docs(am62d-audioai): reframe as BYOM workflow and fix C7 NPU terminology
junechul Sep 9, 2026
c0b6471
docs(am62d-audioai): reconcile compile/eval/inspect with standalone A…
junechul Sep 11, 2026
319271f
docs(am62d-audioai): strip prompt symbol from copy button output
junechul Sep 22, 2026
db96350
docs(am62d-audioai): update Introduction and Model Zoo sections
junechul Sep 23, 2026
630cb1c
docs(am62d-audioai): Updated "Model Compile / Evaluate / Inspect" sec…
junechul Sep 23, 2026
6e9c9ad
docs(am62d-audioai): switch build target to OS=edgeai and update mode…
junechul Oct 9, 2026
0d748a1
docs(am62d-audioai): split Compile/Evaluate/Inspect into two sections
junechul Oct 9, 2026
95ea7ac
docs(am62d-audioai): fix inspector path and Jupyter launcher description
junechul Oct 12, 2026
880ba36
chore(am62d-audioai): stop tracking diagram sources and export script
junechul Oct 13, 2026
0f63803
docs(am62d-audioai): address PR review feedback on edgeai pages
junechul Oct 13, 2026
55c3e70
feat(am62dx): add EdgeAI overview, platform, and getting started docu…
paresh-bhagat Oct 13, 2026
590cad8
feat(am62dx): add custom audio pipeline section to out-of-box demo
PrathamTI Oct 19, 2026
bd24c7f
feat(am62dx): add plugin extension guide to BYOM documentation
PrathamTI Oct 19, 2026
756dea6
fix(am62dx): clarify BYOM requirements and improve documentation
PrathamTI Oct 19, 2026
0d4467c
feat(am62dx): add adding_new_model.rst and broaden edgeai overview wo…
paresh-bhagat Oct 19, 2026
20be521
fix(am62dxx): Use 'EdgeAI' label instead of AudioAI
PrathamTI Oct 21, 2026
37bea8f
fix(am62dxx): Remove Stale GStreamer plugin section from index
PrathamTI Oct 21, 2026
58e507a
docs(am62dx-edgeai): restructure GStreamer documentation
PrathamTI Oct 21, 2026
118d20a
feat(am62dx-edgeai): restructure documentation with new sections and …
paresh-bhagat Oct 22, 2026
b4632b3
fix(am62dxx-edgeai): Add Introduction and Supported pipelines section
PrathamTI Oct 22, 2026
d8b4362
feat(am62dx-edgeai): add property verification, build instructions, a…
PrathamTI Oct 22, 2026
b9690c6
docs(am62dx-edgeai): consolidate troubleshooting and add pipeline dia…
PrathamTI Oct 22, 2026
c42515f
feat(am62dx-edgeai): add command outputs
paresh-bhagat Oct 22, 2026
1500421
docs(am62dx-edgeai): align titles with Processor SDK branding
PrathamTI Oct 22, 2026
07a2639
feat(am62dx-edgeai): add new info for add new model
paresh-bhagat Oct 22, 2026
77397d6
feat(am62dx): Add doc for new EdgeAI and web gui info
paresh-bhagat Oct 22, 2026
88e4b90
docs(am62dx-edgeai): update hardware setup, gstreamer guides, and pip…
PrathamTI Oct 23, 2026
bf069d1
docs(am62dx-edgeai): standardize EdgeAI terminology
PrathamTI Oct 26, 2026
92114b8
fix(am62dxx): remove am62dxx gst vggish image
PrathamTI Oct 26, 2026
1675912
docs(am62dx-edgeai): shorten section titles and remove stale image re…
PrathamTI Oct 26, 2026
52795bc
feat(am62dx): Correct build info for linux application
paresh-bhagat Oct 26, 2026
6aa1a39
fix(am62dxx): Fix indentation
PrathamTI Oct 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/styles/config/vocabularies/PSDK/accept.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,13 @@ Zink
[Mm]ulticast
[Rr]enderers?
[Ss]carthgap
[Ss]ubgraphs?
[Tt]oolchain
balenaEtcher
bdebstrap
fdisk
logits?
mmdebstrap
perfsim
umount
venv
2 changes: 1 addition & 1 deletion .rstcheck.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ ignore_directives = ifconfig,graphviz,grid,grid-item,grid-item-card,card,dropdow
# ignore the following languages because they require external compilers and
# snippets in this repo depend on external code
ignore_languages = c,cpp,c++
ignore_substitutions = __PART_FAMILY_NAME__,__PART_FAMILY_DEVICE_NAMES__,__PRODUCT_LINE_NAME__,__SDK_BUILD_MACHINE__,__SDK_FULL_NAME__,__SDK_SHORT_NAME__,__SDK_INSTALL_FILE__,__SDK_INSTALL_DIR__,__SDK_DOWNLOAD_URL__,__LINUX_UBUNTU_VERSION_LONG__,__LINUX_UBUNTU_VERSION_SHORT__,__OPTEE_PLATFORM_FLAVOR__,__RTOS_UBUNTU_VERSION_LONG__,__WINDOWS_SUPPORTED_LONG__,__FEATURINGMATRIX__,__SYSFW_CORE_NAME__,__PCIE_BASE_ADDRESS__,__PCIE_DEVICE_ID__,__IMAGE_TYPE__,__SDK_OS_NAME__
ignore_substitutions = __PART_FAMILY_NAME__,__PART_FAMILY_DEVICE_NAMES__,__PRODUCT_LINE_NAME__,__SDK_BUILD_MACHINE__,__SDK_FULL_NAME__,__SDK_SHORT_NAME__,__SDK_INSTALL_FILE__,__SDK_INSTALL_DIR__,__SDK_DOWNLOAD_URL__,__LINUX_UBUNTU_VERSION_LONG__,__LINUX_UBUNTU_VERSION_SHORT__,__OPTEE_PLATFORM_FLAVOR__,__RTOS_UBUNTU_VERSION_LONG__,__WINDOWS_SUPPORTED_LONG__,__FEATURINGMATRIX__,__SYSFW_CORE_NAME__,__PCIE_BASE_ADDRESS__,__PCIE_DEVICE_ID__,__IMAGE_TYPE__,__SDK_OS_NAME__,__EDGEAI_SDK_VERSION__,trade
ignore_messages = (Hyperlink target.*is not referenced\.)
6 changes: 6 additions & 0 deletions conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,12 @@

FAMILY = os.environ.get("DEVFAMILY", "")
OS = os.environ.get("OS", "")

# EdgeAI docs prefix every shell command with a "$ " prompt symbol; strip it
# from the copy-button output so copied text is directly runnable.
if OS == "edgeai" and FAMILY == "AM62DX":
copybutton_prompt_text = "$ "

try:
globals().update(importlib.import_module(f"configs.{FAMILY}.{FAMILY}_{OS}_tags").__dict__)
except ModuleNotFoundError as exc:
Expand Down
30 changes: 30 additions & 0 deletions configs/AM62DX/AM62DX_edgeai_config.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# General family replacement variables and configuration values for AM62D EdgeAI build

# This file is processed by Python scripts to define both replacement
# variable and configuration values for a device family build.
# For replacement variables, all variables should be listed on a single
# line, and all the variables should be listed on consecutive lines
# (i.e. no additional blank lines between the replacement variables).
# Similarly, all the configuration values should be listed on individual,
# consecutive lines (with no blank lines between the configuration values).
#
# Note that neither replacement variables nor configuration values may contain
# a colon (i.e. ":") in their name. However, values may contain colons.

Replacement Variables
---------------------
'__PART_FAMILY_NAME__' : 'AM62Dx'
'__PART_FAMILY_DEVICE_NAMES__' : 'AM62Dx'
'__PRODUCT_LINE_NAME__' : 'Sitara MPU'
'__SDK_FULL_NAME__' : 'Processor SDK Linux EdgeAI AM62Dx'
'__SDK_SHORT_NAME__' : 'PSDK EdgeAI'
'__SDK_DOWNLOAD_URL__' : '`AM62D-SDK-Download-page <https://www.ti.com/drr/opn/AM62D-LINUX-RT-RESTRICTED-SDK>`__'
'__EDGEAI_SDK_VERSION__' : '12.1'
'__TIDL_VERSION__' : '11_02_18_00'
'__TIDL_TOOLS_VERSION__' : '11.2.x'

Configuration Values
--------------------
'CONFIG_part_family' : 'AM62DX_family'
'CONFIG_part_variant' : 'AM62DX'
'CONFIG_sdk' : 'SITARA'
6 changes: 6 additions & 0 deletions configs/AM62DX/AM62DX_edgeai_tags.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Project name and HTML title
project = u'Processor SDK Linux Edge AI for AM62Dx'
html_title = 'Processor SDK Linux Edge AI for AM62Dx Documentation'

# The master toctree document.
master_doc = 'devices/AM62DX/edgeai/index'
13 changes: 13 additions & 0 deletions configs/AM62DX/AM62DX_edgeai_toc.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
devices/AM62DX/edgeai/index
devices/AM62DX/edgeai/overview
devices/AM62DX/edgeai/evm_hardware_setup
devices/AM62DX/edgeai/out_of_box_demo
devices/AM62DX/edgeai/models_artifacts_and_setup
devices/AM62DX/edgeai/linux_audio_inference_app
devices/AM62DX/edgeai/getting_started_gstreamer
devices/AM62DX/edgeai/edgeai_model_workflow
devices/AM62DX/edgeai/model_zoo
devices/AM62DX/edgeai/model_compile_evaluate
devices/AM62DX/edgeai/model_inspect
devices/AM62DX/edgeai/integrating_new_model
devices/AM62DX/edgeai/performance
1 change: 1 addition & 0 deletions configs/AM62DX/AM62DX_linux_toc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -125,5 +125,6 @@ linux/Demo_User_Guides/index_Demos
linux/Demo_User_Guides/AM62D_Dsp_Offload_User_Guide
linux/Demo_User_Guides/AM62D_2DFFT_User_Guide
linux/Demo_User_Guides/AM62D_Cascade_Biquad_Parametric_EQ_User_Guide
linux/Demo_User_Guides/AM62D_EdgeAI_User_Guide

linux/Documentation_Tarball
131 changes: 131 additions & 0 deletions source/devices/AM62DX/edgeai/edgeai_model_workflow.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
.. include:: <isonum.txt>

Check warning on line 1 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.ReadabilityGrade] Simplify your language. The calculated Flesch–Kincaid grade level of 9.66 is above the recommended reading grade level of 9. Raw Output: {"message":"[RedHat.ReadabilityGrade] Simplify your language. The calculated Flesch–Kincaid grade level of 9.66 is above the recommended reading grade level of 9.","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":1,"column":1},"end":{"line":1,"column":2}}},"severity":"INFO","code":{"value":"RedHat.ReadabilityGrade","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#readability-grade"}}

.. _edgeai-introduction:

########################
EdgeAI Model Workflow

Check warning on line 6 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Headings] Use sentence-style capitalization in 'EdgeAI Model Workflow'. Raw Output: {"message":"[RedHat.Headings] Use sentence-style capitalization in 'EdgeAI Model Workflow'.","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":6,"column":1},"end":{"line":6,"column":22}}},"severity":"INFO","code":{"value":"RedHat.Headings","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#headings"}}
########################

This guide walks through the workflow for developing and deploying audio
deep-learning (DL) models on the |__PART_FAMILY_NAME__| platform, using
|__SDK_FULL_NAME__| |__EDGEAI_SDK_VERSION__|. It is written for embedded

Check warning on line 11 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.PassiveVoice] 'is written' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice. Raw Output: {"message":"[RedHat.PassiveVoice] 'is written' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice.","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":11,"column":50},"end":{"line":11,"column":60}}},"severity":"INFO","code":{"value":"RedHat.PassiveVoice","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#passive-voice"}}

Check warning on line 11 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.SentenceLength] Try to keep sentences to an average of 32 words or fewer. Raw Output: {"message":"[RedHat.SentenceLength] Try to keep sentences to an average of 32 words or fewer.","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":11,"column":47},"end":{"line":11,"column":49}}},"severity":"INFO","code":{"value":"RedHat.SentenceLength","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#sentence-length"}}
developers who want to run, compile, evaluate, and benchmark audio models on the
AM62D - either out of the box on the target with pre-compiled artifacts, or

Check warning on line 13 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.DoNotUseTerms] Do not use "out of the box" or "out-of-the-box". Use text that is suitable for the context and the noun to which this adjective applies. Raw Output: {"message":"[RedHat.DoNotUseTerms] Do not use \"out of the box\" or \"out-of-the-box\". Use text that is suitable for the context and the noun to which this adjective applies.","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":13,"column":16},"end":{"line":13,"column":30}}},"severity":"WARNING","code":{"value":"RedHat.DoNotUseTerms","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#do-not-use-terms"}}
through the x86 compile/evaluate workflow.

Check warning on line 14 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Slash] Use either 'or' or 'and' in 'compile/evaluate' Raw Output: {"message":"[RedHat.Slash] Use either 'or' or 'and' in 'compile/evaluate'","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":14,"column":17},"end":{"line":14,"column":33}}},"severity":"WARNING","code":{"value":"RedHat.Slash","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#slash"}}

Check warning on line 14 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.TermsSuggestions] Depending on the context, consider using '64-bit x86' or 'x86_64' rather than 'x86'. Raw Output: {"message":"[RedHat.TermsSuggestions] Depending on the context, consider using '64-bit x86' or 'x86_64' rather than 'x86'.","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":14,"column":13},"end":{"line":14,"column":16}}},"severity":"INFO","code":{"value":"RedHat.TermsSuggestions","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#terms-suggestions"}}

Four **reference models** serve as worked examples throughout the guide, but the

Check warning on line 16 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.SentenceLength] Try to keep sentences to an average of 32 words or fewer. Raw Output: {"message":"[RedHat.SentenceLength] Try to keep sentences to an average of 32 words or fewer.","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":16,"column":1},"end":{"line":16,"column":5}}},"severity":"INFO","code":{"value":"RedHat.SentenceLength","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#sentence-length"}}
workflow is not limited to them: the same compile/evaluate/inspect flow is a

Check warning on line 17 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Slash] Use either 'or' or 'and' in 'compile/evaluate' Raw Output: {"message":"[RedHat.Slash] Use either 'or' or 'and' in 'compile/evaluate'","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":17,"column":43},"end":{"line":17,"column":59}}},"severity":"WARNING","code":{"value":"RedHat.Slash","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#slash"}}
bring-your-own-model (BYOM) flow that accepts any supported `ONNX
<https://onnx.ai/>`__ model. More reference models will be added over time.

Check warning on line 19 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.PassiveVoice] 'be added' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice. Raw Output: {"message":"[RedHat.PassiveVoice] 'be added' is passive voice. In general, use active voice. Consult the style guide for acceptable use of passive voice.","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":19,"column":57},"end":{"line":19,"column":65}}},"severity":"INFO","code":{"value":"RedHat.PassiveVoice","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#passive-voice"}}

The remaining sections cover:

- :ref:`EdgeAI Model Zoo <edgeai-model-zoo>` - out-of-box demos on the AM62D
target (inference scripts and Jupyter notebooks) using pre-trained models and
pre-compiled artifacts.
- :ref:`Model Compile and Evaluate <edgeai-compile-evaluate>` - the
x86 BYOM workflow built on ``edgeai-tidlrunner``: compile a model for the AM62D
and evaluate accuracy on a dataset.
- :ref:`Model Inspect <edgeai-model-inspect>` - analyze the compiled subgraphs
and per-layer behavior with Model Inspector.
- :ref:`Performance benchmark <edgeai-performance>` - latency and memory
methodology with per-model tables.

********************
Development workflow
********************

The end-to-end path is the same for a reference model or your own model:

#. **Obtain an ONNX model** - a reference graph shipped with the EdgeAI ModelZoo,
or your own exported ONNX.
#. **Compile** it for the C7\ |trade| NPU on an x86 host (:ref:`Model Compile and
Evaluate <edgeai-compile-evaluate>`).
#. **Evaluate** accuracy or audio-quality metrics on a dataset.

Check failure on line 44 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.TermsErrors] Use 'data set' rather than 'dataset'. Raw Output: {"message":"[RedHat.TermsErrors] Use 'data set' rather than 'dataset'.","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":44,"column":56},"end":{"line":44,"column":63}}},"severity":"ERROR","code":{"value":"RedHat.TermsErrors","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#terms-errors"}}
#. **Inspect** the compiled subgraphs and per-layer analysis (:ref:`Model
Inspect <edgeai-model-inspect>`).
#. **Run** on the AM62D target using the compiled artifact
(:ref:`EdgeAI Model Zoo <edgeai-model-zoo>`).
#. **Benchmark** latency and memory (:ref:`Performance <edgeai-performance>`).

****************
Reference models
****************

Four reference models are provided across two task families, as worked examples
of the workflow. Each is delivered as an `ONNX <https://onnx.ai/>`__ graph and,
except for GTCRN, is offloaded to the C7\ |trade| NPU through the TVM runtime
(TVM-RT); GTCRN is the one that runs ARM-only. See :ref:`the framework overview
<edgeai-tvm-tidl>` below for what that means. The same flow accepts your own
ONNX model, and more reference models will be added over time.

Audio analysis and classification
=================================

**VGGish11** (model ID ``ac-0101``)
Audio-clip classification. Input is a log-mel patch of shape ``(1, 1, 64, 126)``;
output is ``(1, 10)`` class logits plus a ``(1, 512)`` embedding. Runs at 8-bit,
fully offloaded to the C7\ |trade| NPU via TVM-RT (a single TIDL subgraph).

**YAMNet** (model ID ``ac-0201``)
Audio-event classification. Input is a log-mel patch of shape ``(1, 1, 96, 64)``;
output is ``(1, 521)`` class scores. Runs at 8-bit, fully offloaded to the
C7\ |trade| NPU via TVM-RT (a single TIDL subgraph).

Both classification models are evaluated on the UrbanSound8K dataset.

Check failure on line 75 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.TermsErrors] Use 'data set' rather than 'dataset'. Raw Output: {"message":"[RedHat.TermsErrors] Use 'data set' rather than 'dataset'.","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":75,"column":62},"end":{"line":75,"column":69}}},"severity":"ERROR","code":{"value":"RedHat.TermsErrors","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#terms-errors"}}

Speech enhancement
==================

**GCRN** (model ID ``ase-0201``)
Convolutional-recurrent speech enhancement (noise suppression) over a fixed 4-second
window. Input and output are complex spectrograms of shape ``(1, 2, 401, 161)``.
Runs at 16-bit and is offloaded to the C7\ |trade| NPU via TVM-RT
(``tidl_offload: true``).

**GTCRN** (model ID ``ase-0100``)
Grouped temporal convolutional-recurrent speech enhancement. Input and output
are complex spectrograms of shape ``(1, 257, T, 2)`` with a dynamic time
dimension ``T``. Runs FP32 on the Arm core through the ONNX runtime
(``tidl_offload: false``) - it is the only supported model that is **not**
offloaded to the C7\ |trade| NPU.

Both speech-enhancement models are evaluated on the VoiceBank-DEMAND-16k
dataset.

Check failure on line 94 in source/devices/AM62DX/edgeai/edgeai_model_workflow.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.TermsErrors] Use 'data set' rather than 'dataset'. Raw Output: {"message":"[RedHat.TermsErrors] Use 'data set' rather than 'dataset'.","location":{"path":"source/devices/AM62DX/edgeai/edgeai_model_workflow.rst","range":{"start":{"line":94,"column":1},"end":{"line":94,"column":8}}},"severity":"ERROR","code":{"value":"RedHat.TermsErrors","url":"https://redhat-documentation.github.io/vale-at-red-hat/reference-guide.html#terms-errors"}}

.. _edgeai-tvm-tidl:

********************
TVM + TIDL framework
********************

The AM62D audio models are compiled and deployed with **TI TVM**, TI's fork of
the `Apache TVM <https://tvm.apache.org/>`__ deep-learning compiler. The target
accelerator is the **C7**\ |trade| **NPU** - TI's Neural Processing Unit, which
combines the **C7x DSP** with the **Matrix Multiplication Accelerator (MMA)**
(referred to as *C7x+MMA* in older documentation).

TI TVM integrates **TIDL** (TI Deep Learning) as an accelerator backend:
TIDL-supported layers are offloaded to the MMA, while TVM generates **C7x DSP**
code for any remaining layers. Because the MMA and the C7x DSP together make up
the C7\ |trade| NPU, the result is a single deployable artifact in which the
**entire model runs on the C7**\ |trade| **NPU**.

Compilation runs on an x86 host and proceeds in stages:

#. **Model import** - the ONNX graph is imported into TVM.
#. **Partitioning** - using the TIDL import API, the graph is split into
TIDL-supported subgraphs (compiled by the TIDL network compiler) and the
remaining operators (handled by TVM C7x DSP code generation).
#. **Artifact generation** - both parts are packaged into one TVM-RT deployable
artifact (``deploy_lib.so`` + ``deploy_graph.json`` + ``deploy_param.params``).

At run time on the AM62D, the TVM runtime loads the artifact and dispatches the
offloaded subgraphs to TIDL-RT on the C7\ |trade| NPU.

.. figure:: ../../../images/audioai/tvm_tidl_flow.svg
:width: 80 %
:align: center

TVM + TIDL compile-and-deploy flow for the AM62D audio models. Green blocks
are handled by TIDL; white blocks are handled by TVM.
Loading
Loading