TI Tiny ML Tensorlab
v1.3.0

Contents

  • 1. Introduction
    • 1.1. What is Tiny ML Tensorlab?
      • 1.1.1. Overview
      • 1.1.2. Target Applications
      • 1.1.3. Key Capabilities
      • 1.1.4. Repository Structure
      • 1.1.5. Workflow Summary
      • 1.1.6. Next Steps
    • 1.2. System Architecture
      • 1.2.1. High-Level Architecture
      • 1.2.2. Component Details
        • 1.2.2.1. tinyml-modelzoo
        • 1.2.2.2. tinyml-modelmaker
        • 1.2.2.3. tinyml-tinyverse
        • 1.2.2.4. tinyml-modeloptimization
      • 1.2.3. Data Flow
      • 1.2.4. Configuration System
      • 1.2.5. Integration Points
    • 1.3. Terminology
      • 1.3.1. General ML Terms
      • 1.3.2. Tiny ML Tensorlab Terms
      • 1.3.3. Device & Hardware Terms
      • 1.3.4. Configuration Terms
      • 1.3.5. Data Terms
      • 1.3.6. Model Size Conventions
      • 1.3.7. Abbreviations
    • 1.4. Overview
  • 2. Installation
    • 2.1. Prerequisites
      • 2.1.1. System Requirements
      • 2.1.2. Software Requirements
      • 2.1.3. For Compilation (Optional)
      • 2.1.4. For Device Deployment (Optional)
      • 2.1.5. CUDA (Optional)
      • 2.1.6. Verification Checklist
    • 2.2. User Installation
      • 2.2.1. Quick Install
      • 2.2.2. Running Your First Example
      • 2.2.3. Verifying Installation
      • 2.2.4. Updating
      • 2.2.5. Uninstalling
      • 2.2.6. Limitations of User Install
      • 2.2.7. Troubleshooting
      • 2.2.8. Next Steps
    • 2.3. Developer Installation
      • 2.3.1. Overview
      • 2.3.2. Step 1: Clone the Repository
      • 2.3.3. Step 2: Set Up Python Environment
      • 2.3.4. Step 3: Verify Installation
      • 2.3.5. Directory Structure After Installation
      • 2.3.6. Updating
      • 2.3.7. Common Developer Tasks
      • 2.3.8. Troubleshooting
      • 2.3.9. Next Steps
    • 2.4. Windows Setup
      • 2.4.1. Option 1: Native Windows Installation
      • 2.4.2. Option 2: WSL2 (Recommended for Full Compatibility)
      • 2.4.3. Path Configuration
      • 2.4.4. Common Windows Issues
      • 2.4.5. GPU Support on Windows
      • 2.4.6. WSL2 vs Native Windows Comparison
      • 2.4.7. Next Steps
    • 2.5. Linux Setup
      • 2.5.1. System Preparation
      • 2.5.2. Installing Python 3.10
      • 2.5.3. Installation
      • 2.5.4. Verification
      • 2.5.5. GPU Setup (Optional)
      • 2.5.6. Shell Configuration
      • 2.5.7. Permission Issues
      • 2.5.8. Multiple Python Versions
      • 2.5.9. System Service (Optional)
      • 2.5.10. Troubleshooting
      • 2.5.11. Next Steps
    • 2.6. Environment Variables
      • 2.6.1. Required Variables by Device Family
        • 2.6.1.1. C2000 Devices (F28P55, F28P65, F2837, etc.)
        • 2.6.1.2. MSPM0 Devices (MSPM0G3507, MSPM0G5187, etc.)
        • 2.6.1.3. AM26x Devices (AM263, AM261, etc.)
      • 2.6.2. Setting Environment Variables
      • 2.6.3. Installing TI Tools
      • 2.6.4. Verifying Configuration
      • 2.6.5. Troubleshooting
      • 2.6.6. Next Steps
    • 2.7. Quick Start
  • 3. Getting Started
    • 3.1. Quickstart
      • 3.1.1. Prerequisites
      • 3.1.2. Step 1: Navigate to ModelZoo
      • 3.1.3. Step 2: Run Hello World Example
      • 3.1.4. Step 3: View Results
      • 3.1.5. Step 4: Understand the Config
      • 3.1.6. Step 5: Try a Different Example
      • 3.1.7. Expected Results
      • 3.1.8. Next Steps
    • 3.2. First Example
      • 3.2.1. Overview
      • 3.2.2. Step 1: Examine the Configuration
      • 3.2.3. Step 2: Run Training
      • 3.2.4. Step 3: Understand Training Output
      • 3.2.5. Step 4: Examine Output Files
      • 3.2.6. Step 5: Analyze Results
      • 3.2.7. Step 6: Customize the Example
      • 3.2.8. Next Steps
    • 3.3. Understanding Config
      • 3.3.1. Configuration Overview
      • 3.3.2. Common Section
      • 3.3.3. Dataset Section
      • 3.3.4. Data Processing & Feature Extraction Section
      • 3.3.5. Training Section
      • 3.3.6. Testing Section
      • 3.3.7. Compilation Section
      • 3.3.8. Complete Example
      • 3.3.9. Tips
      • 3.3.10. See Also
    • 3.4. Running Examples
      • 3.4.1. Finding Examples
      • 3.4.2. Running an Example
      • 3.4.3. Example Directory Structure
      • 3.4.4. Understanding Example Configs
      • 3.4.5. Customizing Examples
      • 3.4.6. Output Location
      • 3.4.7. Example Categories
      • 3.4.8. Running Multiple Examples
      • 3.4.9. Troubleshooting Examples
      • 3.4.10. Next Steps
    • 3.5. 5-Minute Quickstart
  • 4. Supported Task Types
    • 4.1. Time Series Classification
      • 4.1.1. Overview
      • 4.1.2. Configuration
      • 4.1.3. Dataset Format
      • 4.1.4. Available Models
      • 4.1.5. Feature Extraction
      • 4.1.6. Metrics
      • 4.1.7. Example: Arc Fault Detection
      • 4.1.8. Tips
      • 4.1.9. See Also
    • 4.2. Time Series Regression
      • 4.2.1. Overview
      • 4.2.2. Configuration
      • 4.2.3. Dataset Format
      • 4.2.4. Available Models
      • 4.2.5. Key Configuration
      • 4.2.6. Metrics
      • 4.2.7. Example: Torque Measurement
      • 4.2.8. Tips
      • 4.2.9. See Also
    • 4.3. Time Series Forecasting
      • 4.3.1. Overview
      • 4.3.2. Configuration
      • 4.3.3. Key Parameters
      • 4.3.4. Dataset Format
      • 4.3.5. Available Models
      • 4.3.6. Windowing Example
      • 4.3.7. Metrics
      • 4.3.8. Example: PMSM Temperature Forecasting
      • 4.3.9. Important Notes
      • 4.3.10. Tips
      • 4.3.11. See Also
    • 4.4. Anomaly Detection
      • 4.4.1. Overview
      • 4.4.2. How It Works
      • 4.4.3. Configuration
      • 4.4.4. Dataset Format
      • 4.4.5. Available Models
      • 4.4.6. Threshold Selection
      • 4.4.7. Metrics
      • 4.4.8. Semi-Supervised vs Supervised
      • 4.4.9. Example: Motor Bearing Anomaly
      • 4.4.10. Tips
      • 4.4.11. See Also
    • 4.5. Image Classification
      • 4.5.1. Overview
      • 4.5.2. Configuration
      • 4.5.3. Dataset Format
      • 4.5.4. Available Models
      • 4.5.5. Current Limitations
      • 4.5.6. Example: MNIST Digit Recognition
      • 4.5.7. Preparing Image Data
      • 4.5.8. Tips
      • 4.5.9. See Also
    • 4.6. Task Overview
    • 4.7. Choosing the Right Task
  • 5. Bring Your Own Data
    • 5.1. Classification Dataset Format
      • 5.1.1. Directory Structure
      • 5.1.2. Data File Format
      • 5.1.3. Supported File Types
      • 5.1.4. Annotations (Optional)
      • 5.1.5. Configuration
      • 5.1.6. Example: 3-Class Vibration Data
      • 5.1.7. Class Balancing
      • 5.1.8. Common Issues
    • 5.2. Regression Dataset Format
      • 5.2.1. Directory Structure
      • 5.2.2. Data File Format
      • 5.2.3. Time Column Handling
      • 5.2.4. Annotation Files (Required)
      • 5.2.5. Configuration
      • 5.2.6. Target Processing
      • 5.2.7. Complete Example
      • 5.2.8. Common Issues
    • 5.3. Forecasting Dataset Format
      • 5.3.1. Directory Structure
      • 5.3.2. Data File Format
      • 5.3.3. Key Difference from Regression
      • 5.3.4. Configuration
      • 5.3.5. Variable Specification Options
      • 5.3.6. Windowing Behavior
      • 5.3.7. Complete Example
      • 5.3.8. Important Notes
      • 5.3.9. Minimum Data Requirements
      • 5.3.10. Common Issues
    • 5.4. Data Splitting
      • 5.4.1. Split Methods
      • 5.4.2. Configuration
      • 5.4.3. Annotation File Format
      • 5.4.4. Split Examples
      • 5.4.5. When to Use Each Method
      • 5.4.6. Best Practices
      • 5.4.7. Creating Annotation Files
      • 5.4.8. Verifying Splits
    • 5.5. Dataset Format Overview
    • 5.6. Supported File Formats
    • 5.7. Data Sources
  • 6. Supported Devices
    • 6.1. Device Overview
      • 6.1.1. Supported Device Families
      • 6.1.2. Complete Device List
      • 6.1.3. Target Device Configuration
      • 6.1.4. NPU vs Non-NPU Devices
      • 6.1.5. Choosing a Device
    • 6.2. NPU Guidelines
      • 6.2.1. NPU-Enabled Devices
      • 6.2.2. Layer Constraints
      • 6.2.3. Using NPU-Compatible Models
      • 6.2.4. Channel Multiples of 4
      • 6.2.5. Kernel Size Restrictions
      • 6.2.6. Compilation Preset
      • 6.2.7. Custom NPU-Compatible Models
      • 6.2.8. Troubleshooting NPU Compilation
      • 6.2.9. Performance Comparison
    • 6.3. C2000 Family
      • 6.3.1. Overview
      • 6.3.2. Supported Devices
      • 6.3.3. F28P55 (Recommended)
      • 6.3.4. F28P65
      • 6.3.5. F2837
      • 6.3.6. C29x Family (F29H85, F29P58, F29P32)
      • 6.3.7. Typical Applications
      • 6.3.8. Development Tools
      • 6.3.9. Memory Considerations
      • 6.3.10. Next Steps
    • 6.4. MSPM0 Family
      • 6.4.1. Overview
      • 6.4.2. Supported Devices
      • 6.4.3. MSPM0G5187 (NPU-Enabled)
      • 6.4.4. MSPM0G3507
      • 6.4.5. MSPM0G3519
      • 6.4.6. AM13 Family
      • 6.4.7. Power Considerations
      • 6.4.8. Memory Constraints
      • 6.4.9. Typical Applications
      • 6.4.10. Development Tools
      • 6.4.11. Getting Started
      • 6.4.12. Next Steps
    • 6.5. Connectivity Devices
      • 6.5.1. Overview
      • 6.5.2. Supported Devices
      • 6.5.3. CC2755
      • 6.5.4. CC1352
      • 6.5.5. AM26x Family
      • 6.5.6. Typical Applications
      • 6.5.7. Power Optimization
      • 6.5.8. Memory Constraints
      • 6.5.9. Development Tools
      • 6.5.10. Wireless Protocol Considerations
      • 6.5.11. Getting Started
      • 6.5.12. Next Steps
    • 6.6. Device Families at a Glance
    • 6.7. Complete Device List
    • 6.8. NPU vs Non-NPU Devices
  • 7. Examples & Applications
    • 7.1. Running an Example
    • 7.2. Generic Examples
    • 7.3. Classification Examples
    • 7.4. Regression Examples
    • 7.5. Forecasting Examples
    • 7.6. Anomaly Detection Examples
    • 7.7. Image Classification Examples
      • 7.7.1. Generic Time Series Classification
        • 7.7.1.1. Overview
        • 7.7.1.2. Running the Example
        • 7.7.1.3. Understanding the Dataset
        • 7.7.1.4. Dataset Format
        • 7.7.1.5. Configuration
        • 7.7.1.6. Feature Extraction
        • 7.7.1.7. Evaluation Metrics
        • 7.7.1.8. Expected Results
        • 7.7.1.9. Output Location
        • 7.7.1.10. Variations to Try
        • 7.7.1.11. Next Steps
      • 7.7.2. Generic Time Series Regression
        • 7.7.2.1. Overview
        • 7.7.2.2. Running the Example
        • 7.7.2.3. Understanding the Dataset
        • 7.7.2.4. Dataset Format
        • 7.7.2.5. Configuration
        • 7.7.2.6. Evaluation Metrics
        • 7.7.2.7. Expected Results
        • 7.7.2.8. Output Location
        • 7.7.2.9. Next Steps
      • 7.7.3. Generic Time Series Forecasting
        • 7.7.3.1. Overview
        • 7.7.3.2. Running the Example
        • 7.7.3.3. Understanding the Dataset
        • 7.7.3.4. Dataset Format
        • 7.7.3.5. Configuration
        • 7.7.3.6. Target Variables
        • 7.7.3.7. Evaluation Metrics
        • 7.7.3.8. Expected Results
        • 7.7.3.9. Output Location
        • 7.7.3.10. Next Steps
      • 7.7.4. Generic Time Series Anomaly Detection
        • 7.7.4.1. Overview
        • 7.7.4.2. Running the Example
        • 7.7.4.3. Understanding the Dataset
        • 7.7.4.4. Dataset Format
        • 7.7.4.5. Configuration
        • 7.7.4.6. How Autoencoder Detection Works
        • 7.7.4.7. Why Frame Size Matters
        • 7.7.4.8. Expected Results
        • 7.7.4.9. Output Location
        • 7.7.4.10. Next Steps
      • 7.7.5. Arc Fault Detection
        • 7.7.5.1. Overview
        • 7.7.5.2. Why Arc Fault Detection?
        • 7.7.5.3. Running the Example
        • 7.7.5.4. Configuration
        • 7.7.5.5. Dataset Description
        • 7.7.5.6. Feature Extraction
        • 7.7.5.7. Available Models
        • 7.7.5.8. Expected Results
        • 7.7.5.9. Interpreting Results
        • 7.7.5.10. Deployment Considerations
        • 7.7.5.11. AC Arc Fault Detection
        • 7.7.5.12. Next Steps
      • 7.7.6. AC Arc Fault
        • 7.7.6.1. Overview
        • 7.7.6.2. Configuration
        • 7.7.6.3. Running the Example
        • 7.7.6.4. Dataset Details
        • 7.7.6.5. Recommended Models
        • 7.7.6.6. See Also
      • 7.7.7. Motor Bearing Fault
        • 7.7.7.1. Overview
        • 7.7.7.2. Fault Classes
        • 7.7.7.3. Running the Example
        • 7.7.7.4. Configuration
        • 7.7.7.5. Dataset Description
        • 7.7.7.6. Feature Extraction Presets
        • 7.7.7.7. Available Models
        • 7.7.7.8. Expected Results
        • 7.7.7.9. Multi-Class Evaluation
        • 7.7.7.10. Dataset Quality Analysis
        • 7.7.7.11. Practical Considerations
        • 7.7.7.12. Anomaly Detection Alternative
        • 7.7.7.13. Next Steps
      • 7.7.8. Blower Imbalance
        • 7.7.8.1. Overview
        • 7.7.8.2. Configuration
        • 7.7.8.3. Running the Example
        • 7.7.8.4. Dataset Details
        • 7.7.8.5. Recommended Models
        • 7.7.8.6. See Also
      • 7.7.9. Fan Blade Fault Classification
        • 7.7.9.1. Overview
        • 7.7.9.2. Demo Setup
        • 7.7.9.3. Fault Types
        • 7.7.9.4. Configuration
        • 7.7.9.5. Running the Example
        • 7.7.9.6. Dataset Details
        • 7.7.9.7. Results and Analysis
        • 7.7.9.8. Anomaly Detection Variant
        • 7.7.9.9. See Also
      • 7.7.10. Electrical Fault
        • 7.7.10.1. Overview
        • 7.7.10.2. Configuration
        • 7.7.10.3. Running the Example
        • 7.7.10.4. Dataset Details
        • 7.7.10.5. See Also
      • 7.7.11. Grid Stability
        • 7.7.11.1. Overview
        • 7.7.11.2. Configuration
        • 7.7.11.3. Running the Example
        • 7.7.11.4. Dataset Details
        • 7.7.11.5. See Also
      • 7.7.12. Gas Sensor
        • 7.7.12.1. Overview
        • 7.7.12.2. Configuration
        • 7.7.12.3. Running the Example
        • 7.7.12.4. Dataset Details
        • 7.7.12.5. Quantization Analysis
        • 7.7.12.6. See Also
      • 7.7.13. Human Activity Recognition
        • 7.7.13.1. Overview
        • 7.7.13.2. Configuration
        • 7.7.13.3. Running the Example
        • 7.7.13.4. Dataset Details
        • 7.7.13.5. See Also
      • 7.7.14. ECG Classification
        • 7.7.14.1. Overview
        • 7.7.14.2. Configuration
        • 7.7.14.3. Running the Example
        • 7.7.14.4. Dataset Details
        • 7.7.14.5. See Also
      • 7.7.15. NILM Appliance Usage Classification
        • 7.7.15.1. Overview
        • 7.7.15.2. Configuration
        • 7.7.15.3. Running the Example
        • 7.7.15.4. Dataset Details
        • 7.7.15.5. On-Device Results
        • 7.7.15.6. PLAID Dataset Variant
        • 7.7.15.7. See Also
      • 7.7.16. PIR Detection
        • 7.7.16.1. Overview
        • 7.7.16.2. Configuration
        • 7.7.16.3. Running the Example
        • 7.7.16.4. Dataset Details
        • 7.7.16.5. Recommended Devices
        • 7.7.16.6. See Also
      • 7.7.17. Torque Measurement Regression
        • 7.7.17.1. Overview
        • 7.7.17.2. Configuration
        • 7.7.17.3. Running the Example
        • 7.7.17.4. Dataset Details
        • 7.7.17.5. Recommended Models
        • 7.7.17.6. See Also
      • 7.7.18. Induction Motor Speed Prediction
        • 7.7.18.1. Overview
        • 7.7.18.2. Configuration
        • 7.7.18.3. Running the Example
        • 7.7.18.4. Dataset Details
        • 7.7.18.5. See Also
      • 7.7.19. Washing Machine Regression
        • 7.7.19.1. Overview
        • 7.7.19.2. Configuration
        • 7.7.19.3. Running the Example
        • 7.7.19.4. Dataset Details
        • 7.7.19.5. Results
        • 7.7.19.6. See Also
      • 7.7.20. PMSM Rotor Forecasting
        • 7.7.20.1. Overview
        • 7.7.20.2. Configuration
        • 7.7.20.3. Running the Example
        • 7.7.20.4. Dataset Details
        • 7.7.20.5. Recommended Models
        • 7.7.20.6. Results
        • 7.7.20.7. See Also
      • 7.7.21. HVAC Indoor Temp Forecast
        • 7.7.21.1. Overview
        • 7.7.21.2. Configuration
        • 7.7.21.3. Running the Example
        • 7.7.21.4. Dataset Details
        • 7.7.21.5. Results
        • 7.7.21.6. See Also
      • 7.7.22. Anomaly Detection Example
        • 7.7.22.1. Overview
        • 7.7.22.2. When to Use Anomaly Detection
        • 7.7.22.3. Running the Example
        • 7.7.22.4. Configuration
        • 7.7.22.5. How Anomaly Detection Works
        • 7.7.22.6. Dataset Format
        • 7.7.22.7. Available Models
        • 7.7.22.8. Expected Results
        • 7.7.22.9. Threshold Selection
        • 7.7.22.10. Interpreting Outputs
        • 7.7.22.11. Advanced Configuration
        • 7.7.22.12. Practical Applications
        • 7.7.22.13. Comparison with Classification
        • 7.7.22.14. Troubleshooting
        • 7.7.22.15. Next Steps
      • 7.7.23. Forecasting Example
        • 7.7.23.1. Overview
        • 7.7.23.2. When to Use Forecasting
        • 7.7.23.3. Running the Example
        • 7.7.23.4. Configuration
        • 7.7.23.5. How Forecasting Works
        • 7.7.23.6. Dataset Format
        • 7.7.23.7. Available Models
        • 7.7.23.8. Expected Results
        • 7.7.23.9. Key Metrics
        • 7.7.23.10. Forecast Horizon Trade-offs
        • 7.7.23.11. Multi-Variable Forecasting
        • 7.7.23.12. Feature Extraction Options
        • 7.7.23.13. Practical Applications
        • 7.7.23.14. Deployment Considerations
        • 7.7.23.15. Troubleshooting
        • 7.7.23.16. Comparison with Regression
        • 7.7.23.17. Next Steps
      • 7.7.24. Image Classification Example
        • 7.7.24.1. Overview
        • 7.7.24.2. When to Use Image Classification
        • 7.7.24.3. Running the Example
        • 7.7.24.4. Configuration
        • 7.7.24.5. Dataset Format
        • 7.7.24.6. Image Size Considerations
        • 7.7.24.7. Available Models
        • 7.7.24.8. Expected Results
        • 7.7.24.9. Grayscale vs RGB
        • 7.7.24.10. Data Augmentation
        • 7.7.24.11. Practical Applications
        • 7.7.24.12. Memory Constraints
        • 7.7.24.13. Inference Performance
        • 7.7.24.14. Transfer Learning
        • 7.7.24.15. Camera Integration
        • 7.7.24.16. Troubleshooting
        • 7.7.24.17. Limitations
        • 7.7.24.18. Next Steps
      • 7.7.25. MNIST Image Classification
        • 7.7.25.1. Overview
        • 7.7.25.2. Configuration
        • 7.7.25.3. Running the Example
        • 7.7.25.4. Dataset Details
        • 7.7.25.5. Model Architecture
        • 7.7.25.6. Memory Requirements
        • 7.7.25.7. See Also
  • 8. Advanced Features
    • 8.1. Neural Architecture Search
      • 8.1.1. Overview
      • 8.1.2. When to Use NAS
      • 8.1.3. Enabling NAS
      • 8.1.4. Configuration Options
      • 8.1.5. Search Types
      • 8.1.6. Search Space
      • 8.1.7. Running NAS
      • 8.1.8. Output Files
      • 8.1.9. Interpreting Results
      • 8.1.10. Using NAS Results
      • 8.1.11. Advanced Configuration
      • 8.1.12. Example: Finding Optimal Arc Fault Model
      • 8.1.13. Computational Cost
      • 8.1.14. Best Practices
      • 8.1.15. Next Steps
    • 8.2. Quantization
      • 8.2.1. Overview
      • 8.2.2. Quantization Types
      • 8.2.3. Bit Widths
      • 8.2.4. Enabling Quantization
      • 8.2.5. Calibration
      • 8.2.6. NPU Quantization Requirements
      • 8.2.7. Output Files
      • 8.2.8. Accuracy Comparison
      • 8.2.9. Troubleshooting Accuracy Loss
      • 8.2.10. Best Practices
      • 8.2.11. Example: Full Quantization Workflow
      • 8.2.12. Memory Savings
      • 8.2.13. Performance Impact
      • 8.2.14. Next Steps
    • 8.3. Feature Extraction
      • 8.3.1. Overview
      • 8.3.2. Feature Extraction Pipeline
      • 8.3.3. Preset System
      • 8.3.4. Available Presets
      • 8.3.5. Transform Types
      • 8.3.6. Multi-Frame Configuration
      • 8.3.7. Multi-Channel Data
      • 8.3.8. DC Removal
      • 8.3.9. Normalization
      • 8.3.10. Custom Feature Extraction
      • 8.3.11. Choosing the Right Preset
      • 8.3.12. Performance Impact
      • 8.3.13. On-Device Feature Extraction
      • 8.3.14. Example Configuration
      • 8.3.15. Debugging Feature Extraction
      • 8.3.16. Best Practices
      • 8.3.17. Next Steps
    • 8.4. Goodness of Fit
      • 8.4.1. Overview
      • 8.4.2. Enabling GoF Test
      • 8.4.3. Running the Test
      • 8.4.4. Output Files
      • 8.4.5. Understanding the Visualizations
      • 8.4.6. Interpreting Results
      • 8.4.7. 8-Plot Analysis
      • 8.4.8. Common Patterns
      • 8.4.9. Actionable Insights
      • 8.4.10. Example: Motor Fault GoF Analysis
      • 8.4.11. GoF Without Training
      • 8.4.12. Comparing Feature Extraction
      • 8.4.13. Best Practices
      • 8.4.14. Limitations
      • 8.4.15. Next Steps
    • 8.5. Post-Training Analysis
      • 8.5.1. Overview
      • 8.5.2. Enabling Analysis
      • 8.5.3. Output Files
      • 8.5.4. Confusion Matrix
      • 8.5.5. ROC Curves
      • 8.5.6. Class Score Histograms
      • 8.5.7. FPR/TPR Thresholds
      • 8.5.8. Classification Report
      • 8.5.9. Error Analysis
      • 8.5.10. Quantized vs Float Comparison
      • 8.5.11. Regression Analysis
      • 8.5.12. Anomaly Detection Analysis
      • 8.5.13. Custom Analysis Scripts
      • 8.5.14. Generating Reports
      • 8.5.15. Example: Complete Analysis Configuration
      • 8.5.16. Best Practices
      • 8.5.17. Troubleshooting Low Accuracy
      • 8.5.18. Next Steps
    • 8.6. Feature Overview
  • 9. Device Deployment
    • 9.1. CCS Integration Guide
      • 9.1.1. Prerequisites
      • 9.1.2. Compilation Output
      • 9.1.3. Creating a CCS Project
      • 9.1.4. Integration Code
      • 9.1.5. Memory Placement
      • 9.1.6. Linker Command File
      • 9.1.7. Interrupt-Based Inference
      • 9.1.8. Timing and Profiling
      • 9.1.9. Debugging
      • 9.1.10. Build Configurations
      • 9.1.11. Example Project Structure
      • 9.1.12. Common Issues
      • 9.1.13. Testing on Hardware
      • 9.1.14. Next Steps
    • 9.2. NPU Device Deployment
      • 9.2.1. NPU-Enabled Devices
      • 9.2.2. NPU Compilation
      • 9.2.3. NPU Model Requirements
      • 9.2.4. NPU Compilation Artifacts
      • 9.2.5. NPU Initialization
      • 9.2.6. NPU Inference Code
      • 9.2.7. NPU Memory Management
      • 9.2.8. NPU Performance
      • 9.2.9. NPU Power Considerations
      • 9.2.10. NPU Debugging
      • 9.2.11. NPU Error Handling
      • 9.2.12. CCS Project Setup for NPU
      • 9.2.13. Example: Arc Fault on F28P55 NPU
      • 9.2.14. Troubleshooting NPU Issues
      • 9.2.15. Next Steps
    • 9.3. Non-NPU Deployment
      • 9.3.1. Non-NPU Devices
      • 9.3.2. Configuration
      • 9.3.3. Model Selection
      • 9.3.4. CPU Inference Performance
      • 9.3.5. Compilation Artifacts
      • 9.3.6. CCS Project Setup
      • 9.3.7. Basic Integration
      • 9.3.8. Optimizing CPU Inference
      • 9.3.9. Memory Optimization
      • 9.3.10. Power Optimization
      • 9.3.11. Real-Time Considerations
      • 9.3.12. Device-Specific Notes
      • 9.3.13. Example: Vibration Monitoring on MSPM0G3507
      • 9.3.14. Comparison: NPU vs Non-NPU
      • 9.3.15. Next Steps
    • 9.4. Deployment Overview
    • 9.5. Prerequisites
  • 10. Edge AI Studio Model Composer
    • 10.1. Model Composer Overview
      • 10.1.1. What is Model Composer?
      • 10.1.2. Model Composer vs CLI
      • 10.1.3. Accessing Model Composer
      • 10.1.4. Key Features
      • 10.1.5. Supported Workflows
      • 10.1.6. System Requirements
      • 10.1.7. Limitations
      • 10.1.8. Integration with CLI
      • 10.1.9. Getting Started
    • 10.2. Getting Started (GUI)
      • 10.2.1. Prerequisites
      • 10.2.2. Step 1: Access Model Composer
      • 10.2.3. Step 2: Create a Project
      • 10.2.4. Step 3: Upload Dataset
      • 10.2.5. Step 4: Configure Feature Extraction
      • 10.2.6. Step 5: Configure Training
      • 10.2.7. Step 6: Start Training
      • 10.2.8. Step 7: Analyze Results
      • 10.2.9. Step 8: Evaluate on Test Set
      • 10.2.10. Step 9: Export Model
      • 10.2.11. Using Exported Model
      • 10.2.12. GUI Tips and Tricks
      • 10.2.13. Troubleshooting
      • 10.2.14. What’s Next?
      • 10.2.15. Additional Resources
    • 10.3. Exporting Models
      • 10.3.1. Export Options
      • 10.3.2. Exporting as CCS Project
      • 10.3.3. Exporting Artifacts Only
      • 10.3.4. Exporting ONNX Model
      • 10.3.5. Exporting Configuration
      • 10.3.6. Batch Export
      • 10.3.7. Export History
      • 10.3.8. Validating Exports
      • 10.3.9. Export Troubleshooting
      • 10.3.10. Best Practices
      • 10.3.11. Next Steps
    • 10.4. What is Model Composer?
    • 10.5. GUI vs CLI Comparison
  • 11. Bring Your Own Model
    • 11.1. Adding Custom Models
      • 11.1.1. Overview
      • 11.1.2. Model Definition Structure
      • 11.1.3. Base Class: GenericModelWithSpec
      • 11.1.4. Layer Types
      • 11.1.5. Complete Model Example
      • 11.1.6. NPU-Compatible Model
      • 11.1.7. Registering Your Model
      • 11.1.8. Using Your Custom Model
      • 11.1.9. Testing Your Model
      • 11.1.10. Best Practices
      • 11.1.11. Next Steps
    • 11.2. Compilation Only
      • 11.2.1. Overview
      • 11.2.2. ONNX Model Requirements
      • 11.2.3. Compilation Configuration
      • 11.2.4. Running Compilation
      • 11.2.5. Calibration Data
      • 11.2.6. Pre-Quantized Models
      • 11.2.7. Output Artifacts
      • 11.2.8. NPU Compilation
      • 11.2.9. Example: External PyTorch Model
      • 11.2.10. Example: TensorFlow Model
      • 11.2.11. Troubleshooting
      • 11.2.12. Best Practices
      • 11.2.13. Next Steps
    • 11.3. Two Approaches
    • 11.4. Model Requirements
  • 12. Troubleshooting
    • 12.1. Common Errors
      • 12.1.1. Installation Errors
      • 12.1.2. Dataset Errors
      • 12.1.3. Training Errors
      • 12.1.4. Compilation Errors
      • 12.1.5. Quantization Errors
      • 12.1.6. Deployment Errors
      • 12.1.7. Configuration Errors
      • 12.1.8. Getting Help
    • 12.2. FAQ
      • 12.2.1. General Questions
      • 12.2.2. Installation Questions
      • 12.2.3. Dataset Questions
      • 12.2.4. Model Questions
      • 12.2.5. Training Questions
      • 12.2.6. Deployment Questions
      • 12.2.7. Advanced Questions
      • 12.2.8. Support Questions
      • 12.2.9. Still Have Questions?
    • 12.3. Quick Fixes
    • 12.4. Getting Help
  • 13. Appendix
    • 13.1. Configuration Reference
      • 13.1.1. Configuration File Structure
      • 13.1.2. Common Section
      • 13.1.3. Dataset Section
      • 13.1.4. Feature Extraction Section
      • 13.1.5. Training Section
      • 13.1.6. Testing Section
      • 13.1.7. NAS Section
      • 13.1.8. Compilation Section
      • 13.1.9. BYOM Section
      • 13.1.10. Complete Example
    • 13.2. Model Zoo Reference
      • 13.2.1. Classification Models
        • 13.2.1.1. Standard Classification
        • 13.2.1.2. NPU Classification
        • 13.2.1.3. Application-Specific Classification
      • 13.2.2. Regression Models
        • 13.2.2.1. Standard Regression
        • 13.2.2.2. NPU Regression
      • 13.2.3. Anomaly Detection Models
        • 13.2.3.1. Standard AD
        • 13.2.3.2. NPU AD
      • 13.2.4. Forecasting Models
        • 13.2.4.1. Standard Forecasting
        • 13.2.4.2. NPU Forecasting
      • 13.2.5. Image Classification Models
      • 13.2.6. Model Selection Guide
      • 13.2.7. Model Architecture Details
      • 13.2.8. Using Models
    • 13.3. Changelog
      • 13.3.1. Version 1.3.0
      • 13.3.2. Version 1.1.0
      • 13.3.3. Version 1.0.0
      • 13.3.4. Migration Guides
        • 13.3.4.1. Migrating from 1.1.x to 1.2.x
      • 13.3.5. Deprecation Notices
      • 13.3.6. Known Issues
      • 13.3.7. Roadmap
      • 13.3.8. Contributing
    • 13.4. Quick Reference
    • 13.5. External Links
TI Tiny ML Tensorlab
  • 8. Advanced Features
  • 8.1. Neural Architecture Search

8.1. Neural Architecture Search

Neural Architecture Search (NAS) automatically discovers optimal model architectures for your specific task and device constraints.

8.1.1. Overview

NAS eliminates manual architecture design by:

  • Searching through possible layer configurations

  • Evaluating accuracy vs size trade-offs

  • Finding Pareto-optimal models

  • Respecting device memory and latency constraints

This is especially valuable for MCUs where architecture choices significantly impact whether a model fits in memory.

8.1.2. When to Use NAS

Use NAS when:

  • You don’t know the optimal model size for your task

  • You need to balance accuracy vs inference speed

  • You want to find the smallest model that meets accuracy requirements

  • Manual architecture tuning is time-consuming

Don’t use NAS when:

  • You have tight time constraints

  • A standard model already works well

  • You need reproducible results quickly

8.1.3. Enabling NAS

Add the NAS section to your configuration:

common:
  task_type: 'generic_timeseries_classification'
  target_device: 'F28P55'

dataset:
  dataset_name: 'your_dataset'

nas:
  enable: True
  search_type: 'multi_trial'
  num_trials: 20
  param_range: [500, 5000]
  accuracy_target: 0.95

training:
  model_name: 'auto'  # NAS will find the model
  training_epochs: 20

compilation:
  enable: True

8.1.4. Configuration Options

Basic Options:

Option

Description

enable

Set to True to enable NAS

search_type

'single_trial' or 'multi_trial'

num_trials

Number of architectures to evaluate

param_range

[min_params, max_params] constraint

Accuracy Constraints:

nas:
  accuracy_target: 0.95    # Minimum acceptable accuracy
  accuracy_weight: 1.0     # Weight for accuracy in optimization

Size Constraints:

nas:
  param_range: [500, 5000]  # Parameter count bounds
  size_weight: 0.5          # Weight for model size

Latency Constraints:

nas:
  latency_target: 1000     # Target inference time (µs)
  latency_weight: 0.3      # Weight for latency

8.1.5. Search Types

Single Trial Search:

Evaluates one architecture at a time:

nas:
  search_type: 'single_trial'
  num_trials: 10
  • Pros: Lower memory usage, simpler

  • Cons: Slower, less exploration

Multi-Trial Search:

Evaluates multiple architectures in parallel:

nas:
  search_type: 'multi_trial'
  num_trials: 20
  parallel_trials: 4
  • Pros: Faster, better exploration

  • Cons: Higher memory usage

8.1.6. Search Space

NAS searches over these architectural dimensions:

Layer Types:

  • Convolutional layers

  • Pooling layers (max, average)

  • Fully connected layers

  • Batch normalization

  • Activation functions

Hyperparameters:

  • Number of layers

  • Channel counts (multiples of 4 for NPU)

  • Kernel sizes

  • Stride values

NPU-Aware Search:

For NPU devices, NAS automatically respects constraints:

common:
  target_device: 'F28P55'  # NPU device

nas:
  enable: True
  npu_compatible: True     # Enforces NPU constraints

NAS ensures:

  • Channels are multiples of 4

  • Kernel heights ≤ 7

  • Valid stride combinations

8.1.7. Running NAS

cd tinyml-modelzoo
./run_tinyml_modelzoo.sh examples/your_example/config_nas.yaml
cd tinyml-modelzoo
run_tinyml_modelzoo.bat examples\\your_example\\config_nas.yaml

NAS takes longer than single model training (proportional to num_trials).

8.1.8. Output Files

After NAS completes, you’ll find:

.../run/<timestamp>/NAS/
├── search_results.csv        # All evaluated architectures
├── pareto_frontier.csv       # Optimal trade-off models
├── best_model_spec.yaml      # Best model specification
├── pareto_plot.png           # Accuracy vs size plot
└── best_model/
    └── best_model.pt         # Trained best model

search_results.csv:

trial,params,accuracy,latency,architecture
0,1200,0.92,450,"[conv(4,8,5),conv(8,16,3),fc(16,3)]"
1,2400,0.96,720,"[conv(4,16,5),conv(16,32,3),fc(32,3)]"
...

pareto_frontier.csv:

Contains only Pareto-optimal models (best accuracy at each size).

8.1.9. Interpreting Results

Pareto Frontier Plot:

Shows trade-off between model size and accuracy:

     Accuracy
     ^
1.0  |          * * *
     |        *
0.9  |      *
     |    *
0.8  |  *
     +----------------> Model Size
       1k  2k  3k  4k

Points on the frontier are optimal choices.

Selecting a Model:

  1. Find your accuracy requirement on the frontier

  2. Choose the smallest model meeting that requirement

  3. Use the architecture specification from best_model_spec.yaml

8.1.10. Using NAS Results

After NAS finds a good architecture, use it for final training:

# Final training with NAS-discovered architecture
training:
  model_name: 'NAS_result'
  model_spec_path: 'path/to/best_model_spec.yaml'
  training_epochs: 50  # More epochs for final model

Or incorporate the discovered architecture into your model zoo.

8.1.11. Advanced Configuration

Custom Search Space:

Define specific layers to search:

nas:
  enable: True
  search_space:
    conv_channels: [4, 8, 16, 32]
    conv_kernels: [3, 5, 7]
    num_conv_layers: [2, 3, 4]
    fc_features: [16, 32, 64]

Early Stopping:

Stop search when target is met:

nas:
  early_stopping: True
  accuracy_threshold: 0.98
  patience: 5  # Stop if no improvement for 5 trials

Warm Starting:

Start from a known good architecture:

nas:
  warm_start: True
  initial_architecture: 'CLS_2k_NPU'

8.1.12. Example: Finding Optimal Arc Fault Model

common:
  task_type: 'generic_timeseries_classification'
  target_device: 'F28P55'

dataset:
  dataset_name: 'dc_arc_fault_example_dsk'

data_processing_feature_extraction:
  feature_extraction_name: 'FFT1024Input_256Feature_1Frame_Full_Bandwidth'
  variables: 1

nas:
  enable: True
  search_type: 'multi_trial'
  num_trials: 30
  param_range: [200, 2000]
  accuracy_target: 0.98
  npu_compatible: True

training:
  model_name: 'auto'
  training_epochs: 15
  batch_size: 256

compilation:
  enable: True

Expected Results:

NAS might find an architecture like:

Best Model: 650 parameters
Accuracy: 98.5%
Latency: 180 µs (F28P55 NPU)

Architecture:
- Conv: 1 → 4 channels, kernel 5
- Conv: 4 → 8 channels, kernel 3
- MaxPool: 2x2
- FC: 64 → 2 (binary classification)

8.1.13. Computational Cost

NAS requires training multiple models:

Trials

Time (20 epochs each)

GPU Recommended

10

~1-2 hours

Optional

30

~3-6 hours

Yes

100

~10-20 hours

Yes

Reducing NAS Time:

  • Fewer training epochs per trial

  • Smaller search space

  • Early stopping

  • Use GPU if available

8.1.14. Best Practices

  1. Start Simple: Try standard models first, use NAS if needed

  2. Set Realistic Targets: Don’t aim for 100% accuracy

  3. Constrain Search Space: Narrow bounds speed up search

  4. Use Appropriate Trials: 20-50 trials usually sufficient

  5. Validate Results: Test best model thoroughly before deployment

8.1.15. Next Steps

  • Learn about Quantization for model compression

  • Explore Feature Extraction options

  • Deploy your model: NPU Device Deployment

Previous Next

© Copyright 2025, Texas Instruments Incorporated. Last updated on Jan 31 2025. Last updated on Feb 09, 2026.