.. _Palette Software Overview: Software Overview ################# |var_palette_sw_diagram| |var_palette_tm| is SiMa.ai’s flagship software platform, supporting the entire product development cycle from model creation to deployment of a fully accelerated end-to-end application. It enables developers to start with an ML model from any major framework and take it all the way through optimization, packaging, and deployment on SiMa.ai's MLSoC. Once installed on the host development machine, Palette runs seamlessly inside Docker containers, providing access to all APIs, frameworks, libraries, and CLI tools required to build, deploy, and debug complex AI/ML applications for SiMa.ai devices. This section provides an overview of Palette and its key components. .. note:: |var_palette_tm|, and all its components, run fully on a host development machine within the Docker container (including all compilers mentioned in this section). SDK Containers *************** The SiMa.ai SDK provides four primary development containers. Each offers an isolated, purpose-built environment supporting a specific stage of the development workflow, from model preparation to application deployment. .. figure:: media/sdk-containers.png :align: center :width: 80% **SDK Containers** ModelSDK -------- The ModelSDK container provides the complete environment for the model preparation phase. It is used to load, quantize, validate, and compile pre-trained machine learning models into formats optimized for the SiMa.ai Machine Learning Accelerator (MLA). MPK CLI Tools ------------- This container serves as the primary toolchain for building, packaging, deploying, and managing applications across SiMa.ai device platforms. It generates ML Application Packages (MPKs) and automatically invokes the appropriate cross-compilation environments needed during standard builds. eLxr Cross-Compiler ------------------- This container provides the necessary environment to cross-compile applications for the eLxr operating system used on the Modalix platform. It is typically invoked automatically by the MPK toolchain but can be accessed directly for building non-MPK standalone binaries. For more details on accessing the SDK and using the cross-compiler, see :ref:`cross_compilation_setup`. Yocto Cross-Compiler -------------------- This container provides the toolchain required to cross-compile applications for the Yocto operating system used on standard MLSoC platforms. Like the eLxr compiler, it is usually used automatically during MPK builds but supports direct access for manual compilation tasks. For more details on accessing the SDK and using the cross-compiler, see :ref:`cross_compilation_setup`. Palette Tools & Resources ************************* GStreamer Plugin Zoo -------------------- Developers building real-time, high-performance applications on SiMa.ai’s MLSoC often rely on GStreamer. To simplify this workflow, SiMa.ai provides a comprehensive set of pre-built GStreamer plugins that expose all major hardware IP blocks as well as commonly used functions. These plugins can be used out-of-the-box or customized and recompiled to meet specific application needs. AppZoo ------ **AppZoo** is a collection of sample MPK applications that demonstrate how to build and deploy a variety of ML workloads on SiMa.ai hardware. Each example serves as a reference for best practices in application structure, packaging, and runtime integration. ModelZoo -------- **ModelZoo** is a library of precompiled, MLA-ready models that can be executed directly on SiMa.ai hardware. These models allow developers to quickly validate workloads and accelerate application prototyping. Debugging and Logging --------------------- |var_palette_tm| includes tools that streamline debugging and logging directly from the host machine. Alongside standard ``gdb`` support, Palette provides remote debugging capabilities for applications running on the MLSoC, as well as tools to retrieve or stream logs from the device back to the host environment. Development Flow **************** A typical machine learning application development flow consists of the following high-level steps: .. list-table:: Development Flow with Palette Software :header-rows: 1 :align: center * - **Development Step** - **Palette Component(s)** * - Palette Setup - Palette install package and Docker * - Setup |var_mlsoc_dev_kit| - Palette and |var_mlsoc_dev_kit| * - Run model loading and compilation examples - |var_modelsdk|, |var_ml_compiler| (included inside the |var_modelsdk|) and Palette examples * - Load, quantize, test and compile custom neural network model from ML framework (PyTorch, TF, ...) - |var_modelsdk|, |var_ml_compiler| (included inside the |var_modelsdk|) * - Testing model on board - Accelerator mode and example scripts * - Begin application development using GStreamer by running examples - Palette GStreamer examples, |var_mpk_tools|, |var_arm_cross_compiler| * - Begin application development - |var_mpk_tools|, |var_arm_cross_compiler|, |var_gstreamer_zoo| * - Deploy, debug and manage application - |var_mpk_tools|, |var_arm_cross_compiler|, |var_gstreamer_zoo|, |var_debug_and_logs| * - Debug on device (not through Palette tools) - GDB and PDB through ssh .. Parameters and resources .. |var_mlsoc_dev_kit| replace:: MLSoC Developer Board .. |var_palette_tm| replace:: Palette™ .. |var_modelsdk| replace:: ModelSDK .. |var_ml_compiler| replace:: MLA Compiler .. |var_gstreamer_zoo| replace:: GStreamer Plugin Zoo .. |var_mpk_tools| replace:: MPK tools .. |var_arm_cross_compiler| replace:: Arm Cross-Compiler .. |var_debug_and_logs| replace:: Debugging and Logging .. |var_palette_sw_diagram| image:: media/palette_sw_overview.png :alt: Palette SW components :align: middle