diff --git a/.all-contributorsrc b/.all-contributorsrc index a9eba26b..93aa5d2a 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -34,6 +34,13 @@ "profile": "https://github.com/V0XNIHILI", "contributions": [] }, + { + "login": "jasonjabbour", + "name": "jasonjabbour", + "avatar_url": "https://avatars.githubusercontent.com/jasonjabbour", + "profile": "https://github.com/jasonjabbour", + "contributions": [] + }, { "login": "shanzehbatool", "name": "shanzehbatool", @@ -97,20 +104,6 @@ "profile": "https://github.com/jaysonzlin", "contributions": [] }, - { - "login": "jasonjabbour", - "name": "jasonjabbour", - "avatar_url": "https://avatars.githubusercontent.com/jasonjabbour", - "profile": "https://github.com/jasonjabbour", - "contributions": [] - }, - { - "login": "sophiacho1", - "name": "Sophia Cho", - "avatar_url": "https://avatars.githubusercontent.com/sophiacho1", - "profile": "https://github.com/sophiacho1", - "contributions": [] - }, { "login": "18jeffreyma", "name": "Jeffrey Ma", @@ -125,6 +118,13 @@ "profile": "https://github.com/andreamurillomtz", "contributions": [] }, + { + "login": "sophiacho1", + "name": "Sophia Cho", + "avatar_url": "https://avatars.githubusercontent.com/sophiacho1", + "profile": "https://github.com/sophiacho1", + "contributions": [] + }, { "login": "alxrod", "name": "Alex Rodriguez", @@ -139,6 +139,13 @@ "profile": "https://github.com/korneelf1", "contributions": [] }, + { + "login": "colbybanbury", + "name": "Colby Banbury", + "avatar_url": "https://avatars.githubusercontent.com/colbybanbury", + "profile": "https://github.com/colbybanbury", + "contributions": [] + }, { "login": "zishenwan", "name": "Zishen Wan", @@ -147,10 +154,10 @@ "contributions": [] }, { - "login": "colbybanbury", - "name": "Colby Banbury", - "avatar_url": "https://avatars.githubusercontent.com/colbybanbury", - "profile": "https://github.com/colbybanbury", + "login": "Sara-Khosravi", + "name": "Sara Khosravi", + "avatar_url": "https://avatars.githubusercontent.com/Sara-Khosravi", + "profile": "https://github.com/Sara-Khosravi", "contributions": [] }, { @@ -181,13 +188,6 @@ "profile": "https://github.com/arnaumarin", "contributions": [] }, - { - "login": "eezike", - "name": "Emeka Ezike", - "avatar_url": "https://avatars.githubusercontent.com/eezike", - "profile": "https://github.com/eezike", - "contributions": [] - }, { "login": "aptl26", "name": "Aghyad Deeb", @@ -195,20 +195,6 @@ "profile": "https://github.com/aptl26", "contributions": [] }, - { - "login": "Sara-Khosravi", - "name": "Sara Khosravi", - "avatar_url": "https://avatars.githubusercontent.com/Sara-Khosravi", - "profile": "https://github.com/Sara-Khosravi", - "contributions": [] - }, - { - "login": "Ekhao", - "name": "Emil Njor", - "avatar_url": "https://avatars.githubusercontent.com/Ekhao", - "profile": "https://github.com/Ekhao", - "contributions": [] - }, { "login": "AditiR-42", "name": "Aditi Raju", @@ -224,10 +210,10 @@ "contributions": [] }, { - "login": "MichaelSchnebly", - "name": "Michael Schnebly", - "avatar_url": "https://avatars.githubusercontent.com/MichaelSchnebly", - "profile": "https://github.com/MichaelSchnebly", + "login": "Ekhao", + "name": "Emil Njor", + "avatar_url": "https://avatars.githubusercontent.com/Ekhao", + "profile": "https://github.com/Ekhao", "contributions": [] }, { @@ -245,10 +231,10 @@ "contributions": [] }, { - "login": "leo47007", - "name": "Yu-Shun Hsiao", - "avatar_url": "https://avatars.githubusercontent.com/leo47007", - "profile": "https://github.com/leo47007", + "login": "MichaelSchnebly", + "name": "Michael Schnebly", + "avatar_url": "https://avatars.githubusercontent.com/MichaelSchnebly", + "profile": "https://github.com/MichaelSchnebly", "contributions": [] }, { @@ -265,6 +251,13 @@ "profile": "https://github.com/BaeHenryS", "contributions": [] }, + { + "login": "leo47007", + "name": "Yu-Shun Hsiao", + "avatar_url": "https://avatars.githubusercontent.com/leo47007", + "profile": "https://github.com/leo47007", + "contributions": [] + }, { "login": "mmaz", "name": "Mark Mazumder", @@ -272,6 +265,20 @@ "profile": "https://github.com/mmaz", "contributions": [] }, + { + "login": "eurashin", + "name": "eurashin", + "avatar_url": "https://avatars.githubusercontent.com/eurashin", + "profile": "https://github.com/eurashin", + "contributions": [] + }, + { + "login": "marcozennaro", + "name": "Marco Zennaro", + "avatar_url": "https://avatars.githubusercontent.com/marcozennaro", + "profile": "https://github.com/marcozennaro", + "contributions": [] + }, { "login": "arbass22", "name": "Andrew Bass", @@ -280,10 +287,10 @@ "contributions": [] }, { - "login": "eurashin", - "name": "eurashin", - "avatar_url": "https://avatars.githubusercontent.com/eurashin", - "profile": "https://github.com/eurashin", + "login": "Emeka Ezike", + "name": "Emeka Ezike", + "avatar_url": "https://www.gravatar.com/avatar/af39c27c6090c50a1921a9b6366e81cc?d=identicon&s=100", + "profile": "https://github.com/harvard-edge/cs249r_book/graphs/contributors", "contributions": [] }, { @@ -293,6 +300,13 @@ "profile": "https://github.com/jzhou1318", "contributions": [] }, + { + "login": "ShvetankPrakash", + "name": "Shvetank Prakash", + "avatar_url": "https://avatars.githubusercontent.com/ShvetankPrakash", + "profile": "https://github.com/ShvetankPrakash", + "contributions": [] + }, { "login": "pongtr", "name": "Pong Trairatvorakul", @@ -301,17 +315,17 @@ "contributions": [] }, { - "login": "marcozennaro", - "name": "Marco Zennaro", - "avatar_url": "https://avatars.githubusercontent.com/marcozennaro", - "profile": "https://github.com/marcozennaro", + "login": "FinAminToastCrunch", + "name": "Fin Amin", + "avatar_url": "https://avatars.githubusercontent.com/FinAminToastCrunch", + "profile": "https://github.com/FinAminToastCrunch", "contributions": [] }, { - "login": "ShvetankPrakash", - "name": "Shvetank Prakash", - "avatar_url": "https://avatars.githubusercontent.com/ShvetankPrakash", - "profile": "https://github.com/ShvetankPrakash", + "login": "Allen-Kuang", + "name": "Allen-Kuang", + "avatar_url": "https://avatars.githubusercontent.com/Allen-Kuang", + "profile": "https://github.com/Allen-Kuang", "contributions": [] }, { @@ -321,13 +335,6 @@ "profile": "https://github.com/BrunoScaglione", "contributions": [] }, - { - "login": "Allen-Kuang", - "name": "Allen-Kuang", - "avatar_url": "https://avatars.githubusercontent.com/Allen-Kuang", - "profile": "https://github.com/Allen-Kuang", - "contributions": [] - }, { "login": "alex-oesterling", "name": "Alex Oesterling", @@ -342,13 +349,6 @@ "profile": "https://github.com/Gjain234", "contributions": [] }, - { - "login": "FinAminToastCrunch", - "name": "Fin Amin", - "avatar_url": "https://avatars.githubusercontent.com/FinAminToastCrunch", - "profile": "https://github.com/FinAminToastCrunch", - "contributions": [] - }, { "login": "serco425", "name": "Sercan Ayg\u00fcn", @@ -363,6 +363,20 @@ "profile": "https://github.com/gnodipac886", "contributions": [] }, + { + "login": "BravoBaldo", + "name": "Baldassarre Cesarano", + "avatar_url": "https://avatars.githubusercontent.com/BravoBaldo", + "profile": "https://github.com/BravoBaldo", + "contributions": [] + }, + { + "login": "YLab-UChicago", + "name": "yanjingl", + "avatar_url": "https://avatars.githubusercontent.com/YLab-UChicago", + "profile": "https://github.com/YLab-UChicago", + "contributions": [] + }, { "login": "abigailswallow", "name": "abigailswallow", @@ -377,13 +391,6 @@ "profile": "https://github.com/YangZhou1997", "contributions": [] }, - { - "login": "YLab-UChicago", - "name": "yanjingl", - "avatar_url": "https://avatars.githubusercontent.com/YLab-UChicago", - "profile": "https://github.com/YLab-UChicago", - "contributions": [] - }, { "login": "jasonlyik", "name": "Jason Yik", @@ -405,13 +412,6 @@ "profile": "https://github.com/emmanuel2406", "contributions": [] }, - { - "login": "ciyer64", - "name": "Curren Iyer", - "avatar_url": "https://avatars.githubusercontent.com/ciyer64", - "profile": "https://github.com/ciyer64", - "contributions": [] - }, { "login": "jessicaquaye", "name": "Jessica Quaye", @@ -419,20 +419,6 @@ "profile": "https://github.com/jessicaquaye", "contributions": [] }, - { - "login": "sjohri20", - "name": "Shreya Johri", - "avatar_url": "https://avatars.githubusercontent.com/sjohri20", - "profile": "https://github.com/sjohri20", - "contributions": [] - }, - { - "login": "vijay-edu", - "name": "Vijay Edupuganti", - "avatar_url": "https://avatars.githubusercontent.com/vijay-edu", - "profile": "https://github.com/vijay-edu", - "contributions": [] - }, { "login": "skmur", "name": "Sonia Murthy", @@ -440,6 +426,13 @@ "profile": "https://github.com/skmur", "contributions": [] }, + { + "login": "sjohri20", + "name": "Shreya Johri", + "avatar_url": "https://avatars.githubusercontent.com/sjohri20", + "profile": "https://github.com/sjohri20", + "contributions": [] + }, { "login": "vitasam", "name": "The Random DIY", @@ -461,6 +454,13 @@ "profile": "https://github.com/harvard-edge/cs249r_book/graphs/contributors", "contributions": [] }, + { + "login": "Vijay Edupuganti", + "name": "Vijay Edupuganti", + "avatar_url": "https://www.gravatar.com/avatar/b15b6e0e9adf58099905c1a0fd474cb9?d=identicon&s=100", + "profile": "https://github.com/harvard-edge/cs249r_book/graphs/contributors", + "contributions": [] + }, { "login": "Jothi Ramaswamy", "name": "Jothi Ramaswamy", @@ -475,6 +475,13 @@ "profile": "https://github.com/harvard-edge/cs249r_book/graphs/contributors", "contributions": [] }, + { + "login": "Curren Iyer", + "name": "Curren Iyer", + "avatar_url": "https://www.gravatar.com/avatar/bd53d146aa888548c8db4da02bf81e7a?d=identicon&s=100", + "profile": "https://github.com/harvard-edge/cs249r_book/graphs/contributors", + "contributions": [] + }, { "login": "a-saraf", "name": "a-saraf", diff --git a/QTDublinIrish.otf b/QTDublinIrish.otf deleted file mode 100644 index 6067986e..00000000 Binary files a/QTDublinIrish.otf and /dev/null differ diff --git a/README.md b/README.md index 5c2e3035..dabc6946 100644 --- a/README.md +++ b/README.md @@ -89,97 +89,100 @@ This project follows the [all-contributors](https://allcontributors.org) specifi Ikechukwu Uchendu
Ikechukwu Uchendu

Naeem Khoshnevis
Naeem Khoshnevis

Douwe den Blanken
Douwe den Blanken

- shanzehbatool
shanzehbatool

+ jasonjabbour
jasonjabbour

+ shanzehbatool
shanzehbatool

kai4avaya
kai4avaya

Elias Nuwara
Elias Nuwara

Jared Ping
Jared Ping

Matthew Stewart
Matthew Stewart

- Itai Shapira
Itai Shapira

+ Itai Shapira
Itai Shapira

Marcelo Rovai
Marcelo Rovai

Maximilian Lam
Maximilian Lam

Jayson Lin
Jayson Lin

- jasonjabbour
jasonjabbour

- Sophia Cho
Sophia Cho

+ Jeffrey Ma
Jeffrey Ma

- Jeffrey Ma
Jeffrey Ma

Andrea
Andrea

+ Sophia Cho
Sophia Cho

Alex Rodriguez
Alex Rodriguez

Korneel Van den Berghe
Korneel Van den Berghe

- Zishen Wan
Zishen Wan

+ Colby Banbury
Colby Banbury

- Colby Banbury
Colby Banbury

+ Zishen Wan
Zishen Wan

+ Sara Khosravi
Sara Khosravi

Divya Amirtharaj
Divya Amirtharaj

Srivatsan Krishnan
Srivatsan Krishnan

Abdulrahman Mahmoud
Abdulrahman Mahmoud

- arnaumarin
arnaumarin

- Emeka Ezike
Emeka Ezike

+ arnaumarin
arnaumarin

Aghyad Deeb
Aghyad Deeb

- Sara Khosravi
Sara Khosravi

- Emil Njor
Emil Njor

Aditi Raju
Aditi Raju

+ Jared Ni
Jared Ni

+ Emil Njor
Emil Njor

- Jared Ni
Jared Ni

- Michael Schnebly
Michael Schnebly

ELSuitorHarvard
ELSuitorHarvard

oishib
oishib

- Yu-Shun Hsiao
Yu-Shun Hsiao

- - + Michael Schnebly
Michael Schnebly

Jae-Won Chung
Jae-Won Chung

Henry Bae
Henry Bae

+ + + Yu-Shun Hsiao
Yu-Shun Hsiao

Mark Mazumder
Mark Mazumder

- Andrew Bass
Andrew Bass

eurashin
eurashin

+ Marco Zennaro
Marco Zennaro

+ Andrew Bass
Andrew Bass

+ Emeka Ezike
Emeka Ezike

Jennifer Zhou
Jennifer Zhou

- Pong Trairatvorakul
Pong Trairatvorakul

- Marco Zennaro
Marco Zennaro

Shvetank Prakash
Shvetank Prakash

- Bruno Scaglione
Bruno Scaglione

+ Pong Trairatvorakul
Pong Trairatvorakul

+ Fin Amin
Fin Amin

Allen-Kuang
Allen-Kuang

+ Bruno Scaglione
Bruno Scaglione

Alex Oesterling
Alex Oesterling

Gauri Jain
Gauri Jain

- Fin Amin
Fin Amin

Sercan Aygün
Sercan Aygün

gnodipac886
gnodipac886

+ Baldassarre Cesarano
Baldassarre Cesarano

+ yanjingl
yanjingl

abigailswallow
abigailswallow

Yang Zhou
Yang Zhou

- yanjingl
yanjingl

- Jason Yik
Jason Yik

+ Jason Yik
Jason Yik

happyappledog
happyappledog

Emmanuel Rassou
Emmanuel Rassou

- Curren Iyer
Curren Iyer

Jessica Quaye
Jessica Quaye

- Shreya Johri
Shreya Johri

+ Sonia Murthy
Sonia Murthy

- Vijay Edupuganti
Vijay Edupuganti

- Sonia Murthy
Sonia Murthy

+ Shreya Johri
Shreya Johri

The Random DIY
The Random DIY

Costin-Andrei Oncescu
Costin-Andrei Oncescu

Annie Laurie Cook
Annie Laurie Cook

+ Vijay Edupuganti
Vijay Edupuganti

Jothi Ramaswamy
Jothi Ramaswamy

Batur Arslan
Batur Arslan

+ Curren Iyer
Curren Iyer

a-saraf
a-saraf

songhan
songhan

+ + Zishen
Zishen

diff --git a/_quarto.yml b/_quarto.yml index 13ff5d2d..0ca664cc 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -87,7 +87,7 @@ book: Written, edited and curated by Prof. Vijay Janapa Reddi (Harvard University) right: | This book was built with Quarto. - + chapters: - text: "---" - part: FRONT MATTER @@ -176,13 +176,6 @@ book: - contents/community.qmd - contents/case_studies.qmd -citation: true - -license: CC-BY-NC-SA - -filters: - - custom_callout.lua - bibliography: # main - contents/introduction/introduction.bib @@ -230,6 +223,13 @@ crossref: key: vid latex-env: vid +citation: true + +license: CC-BY-NC-SA + +filters: + - custom_callout.lua + editor: render-on-save: true diff --git a/contents/benchmarking/benchmarking.qmd b/contents/benchmarking/benchmarking.qmd index 3651ac5d..a7ddf90a 100644 --- a/contents/benchmarking/benchmarking.qmd +++ b/contents/benchmarking/benchmarking.qmd @@ -199,17 +199,16 @@ Example: Tasks for natural language processing benchmarks might include sentimen Once a task is defined, benchmarks require metrics to quantify performance. These metrics offer objective measures to compare different models or systems. In classification tasks, metrics like accuracy, precision, recall, and [F1 score](https://en.wikipedia.org/wiki/F-score) are commonly used. Mean squared or absolute errors might be employed for regression tasks. -#### Baselines +#### Baselines and Baseline Models -Benchmarks often include baseline models or reference implementations. These serve as starting points or minimum performance standards against which new models or techniques can be compared. In many benchmark suites, simple models like linear regression or basic neural networks serve as baselines to provide context for more complex model evaluations. +Benchmarks often include baseline models or reference implementations. These usually serve as starting points or minimum performance standards for comparing new models or techniques. Baseline models help researchers measure the effectiveness of new algorithms. -In classification tasks, metrics like accuracy, precision, recall, and [F1 score](https://en.wikipedia.org/wiki/F-score) are commonly used. Mean squared or absolute errors might be employed for regression tasks. +In benchmark suites, simple models like linear regression or basic neural networks are often the common baselines. These provide context when evaluating more complex models. By comparing against these simpler models, researchers can quantify improvements from advanced approaches. -#### Baseline Models +Performance metrics vary by task, but here are some examples: -Benchmarks often include baseline models or reference implementations. These serve as starting points or minimum performance standards against which new models or techniques can be compared. - -Example: In many benchmark suites, simple models like linear regression or basic neural networks serve as baselines to provide context for more complex model evaluations. +* Classification tasks use metrics such as accuracy, precision, recall, and F1 score. +* Regression tasks often use mean squared error or mean absolute error. #### Hardware and Software Specifications @@ -237,11 +236,12 @@ Example: A benchmark might highlight that while Model A scored higher than Model ### Training vs. Inference -The development life cycle of a machine learning model involves two critical phases - training and inference. Training is the process of learning patterns from data to create the model. Inference refers to the model making predictions on new unlabeled data. Both phases play indispensable yet distinct roles. Consequently, each phase warrants rigorous benchmarking to evaluate performance metrics like speed, accuracy, and computational efficiency. +The development life cycle of a machine learning model involves two critical phases - training and inference. [Training](../training/training.qmd), as you may recall, is the process of learning patterns from data to create the model. Inference refers to the model making predictions on new unlabeled data. Both phases play indispensable yet distinct roles. Consequently, each phase warrants rigorous benchmarking to evaluate performance metrics like speed, accuracy, and computational efficiency. Benchmarking the training phase provides insights into how different model architectures, hyperparameter values, and optimization algorithms impact the time and resources needed to train the model. For instance, benchmarking shows how neural network depth affects training time on a given dataset. Benchmarking also reveals how hardware accelerators like GPUs and TPUs can speed up training. -On the other hand, benchmarking inference evaluates model performance in real-world conditions after deployment. Key metrics include latency, throughput, memory footprint, and power consumption. Inference benchmarking determines if a model meets the requirements of its target application regarding response time and device constraints, which is typically the focus of TinyML. However, we will discuss these broadly to ensure a general understanding. +On the other hand, benchmarking inference evaluates model performance in real-world conditions after deployment. Key metrics include latency, throughput, memory footprint, and power consumption. This type of benchmarking determines if a model meets the requirements of its target application regarding response time and device constraints. However, we will discuss these broadly to ensure a general understanding. + ### Training Benchmarks @@ -271,7 +271,7 @@ The following metrics are often considered important: 4. **Memory Consumption:** The amount of memory the training process uses. Memory consumption can be a limiting factor for training large models or datasets. For example, Google researchers faced significant memory consumption challenges when training BERT. The model has hundreds of millions of parameters, requiring large amounts of memory. The researchers had to develop techniques to reduce memory consumption, such as gradient checkpointing and model parallelism. -5. ** Energy Consumption: ** The energy consumed during training. As machine learning models become more complex, energy consumption has become an important consideration. Training large machine learning models can consume significant energy, leading to a large carbon footprint. For instance, the training of OpenAI's GPT-3 was estimated to have a carbon footprint equivalent to traveling by car for 700,000 kilometers. +5. **Energy Consumption:** The energy consumed during training. As machine learning models become more complex, energy consumption has become an important consideration. Training large machine learning models can consume significant energy, leading to a large carbon footprint. For instance, the training of OpenAI's GPT-3 was estimated to have a carbon footprint equivalent to traveling by car for 700,000 kilometers. 6. **Throughput:** The number of training samples processed per unit time. Higher throughput generally indicates a more efficient training process. The throughput is an important metric to consider when training a recommendation system for an e-commerce platform. A high throughput ensures that the model can process large volumes of user interaction data promptly, which is crucial for maintaining the relevance and accuracy of the recommendations. But it's also important to understand how to balance throughput with latency bounds. Therefore, a latency-bounded throughput constraint is often imposed on service-level agreements for data center application deployments. @@ -333,8 +333,8 @@ Metrics: * Time to completion for each workload * Memory bandwidth -**[MLPerf Training Benchmark](https://github.com/mlcommons/training):** MLPerf is a suite of benchmarks that grew out of DAWNBench and Fathom and other collective works such as [DeepBench](https://github.com/baidu-research/DeepBench) that was designed to measure the performance of machine learning hardware, software, and services. The MLPerf Training benchmark [@mattson2020mlperf] focuses on the time it takes to train models to a target quality metric. It includes diverse workloads, such as image classification, object detection, translation, and reinforcement learning. It's metrics include: - +#### Example Use Case + Consider a scenario where we want to benchmark the training of an image classification model on a specific hardware platform. 1. **Task:** The task is to train a convolutional neural network (CNN) for image classification on the CIFAR-10 dataset. @@ -355,7 +355,7 @@ Inference in machine learning refers to using a trained model to make prediction When we build machine learning models, our ultimate goal is to deploy them in real-world applications where they can provide accurate and reliable predictions on new, unseen data. This process of using a trained model to make predictions is known as inference. A machine learning model's real-world performance can differ significantly from its performance on training or validation datasets, which makes benchmarking inference a crucial step in the development and deployment of machine learning models. -Benchmarking inference allows us to evaluate how well a machine-learning model performs in real-world scenarios. This evaluation ensures that the model is practical and reliable when deployed in applications, providing a more comprehensive understanding of the model's behavior with real data. Additionally, benchmarking can help identify potential bottlenecks or limitations in the model's performance. For example, if a model takes less time to predict, it may be impractical for real-time applications such as autonomous driving or voice assistants. +Benchmarking inference allows us to evaluate how well a machine-learning model performs in real-world scenarios. This evaluation ensures that the model is practical and reliable when deployed in applications, providing a more comprehensive understanding of the model's behavior with real data. Additionally, benchmarking can help identify potential bottlenecks or limitations in the model's performance. For example, if a model takes too long to predict, it may be impractical for real-time applications such as autonomous driving or voice assistants. Resource efficiency is another critical aspect of inference, as it can be computationally intensive and require significant memory and processing power. Benchmarking helps ensure that the model is efficient regarding resource usage, which is particularly important for edge devices with limited computational capabilities, such as smartphones or IoT devices. Moreover, benchmarking allows us to compare the performance of our model with competing models or previous versions of the same model. This comparison is essential for making informed decisions about which model to deploy in a specific application. @@ -371,11 +371,9 @@ Finally, it is vital to ensure that the model's predictions are not only accurat 4. **Throughput:** Throughput assesses the system's capacity by measuring the number of inferences or predictions a machine learning model can handle within a specific unit of time. Consider a speech recognition system that employs a Recurrent Neural Network (RNN) as its underlying model; if this system can process and understand 50 different audio clips in a minute, then its throughput rate stands at 50 clips per minute. -3. **Energy Efficiency:** Energy efficiency is a metric that determines the amount of energy consumed by the machine learning model to perform a single inference. A prime example of this would be a natural language processing model built on a Transformer network architecture; if it utilizes 0.1 Joules of energy to translate a sentence from English to French, its energy efficiency is measured at 0.1 Joules per inference. +5. **Energy Efficiency:** Energy efficiency is a metric that determines the amount of energy consumed by the machine learning model to perform a single inference. A prime example of this would be a natural language processing model built on a Transformer network architecture; if it utilizes 0.1 Joules of energy to translate a sentence from English to French, its energy efficiency is measured at 0.1 Joules per inference. -6. **Energy Efficiency:** Energy efficiency is a metric that determines the amount of energy consumed by the machine learning model to perform a single inference. A prime example of this would be a natural language processing model built on a Transformer network architecture; if it utilizes 0.1 Joules of energy to translate a sentence from English to French, its energy efficiency is measured at 0.1 Joules per inference. - -7. **Memory Usage:** Memory usage quantifies the volume of RAM needed by a machine learning model to carry out inference tasks. A relevant example to illustrate this would be a face recognition system based on a CNN; if such a system requires 150 MB of RAM to process and recognize faces within an image, its memory usage is 150 MB. +6. **Memory Usage:** Memory usage quantifies the volume of RAM needed by a machine learning model to carry out inference tasks. A relevant example to illustrate this would be a face recognition system based on a CNN; if such a system requires 150 MB of RAM to process and recognize faces within an image, its memory usage is 150 MB. #### Tasks @@ -427,8 +425,6 @@ Metrics: **[OpenVINO toolkit](https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/overview.html):** OpenVINO toolkit provides a benchmark tool to measure the performance of deep learning models for various tasks, such as image classification, object detection, and facial recognition, on Intel hardware. It offers detailed insights into the models' inference performance on different hardware configurations. It's metrics include: -OpenVINO toolkit provides a benchmark tool to measure the performance of deep learning models for various tasks, such as image classification, object detection, and facial recognition, on Intel hardware. It offers detailed insights into the models' inference performance on different hardware configurations. - Metrics: * Inference time @@ -436,7 +432,7 @@ Metrics: * Latency * CPU and GPU utilization -*Example Use Case* +#### Example Use Case Consider a scenario where we want to evaluate the inference performance of an object detection model on a specific edge device. diff --git a/contents/contributors.qmd b/contents/contributors.qmd index 7fafb5cc..e479bc20 100644 --- a/contents/contributors.qmd +++ b/contents/contributors.qmd @@ -2,10 +2,9 @@ comments: false --- -# Contributors {.unnumbered} - -We extend our sincere thanks to the diverse group of individuals who have generously contributed their expertise, insights, and time to improve both the content and codebase of this project. Below you will find a list of all contributors. If you would like to contribute to this project, please see our [GitHub](https://github.com/harvard-edge/cs249r_book) page. +# Contributors & Thanks {.unnumbered} +We extend our sincere thanks to the diverse group of individuals who have generously contributed their expertise, insights, time, and support to improve both the content and codebase of this project. This includes not only those who have directly contributed through code and writing but also those who have helped by identifying issues, providing feedback, and offering suggestions. Below, you will find a list of all contributors. If you would like to contribute to this project, please visit our [GitHub](https://github.com/harvard-edge/cs249r_book) page for more information.