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
|
Naeem Khoshnevis
|
Douwe den Blanken
|
- shanzehbatool
|
+ jasonjabbour
|
+ shanzehbatool
|
kai4avaya
|
Elias Nuwara
|
Jared Ping
|
Matthew Stewart
|
- Itai Shapira
|
+ Itai Shapira
|
Marcelo Rovai
|
Maximilian Lam
|
Jayson Lin
|
- jasonjabbour
|
- Sophia Cho
|
+ Jeffrey Ma
|
- Jeffrey Ma
|
Andrea
|
+ Sophia Cho
|
Alex Rodriguez
|
Korneel Van den Berghe
|
- Zishen Wan
|
+ Colby Banbury
|
- Colby Banbury
|
+ Zishen Wan
|
+ Sara Khosravi
|
Divya Amirtharaj
|
Srivatsan Krishnan
|
Abdulrahman Mahmoud
|
- arnaumarin
|
- Emeka Ezike
|
+ arnaumarin
|
Aghyad Deeb
|
- Sara Khosravi
|
- Emil Njor
|
Aditi Raju
|
+ Jared Ni
|
+ Emil Njor
|
- Jared Ni
|
- Michael Schnebly
|
ELSuitorHarvard
|
oishib
|
- Yu-Shun Hsiao
|
-
-
+ Michael Schnebly
|
Jae-Won Chung
|
Henry Bae
|
+
+
+ Yu-Shun Hsiao
|
Mark Mazumder
|
- Andrew Bass
|
eurashin
|
+ Marco Zennaro
|
+ Andrew Bass
|
+ Emeka Ezike
|
Jennifer Zhou
|
- Pong Trairatvorakul
|
- Marco Zennaro
|
Shvetank Prakash
|
- Bruno Scaglione
|
+ Pong Trairatvorakul
|
+ Fin Amin
|
Allen-Kuang
|
+ Bruno Scaglione
|
Alex Oesterling
|
Gauri Jain
|
- Fin Amin
|
Sercan Aygün
|
gnodipac886
|
+ Baldassarre Cesarano
|
+ yanjingl
|
abigailswallow
|
Yang Zhou
|
- yanjingl
|
- Jason Yik
|
+ Jason Yik
|
happyappledog
|
Emmanuel Rassou
|
- Curren Iyer
|
Jessica Quaye
|
- Shreya Johri
|
+ Sonia Murthy
|
- Vijay Edupuganti
|
- Sonia Murthy
|
+ Shreya Johri
|
The Random DIY
|
Costin-Andrei Oncescu
|
Annie Laurie Cook
|
+ Vijay Edupuganti
|
Jothi Ramaswamy
|
Batur Arslan
|
+ Curren Iyer
|
a-saraf
|
songhan
|
+
+
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.