# AI Frameworks

::: {.callout-note collapse="true"}
## Learning Objectives

* coming soon.

:::

## Introduction

Explanation: Discuss what ML frameworks are and why they are important. Also, elaborate on the aspects involved in understanding how an ML framework is developed and deployed.

- Definition of ML Frameworks
- What is an ML framework?
- Why are ML frameworks important?
- Go over the design and implementation
- Examples of ML frameworks
- Challenges of embedded systems

## Evolution of AI Frameworks

- High-level vs. low-level frameworks
- Static vs. dynamic computation graph frameworks
- Plot showing number of different frameworks and shrinking

## Types of AI Frameworks

- Cloud-based AI frameworks
- Edge AI frameworks
- TinyML frameworks

## Popular AI Frameworks

Explanation: Discuss the most common types of ML frameworks available and provide a high-level overview, so that we can set into motion what makes embedded ML frameworks unique.

- TensorFlow, PyTorch, Keras, ONNX Runtime, Scikit-learn
- Key Features and Advantages
- API and Programming Paradigms
- Table comparing the different frameworks

## Basic Components

- Computational graphs
- Tensor data structures
- Distributed training
- Model optimizations
- Code generation
- Differentiable programming
- Hardware acceleration support (GPUs, TPUs)

## Advanced Features

- AutoML, No-Code/Low-Code ML
- Transfer learning
- Federated learning
- Model conversion
- Distributed training
- End-to-End ML Platforms

## Embedded AI Constraints

Explanation: Describe the constraints of embedded systems, referring to the previous chapters, and remind readers about the challenges and why we need to consider creating lean and efficient solutions.

### Hardware

- Memory Usage
- Processing Power
- Energy Efficiency
- Storage Limitations
- Hardware Diversity

### Software

- Library Dependency
- Lack of OS

## Embedded AI Frameworks

Explanation: Now, discuss specifically about the unique embedded AI frameworks that are available and why they are special, etc.

- TensorFlow Lite
- ONNX Runtime
- MicroPython
- CMSIS-NN
- Edge Impulse
- Others (briefly mention some less common but significant frameworks)

## Choosing the Right Framework

- Factors to consider: ease of use, community support, performance, scalability, etc.
- Integration with data engineering tools
- Integration with model optimization tools

## Framework Comparison

Explanation: Provide a high-level comparison of the different frameworks based on class slides, etc.

- Table of differences and similarities

## Trends in ML Frameworks

Explanation: Discuss where these ML frameworks are heading in the future. Perhaps consider discussing ML for ML frameworks?

- Framework Developments on the Horizon
- Anticipated Innovations in the Field

## Challenges and Limitations

Explanation: None of the frameworks are perfect, so it is important to understand their limitations and challenges.

- Model compatibility and interoperability issues
- Scalability and performance challenges
- Addressing the evolving needs of AI developers

## Conclusion

- Summary of Key Takeaways
- Recommendations for Further Learning