<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://cidr.up-microlab.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lawrence+Quizon</id>
	<title>Center for Integrated Circuits and Devices Research (CIDR) - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://cidr.up-microlab.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lawrence+Quizon"/>
	<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php/Special:Contributions/Lawrence_Quizon"/>
	<updated>2026-05-19T09:35:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=655</id>
		<title>SEACAS Chipathon 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=655"/>
		<updated>2023-09-19T06:28:54Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: /* SEACAS 2023 Baseline: FFT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:SEACAS 2023 Google Form Header v4.png|center|1080x1080px]]&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Participants (students and officers) can now register for this event using this link: https://forms.gle/brGQxkzHWpon7pZx8&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
The IEEE Republic of Philippines Section Solid-State Circuits Society (SSCS) Chapter and CAS/SP Joint Chapter are happy to announce  the SEACAS and Student Chipathon 2023, which will be held  in Quezon City, Philippines on '''18-19 September 2023'''. This year it will be a Chapthon instead of a Hackathon where students will be able to experience the whole integrated circuit (IC) design flow using open-source tools. Details of the event, the tools and mechanics of the Chipathon will be available in this website. &lt;br /&gt;
&lt;br /&gt;
NOTE: The winning team in the Chipathon will be given the chance to have their chip fabricated!&lt;br /&gt;
&lt;br /&gt;
'''Tentative Schedule'''&lt;br /&gt;
&lt;br /&gt;
'''''Sept 18, 2023 (Day 1) - SEACAS &amp;amp; Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - A discussion on Open-source tools and IC design that will be used in the Chipathon&lt;br /&gt;
&lt;br /&gt;
                   - Student Chipathon starts&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-16:00 - Research presentations by Chapter Officers&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - Dinner of CAS Officers and Local Organizers&lt;br /&gt;
&lt;br /&gt;
'''''Sept 19, 2023 (Day 2) - Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - Chipathon continues&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-15:30 - Chipathon design presentation/judging&lt;br /&gt;
&lt;br /&gt;
15:30-16:00 - Chipathon Award Ceremony&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - Dinner with students and CAS Officers&lt;br /&gt;
&lt;br /&gt;
== Chipathon Mechanics ==&lt;br /&gt;
&lt;br /&gt;
==== Scope ====&lt;br /&gt;
Students from each chapter will be formed into groups of two (2) students at most and they will be asked to design and implement a certain algorithm (e.g. FFT, LMS filtering, Reed-Solomon's coding, etc), the exact algorithm will be announced on the day of the event, but the necessary software and tools will be given at least a week before the event. An addition to the algorithm, an example or baseline design in RTL will be given as a demonstration.&lt;br /&gt;
&lt;br /&gt;
==== Expectations to the students ====&lt;br /&gt;
&lt;br /&gt;
# '''Digital Design'''. Students will use the digital (not analog) IC design flow.&lt;br /&gt;
# '''Minimum requirements'''. Each team needs to produce a GDS layout of the baseline design, the design has to be functionally correct, clear DR and LVS.&lt;br /&gt;
# '''Additional design credit'''. Each team is free to implement any modifications / optimizaation to the baseline to improve the design, and the team will be given credits for any improvement (power, performance, area, etc). &lt;br /&gt;
# '''Reports'''. Each team is also expected to be able to generate the following reports: Utilization ratio, Critical path, Area, DRC, violations, etc&lt;br /&gt;
&lt;br /&gt;
==== Participant Requirements ====&lt;br /&gt;
&lt;br /&gt;
# Basic knowledge of electronics and digital circuits.&lt;br /&gt;
# Basic knowledge on digital design flow.&lt;br /&gt;
&lt;br /&gt;
== SEACAS 2023 Baseline: FFT ==&lt;br /&gt;
Linked below is a notebook running the '''OpenLane''' flow with a baseline implementation of the '''fast fourier transform algorithm.'''&lt;br /&gt;
&lt;br /&gt;
* [https://colab.research.google.com/drive/1FRPY00YG7ZnKtEOhsCMP8QWoR1RHZk6z?usp=sharing SEACAS 2023 Baseline FFT]&lt;br /&gt;
&lt;br /&gt;
== Submission Form ==&lt;br /&gt;
Please upload your project files and presentation below.&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/uyggMAKs6b5fLpbHA SEACAS 2023 Submission Form]&lt;br /&gt;
&lt;br /&gt;
== Software tools and how to set-up ==&lt;br /&gt;
The tools needed for the Chipathon can be found in the Colab Notebook below. We strongly recommend familiarizing yourself with the tool flow and also setting the notebook up to run offline before you fly to the Philippines.&lt;br /&gt;
* [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS 2023 Hackathon Colab Notebook (Online Toolset &amp;amp; Tutorial)]&lt;br /&gt;
* [[IVerilog GTKWave Tutorial|Using Icarus Verilog and GTKWave for behavioral simulation]]&lt;br /&gt;
* [[Guide to operating SEACAS2023 Hackathon Notebook Offline|How to operate the notebook offline]]&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
The main venue of the SEACAS 2023 will be at the Electrical and Electronics Engineering (EEE) Institute, University of the Philippines Diliman. The complete address of the EEE Institute, UP Diliman is: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EEE building, Velasquez St.&lt;br /&gt;
&lt;br /&gt;
UP Campus, Diliman&lt;br /&gt;
&lt;br /&gt;
Quezon City, Philippines 1101&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google Map address: J3X9+W9 Quezon City, Metro Manila&lt;br /&gt;
&lt;br /&gt;
=== Hotel Recommendations. ===&lt;br /&gt;
&lt;br /&gt;
# SEDA Vertis North Hotels (https://vertisnorth.sedahotels.com)&lt;br /&gt;
# Novotel Manila Araneta City (https://www.novotelmanilaaranetacity.com)&lt;br /&gt;
# Microtel Wnydham UP Technohub (https://www.microtel-uptechnohub.com)&lt;br /&gt;
# Richmond Hotel (Eastwood Area) (https://www.eastwoodrichmondehotel.com.ph)&lt;br /&gt;
# Sheraton Manila Bay Hotel (formerly Pan-Pacific Hotel) (https://pan-pacific-hotel-manila.at-hotels.com/en/)&lt;br /&gt;
# Diamond Hotel Manila (https://www.diamondhotel.com)&lt;br /&gt;
# Shangri-la Hotel Makati (https://www.shangri-la.com/manila/makatishangrila/about/)&lt;br /&gt;
# Shangri-la The Fort Manila (https://www.shangri-la.com/en/manila/shangrilaatthefort/)&lt;br /&gt;
&lt;br /&gt;
=== Accommodations inside the University for students ===&lt;br /&gt;
The information below were taken from [https://upd.edu.ph/accommodations-in-up-diliman/ Accommodations in UP].&lt;br /&gt;
&lt;br /&gt;
# UP NISMED Hostel (for sharing) (https://nismed.upd.edu.ph/hostel-rooms/)&lt;br /&gt;
# University Hotel (formerly PCED)  (https://www.facebook.com/universityhotel.ph)&lt;br /&gt;
# Kapit-Balay (beside Balay Kalinaw) Email: [[upbalayinternasyonal@up.edu.ph]]&lt;br /&gt;
&lt;br /&gt;
=== Entry requirements to the Philippines and VISA ===&lt;br /&gt;
&lt;br /&gt;
# For quick reference on the general requirements on the entry of foreigners to the Philippines, you can refer to this link from the Philippine Embassy in Singapore (https://www.philippine-embassy.org.sg/consular/visa/general-information/). &lt;br /&gt;
# All travelers are expected to use the e-travel system (https://etravel.gov.ph), more information can be found here: https://www.philippineairlines.com/en/newsevent-listingpage/travel-advisory/alert-full-scale-implementation-of-the-e-travel-system&lt;br /&gt;
# For VISA Application in the Philippines (https://www.visa.gov.ph/)&lt;br /&gt;
# Information on VISA Application (https://www.philippine-embassy.org.sg/consular/visa/important-visa-information/)&lt;br /&gt;
&lt;br /&gt;
=== Airport Transfer ===&lt;br /&gt;
From any airport terminal there is a regular taxi that can take you to the venue or to your hotels.&lt;br /&gt;
&lt;br /&gt;
You can also use the [https://www.grab.com/ph/download/ Grab mobile app] to book a Grab Taxi or Grab car from any airport terminal provided you have data connectivity available. &lt;br /&gt;
&lt;br /&gt;
== Contact us ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[seacas2023@eee.upd.edu.ph]]&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=654</id>
		<title>SEACAS Chipathon 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=654"/>
		<updated>2023-09-19T06:22:39Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: submission form&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:SEACAS 2023 Google Form Header v4.png|center|1080x1080px]]&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Participants (students and officers) can now register for this event using this link: https://forms.gle/brGQxkzHWpon7pZx8&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
The IEEE Republic of Philippines Section Solid-State Circuits Society (SSCS) Chapter and CAS/SP Joint Chapter are happy to announce  the SEACAS and Student Chipathon 2023, which will be held  in Quezon City, Philippines on '''18-19 September 2023'''. This year it will be a Chapthon instead of a Hackathon where students will be able to experience the whole integrated circuit (IC) design flow using open-source tools. Details of the event, the tools and mechanics of the Chipathon will be available in this website. &lt;br /&gt;
&lt;br /&gt;
NOTE: The winning team in the Chipathon will be given the chance to have their chip fabricated!&lt;br /&gt;
&lt;br /&gt;
'''Tentative Schedule'''&lt;br /&gt;
&lt;br /&gt;
'''''Sept 18, 2023 (Day 1) - SEACAS &amp;amp; Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - A discussion on Open-source tools and IC design that will be used in the Chipathon&lt;br /&gt;
&lt;br /&gt;
                   - Student Chipathon starts&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-16:00 - Research presentations by Chapter Officers&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - Dinner of CAS Officers and Local Organizers&lt;br /&gt;
&lt;br /&gt;
'''''Sept 19, 2023 (Day 2) - Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - Chipathon continues&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-15:30 - Chipathon design presentation/judging&lt;br /&gt;
&lt;br /&gt;
15:30-16:00 - Chipathon Award Ceremony&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - Dinner with students and CAS Officers&lt;br /&gt;
&lt;br /&gt;
== Chipathon Mechanics ==&lt;br /&gt;
&lt;br /&gt;
==== Scope ====&lt;br /&gt;
Students from each chapter will be formed into groups of two (2) students at most and they will be asked to design and implement a certain algorithm (e.g. FFT, LMS filtering, Reed-Solomon's coding, etc), the exact algorithm will be announced on the day of the event, but the necessary software and tools will be given at least a week before the event. An addition to the algorithm, an example or baseline design in RTL will be given as a demonstration.&lt;br /&gt;
&lt;br /&gt;
==== Expectations to the students ====&lt;br /&gt;
&lt;br /&gt;
# '''Digital Design'''. Students will use the digital (not analog) IC design flow.&lt;br /&gt;
# '''Minimum requirements'''. Each team needs to produce a GDS layout of the baseline design, the design has to be functionally correct, clear DR and LVS.&lt;br /&gt;
# '''Additional design credit'''. Each team is free to implement any modifications / optimizaation to the baseline to improve the design, and the team will be given credits for any improvement (power, performance, area, etc). &lt;br /&gt;
# '''Reports'''. Each team is also expected to be able to generate the following reports: Utilization ratio, Critical path, Area, DRC, violations, etc&lt;br /&gt;
&lt;br /&gt;
==== Participant Requirements ====&lt;br /&gt;
&lt;br /&gt;
# Basic knowledge of electronics and digital circuits.&lt;br /&gt;
# Basic knowledge on digital design flow.&lt;br /&gt;
&lt;br /&gt;
== SEACAS 2023 Baseline: FFT ==&lt;br /&gt;
Linked below is a notebook running the '''OpenLane''' flow with a baseline implementation of the '''fast fourier transform algorithm.'''&lt;br /&gt;
&lt;br /&gt;
* [https://colab.research.google.com/drive/1FRPY00YG7ZnKtEOhsCMP8QWoR1RHZk6z?usp=sharing SEACAS 2023 Baseline FFT]&lt;br /&gt;
&lt;br /&gt;
== Submission Form ==&lt;br /&gt;
Please upload your project files and presentation below.&lt;br /&gt;
&lt;br /&gt;
[https://forms.gle/UCAN97sqtStDh6e36 SEACAS 2023 Submission Form]&lt;br /&gt;
&lt;br /&gt;
== Software tools and how to set-up ==&lt;br /&gt;
The tools needed for the Chipathon can be found in the Colab Notebook below. We strongly recommend familiarizing yourself with the tool flow and also setting the notebook up to run offline before you fly to the Philippines.&lt;br /&gt;
* [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS 2023 Hackathon Colab Notebook (Online Toolset &amp;amp; Tutorial)]&lt;br /&gt;
* [[IVerilog GTKWave Tutorial|Using Icarus Verilog and GTKWave for behavioral simulation]]&lt;br /&gt;
* [[Guide to operating SEACAS2023 Hackathon Notebook Offline|How to operate the notebook offline]]&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
The main venue of the SEACAS 2023 will be at the Electrical and Electronics Engineering (EEE) Institute, University of the Philippines Diliman. The complete address of the EEE Institute, UP Diliman is: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EEE building, Velasquez St.&lt;br /&gt;
&lt;br /&gt;
UP Campus, Diliman&lt;br /&gt;
&lt;br /&gt;
Quezon City, Philippines 1101&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google Map address: J3X9+W9 Quezon City, Metro Manila&lt;br /&gt;
&lt;br /&gt;
=== Hotel Recommendations. ===&lt;br /&gt;
&lt;br /&gt;
# SEDA Vertis North Hotels (https://vertisnorth.sedahotels.com)&lt;br /&gt;
# Novotel Manila Araneta City (https://www.novotelmanilaaranetacity.com)&lt;br /&gt;
# Microtel Wnydham UP Technohub (https://www.microtel-uptechnohub.com)&lt;br /&gt;
# Richmond Hotel (Eastwood Area) (https://www.eastwoodrichmondehotel.com.ph)&lt;br /&gt;
# Sheraton Manila Bay Hotel (formerly Pan-Pacific Hotel) (https://pan-pacific-hotel-manila.at-hotels.com/en/)&lt;br /&gt;
# Diamond Hotel Manila (https://www.diamondhotel.com)&lt;br /&gt;
# Shangri-la Hotel Makati (https://www.shangri-la.com/manila/makatishangrila/about/)&lt;br /&gt;
# Shangri-la The Fort Manila (https://www.shangri-la.com/en/manila/shangrilaatthefort/)&lt;br /&gt;
&lt;br /&gt;
=== Accommodations inside the University for students ===&lt;br /&gt;
The information below were taken from [https://upd.edu.ph/accommodations-in-up-diliman/ Accommodations in UP].&lt;br /&gt;
&lt;br /&gt;
# UP NISMED Hostel (for sharing) (https://nismed.upd.edu.ph/hostel-rooms/)&lt;br /&gt;
# University Hotel (formerly PCED)  (https://www.facebook.com/universityhotel.ph)&lt;br /&gt;
# Kapit-Balay (beside Balay Kalinaw) Email: [[upbalayinternasyonal@up.edu.ph]]&lt;br /&gt;
&lt;br /&gt;
=== Entry requirements to the Philippines and VISA ===&lt;br /&gt;
&lt;br /&gt;
# For quick reference on the general requirements on the entry of foreigners to the Philippines, you can refer to this link from the Philippine Embassy in Singapore (https://www.philippine-embassy.org.sg/consular/visa/general-information/). &lt;br /&gt;
# All travelers are expected to use the e-travel system (https://etravel.gov.ph), more information can be found here: https://www.philippineairlines.com/en/newsevent-listingpage/travel-advisory/alert-full-scale-implementation-of-the-e-travel-system&lt;br /&gt;
# For VISA Application in the Philippines (https://www.visa.gov.ph/)&lt;br /&gt;
# Information on VISA Application (https://www.philippine-embassy.org.sg/consular/visa/important-visa-information/)&lt;br /&gt;
&lt;br /&gt;
=== Airport Transfer ===&lt;br /&gt;
From any airport terminal there is a regular taxi that can take you to the venue or to your hotels.&lt;br /&gt;
&lt;br /&gt;
You can also use the [https://www.grab.com/ph/download/ Grab mobile app] to book a Grab Taxi or Grab car from any airport terminal provided you have data connectivity available. &lt;br /&gt;
&lt;br /&gt;
== Contact us ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[seacas2023@eee.upd.edu.ph]]&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=653</id>
		<title>SEACAS Chipathon 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=653"/>
		<updated>2023-09-18T02:21:52Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:SEACAS 2023 Google Form Header v4.png|center|1080x1080px]]&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Participants (students and officers) can now register for this event using this link: https://forms.gle/brGQxkzHWpon7pZx8&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
The IEEE Republic of Philippines Section Solid-State Circuits Society (SSCS) Chapter and CAS/SP Joint Chapter are happy to announce  the SEACAS and Student Chipathon 2023, which will be held  in Quezon City, Philippines on '''18-19 September 2023'''. This year it will be a Chapthon instead of a Hackathon where students will be able to experience the whole integrated circuit (IC) design flow using open-source tools. Details of the event, the tools and mechanics of the Chipathon will be available in this website. &lt;br /&gt;
&lt;br /&gt;
NOTE: The winning team in the Chipathon will be given the chance to have their chip fabricated!&lt;br /&gt;
&lt;br /&gt;
'''Tentative Schedule'''&lt;br /&gt;
&lt;br /&gt;
'''''Sept 18, 2023 (Day 1) - SEACAS &amp;amp; Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - A discussion on Open-source tools and IC design that will be used in the Chipathon&lt;br /&gt;
&lt;br /&gt;
                   - Student Chipathon starts&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-16:00 - Research presentations by Chapter Officers&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - Dinner of CAS Officers and Local Organizers&lt;br /&gt;
&lt;br /&gt;
'''''Sept 19, 2023 (Day 2) - Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - Chipathon continues&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-15:30 - Chipathon design presentation/judging&lt;br /&gt;
&lt;br /&gt;
15:30-16:00 - Chipathon Award Ceremony&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - Dinner with students and CAS Officers&lt;br /&gt;
&lt;br /&gt;
== Chipathon Mechanics ==&lt;br /&gt;
&lt;br /&gt;
==== Scope ====&lt;br /&gt;
Students from each chapter will be formed into groups of two (2) students at most and they will be asked to design and implement a certain algorithm (e.g. FFT, LMS filtering, Reed-Solomon's coding, etc), the exact algorithm will be announced on the day of the event, but the necessary software and tools will be given at least a week before the event. An addition to the algorithm, an example or baseline design in RTL will be given as a demonstration.&lt;br /&gt;
&lt;br /&gt;
==== Expectations to the students ====&lt;br /&gt;
&lt;br /&gt;
# '''Digital Design'''. Students will use the digital (not analog) IC design flow.&lt;br /&gt;
# '''Minimum requirements'''. Each team needs to produce a GDS layout of the baseline design, the design has to be functionally correct, clear DR and LVS.&lt;br /&gt;
# '''Additional design credit'''. Each team is free to implement any modifications / optimizaation to the baseline to improve the design, and the team will be given credits for any improvement (power, performance, area, etc). &lt;br /&gt;
# '''Reports'''. Each team is also expected to be able to generate the following reports: Utilization ratio, Critical path, Area, DRC, violations, etc&lt;br /&gt;
&lt;br /&gt;
==== Participant Requirements ====&lt;br /&gt;
&lt;br /&gt;
# Basic knowledge of electronics and digital circuits.&lt;br /&gt;
# Basic knowledge on digital design flow.&lt;br /&gt;
&lt;br /&gt;
== SEACAS 2023 Baseline: FFT ==&lt;br /&gt;
Linked below is a notebook running the '''OpenLane''' flow with a baseline implementation of the '''fast fourier transform algorithm.'''&lt;br /&gt;
&lt;br /&gt;
* [https://colab.research.google.com/drive/1FRPY00YG7ZnKtEOhsCMP8QWoR1RHZk6z?usp=sharing SEACAS 2023 Baseline FFT]&lt;br /&gt;
&lt;br /&gt;
== Software tools and how to set-up ==&lt;br /&gt;
The tools needed for the Chipathon can be found in the Colab Notebook below. We strongly recommend familiarizing yourself with the tool flow and also setting the notebook up to run offline before you fly to the Philippines.&lt;br /&gt;
* [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS 2023 Hackathon Colab Notebook (Online Toolset &amp;amp; Tutorial)]&lt;br /&gt;
* [[IVerilog GTKWave Tutorial|Using Icarus Verilog and GTKWave for behavioral simulation]]&lt;br /&gt;
* [[Guide to operating SEACAS2023 Hackathon Notebook Offline|How to operate the notebook offline]]&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
The main venue of the SEACAS 2023 will be at the Electrical and Electronics Engineering (EEE) Institute, University of the Philippines Diliman. The complete address of the EEE Institute, UP Diliman is: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EEE building, Velasquez St.&lt;br /&gt;
&lt;br /&gt;
UP Campus, Diliman&lt;br /&gt;
&lt;br /&gt;
Quezon City, Philippines 1101&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google Map address: J3X9+W9 Quezon City, Metro Manila&lt;br /&gt;
&lt;br /&gt;
=== Hotel Recommendations. ===&lt;br /&gt;
&lt;br /&gt;
# SEDA Vertis North Hotels (https://vertisnorth.sedahotels.com)&lt;br /&gt;
# Novotel Manila Araneta City (https://www.novotelmanilaaranetacity.com)&lt;br /&gt;
# Microtel Wnydham UP Technohub (https://www.microtel-uptechnohub.com)&lt;br /&gt;
# Richmond Hotel (Eastwood Area) (https://www.eastwoodrichmondehotel.com.ph)&lt;br /&gt;
# Sheraton Manila Bay Hotel (formerly Pan-Pacific Hotel) (https://pan-pacific-hotel-manila.at-hotels.com/en/)&lt;br /&gt;
# Diamond Hotel Manila (https://www.diamondhotel.com)&lt;br /&gt;
# Shangri-la Hotel Makati (https://www.shangri-la.com/manila/makatishangrila/about/)&lt;br /&gt;
# Shangri-la The Fort Manila (https://www.shangri-la.com/en/manila/shangrilaatthefort/)&lt;br /&gt;
&lt;br /&gt;
=== Accommodations inside the University for students ===&lt;br /&gt;
The information below were taken from [https://upd.edu.ph/accommodations-in-up-diliman/ Accommodations in UP].&lt;br /&gt;
&lt;br /&gt;
# UP NISMED Hostel (for sharing) (https://nismed.upd.edu.ph/hostel-rooms/)&lt;br /&gt;
# University Hotel (formerly PCED)  (https://www.facebook.com/universityhotel.ph)&lt;br /&gt;
# Kapit-Balay (beside Balay Kalinaw) Email: [[upbalayinternasyonal@up.edu.ph]]&lt;br /&gt;
&lt;br /&gt;
=== Entry requirements to the Philippines and VISA ===&lt;br /&gt;
&lt;br /&gt;
# For quick reference on the general requirements on the entry of foreigners to the Philippines, you can refer to this link from the Philippine Embassy in Singapore (https://www.philippine-embassy.org.sg/consular/visa/general-information/). &lt;br /&gt;
# All travelers are expected to use the e-travel system (https://etravel.gov.ph), more information can be found here: https://www.philippineairlines.com/en/newsevent-listingpage/travel-advisory/alert-full-scale-implementation-of-the-e-travel-system&lt;br /&gt;
# For VISA Application in the Philippines (https://www.visa.gov.ph/)&lt;br /&gt;
# Information on VISA Application (https://www.philippine-embassy.org.sg/consular/visa/important-visa-information/)&lt;br /&gt;
&lt;br /&gt;
=== Airport Transfer ===&lt;br /&gt;
From any airport terminal there is a regular taxi that can take you to the venue or to your hotels.&lt;br /&gt;
&lt;br /&gt;
You can also use the [https://www.grab.com/ph/download/ Grab mobile app] to book a Grab Taxi or Grab car from any airport terminal provided you have data connectivity available. &lt;br /&gt;
&lt;br /&gt;
== Contact us ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[seacas2023@eee.upd.edu.ph]]&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=652</id>
		<title>SEACAS Chipathon 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=652"/>
		<updated>2023-09-18T01:51:55Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: SEACAS Baseline Implementation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:SEACAS 2023 Google Form Header v4.png|center|1080x1080px]]&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
Participants (students and officers) can now register for this event using this link: https://forms.gle/brGQxkzHWpon7pZx8&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
The IEEE Republic of Philippines Section Solid-State Circuits Society (SSCS) Chapter and CAS/SP Joint Chapter are happy to announce  the SEACAS and Student Chipathon 2023, which will be held  in Quezon City, Philippines on '''18-19 September 2023'''. This year it will be a Chapthon instead of a Hackathon where students will be able to experience the whole integrated circuit (IC) design flow using open-source tools. Details of the event, the tools and mechanics of the Chipathon will be available in this website. &lt;br /&gt;
&lt;br /&gt;
NOTE: The winning team in the Chipathon will be given the chance to have their chip fabricated!&lt;br /&gt;
&lt;br /&gt;
'''Tentative Schedule'''&lt;br /&gt;
&lt;br /&gt;
'''''Sept 18, 2023 (Day 1) - SEACAS &amp;amp; Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - A discussion on Open-source tools and IC design that will be used in the Chipathon&lt;br /&gt;
&lt;br /&gt;
                   - Student Chipathon starts&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-16:00 - Research presentations by Chapter Officers&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - Dinner of CAS Officers and Local Organizers&lt;br /&gt;
&lt;br /&gt;
'''''Sept 19, 2023 (Day 2) - Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - Chipathon continues&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-15:30 - Chipathon design presentation/judging&lt;br /&gt;
&lt;br /&gt;
15:30-16:00 - Chipathon Award Ceremony&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - Dinner with students and CAS Officers&lt;br /&gt;
&lt;br /&gt;
== Chipathon Mechanics ==&lt;br /&gt;
&lt;br /&gt;
==== Scope ====&lt;br /&gt;
Students from each chapter will be formed into groups of two (2) students at most and they will be asked to design and implement a certain algorithm (e.g. FFT, LMS filtering, Reed-Solomon's coding, etc), the exact algorithm will be announced on the day of the event, but the necessary software and tools will be given at least a week before the event. An addition to the algorithm, an example or baseline design in RTL will be given as a demonstration.&lt;br /&gt;
&lt;br /&gt;
==== Expectations to the students ====&lt;br /&gt;
&lt;br /&gt;
# '''Digital Design'''. Students will use the digital (not analog) IC design flow.&lt;br /&gt;
# '''Minimum requirements'''. Each team needs to produce a GDS layout of the baseline design, the design has to be functionally correct, clear DR and LVS.&lt;br /&gt;
# '''Additional design credit'''. Each team is free to implement any modifications / optimizaation to the baseline to improve the design, and the team will be given credits for any improvement (power, performance, area, etc). &lt;br /&gt;
# '''Reports'''. Each team is also expected to be able to generate the following reports: Utilization ratio, Critical path, Area, DRC, violations, etc&lt;br /&gt;
&lt;br /&gt;
==== Participant Requirements ====&lt;br /&gt;
&lt;br /&gt;
# Basic knowledge of electronics and digital circuits.&lt;br /&gt;
# Basic knowledge on digital design flow.&lt;br /&gt;
&lt;br /&gt;
== SEACAS 2023 Baseline: FFT ==&lt;br /&gt;
Linked below is a notebook running the '''OpenLane''' flow with a baseline implementation of the '''discrete fourier transform algorithm.'''&lt;br /&gt;
&lt;br /&gt;
* [https://colab.research.google.com/drive/1FRPY00YG7ZnKtEOhsCMP8QWoR1RHZk6z?usp=sharing SEACAS 2023 Baseline DFT]&lt;br /&gt;
&lt;br /&gt;
== Software tools and how to set-up ==&lt;br /&gt;
The tools needed for the Chipathon can be found in the Colab Notebook below. We strongly recommend familiarizing yourself with the tool flow and also setting the notebook up to run offline before you fly to the Philippines.&lt;br /&gt;
* [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS 2023 Hackathon Colab Notebook (Online Toolset &amp;amp; Tutorial)]&lt;br /&gt;
* [[IVerilog GTKWave Tutorial|Using Icarus Verilog and GTKWave for behavioral simulation]]&lt;br /&gt;
* [[Guide to operating SEACAS2023 Hackathon Notebook Offline|How to operate the notebook offline]]&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
The main venue of the SEACAS 2023 will be at the Electrical and Electronics Engineering (EEE) Institute, University of the Philippines Diliman. The complete address of the EEE Institute, UP Diliman is: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EEE building, Velasquez St.&lt;br /&gt;
&lt;br /&gt;
UP Campus, Diliman&lt;br /&gt;
&lt;br /&gt;
Quezon City, Philippines 1101&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google Map address: J3X9+W9 Quezon City, Metro Manila&lt;br /&gt;
&lt;br /&gt;
=== Hotel Recommendations. ===&lt;br /&gt;
&lt;br /&gt;
# SEDA Vertis North Hotels (https://vertisnorth.sedahotels.com)&lt;br /&gt;
# Novotel Manila Araneta City (https://www.novotelmanilaaranetacity.com)&lt;br /&gt;
# Microtel Wnydham UP Technohub (https://www.microtel-uptechnohub.com)&lt;br /&gt;
# Richmond Hotel (Eastwood Area) (https://www.eastwoodrichmondehotel.com.ph)&lt;br /&gt;
# Sheraton Manila Bay Hotel (formerly Pan-Pacific Hotel) (https://pan-pacific-hotel-manila.at-hotels.com/en/)&lt;br /&gt;
# Diamond Hotel Manila (https://www.diamondhotel.com)&lt;br /&gt;
# Shangri-la Hotel Makati (https://www.shangri-la.com/manila/makatishangrila/about/)&lt;br /&gt;
# Shangri-la The Fort Manila (https://www.shangri-la.com/en/manila/shangrilaatthefort/)&lt;br /&gt;
&lt;br /&gt;
=== Accommodations inside the University for students ===&lt;br /&gt;
The information below were taken from [https://upd.edu.ph/accommodations-in-up-diliman/ Accommodations in UP].&lt;br /&gt;
&lt;br /&gt;
# UP NISMED Hostel (for sharing) (https://nismed.upd.edu.ph/hostel-rooms/)&lt;br /&gt;
# University Hotel (formerly PCED)  (https://www.facebook.com/universityhotel.ph)&lt;br /&gt;
# Kapit-Balay (beside Balay Kalinaw) Email: [[upbalayinternasyonal@up.edu.ph]]&lt;br /&gt;
&lt;br /&gt;
=== Entry requirements to the Philippines and VISA ===&lt;br /&gt;
&lt;br /&gt;
# For quick reference on the general requirements on the entry of foreigners to the Philippines, you can refer to this link from the Philippine Embassy in Singapore (https://www.philippine-embassy.org.sg/consular/visa/general-information/). &lt;br /&gt;
# All travelers are expected to use the e-travel system (https://etravel.gov.ph), more information can be found here: https://www.philippineairlines.com/en/newsevent-listingpage/travel-advisory/alert-full-scale-implementation-of-the-e-travel-system&lt;br /&gt;
# For VISA Application in the Philippines (https://www.visa.gov.ph/)&lt;br /&gt;
# Information on VISA Application (https://www.philippine-embassy.org.sg/consular/visa/important-visa-information/)&lt;br /&gt;
&lt;br /&gt;
=== Airport Transfer ===&lt;br /&gt;
From any airport terminal there is a regular taxi that can take you to the venue or to your hotels.&lt;br /&gt;
&lt;br /&gt;
You can also use the [https://www.grab.com/ph/download/ Grab mobile app] to book a Grab Taxi or Grab car from any airport terminal provided you have data connectivity available. &lt;br /&gt;
&lt;br /&gt;
== Contact us ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[seacas2023@eee.upd.edu.ph]]&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=630</id>
		<title>Guide to operating SEACAS2023 Hackathon Notebook Offline</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=630"/>
		<updated>2023-09-14T09:11:00Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Clarification: In order to run the [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS2023 Hackathon Notebook] Offline, you must run it once while online in order to download the dependencies of the notebook. After that, you may skip all parts that try to access &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; as those need internet.&lt;br /&gt;
&lt;br /&gt;
First, make a new directory in your computer as your workspace. I recommend the name &amp;lt;code&amp;gt;seacas2023&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, download the SEACAS2023 Hackathon notebook by going to File &amp;gt; Download &amp;gt; .ipynb from inside the notebook and save it to this folder.&lt;br /&gt;
&lt;br /&gt;
To run the .ipynb from your computer, you will need an Ubuntu environment.&lt;br /&gt;
&lt;br /&gt;
== For Ubuntu ==&lt;br /&gt;
For Ubuntu systems, Jupyter Notebook should work as intended&lt;br /&gt;
&lt;br /&gt;
=== Installing Jupyter ===&lt;br /&gt;
From your Ubuntu terminal, run the following command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install jupyter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once that is done, you will have the Jupyter notebook program in your PC.&lt;br /&gt;
&lt;br /&gt;
=== Running the notebook ===&lt;br /&gt;
Change your directory to the workspace you created earlier. For me, it is &amp;lt;code&amp;gt;/home/lawrence/seacas2023&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Finally, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;jupyter notebook SEACAS_2023.ipynb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should automatically open a browser containing the notebook. Run it as you would the colab notebook.&lt;br /&gt;
&lt;br /&gt;
== For Windows == &lt;br /&gt;
&lt;br /&gt;
=== WSL2 Installation ===&lt;br /&gt;
WSL stands for Windows Subsystem for Linux. It runs Ubuntu inside Windows so that you are able to run Linux commands.&lt;br /&gt;
&lt;br /&gt;
Detailed installation instructions can be found [https://learn.microsoft.com/en-us/windows/wsl/install here] in the Microsoft website. For a quickstart, run the following command in your command prompt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --install&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make sure that your WSL is WSL2, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --set-version Ubuntu 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, you can enter Ubuntu by typing &amp;lt;code&amp;gt;wsl&amp;lt;/code&amp;gt; in your command prompt.&lt;br /&gt;
&lt;br /&gt;
=== Option 1: Jupyter Notebook ===&lt;br /&gt;
To install Jupyter notebook, simply do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install jupyter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;jupyter notebook SEACAS_2023.ipynb&amp;lt;/code&amp;gt;[[File:VSCode running ipynb.png|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Option 2: VSCode Jupyter Extension ===&lt;br /&gt;
For WSL systems, Jupyter Notebook may not easily run without bugs. You may browse the internet for clues as how to make it work, if you want (I made it work by downgrading/updating a few other packages). &lt;br /&gt;
&lt;br /&gt;
My preferred way is to use VSCode's Jupyter extension instead.&lt;br /&gt;
&lt;br /&gt;
==== Installing VSCode with WSL2 &amp;amp; Jupyter Extensions ====&lt;br /&gt;
First, [https://code.visualstudio.com/download download VScode] and open it.&lt;br /&gt;
&lt;br /&gt;
On the left side bar, you will see a button for &amp;quot;Extensions&amp;quot; which should be a 4-block icon. Alternatively, you can open it with CTRL + SHIFT + X.&lt;br /&gt;
&lt;br /&gt;
Search for the Remote Development extension and install it. Next, search for the Jupyter extension and install it. &lt;br /&gt;
&lt;br /&gt;
==== Running the notebook inside VSCode ====&lt;br /&gt;
Open a new command prompt window and type WSL to enter Ubuntu terminal. &lt;br /&gt;
&lt;br /&gt;
1. Go into WSL &lt;br /&gt;
&lt;br /&gt;
2. sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
3. sudo apt-get install python3-pip&lt;br /&gt;
&lt;br /&gt;
4. pip install -U ipykernel&lt;br /&gt;
&lt;br /&gt;
From Ubuntu, navigate to the workspace you created earlier. For me, it is in &amp;lt;code&amp;gt;/mnt/c/Users/Lawrence/seacas2023&amp;lt;/code&amp;gt;. Your C folder is in /mnt from inside WSL.&lt;br /&gt;
&lt;br /&gt;
Open this folder in VScode by typing &amp;lt;code&amp;gt;code .&amp;lt;/code&amp;gt; inside the terminal.&lt;br /&gt;
&lt;br /&gt;
The window should look like the picture provided.&lt;br /&gt;
&lt;br /&gt;
Finally, open the ipynb file from inside VScode and run it as you would from Colab.&lt;br /&gt;
&lt;br /&gt;
==== Note for Performance ====&lt;br /&gt;
In order to make things run faster, I recommend transferring the workspace to a folder inside the WSL2 folders (not /mnt/c). &lt;br /&gt;
&lt;br /&gt;
To transfer files into WSL2, you may simply open Linux from inside your file explorer sidebar (by clicking the penguin icon on the sidebar containing ''This PC, Network, Linux''). &lt;br /&gt;
&lt;br /&gt;
Alternatively, you can navigate into this by putting &amp;lt;code&amp;gt;\\wsl$&amp;lt;/code&amp;gt; on the address bar of explorer.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=624</id>
		<title>Guide to operating SEACAS2023 Hackathon Notebook Offline</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=624"/>
		<updated>2023-08-04T10:59:07Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: /* Installing Jupyter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Clarification: In order to run the [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS2023 Hackathon Notebook] Offline, you must run it once while online in order to download the dependencies of the notebook. After that, you may skip all parts that try to access &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; as those need internet.&lt;br /&gt;
&lt;br /&gt;
First, make a new directory in your computer as your workspace. I recommend the name &amp;lt;code&amp;gt;seacas2023&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, download the SEACAS2023 Hackathon notebook by going to File &amp;gt; Download &amp;gt; .ipynb from inside the notebook and save it to this folder.&lt;br /&gt;
&lt;br /&gt;
To run the .ipynb from your computer, you will need an Ubuntu environment.&lt;br /&gt;
&lt;br /&gt;
== For Ubuntu ==&lt;br /&gt;
For Ubuntu systems, Jupyter Notebook should work as intended&lt;br /&gt;
&lt;br /&gt;
=== Installing Jupyter ===&lt;br /&gt;
From your Ubuntu terminal, run the following command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install jupyter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once that is done, you will have the Jupyter notebook program in your PC.&lt;br /&gt;
&lt;br /&gt;
=== Running the notebook ===&lt;br /&gt;
Change your directory to the workspace you created earlier. For me, it is &amp;lt;code&amp;gt;/home/lawrence/seacas2023&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Finally, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;jupyter notebook SEACAS_2023.ipynb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should automatically open a browser containing the notebook. Run it as you would the colab notebook.&lt;br /&gt;
&lt;br /&gt;
== For Windows == &lt;br /&gt;
&lt;br /&gt;
=== WSL2 Installation ===&lt;br /&gt;
WSL stands for Windows Subsystem for Linux. It runs Ubuntu inside Windows so that you are able to run Linux commands.&lt;br /&gt;
&lt;br /&gt;
Detailed installation instructions can be found [https://learn.microsoft.com/en-us/windows/wsl/install here] in the Microsoft website. For a quickstart, run the following command in your command prompt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --install&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make sure that your WSL is WSL2, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --set-version Ubuntu 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, you can enter Ubuntu by typing &amp;lt;code&amp;gt;wsl&amp;lt;/code&amp;gt; in your command prompt.&lt;br /&gt;
&lt;br /&gt;
=== Option 1: Jupyter Notebook ===&lt;br /&gt;
To install Jupyter notebook, simply do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install jupyter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;jupyter notebook SEACAS_2023.ipynb&amp;lt;/code&amp;gt;[[File:VSCode running ipynb.png|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Option 2: VSCode Jupyter Extension ===&lt;br /&gt;
For WSL systems, Jupyter Notebook may not easily run without bugs. You may browse the internet for clues as how to make it work, if you want (I made it work by downgrading/updating a few other packages). &lt;br /&gt;
&lt;br /&gt;
My preferred way is to use VSCode's Jupyter extension instead.&lt;br /&gt;
&lt;br /&gt;
==== Installing VSCode with WSL2 &amp;amp; Jupyter Extensions ====&lt;br /&gt;
First, [https://code.visualstudio.com/download download VScode] and open it.&lt;br /&gt;
&lt;br /&gt;
On the left side bar, you will see a button for &amp;quot;Extensions&amp;quot; which should be a 4-block icon. Alternatively, you can open it with CTRL + SHIFT + X.&lt;br /&gt;
&lt;br /&gt;
Search for the Remote Development extension and install it. Next, search for the Jupyter extension and install it. &lt;br /&gt;
&lt;br /&gt;
==== Running the notebook inside VSCode ====&lt;br /&gt;
Open a new command prompt window and type WSL to enter Ubuntu terminal. &lt;br /&gt;
&lt;br /&gt;
From Ubuntu, navigate to the workspace you created earlier. For me, it is in &amp;lt;code&amp;gt;/mnt/c/Users/Lawrence/seacas2023&amp;lt;/code&amp;gt;. Your C folder is in /mnt from inside WSL.&lt;br /&gt;
&lt;br /&gt;
Open this folder in VScode by typing &amp;lt;code&amp;gt;code .&amp;lt;/code&amp;gt; inside the terminal.&lt;br /&gt;
&lt;br /&gt;
The window should look like the picture provided.&lt;br /&gt;
&lt;br /&gt;
Finally, open the ipynb file from inside VScode and run it as you would from Colab.&lt;br /&gt;
&lt;br /&gt;
==== Note for Performance ====&lt;br /&gt;
In order to make things run faster, I recommend transferring the workspace to a folder inside the WSL2 folders (not /mnt/c). &lt;br /&gt;
&lt;br /&gt;
To transfer files into WSL2, you may simply open Linux from inside your file explorer sidebar (by clicking the penguin icon on the sidebar containing ''This PC, Network, Linux''). &lt;br /&gt;
&lt;br /&gt;
Alternatively, you can navigate into this by putting &amp;lt;code&amp;gt;\\wsl$&amp;lt;/code&amp;gt; on the address bar of explorer.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=623</id>
		<title>Guide to operating SEACAS2023 Hackathon Notebook Offline</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=623"/>
		<updated>2023-08-04T10:54:55Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Clarification: In order to run the [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS2023 Hackathon Notebook] Offline, you must run it once while online in order to download the dependencies of the notebook. After that, you may skip all parts that try to access &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; as those need internet.&lt;br /&gt;
&lt;br /&gt;
First, make a new directory in your computer as your workspace. I recommend the name &amp;lt;code&amp;gt;seacas2023&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, download the SEACAS2023 Hackathon notebook by going to File &amp;gt; Download &amp;gt; .ipynb from inside the notebook and save it to this folder.&lt;br /&gt;
&lt;br /&gt;
To run the .ipynb from your computer, you will need an Ubuntu environment.&lt;br /&gt;
&lt;br /&gt;
== For Ubuntu ==&lt;br /&gt;
For Ubuntu systems, Jupyter Notebook should work as intended&lt;br /&gt;
&lt;br /&gt;
=== Installing Jupyter ===&lt;br /&gt;
From your Ubuntu terminal, run the following command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install jupyter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once that is done, you will have the Jupyter notebook program in your PC.&lt;br /&gt;
&lt;br /&gt;
=== Running the notebook ===&lt;br /&gt;
Change your directory to the workspace you created earlier. For me, it is &amp;lt;code&amp;gt;/home/lawrence/seacas2023&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Finally, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;jupyter notebook SEACAS_2023.ipynb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should automatically open a browser containing the notebook. Run it as you would the colab notebook.&lt;br /&gt;
&lt;br /&gt;
== For Windows == &lt;br /&gt;
&lt;br /&gt;
=== WSL2 Installation ===&lt;br /&gt;
WSL stands for Windows Subsystem for Linux. It runs Ubuntu inside Windows so that you are able to run Linux commands.&lt;br /&gt;
&lt;br /&gt;
Detailed installation instructions can be found [https://learn.microsoft.com/en-us/windows/wsl/install here] in the Microsoft website. For a quickstart, run the following command in your command prompt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --install&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make sure that your WSL is WSL2, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --set-version Ubuntu 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, you can enter Ubuntu by typing &amp;lt;code&amp;gt;wsl&amp;lt;/code&amp;gt; in your command prompt.&lt;br /&gt;
&lt;br /&gt;
=== Option 1: Jupyter Notebook ===&lt;br /&gt;
To install Jupyter notebook, simply do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install jupyter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;jupyter notebook SEACAS_2023.ipynb&amp;lt;/code&amp;gt;[[File:VSCode running ipynb.png|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Option 2: VSCode Jupyter Extension ===&lt;br /&gt;
For WSL systems, Jupyter Notebook may not easily run without bugs. You may browse the internet for clues as how to make it work, if you want (I made it work by downgrading/updating a few other packages). &lt;br /&gt;
&lt;br /&gt;
My preferred way is to use VSCode's Jupyter extension instead.&lt;br /&gt;
&lt;br /&gt;
==== Installing VSCode with WSL2 &amp;amp; Jupyter Extensions ====&lt;br /&gt;
First, [https://code.visualstudio.com/download download VScode] and open it.&lt;br /&gt;
&lt;br /&gt;
On the left side bar, you will see a button for &amp;quot;Extensions&amp;quot; which should be a 4-block icon. Alternatively, you can open it with CTRL + SHIFT + X.&lt;br /&gt;
&lt;br /&gt;
Search for the Remote Development extension and install it. Next, search for the Jupyter extension and install it. &lt;br /&gt;
&lt;br /&gt;
==== Running the notebook inside VSCode ====&lt;br /&gt;
Open a new command prompt window and type WSL to enter Ubuntu terminal. &lt;br /&gt;
&lt;br /&gt;
From Ubuntu, navigate to the workspace you created earlier. For me, it is in &amp;lt;code&amp;gt;/mnt/c/Users/Lawrence/seacas2023&amp;lt;/code&amp;gt;. Your C folder is in /mnt from inside WSL.&lt;br /&gt;
&lt;br /&gt;
Open this folder in VScode by typing &amp;lt;code&amp;gt;code .&amp;lt;/code&amp;gt; inside the terminal.&lt;br /&gt;
&lt;br /&gt;
The window should look like the picture provided.&lt;br /&gt;
&lt;br /&gt;
Finally, open the ipynb file from inside VScode and run it as you would from Colab.&lt;br /&gt;
&lt;br /&gt;
==== Note for Performance ====&lt;br /&gt;
In order to make things run faster, I recommend transferring the workspace to a folder inside the WSL2 folders (not /mnt/c). &lt;br /&gt;
&lt;br /&gt;
To transfer files into WSL2, you may simply open Linux from inside your file explorer sidebar (by clicking the penguin icon on the sidebar containing ''This PC, Network, Linux''). &lt;br /&gt;
&lt;br /&gt;
Alternatively, you can navigate into this by putting &amp;lt;code&amp;gt;\\wsl$&amp;lt;/code&amp;gt; on the address bar of explorer.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=622</id>
		<title>Guide to operating SEACAS2023 Hackathon Notebook Offline</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=622"/>
		<updated>2023-08-04T07:57:34Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Clarification: In order to run the [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS2023 Hackathon Notebook] Offline, you must run it once while online in order to download the dependencies of the notebook. After that, you may skip all parts that try to access &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;curl&amp;lt;/code&amp;gt; as those need internet.&lt;br /&gt;
&lt;br /&gt;
First, make a new directory in your computer as your workspace. I recommend the name &amp;lt;code&amp;gt;seacas2023&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, download the SEACAS2023 Hackathon notebook by going to File &amp;gt; Download &amp;gt; .ipynb from inside the notebook and save it to this folder.&lt;br /&gt;
&lt;br /&gt;
To run the .ipynb from your computer, you will need an Ubuntu environment.&lt;br /&gt;
&lt;br /&gt;
== For Ubuntu ==&lt;br /&gt;
For Ubuntu systems, Jupyter Notebook should work as intended&lt;br /&gt;
&lt;br /&gt;
=== Installing Jupyter ===&lt;br /&gt;
From your Ubuntu terminal, run the following command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install jupyter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once that is done, you will have the Jupyter notebook program in your PC.&lt;br /&gt;
&lt;br /&gt;
=== Running the notebook ===&lt;br /&gt;
Change your directory to the workspace you created earlier. For me, it is &amp;lt;code&amp;gt;/home/lawrence/seacas2023&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Finally, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;jupyter notebook SEACAS_2023.ipynb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should automatically open a browser containing the notebook. Run it as you would the colab notebook.&lt;br /&gt;
&lt;br /&gt;
== For Windows ==&lt;br /&gt;
For Windows systems, Jupyter Notebook does not easily run without bugs. You may browse the internet for clues as how to make it work, if you want. My preferred way is to use VSCode's Jupyter extension instead. &lt;br /&gt;
&lt;br /&gt;
=== WSL2 Installation ===&lt;br /&gt;
WSL stands for Windows Subsystem for Linux. It runs Ubuntu inside Windows so that you are able to run Linux commands.&lt;br /&gt;
&lt;br /&gt;
Detailed installation instructions can be found [https://learn.microsoft.com/en-us/windows/wsl/install here] in the Microsoft website. For a quickstart, run the following command in your command prompt.&lt;br /&gt;
[[File:VSCode running ipynb.png|thumb|1000x1000px]]&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --install&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make sure that your WSL is WSL2, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --set-version Ubuntu 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, you can enter Ubuntu by typing &amp;lt;code&amp;gt;wsl&amp;lt;/code&amp;gt; in your command prompt.&lt;br /&gt;
&lt;br /&gt;
=== Installing VSCode with WSL2 &amp;amp; Jupyter Extensions ===&lt;br /&gt;
First, [https://code.visualstudio.com/download download VScode] and open it.&lt;br /&gt;
&lt;br /&gt;
On the left side bar, you will see a button for &amp;quot;Extensions&amp;quot; which should be a 4-block icon. Alternatively, you can open it with CTRL + SHIFT + X.&lt;br /&gt;
&lt;br /&gt;
Search for the Remote Development extension and install it. Next, search for the Jupyter extension and install it. &lt;br /&gt;
&lt;br /&gt;
=== Running the notebook inside VSCode ===&lt;br /&gt;
Open a new command prompt window and type WSL to enter Ubuntu terminal. &lt;br /&gt;
&lt;br /&gt;
From Ubuntu, navigate to the workspace you created earlier. For me, it is in &amp;lt;code&amp;gt;/mnt/c/Users/Lawrence/seacas2023&amp;lt;/code&amp;gt;. Your C folder is in /mnt from inside WSL.&lt;br /&gt;
&lt;br /&gt;
Open this folder in VScode by typing &amp;lt;code&amp;gt;code .&amp;lt;/code&amp;gt; inside the terminal.&lt;br /&gt;
&lt;br /&gt;
The window should look like the picture provided.&lt;br /&gt;
&lt;br /&gt;
Finally, open the ipynb file from inside VScode and run it as you would from Colab.&lt;br /&gt;
&lt;br /&gt;
=== Note for Performance ===&lt;br /&gt;
In order to make things run faster, I recommend transferring the workspace to a folder inside the WSL2 folders (not /mnt/c). &lt;br /&gt;
&lt;br /&gt;
To transfer files into WSL2, you may simply open Linux from inside your file explorer sidebar (by clicking the penguin icon on the sidebar containing ''This PC, Network, Linux''). &lt;br /&gt;
&lt;br /&gt;
Alternatively, you can navigate into this by putting &amp;lt;code&amp;gt;\\wsl$&amp;lt;/code&amp;gt; on the address bar of explorer.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=621</id>
		<title>Guide to operating SEACAS2023 Hackathon Notebook Offline</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=621"/>
		<updated>2023-08-04T07:55:30Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Clarification: In order to run the [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS2023 Hackathon Notebook] Offline, you must first download the dependencies while online.&lt;br /&gt;
&lt;br /&gt;
First, make a new directory in your computer as your workspace. I recommend the name &amp;lt;code&amp;gt;seacas2023&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, download the SEACAS2023 Hackathon notebook by going to File &amp;gt; Download &amp;gt; .ipynb from inside the notebook and save it to this folder.&lt;br /&gt;
&lt;br /&gt;
To run the .ipynb from your computer, you will need an Ubuntu environment.&lt;br /&gt;
&lt;br /&gt;
== For Ubuntu ==&lt;br /&gt;
For Ubuntu systems, Jupyter Notebook should work as intended&lt;br /&gt;
&lt;br /&gt;
=== Installing Jupyter ===&lt;br /&gt;
From your Ubuntu terminal, run the following command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install jupyter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once that is done, you will have the Jupyter notebook program in your PC.&lt;br /&gt;
&lt;br /&gt;
=== Running the notebook ===&lt;br /&gt;
Change your directory to the workspace you created earlier. For me, it is &amp;lt;code&amp;gt;/home/lawrence/seacas2023&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Finally, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;jupyter notebook SEACAS_2023.ipynb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should automatically open a browser containing the notebook. Run it as you would the colab notebook.&lt;br /&gt;
&lt;br /&gt;
== For Windows ==&lt;br /&gt;
For Windows systems, Jupyter Notebook does not easily run without bugs. You may browse the internet for clues as how to make it work, if you want. My preferred way is to use VSCode's Jupyter extension instead. &lt;br /&gt;
&lt;br /&gt;
=== WSL2 Installation ===&lt;br /&gt;
WSL stands for Windows Subsystem for Linux. It runs Ubuntu inside Windows so that you are able to run Linux commands.&lt;br /&gt;
&lt;br /&gt;
Detailed installation instructions can be found [https://learn.microsoft.com/en-us/windows/wsl/install here] in the Microsoft website. For a quickstart, run the following command in your command prompt.&lt;br /&gt;
[[File:VSCode running ipynb.png|thumb|1000x1000px]]&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --install&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make sure that your WSL is WSL2, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --set-version Ubuntu 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, you can enter Ubuntu by typing &amp;lt;code&amp;gt;wsl&amp;lt;/code&amp;gt; in your command prompt.&lt;br /&gt;
&lt;br /&gt;
=== Installing VSCode with WSL2 &amp;amp; Jupyter Extensions ===&lt;br /&gt;
First, [https://code.visualstudio.com/download download VScode] and open it.&lt;br /&gt;
&lt;br /&gt;
On the left side bar, you will see a button for &amp;quot;Extensions&amp;quot; which should be a 4-block icon. Alternatively, you can open it with CTRL + SHIFT + X.&lt;br /&gt;
&lt;br /&gt;
Search for the Remote Development extension and install it. Next, search for the Jupyter extension and install it. &lt;br /&gt;
&lt;br /&gt;
=== Running the notebook inside VSCode ===&lt;br /&gt;
Open a new command prompt window and type WSL to enter Ubuntu terminal. &lt;br /&gt;
&lt;br /&gt;
From Ubuntu, navigate to the workspace you created earlier. For me, it is in &amp;lt;code&amp;gt;/mnt/c/Users/Lawrence/seacas2023&amp;lt;/code&amp;gt;. Your C folder is in /mnt from inside WSL.&lt;br /&gt;
&lt;br /&gt;
Open this folder in VScode by typing &amp;lt;code&amp;gt;code .&amp;lt;/code&amp;gt; inside the terminal.&lt;br /&gt;
&lt;br /&gt;
The window should look like the picture provided.&lt;br /&gt;
&lt;br /&gt;
Finally, open the ipynb file from inside VScode and run it as you would from Colab.&lt;br /&gt;
&lt;br /&gt;
=== Note for Performance ===&lt;br /&gt;
In order to make things run faster, I recommend transferring the workspace to a folder inside the WSL2 folders (not /mnt/c). &lt;br /&gt;
&lt;br /&gt;
To transfer files into WSL2, you may simply open Linux from inside your file explorer sidebar (by clicking the penguin icon on the sidebar containing ''This PC, Network, Linux''). &lt;br /&gt;
&lt;br /&gt;
Alternatively, you can navigate into this by putting &amp;lt;code&amp;gt;\\wsl$&amp;lt;/code&amp;gt; on the address bar of explorer.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=620</id>
		<title>Guide to operating SEACAS2023 Hackathon Notebook Offline</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=620"/>
		<updated>2023-08-04T07:45:54Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Clarification: In order to run the [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS2023 Hackathon Notebook] Offline, you must first download the dependencies while online.&lt;br /&gt;
&lt;br /&gt;
First, make a new directory in your computer as your workspace. I recommend the name &amp;lt;code&amp;gt;seacas2023&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, download the SEACAS2023 Hackathon notebook by going to File &amp;gt; Download &amp;gt; .ipynb from inside the notebook and save it to this folder.&lt;br /&gt;
&lt;br /&gt;
To run the .ipynb from your computer, you will need an Ubuntu environment.&lt;br /&gt;
&lt;br /&gt;
== For Ubuntu ==&lt;br /&gt;
For Ubuntu systems, Jupyter Notebook should work as intended&lt;br /&gt;
&lt;br /&gt;
=== Installing Jupyter ===&lt;br /&gt;
From your Ubuntu terminal, run the following command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt-get install jupyter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once that is done, you will have the Jupyter notebook program in your PC.&lt;br /&gt;
&lt;br /&gt;
=== Running the notebook ===&lt;br /&gt;
Change your directory to the workspace you created earlier. For me, it is &amp;lt;code&amp;gt;/home/lawrence/seacas2023&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Finally, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;jupyter notebook SEACAS_2023.ipynb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should automatically open a browser containing the notebook. Run it as you would the colab notebook.&lt;br /&gt;
&lt;br /&gt;
== For Windows ==&lt;br /&gt;
For Windows systems, Jupyter Notebook does not easily run without bugs. You may browse the internet for clues as how to make it work, if you want. My preferred way is to use VSCode's Jupyter extension instead. &lt;br /&gt;
&lt;br /&gt;
=== WSL2 Installation ===&lt;br /&gt;
WSL stands for Windows Subsystem for Linux. It runs Ubuntu inside Windows so that you are able to run Linux commands.&lt;br /&gt;
&lt;br /&gt;
Detailed installation instructions can be found [https://learn.microsoft.com/en-us/windows/wsl/install here] in the Microsoft website. For a quickstart, run the following command in your command prompt.&lt;br /&gt;
[[File:VSCode running ipynb.png|thumb|1000x1000px]]&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --install&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make sure that your WSL is WSL2, run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wsl --set-version Ubuntu 2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, you can enter Ubuntu by typing &amp;lt;code&amp;gt;wsl&amp;lt;/code&amp;gt; in your command prompt.&lt;br /&gt;
&lt;br /&gt;
=== Installing VSCode with WSL2 &amp;amp; Jupyter Extensions ===&lt;br /&gt;
First, [https://code.visualstudio.com/download download VScode] and open it.&lt;br /&gt;
&lt;br /&gt;
On the left side bar, you will see a button for &amp;quot;Extensions&amp;quot; which should be a 4-block icon. Alternatively, you can open it with CTRL + SHIFT + X.&lt;br /&gt;
&lt;br /&gt;
Search for the Remote Development extension and install it. Next, search for the Jupyter extension and install it. &lt;br /&gt;
&lt;br /&gt;
=== Running the notebook inside VSCode ===&lt;br /&gt;
Open a new command prompt window and type WSL to enter Ubuntu terminal. &lt;br /&gt;
&lt;br /&gt;
From Ubuntu, navigate to the workspace you created earlier. For me, it is in &amp;lt;code&amp;gt;/mnt/c/Users/Lawrence/seacas2023&amp;lt;/code&amp;gt;. Your C folder is in /mnt from inside WSL.&lt;br /&gt;
&lt;br /&gt;
Open this folder in VScode by typing &amp;lt;code&amp;gt;code .&amp;lt;/code&amp;gt; inside the terminal.&lt;br /&gt;
&lt;br /&gt;
The window should look like the picture provided.&lt;br /&gt;
&lt;br /&gt;
Finally, open the ipynb file from inside VScode and run it as you would from Colab.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=File:VSCode_running_ipynb.png&amp;diff=619</id>
		<title>File:VSCode running ipynb.png</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=File:VSCode_running_ipynb.png&amp;diff=619"/>
		<updated>2023-08-04T07:43:00Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A picture of VScode running ipynb inside WSL2&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=618</id>
		<title>SEACAS Chipathon 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=618"/>
		<updated>2023-08-04T06:58:18Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: /* Software tools and how to set-up */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
The IEEE Republic of Philippines Section Solid-State Circuits Society (SSCS) Chapter and CAS/SP Joint Chapter are happy to announce  the SEACAS and Student Chipathon 2023, which will be held  in Quezon City, Philippines on '''18-19 September 2023'''. This year it will be a Chapthon instead of a Hackathon where students will be able to experience the whole integrated circuit (IC) design flow using open-source tools. Details of the event, the tools and mechanics of the Chipathon will be available in this website. &lt;br /&gt;
&lt;br /&gt;
NOTE: The winning team in the Chipathon will be given the chance to have their chip fabricated!&lt;br /&gt;
&lt;br /&gt;
'''Tentative Schedule'''&lt;br /&gt;
&lt;br /&gt;
'''''Sept 18, 2023 (Day 1) - SEACAS &amp;amp; Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - A discussion on Open-source tools and IC design that will be used in the Chipathon&lt;br /&gt;
&lt;br /&gt;
                   - Student Chipathon starts&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-16:00 - Research presentations by Chapter Officers&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - (Dinner)&lt;br /&gt;
&lt;br /&gt;
'''''Sept 19, 2023 (Day 2) - Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - Chipathon continues&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-15:30 - Chipathon design presentation/judging&lt;br /&gt;
&lt;br /&gt;
15:30-16:00 - Chipathon Award Ceremony&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - Dinner&lt;br /&gt;
&lt;br /&gt;
== Chipathon Mechanics ==&lt;br /&gt;
&lt;br /&gt;
==== Scope ====&lt;br /&gt;
Students from each chapter will be formed into groups of two (2) students at most and they will be asked to design and implement a certain algorithm (e.g. FFT, LMS filtering, Reed-Solomon's coding, etc), the exact algorithm will be announced on the day of the event, but the necessary software and tools will be given at least a week before the event. An addition to the algorithm, an example or baseline design in RTL will be given as a demonstration.&lt;br /&gt;
&lt;br /&gt;
==== Expectations to the students ====&lt;br /&gt;
&lt;br /&gt;
# '''Digital Design'''. Students will use the digital (not analog) IC design flow.&lt;br /&gt;
# '''Minimum requirements'''. Each team needs to produce a GDS layout of the baseline design, the design has to be functionally correct, clear DR and LVS.&lt;br /&gt;
# '''Additional design credit'''. Each team is free to implement any modifications / optimizaation to the baseline to improve the design, and the team will be given credits for any improvement (power, performance, area, etc). &lt;br /&gt;
# '''Reports'''. Each team is also expected to be able to generate the following reports: Utilization ratio, Critical path, Area, DRC, violations, etc&lt;br /&gt;
&lt;br /&gt;
==== Participant Requirements ====&lt;br /&gt;
&lt;br /&gt;
# Basic knowledge of electronics and digital circuits.&lt;br /&gt;
# Basic knowledge on digital design flow.&lt;br /&gt;
&lt;br /&gt;
== Software tools and how to set-up ==&lt;br /&gt;
The tools needed for the Chipathon can be found in the Colab Notebook below. We strongly recommend familiarizing yourself with the tool flow and also setting the notebook up to run offline before you fly to the Philippines.&lt;br /&gt;
* [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS 2023 Hackathon Colab Notebook (Online Toolset &amp;amp; Tutorial)]&lt;br /&gt;
* [[IVerilog GTKWave Tutorial|Using Icarus Verilog and GTKWave for behavioral simulation]]&lt;br /&gt;
* [[Guide to operating SEACAS2023 Hackathon Notebook Offline|How to operate the notebook offline]]&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
The main venue of the SEACAS 2023 will be at the Electrical and Electronics Engineering (EEE) Institute, University of the Philippines Diliman. The complete address of the EEE Institute, UP Diliman is: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EEE building, Velasquez St.&lt;br /&gt;
&lt;br /&gt;
UP Campus, Diliman&lt;br /&gt;
&lt;br /&gt;
Quezon City, Philippines 1101&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google Map address: J3X9+W9 Quezon City, Metro Manila&lt;br /&gt;
&lt;br /&gt;
=== Hotel Recommendations. ===&lt;br /&gt;
&lt;br /&gt;
# SEDA Vertis North Hotels (https://vertisnorth.sedahotels.com)&lt;br /&gt;
# Novotel Manila Araneta City (https://www.novotelmanilaaranetacity.com)&lt;br /&gt;
# Microtel Wnydham UP Technohub (https://www.microtel-uptechnohub.com)&lt;br /&gt;
# Richmond Hotel (Eastwood Area) (https://www.eastwoodrichmondehotel.com.ph)&lt;br /&gt;
# Sheraton Manila Bay Hotel (formerly Pan-Pacific Hotel) (https://pan-pacific-hotel-manila.at-hotels.com/en/)&lt;br /&gt;
# Diamond Hotel Manila (https://www.diamondhotel.com)&lt;br /&gt;
# Shangri-la Hotel Makati (https://www.shangri-la.com/manila/makatishangrila/about/)&lt;br /&gt;
# Shangri-la The Fort Manila (https://www.shangri-la.com/en/manila/shangrilaatthefort/)&lt;br /&gt;
&lt;br /&gt;
=== Accommodations inside the University for students ===&lt;br /&gt;
The information below were taken from [https://upd.edu.ph/accommodations-in-up-diliman/ Accommodations in UP].&lt;br /&gt;
&lt;br /&gt;
# UP NISMED Hostel (for sharing) (https://nismed.upd.edu.ph/hostel-rooms/)&lt;br /&gt;
# University Hotel (formerly PCED)  (https://www.facebook.com/universityhotel.ph)&lt;br /&gt;
# Kapit-Balay (beside Balay Kalinaw) Email: [[upbalayinternasyonal@up.edu.ph]]&lt;br /&gt;
&lt;br /&gt;
=== Entry requirements to the Philippines and VISA ===&lt;br /&gt;
&lt;br /&gt;
# For quick reference on the general requirements on the entry of foreigners to the Philippines, you can refer to this link from the Philippine Embassy in Singapore (https://www.philippine-embassy.org.sg/consular/visa/general-information/). &lt;br /&gt;
# All travelers are expected to use the e-travel system (https://etravel.gov.ph), more information can be found here: https://www.philippineairlines.com/en/newsevent-listingpage/travel-advisory/alert-full-scale-implementation-of-the-e-travel-system&lt;br /&gt;
# For VISA Application in the Philippines (https://www.visa.gov.ph/)&lt;br /&gt;
# Information on VISA Application (https://www.philippine-embassy.org.sg/consular/visa/important-visa-information/)&lt;br /&gt;
&lt;br /&gt;
=== Airport Transfer ===&lt;br /&gt;
(to be updated)&lt;br /&gt;
&lt;br /&gt;
== Contact us ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[seacas2023@eee.upd.edu.ph]]&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=617</id>
		<title>SEACAS Chipathon 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=617"/>
		<updated>2023-08-04T06:38:21Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: /* Software tools and how to set-up */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
The IEEE Republic of Philippines Section Solid-State Circuits Society (SSCS) Chapter and CAS/SP Joint Chapter are happy to announce  the SEACAS and Student Chipathon 2023, which will be held  in Quezon City, Philippines on '''18-19 September 2023'''. This year it will be a Chapthon instead of a Hackathon where students will be able to experience the whole integrated circuit (IC) design flow using open-source tools. Details of the event, the tools and mechanics of the Chipathon will be available in this website. &lt;br /&gt;
&lt;br /&gt;
NOTE: The winning team in the Chipathon will be given the chance to have their chip fabricated!&lt;br /&gt;
&lt;br /&gt;
'''Tentative Schedule'''&lt;br /&gt;
&lt;br /&gt;
'''''Sept 18, 2023 (Day 1) - SEACAS &amp;amp; Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - A discussion on Open-source tools and IC design that will be used in the Chipathon&lt;br /&gt;
&lt;br /&gt;
                   - Student Chipathon starts&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-16:00 - Research presentations by Chapter Officers&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - (Dinner)&lt;br /&gt;
&lt;br /&gt;
'''''Sept 19, 2023 (Day 2) - Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - Chipathon continues&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-15:30 - Chipathon design presentation/judging&lt;br /&gt;
&lt;br /&gt;
15:30-16:00 - Chipathon Award Ceremony&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - Dinner&lt;br /&gt;
&lt;br /&gt;
== Chipathon Mechanics ==&lt;br /&gt;
&lt;br /&gt;
==== Scope ====&lt;br /&gt;
Students from each chapter will be formed into groups of two (2) students at most and they will be asked to design and implement a certain algorithm (e.g. FFT, LMS filtering, Reed-Solomon's coding, etc), the exact algorithm will be announced on the day of the event, but the necessary software and tools will be given at least a week before the event. An addition to the algorithm, an example or baseline design in RTL will be given as a demonstration.&lt;br /&gt;
&lt;br /&gt;
==== Expectations to the students ====&lt;br /&gt;
&lt;br /&gt;
# '''Digital Design'''. Students will use the digital (not analog) IC design flow.&lt;br /&gt;
# '''Minimum requirements'''. Each team needs to produce a GDS layout of the baseline design, the design has to be functionally correct, clear DR and LVS.&lt;br /&gt;
# '''Additional design credit'''. Each team is free to implement any modifications / optimizaation to the baseline to improve the design, and the team will be given credits for any improvement (power, performance, area, etc). &lt;br /&gt;
# '''Reports'''. Each team is also expected to be able to generate the following reports: Utilization ratio, Critical path, Area, DRC, violations, etc&lt;br /&gt;
&lt;br /&gt;
==== Participant Requirements ====&lt;br /&gt;
&lt;br /&gt;
# Basic knowledge of electronics and digital circuits.&lt;br /&gt;
# Basic knowledge on digital design flow.&lt;br /&gt;
&lt;br /&gt;
== Software tools and how to set-up ==&lt;br /&gt;
&lt;br /&gt;
* [[IVerilog GTKWave Tutorial|Using Icarus Verilog and GTKWave for behavioral simulation]]&lt;br /&gt;
* [https://colab.research.google.com/drive/1-nxCVJzwYeYA8HVUvqn3ykAHhropHzS1?usp=sharing SEACAS 2023 Hackathon Colab Notebook (Online Toolset &amp;amp; Tutorial)]&lt;br /&gt;
* [[Guide to operating SEACAS2023 Hackathon Notebook Offline|How to operate the notebook offline]]&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
The main venue of the SEACAS 2023 will be at the Electrical and Electronics Engineering (EEE) Institute, University of the Philippines Diliman. The complete address of the EEE Institute, UP Diliman is: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EEE building, Velasquez St.&lt;br /&gt;
&lt;br /&gt;
UP Campus, Diliman&lt;br /&gt;
&lt;br /&gt;
Quezon City, Philippines 1101&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google Map address: J3X9+W9 Quezon City, Metro Manila&lt;br /&gt;
&lt;br /&gt;
=== Hotel Recommendations. ===&lt;br /&gt;
&lt;br /&gt;
# SEDA Vertis North Hotels (https://vertisnorth.sedahotels.com)&lt;br /&gt;
# Novotel Manila Araneta City (https://www.novotelmanilaaranetacity.com)&lt;br /&gt;
# Microtel Wnydham UP Technohub (https://www.microtel-uptechnohub.com)&lt;br /&gt;
# Richmond Hotel (Eastwood Area) (https://www.eastwoodrichmondehotel.com.ph)&lt;br /&gt;
# Sheraton Manila Bay Hotel (formerly Pan-Pacific Hotel) (https://pan-pacific-hotel-manila.at-hotels.com/en/)&lt;br /&gt;
# Diamond Hotel Manila (https://www.diamondhotel.com)&lt;br /&gt;
# Shangri-la Hotel Makati (https://www.shangri-la.com/manila/makatishangrila/about/)&lt;br /&gt;
# Shangri-la The Fort Manila (https://www.shangri-la.com/en/manila/shangrilaatthefort/)&lt;br /&gt;
&lt;br /&gt;
=== Accommodations inside the University for students ===&lt;br /&gt;
The information below were taken from [https://upd.edu.ph/accommodations-in-up-diliman/ Accommodations in UP].&lt;br /&gt;
&lt;br /&gt;
# UP NISMED Hostel (for sharing) (https://nismed.upd.edu.ph/hostel-rooms/)&lt;br /&gt;
# University Hotel (formerly PCED)  (https://www.facebook.com/universityhotel.ph)&lt;br /&gt;
# Kapit-Balay (beside Balay Kalinaw) Email: [[upbalayinternasyonal@up.edu.ph]]&lt;br /&gt;
&lt;br /&gt;
=== Entry requirements to the Philippines and VISA ===&lt;br /&gt;
&lt;br /&gt;
# For quick reference on the general requirements on the entry of foreigners to the Philippines, you can refer to this link from the Philippine Embassy in Singapore (https://www.philippine-embassy.org.sg/consular/visa/general-information/). &lt;br /&gt;
# All travelers are expected to use the e-travel system (https://etravel.gov.ph), more information can be found here: https://www.philippineairlines.com/en/newsevent-listingpage/travel-advisory/alert-full-scale-implementation-of-the-e-travel-system&lt;br /&gt;
# For VISA Application in the Philippines (https://www.visa.gov.ph/)&lt;br /&gt;
# Information on VISA Application (https://www.philippine-embassy.org.sg/consular/visa/important-visa-information/)&lt;br /&gt;
&lt;br /&gt;
=== Airport Transfer ===&lt;br /&gt;
(to be updated)&lt;br /&gt;
&lt;br /&gt;
== Contact us ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[seacas2023@eee.upd.edu.ph]]&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=616</id>
		<title>Guide to operating SEACAS2023 Hackathon Notebook Offline</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Guide_to_operating_SEACAS2023_Hackathon_Notebook_Offline&amp;diff=616"/>
		<updated>2023-08-04T06:37:42Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: Created page with &amp;quot;In order&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=IVerilog_GTKWave_Tutorial&amp;diff=615</id>
		<title>IVerilog GTKWave Tutorial</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=IVerilog_GTKWave_Tutorial&amp;diff=615"/>
		<updated>2023-08-04T04:35:23Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: initial commit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For those who want to do their Verilog register-transfer level (RTL) behavioral simulations offline and with a display GUI, we recommend using Icarus Verilog and GTKWave.  &lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Icarus Verilog Installation ===&lt;br /&gt;
On Windows: &lt;br /&gt;
&lt;br /&gt;
* x86-64: https://bleyer.org/icarus/iverilog-v12-20220611-x64_setup.exe&lt;br /&gt;
* x86: https://bleyer.org/icarus/iverilog-10.0-x86_setup.exe&lt;br /&gt;
&lt;br /&gt;
On Ubuntu/WSL:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sudo apt-get install iverilog&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Mac-OS:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;brew install icarus-verilog&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For other unix-based systems: Iverilog is available on yum and pacman.&lt;br /&gt;
&lt;br /&gt;
=== GTKWave Installation ===&lt;br /&gt;
On Windows:&lt;br /&gt;
&lt;br /&gt;
* The above .exe installer for Icarus verilog comes with GTKWave inside the installation directory &amp;lt;code&amp;gt;/iverilog/gtkwave/bin&amp;lt;/code&amp;gt;. Add this to &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; if you want to simply call GTKWave from the command line.&lt;br /&gt;
&lt;br /&gt;
On Ubuntu/WSL:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sudo apt-get install gtkwave&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Mac-OS:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;brew install gtkwave&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running a Verilog Behavioral Simulation ==&lt;br /&gt;
If you are here from the SEACAS 2023 simulation flow Jupyter Notebook, skip to using GTKwave to view the waveform&lt;br /&gt;
&lt;br /&gt;
First, create your verilog code and a verilog testbench. A sample 4-bit counter with a testbench is provided below for a quick run.&lt;br /&gt;
&lt;br /&gt;
==== 4-bit counter (test.v) ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;systemverilog&amp;quot;&amp;gt;&lt;br /&gt;
module ctr(&lt;br /&gt;
    input CLK, nrst,&lt;br /&gt;
    output reg [3:0] ctr_out&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
reg [3:0] ctr;&lt;br /&gt;
&lt;br /&gt;
always@(posedge CLK) begin&lt;br /&gt;
    if (!nrst)&lt;br /&gt;
        ctr &amp;lt;= 0;&lt;br /&gt;
    else&lt;br /&gt;
        ctr &amp;lt;= ctr + 4'b1;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
always@(*)&lt;br /&gt;
    ctr_out &amp;lt;= ctr;&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Testbench (tb_test.v) ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;systemverilog&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
module tb_test;&lt;br /&gt;
&lt;br /&gt;
reg nrst,CLK; &lt;br /&gt;
wire [3:0] c;&lt;br /&gt;
&lt;br /&gt;
ctr UUT(.ctr_out(c),.CLK(CLK),.nrst(nrst));&lt;br /&gt;
&lt;br /&gt;
always begin&lt;br /&gt;
    #10 &lt;br /&gt;
    CLK = ~CLK;&lt;br /&gt;
    $display(&amp;quot;out value:%b&amp;quot;,c);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
initial begin&lt;br /&gt;
$dumpfile(&amp;quot;test.vcd&amp;quot;);&lt;br /&gt;
$dumpvars(0,tb_test);&lt;br /&gt;
&lt;br /&gt;
// we have to start somewhere&lt;br /&gt;
CLK = 0;&lt;br /&gt;
nrst = 0;&lt;br /&gt;
&lt;br /&gt;
#15&lt;br /&gt;
nrst = 1;&lt;br /&gt;
&lt;br /&gt;
#100&lt;br /&gt;
&lt;br /&gt;
$finish; &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
endmodule&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Running iVerilog to produce the waveform outputs ===&lt;br /&gt;
On the same directory as the verilog files, run the commands below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iverilog -o dsn tb_test.v test.v&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In general, this command is structured as follows &amp;lt;code&amp;gt;iverilog -o &amp;lt;iverilog_output_name&amp;gt; &amp;lt;verilog_file_1&amp;gt; &amp;lt;verilog_file_2&amp;gt; ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, run the simulation using vvp (which comes with iverilog)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;vvp dsn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This outputs a .vcd file with the name as specified in the &amp;lt;code&amp;gt;$dumpfile(&amp;quot;&amp;lt;namehere&amp;gt;.vcd&amp;quot;)&amp;lt;/code&amp;gt; part of the testbench. VCD stands for value change dump- it is essentially a record of how the digital waveforms change over time in your simulation.&lt;br /&gt;
&lt;br /&gt;
=== Viewing the output VCD using GTKWave ===&lt;br /&gt;
Run the command below to start GTKWave and have it open the VCD file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;gtkwave test.vcd&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The window should open as below. &lt;br /&gt;
[[File:GTKWave Initial Window.png|left|frame]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may select signals from the left side bar as below to view them.&lt;br /&gt;
[[File:GTKWave Choosing Outputs.png|left|frame]]&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=File:GTKWave_Choosing_Outputs.png&amp;diff=614</id>
		<title>File:GTKWave Choosing Outputs.png</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=File:GTKWave_Choosing_Outputs.png&amp;diff=614"/>
		<updated>2023-08-04T04:29:08Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sample of choosing outputs in GTKwave&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=File:GTKWave_Initial_Window.png&amp;diff=613</id>
		<title>File:GTKWave Initial Window.png</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=File:GTKWave_Initial_Window.png&amp;diff=613"/>
		<updated>2023-08-04T04:27:16Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Initial window that opens upon running gtkwave &amp;lt;name&amp;gt;.vcd&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=612</id>
		<title>SEACAS Chipathon 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=SEACAS_Chipathon_2023&amp;diff=612"/>
		<updated>2023-08-04T03:47:03Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: /* Software tools and how to set-up */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
The IEEE Republic of Philippines Section Solid-State Circuits Society (SSCS) Chapter and CAS/SP Joint Chapter are happy to announce  the SEACAS and Student Chipathon 2023, which will be held  in Quezon City, Philippines on '''18-19 September 2023'''. This year it will be a Chapthon instead of a Hackathon where students will be able to experience the whole integrated circuit (IC) design flow using open-source tools. Details of the event, the tools and mechanics of the Chipathon will be available in this website. &lt;br /&gt;
&lt;br /&gt;
NOTE: The winning team in the Chipathon will be given the chance to have their chip fabricated!&lt;br /&gt;
&lt;br /&gt;
'''Tentative Schedule'''&lt;br /&gt;
&lt;br /&gt;
'''''Sept 18, 2023 (Day 1) - SEACAS &amp;amp; Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - A discussion on Open-source tools and IC design that will be used in the Chipathon&lt;br /&gt;
&lt;br /&gt;
                   - Student Chipathon starts&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-16:00 - Research presentations by Chapter Officers&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - (Dinner)&lt;br /&gt;
&lt;br /&gt;
'''''Sept 19, 2023 (Day 2) - Student Chipathon'''''&lt;br /&gt;
&lt;br /&gt;
10:00-12:00 - Chipathon continues&lt;br /&gt;
&lt;br /&gt;
12:00-14:00 - Lunch SEACAS participants (officers and students)&lt;br /&gt;
&lt;br /&gt;
14:00-15:30 - Chipathon design presentation/judging&lt;br /&gt;
&lt;br /&gt;
15:30-16:00 - Chipathon Award Ceremony&lt;br /&gt;
&lt;br /&gt;
18:00-20:00 - Dinner&lt;br /&gt;
&lt;br /&gt;
== Chipathon Mechanics ==&lt;br /&gt;
&lt;br /&gt;
==== Scope ====&lt;br /&gt;
Students from each chapter will be formed into groups of two (2) students at most and they will be asked to design and implement a certain algorithm (e.g. FFT, LMS filtering, Reed-Solomon's coding, etc), the exact algorithm will be announced on the day of the event, but the necessary software and tools will be given at least a week before the event. An addition to the algorithm, an example or baseline design in RTL will be given as a demonstration.&lt;br /&gt;
&lt;br /&gt;
==== Expectations to the students ====&lt;br /&gt;
&lt;br /&gt;
# '''Digital Design'''. Students will use the digital (not analog) IC design flow.&lt;br /&gt;
# '''Minimum requirements'''. Each team needs to produce a GDS layout of the baseline design, the design has to be functionally correct, clear DR and LVS.&lt;br /&gt;
# '''Additional design credit'''. Each team is free to implement any modifications / optimizaation to the baseline to improve the design, and the team will be given credits for any improvement (power, performance, area, etc). &lt;br /&gt;
# '''Reports'''. Each team is also expected to be able to generate the following reports: Utilization ratio, Critical path, Area, DRC, violations, etc&lt;br /&gt;
&lt;br /&gt;
==== Participant Requirements ====&lt;br /&gt;
&lt;br /&gt;
# Basic knowledge of electronics and digital circuits.&lt;br /&gt;
# Basic knowledge on digital design flow.&lt;br /&gt;
&lt;br /&gt;
== Software tools and how to set-up ==&lt;br /&gt;
&lt;br /&gt;
* [[IVerilog GTKWave Tutorial|Using Icarus Verilog and GTKWave for behavioral simulation]]&lt;br /&gt;
* How to operate the OpenLane Colab Notebook (Online)&lt;br /&gt;
* How to operate the OpenLane Jupyter Notebook (Offline)&lt;br /&gt;
&lt;br /&gt;
== Local Arrangements ==&lt;br /&gt;
The main venue of the SEACAS 2023 will be at the Electrical and Electronics Engineering (EEE) Institute, University of the Philippines Diliman. The complete address of the EEE Institute, UP Diliman is: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EEE building, Velasquez St.&lt;br /&gt;
&lt;br /&gt;
UP Campus, Diliman&lt;br /&gt;
&lt;br /&gt;
Quezon City, Philippines 1101&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Google Map address: J3X9+W9 Quezon City, Metro Manila&lt;br /&gt;
&lt;br /&gt;
=== Hotel Recommendations. ===&lt;br /&gt;
&lt;br /&gt;
# SEDA Vertis North Hotels (https://vertisnorth.sedahotels.com)&lt;br /&gt;
# Novotel Manila Araneta City (https://www.novotelmanilaaranetacity.com)&lt;br /&gt;
# Microtel Wnydham UP Technohub (https://www.microtel-uptechnohub.com)&lt;br /&gt;
# Richmond Hotel (Eastwood Area) (https://www.eastwoodrichmondehotel.com.ph)&lt;br /&gt;
# Sheraton Manila Bay Hotel (formerly Pan-Pacific Hotel) (https://pan-pacific-hotel-manila.at-hotels.com/en/)&lt;br /&gt;
# Diamond Hotel Manila (https://www.diamondhotel.com)&lt;br /&gt;
# Shangri-la Hotel Makati (https://www.shangri-la.com/manila/makatishangrila/about/)&lt;br /&gt;
# Shangri-la The Fort Manila (https://www.shangri-la.com/en/manila/shangrilaatthefort/)&lt;br /&gt;
&lt;br /&gt;
=== Accommodations inside the University for students ===&lt;br /&gt;
The information below were taken from [https://upd.edu.ph/accommodations-in-up-diliman/ Accommodations in UP].&lt;br /&gt;
&lt;br /&gt;
# UP NISMED Hostel (for sharing) (https://nismed.upd.edu.ph/hostel-rooms/)&lt;br /&gt;
# University Hotel (formerly PCED)  (https://www.facebook.com/universityhotel.ph)&lt;br /&gt;
# Kapit-Balay (beside Balay Kalinaw) Email: [[upbalayinternasyonal@up.edu.ph]]&lt;br /&gt;
&lt;br /&gt;
=== Entry requirements to the Philippines and VISA ===&lt;br /&gt;
&lt;br /&gt;
# For quick reference on the general requirements on the entry of foreigners to the Philippines, you can refer to this link from the Philippine Embassy in Singapore (https://www.philippine-embassy.org.sg/consular/visa/general-information/). &lt;br /&gt;
# All travelers are expected to use the e-travel system (https://etravel.gov.ph), more information can be found here: https://www.philippineairlines.com/en/newsevent-listingpage/travel-advisory/alert-full-scale-implementation-of-the-e-travel-system&lt;br /&gt;
# For VISA Application in the Philippines (https://www.visa.gov.ph/)&lt;br /&gt;
# Information on VISA Application (https://www.philippine-embassy.org.sg/consular/visa/important-visa-information/)&lt;br /&gt;
&lt;br /&gt;
=== Airport Transfer ===&lt;br /&gt;
(to be updated)&lt;br /&gt;
&lt;br /&gt;
== Contact us ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[seacas2023@eee.upd.edu.ph]]&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=IVerilog_GTKWave_Tutorial&amp;diff=611</id>
		<title>IVerilog GTKWave Tutorial</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=IVerilog_GTKWave_Tutorial&amp;diff=611"/>
		<updated>2023-08-04T03:39:46Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: Created page with &amp;quot;## Icarus Verilog Installation  On windows:  Run the download executables in https://bleyer.org/icarus/  On Ubuntu: sudo apt-get install iverilog  For other unix-based systems: Iverilog is available on yum, pacman and homebrew.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;## Icarus Verilog Installation&lt;br /&gt;
&lt;br /&gt;
On windows: &lt;br /&gt;
Run the download executables in https://bleyer.org/icarus/&lt;br /&gt;
&lt;br /&gt;
On Ubuntu:&lt;br /&gt;
sudo apt-get install iverilog&lt;br /&gt;
&lt;br /&gt;
For other unix-based systems:&lt;br /&gt;
Iverilog is available on yum, pacman and homebrew.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=597</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=597"/>
		<updated>2023-07-11T01:04:32Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Day 1 Picture.png|thumb|From Left to Right: Allen Tan (CIDR P3), Randolf Dela Cruz, Quentin Pison, Raph Racho, Lawrence Quizon (CIDR P3)]]&lt;br /&gt;
Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules MWF @ 4PM&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
* By Friday Jun 23, 4PM:&lt;br /&gt;
** 2000 more pictures sorted by Friday&lt;br /&gt;
** Finished reading up to Ch 2.3 of the tutorial.&lt;br /&gt;
*By Monday Jun 26, 4PM:&lt;br /&gt;
**2000 more pictures.&lt;br /&gt;
**Euler problems all done.&lt;br /&gt;
*Wed Jun 28 is a &amp;lt;u&amp;gt;holiday&amp;lt;/u&amp;gt;. No meeting.&lt;br /&gt;
*By Friday Jun 28, 4PM:&lt;br /&gt;
**pip install matplotlib, numpy and scipy&lt;br /&gt;
**Look into matplotlib, numpy, scipy packages for python, show me yourself opening a picture from SPICE using matplotlib.pyplot.imshow&lt;br /&gt;
**Questions:&lt;br /&gt;
***What are the dimensions of the numpy representation of the image? Is it 1D, 2D, or 3D?&lt;br /&gt;
***Try to call imshow on image[0], image[1], image[2]. What appears? What do you think image[n] returns?&lt;br /&gt;
**Crop the 1/4 upper left, upper right, bottom left and bottom right of the image into 4 new numpy arrays. Show these images. &lt;br /&gt;
*By Monday July 3, 4PM:&lt;br /&gt;
**Create a github.com account, and create a repository creating the code you've made so far. &lt;br /&gt;
*By Wed July 5, 4PM:&lt;br /&gt;
**Download '''two''' of the folders of the [https://mega.nz/folder/LlgByZ6Z#wmLa-TQ8NYGkPrJjJ5BfQw/folder/flwFUDQB LettuceMOT dataset].&lt;br /&gt;
***Quentin: B&amp;amp;F &lt;br /&gt;
***Randolf: O&amp;amp;I &lt;br /&gt;
***Raph: Straight1 &amp;amp; 2 &lt;br /&gt;
**Inside the &amp;quot;gt&amp;quot; folder, there is a text file containing a bunch of labels. These labels are the bounding boxes of lettuce in each picture in the &amp;quot;img&amp;quot; folder. Generally, the labels are structured as follows: &amp;lt;math&amp;gt;label = \{img_{id},lettuce_{id},x,y,w,h,1,1,1\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x, y&amp;lt;/math&amp;gt; is the lower left corner of the bounding box of the specific lettuce in the image, and &amp;lt;math&amp;gt;w, h&amp;lt;/math&amp;gt; is its width and height. &lt;br /&gt;
**Your task is to create a script that loops through each line in the &amp;quot;gt.txt&amp;quot; file and saves the corresponding cropped picture of a lettuce into a new folder named &amp;quot;'''cropped'''&amp;quot;.  &lt;br /&gt;
*By Friday, 8AM:&lt;br /&gt;
**Internship presentation (for debriefing meeting) (all three of you will be creating the same presentation- use google slides and collaborate to make one presentation about your results).&lt;br /&gt;
**'''Forget about the CSV thing:''' Make a [https://medium.com/dejunhuang/learning-day-31-creating-your-own-image-dataset-in-pytorch-e92419d4381d Pytorch Dataset object] out of your images. See code below for sample code opening a Pytorch dataset from a folder structure. &lt;br /&gt;
**Your last task: make a code showing a '''random image''' (use numpy.randint) from the dataset, and set the title to the corresponding label. Like the image provided here, but for only one image.[[File:Spice dataset sample.png|thumb|Make a matplotlib plot like this, but using just one image.]]&lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for testing Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Creating a Pytorch Dataset ==&lt;br /&gt;
To create a Pytorch dataset from your YES/NO/MAYBE folders, use the code below. To make this work, you'll have to install [https://pytorch.org/get-started/locally/ Pytorch]. Follow the install instructions in the link.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
import torchvision&lt;br /&gt;
from torchvision import transforms&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
resize_normalize = transforms.Compose([&lt;br /&gt;
            transforms.Resize((96,96)),&lt;br /&gt;
            transforms.ToTensor(),&lt;br /&gt;
        ])&lt;br /&gt;
&lt;br /&gt;
SPICE = torchvision.datasets.ImageFolder('FOLDER_CONTAINING_YOUR_YES_NO_MAYBE_FOLDERS',transform=resize_normalize)&lt;br /&gt;
&lt;br /&gt;
plt.imshow(SPICE[0][0].permute(1,2,0))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Final Repositories ==&lt;br /&gt;
Great job everyone! You can see each other's repositories down below:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/CookieJarGithub/RandolfPython Randolf]&lt;br /&gt;
* [https://github.com/RandomName08/Plant-images Quentin]&lt;br /&gt;
* Raph&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: &lt;br /&gt;
## [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
## (Attempt) the project Euler Problems 1-5 https://projecteuler.net/archives&lt;br /&gt;
#For editing and coding machine learning in Python (which will be useful from now on, as you use more of the packages) I recommend [https://code.visualstudio.com/ VScode] with the Jupyter extension installed, which should allow you to put &amp;quot;#%%&amp;quot; at the top of your code, press shift+enter, and run the code immediately :DD&lt;br /&gt;
#[https://www.cs.toronto.edu/~guerzhoy/411/lec/W01/numpy/NumpyImgs.html On opening images with numpy, scipy and matplotlib]&lt;br /&gt;
#Removing sinusoidal interference the [https://docs.opencv.org/3.4/d2/d0b/tutorial_periodic_noise_removing_filter.html Python way]&lt;br /&gt;
##Oh no! The terms are too hard! : Fourier Transform: [https://youtu.be/spUNpyF58BY 3b1b video], [https://lpsa.swarthmore.edu/ Primer (needs calculus to understand)]&lt;br /&gt;
##Also, if you do attempt this, ''do not hesitate to ask me questions''.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=596</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=596"/>
		<updated>2023-07-05T11:23:36Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Day 1 Picture.png|thumb|From Left to Right: Allen Tan (CIDR P3), Randolf Dela Cruz, Quentin Pison, Raph Racho, Lawrence Quizon (CIDR P3)]]&lt;br /&gt;
Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules MWF @ 4PM&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
* By Friday Jun 23, 4PM:&lt;br /&gt;
** 2000 more pictures sorted by Friday&lt;br /&gt;
** Finished reading up to Ch 2.3 of the tutorial.&lt;br /&gt;
*By Monday Jun 26, 4PM:&lt;br /&gt;
**2000 more pictures.&lt;br /&gt;
**Euler problems all done.&lt;br /&gt;
*Wed Jun 28 is a &amp;lt;u&amp;gt;holiday&amp;lt;/u&amp;gt;. No meeting.&lt;br /&gt;
*By Friday Jun 28, 4PM:&lt;br /&gt;
**pip install matplotlib, numpy and scipy&lt;br /&gt;
**Look into matplotlib, numpy, scipy packages for python, show me yourself opening a picture from SPICE using matplotlib.pyplot.imshow&lt;br /&gt;
**Questions:&lt;br /&gt;
***What are the dimensions of the numpy representation of the image? Is it 1D, 2D, or 3D?&lt;br /&gt;
***Try to call imshow on image[0], image[1], image[2]. What appears? What do you think image[n] returns?&lt;br /&gt;
**Crop the 1/4 upper left, upper right, bottom left and bottom right of the image into 4 new numpy arrays. Show these images. &lt;br /&gt;
*By Monday July 3, 4PM:&lt;br /&gt;
**Create a github.com account, and create a repository creating the code you've made so far. &lt;br /&gt;
*By Wed July 5, 4PM:&lt;br /&gt;
**Download '''two''' of the folders of the [https://mega.nz/folder/LlgByZ6Z#wmLa-TQ8NYGkPrJjJ5BfQw/folder/flwFUDQB LettuceMOT dataset].&lt;br /&gt;
***Quentin: B&amp;amp;F &lt;br /&gt;
***Randolf: O&amp;amp;I &lt;br /&gt;
***Raph: Straight1 &amp;amp; 2 &lt;br /&gt;
**Inside the &amp;quot;gt&amp;quot; folder, there is a text file containing a bunch of labels. These labels are the bounding boxes of lettuce in each picture in the &amp;quot;img&amp;quot; folder. Generally, the labels are structured as follows: &amp;lt;math&amp;gt;label = \{img_{id},lettuce_{id},x,y,w,h,1,1,1\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x, y&amp;lt;/math&amp;gt; is the lower left corner of the bounding box of the specific lettuce in the image, and &amp;lt;math&amp;gt;w, h&amp;lt;/math&amp;gt; is its width and height. &lt;br /&gt;
**Your task is to create a script that loops through each line in the &amp;quot;gt.txt&amp;quot; file and saves the corresponding cropped picture of a lettuce into a new folder named &amp;quot;'''cropped'''&amp;quot;.  &lt;br /&gt;
*By Friday, 8AM:&lt;br /&gt;
**Internship presentation (for debriefing meeting) (all three of you will be creating the same presentation- use google slides and collaborate to make one presentation about your results).&lt;br /&gt;
**'''Forget about the CSV thing:''' Make a [https://medium.com/dejunhuang/learning-day-31-creating-your-own-image-dataset-in-pytorch-e92419d4381d Pytorch Dataset object] out of your images. See code below for sample code opening a Pytorch dataset from a folder structure. &lt;br /&gt;
**Your last task: make a code showing a '''random image''' (use numpy.randint) from the dataset, and set the title to the corresponding label. Like the image provided here, but for only one image.[[File:Spice dataset sample.png|thumb|Make a matplotlib plot like this, but using just one image.]]&lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for testing Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Creating a Pytorch Dataset ==&lt;br /&gt;
To create a Pytorch dataset from your YES/NO/MAYBE folders, use the code below. To make this work, you'll have to install [https://pytorch.org/get-started/locally/ Pytorch]. Follow the install instructions in the link.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
import torch&lt;br /&gt;
import torchvision&lt;br /&gt;
from torchvision import transforms&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
resize_normalize = transforms.Compose([&lt;br /&gt;
            transforms.Resize((96,96)),&lt;br /&gt;
            transforms.ToTensor(),&lt;br /&gt;
        ])&lt;br /&gt;
&lt;br /&gt;
SPICE = torchvision.datasets.ImageFolder('FOLDER_CONTAINING_YOUR_YES_NO_MAYBE_FOLDERS',transform=resize_normalize)&lt;br /&gt;
&lt;br /&gt;
plt.imshow(SPICE[0][0].permute(1,2,0))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: &lt;br /&gt;
## [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
## (Attempt) the project Euler Problems 1-5 https://projecteuler.net/archives&lt;br /&gt;
#For editing and coding machine learning in Python (which will be useful from now on, as you use more of the packages) I recommend [https://code.visualstudio.com/ VScode] with the Jupyter extension installed, which should allow you to put &amp;quot;#%%&amp;quot; at the top of your code, press shift+enter, and run the code immediately :DD&lt;br /&gt;
#[https://www.cs.toronto.edu/~guerzhoy/411/lec/W01/numpy/NumpyImgs.html On opening images with numpy, scipy and matplotlib]&lt;br /&gt;
#Removing sinusoidal interference the [https://docs.opencv.org/3.4/d2/d0b/tutorial_periodic_noise_removing_filter.html Python way]&lt;br /&gt;
##Oh no! The terms are too hard! : Fourier Transform: [https://youtu.be/spUNpyF58BY 3b1b video], [https://lpsa.swarthmore.edu/ Primer (needs calculus to understand)]&lt;br /&gt;
##Also, if you do attempt this, ''do not hesitate to ask me questions''.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=File:Spice_dataset_sample.png&amp;diff=595</id>
		<title>File:Spice dataset sample.png</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=File:Spice_dataset_sample.png&amp;diff=595"/>
		<updated>2023-07-05T11:22:32Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sample from spice dataset&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=594</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=594"/>
		<updated>2023-07-05T10:10:13Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Day 1 Picture.png|thumb|From Left to Right: Allen Tan (CIDR P3), Randolf Dela Cruz, Quentin Pison, Raph Racho, Lawrence Quizon (CIDR P3)]]&lt;br /&gt;
Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules MWF @ 4PM&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
* By Friday Jun 23, 4PM:&lt;br /&gt;
** 2000 more pictures sorted by Friday&lt;br /&gt;
** Finished reading up to Ch 2.3 of the tutorial.&lt;br /&gt;
*By Monday Jun 26, 4PM:&lt;br /&gt;
**2000 more pictures.&lt;br /&gt;
**Euler problems all done.&lt;br /&gt;
*Wed Jun 28 is a &amp;lt;u&amp;gt;holiday&amp;lt;/u&amp;gt;. No meeting.&lt;br /&gt;
*By Friday Jun 28, 4PM:&lt;br /&gt;
**pip install matplotlib, numpy and scipy&lt;br /&gt;
**Look into matplotlib, numpy, scipy packages for python, show me yourself opening a picture from SPICE using matplotlib.pyplot.imshow&lt;br /&gt;
**Questions:&lt;br /&gt;
***What are the dimensions of the numpy representation of the image? Is it 1D, 2D, or 3D?&lt;br /&gt;
***Try to call imshow on image[0], image[1], image[2]. What appears? What do you think image[n] returns?&lt;br /&gt;
**Crop the 1/4 upper left, upper right, bottom left and bottom right of the image into 4 new numpy arrays. Show these images. &lt;br /&gt;
*By Monday July 3, 4PM:&lt;br /&gt;
**Create a github.com account, and create a repository creating the code you've made so far. &lt;br /&gt;
*By Wed July 5, 4PM:&lt;br /&gt;
**Download '''two''' of the folders of the [https://mega.nz/folder/LlgByZ6Z#wmLa-TQ8NYGkPrJjJ5BfQw/folder/flwFUDQB LettuceMOT dataset].&lt;br /&gt;
***Quentin: B&amp;amp;F &lt;br /&gt;
***Randolf: O&amp;amp;I &lt;br /&gt;
***Raph: Straight1 &amp;amp; 2 &lt;br /&gt;
**Inside the &amp;quot;gt&amp;quot; folder, there is a text file containing a bunch of labels. These labels are the bounding boxes of lettuce in each picture in the &amp;quot;img&amp;quot; folder. Generally, the labels are structured as follows: &amp;lt;math&amp;gt;label = \{img_{id},lettuce_{id},x,y,w,h,1,1,1\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x, y&amp;lt;/math&amp;gt; is the lower left corner of the bounding box of the specific lettuce in the image, and &amp;lt;math&amp;gt;w, h&amp;lt;/math&amp;gt; is its width and height. &lt;br /&gt;
**Your task is to create a script that loops through each line in the &amp;quot;gt.txt&amp;quot; file and saves the corresponding cropped picture of a lettuce into a new folder named &amp;quot;'''cropped'''&amp;quot;.  &lt;br /&gt;
*By Friday, 8AM:&lt;br /&gt;
**Internship presentation (for debriefing meeting) &lt;br /&gt;
**Make a CSV file from your SPICE dataset containing the following label: &amp;lt;math&amp;gt;{img_{id},1}&amp;lt;/math&amp;gt; &lt;br /&gt;
**Optional: Make a [https://medium.com/dejunhuang/learning-day-31-creating-your-own-image-dataset-in-pytorch-e92419d4381d Pytorch Dataset object] out of your images  &lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for testing Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: &lt;br /&gt;
## [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
## (Attempt) the project Euler Problems 1-5 https://projecteuler.net/archives&lt;br /&gt;
#For editing and coding machine learning in Python (which will be useful from now on, as you use more of the packages) I recommend [https://code.visualstudio.com/ VScode] with the Jupyter extension installed, which should allow you to put &amp;quot;#%%&amp;quot; at the top of your code, press shift+enter, and run the code immediately :DD&lt;br /&gt;
#[https://www.cs.toronto.edu/~guerzhoy/411/lec/W01/numpy/NumpyImgs.html On opening images with numpy, scipy and matplotlib]&lt;br /&gt;
#Removing sinusoidal interference the [https://docs.opencv.org/3.4/d2/d0b/tutorial_periodic_noise_removing_filter.html Python way]&lt;br /&gt;
##Oh no! The terms are too hard! : Fourier Transform: [https://youtu.be/spUNpyF58BY 3b1b video], [https://lpsa.swarthmore.edu/ Primer (needs calculus to understand)]&lt;br /&gt;
##Also, if you do attempt this, ''do not hesitate to ask me questions''.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=593</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=593"/>
		<updated>2023-07-02T05:29:50Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Day 1 Picture.png|thumb|From Left to Right: Allen Tan (CIDR P3), Randolf Dela Cruz, Quentin Pison, Raph Racho, Lawrence Quizon (CIDR P3)]]&lt;br /&gt;
Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules MWF @ 4PM&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
* By Friday Jun 23, 4PM:&lt;br /&gt;
** 2000 more pictures sorted by Friday&lt;br /&gt;
** Finished reading up to Ch 2.3 of the tutorial.&lt;br /&gt;
*By Monday Jun 26, 4PM:&lt;br /&gt;
**2000 more pictures.&lt;br /&gt;
**Euler problems all done.&lt;br /&gt;
*Wed Jun 28 is a &amp;lt;u&amp;gt;holiday&amp;lt;/u&amp;gt;. No meeting.&lt;br /&gt;
*By Friday Jun 28, 4PM:&lt;br /&gt;
**pip install matplotlib, numpy and scipy&lt;br /&gt;
**Look into matplotlib, numpy, scipy packages for python, show me yourself opening a picture from SPICE using matplotlib.pyplot.imshow&lt;br /&gt;
**Questions:&lt;br /&gt;
***What are the dimensions of the numpy representation of the image? Is it 1D, 2D, or 3D?&lt;br /&gt;
***Try to call imshow on image[0], image[1], image[2]. What appears? What do you think image[n] returns?&lt;br /&gt;
**Crop the 1/4 upper left, upper right, bottom left and bottom right of the image into 4 new numpy arrays. Show these images. &lt;br /&gt;
*By Monday July 3, 4PM:&lt;br /&gt;
**Create a github.com account, and create a repository creating the code you've made so far. &lt;br /&gt;
*By Friday July 7, 4PM:&lt;br /&gt;
**Download '''two''' of the folders of the [https://mega.nz/folder/LlgByZ6Z#wmLa-TQ8NYGkPrJjJ5BfQw/folder/flwFUDQB LettuceMOT dataset].&lt;br /&gt;
***Quentin: B&amp;amp;F &lt;br /&gt;
***Randolf: O&amp;amp;I &lt;br /&gt;
***Raph: Straight1 &amp;amp; 2 &lt;br /&gt;
**Inside the &amp;quot;gt&amp;quot; folder, there is a text file containing a bunch of labels. These labels are the bounding boxes of lettuce in each picture in the &amp;quot;img&amp;quot; folder. Generally, the labels are structured as follows: &amp;lt;math&amp;gt;label = \{img_{id},lettuce_{id},x,y,w,h,1,1,1\}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x, y&amp;lt;/math&amp;gt; is the lower left corner of the bounding box of the specific lettuce in the image, and &amp;lt;math&amp;gt;w, h&amp;lt;/math&amp;gt; is its width and height. &lt;br /&gt;
**Your task is to create a script that loops through each line in the &amp;quot;gt.txt&amp;quot; file and saves the corresponding cropped picture of a lettuce into a new folder named &amp;quot;'''cropped'''&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for testing Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: &lt;br /&gt;
## [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
## (Attempt) the project Euler Problems 1-5 https://projecteuler.net/archives&lt;br /&gt;
#For editing and coding machine learning in Python (which will be useful from now on, as you use more of the packages) I recommend [https://code.visualstudio.com/ VScode] with the Jupyter extension installed, which should allow you to put &amp;quot;#%%&amp;quot; at the top of your code, press shift+enter, and run the code immediately :DD&lt;br /&gt;
#[https://www.cs.toronto.edu/~guerzhoy/411/lec/W01/numpy/NumpyImgs.html On opening images with numpy, scipy and matplotlib]&lt;br /&gt;
#Removing sinusoidal interference the [https://docs.opencv.org/3.4/d2/d0b/tutorial_periodic_noise_removing_filter.html Python way]&lt;br /&gt;
##Oh no! The terms are too hard! : Fourier Transform: [https://youtu.be/spUNpyF58BY 3b1b video], [https://lpsa.swarthmore.edu/ Primer (needs calculus to understand)]&lt;br /&gt;
##Also, if you do attempt this, ''do not hesitate to ask me questions''.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=572</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=572"/>
		<updated>2023-06-27T02:36:19Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Day 1 Picture.png|thumb|From Left to Right: Allen Tan (CIDR P3), Randolf Dela Cruz, Quentin Pison, Raph Racho, Lawrence Quizon (CIDR P3)]]&lt;br /&gt;
Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules MWF @ 4PM&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
* By Friday Jun 23, 4PM:&lt;br /&gt;
** 2000 more pictures sorted by Friday&lt;br /&gt;
** Finished reading up to Ch 2.3 of the tutorial.&lt;br /&gt;
*By Monday Jun 26, 4PM:&lt;br /&gt;
**2000 more pictures.&lt;br /&gt;
**Euler problems all done.&lt;br /&gt;
*Wed Jun 28 is a &amp;lt;u&amp;gt;holiday&amp;lt;/u&amp;gt;. No meeting.&lt;br /&gt;
*By Friday Jun 28, 4PM:&lt;br /&gt;
**pip install matplotlib, numpy and scipy&lt;br /&gt;
**Look into matplotlib, numpy, scipy packages for python, show me yourself opening a picture from SPICE using matplotlib.pyplot.imshow&lt;br /&gt;
**Questions:&lt;br /&gt;
***What are the dimensions of the numpy representation of the image? Is it 1D, 2D, or 3D?&lt;br /&gt;
***Try to call imshow on image[0], image[1], image[2]. What appears? What do you think image[n] returns?&lt;br /&gt;
**Crop the 1/4 upper left, upper right, bottom left and bottom right of the image into 4 new numpy arrays. Show these images. &lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for testing Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: &lt;br /&gt;
## [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
## (Attempt) the project Euler Problems 1-5 https://projecteuler.net/archives&lt;br /&gt;
#For editing and coding machine learning in Python (which will be useful from now on, as you use more of the packages) I recommend [https://code.visualstudio.com/ VScode] with the Jupyter extension installed, which should allow you to put &amp;quot;#%%&amp;quot; at the top of your code, press shift+enter, and run the code immediately :DD&lt;br /&gt;
#[https://www.cs.toronto.edu/~guerzhoy/411/lec/W01/numpy/NumpyImgs.html On opening images with numpy, scipy and matplotlib]&lt;br /&gt;
#Removing sinusoidal interference the [https://docs.opencv.org/3.4/d2/d0b/tutorial_periodic_noise_removing_filter.html Python way]&lt;br /&gt;
##Oh no! The terms are too hard! : Fourier Transform: [https://youtu.be/spUNpyF58BY 3b1b video], [https://lpsa.swarthmore.edu/ Primer (needs calculus to understand)]&lt;br /&gt;
##Also, if you do attempt this, ''do not hesitate to ask me questions''.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=571</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=571"/>
		<updated>2023-06-26T08:42:24Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Day 1 Picture.png|thumb|From Left to Right: Allen Tan (CIDR P3), Randolf Dela Cruz, Quentin Pison, Raph Racho, Lawrence Quizon (CIDR P3)]]&lt;br /&gt;
Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules MWF @ 4PM&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
* By Friday Jun 23, 4PM:&lt;br /&gt;
** 2000 more pictures sorted by Friday&lt;br /&gt;
** Finished reading up to Ch 2.3 of the tutorial.&lt;br /&gt;
*By Monday Jun 26, 4PM:&lt;br /&gt;
**2000 more pictures.&lt;br /&gt;
**Euler problems all done.&lt;br /&gt;
*By Wed Jun 28, 4PM:&lt;br /&gt;
**Python3, try to pip install matplotlib, numpy and scipy&lt;br /&gt;
**Look into matplotlib, numpy, scipy packages for python, show me yourself opening a picture from SPICE in Python.&lt;br /&gt;
***Call plt.imshow() on a numpy array obtained from an image.&lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for to test Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: &lt;br /&gt;
## [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
## (Attempt) the project Euler Problems 1-5 https://projecteuler.net/archives&lt;br /&gt;
#For editing and coding machine learning in Python (which will be useful from now on, as you use more of the packages) I recommend [https://code.visualstudio.com/ VScode] with the Jupyter extension installed, which should allow you to put &amp;quot;#%%&amp;quot; at the top of your code, press shift+enter, and run the code immediately :DD&lt;br /&gt;
#[https://www.cs.toronto.edu/~guerzhoy/411/lec/W01/numpy/NumpyImgs.html On opening images with numpy, scipy and matplotlib]&lt;br /&gt;
#Removing sinusoidal interference the [https://docs.opencv.org/3.4/d2/d0b/tutorial_periodic_noise_removing_filter.html Python way]&lt;br /&gt;
##Oh no! The terms are too hard! : Fourier Transform: [https://youtu.be/spUNpyF58BY 3b1b video], [https://lpsa.swarthmore.edu/ Primer (needs calculus to understand)]&lt;br /&gt;
##Also, if you do attempt this, ''do not hesitate to ask me questions''.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=570</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=570"/>
		<updated>2023-06-23T09:10:54Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: more resources&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Day 1 Picture.png|thumb|From Left to Right: Allen Tan (CIDR P3), Randolf Dela Cruz, Quentin Pison, Raph Racho, Lawrence Quizon (CIDR P3)]]&lt;br /&gt;
Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules MWF @ 4PM&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
* By Friday Jun 23, 4PM:&lt;br /&gt;
** 2000 more pictures sorted by Friday&lt;br /&gt;
** Finished reading up to Ch 2.3 of the tutorial.&lt;br /&gt;
*By Monday Jun 26, 4PM:&lt;br /&gt;
**2000 more pictures.&lt;br /&gt;
**Euler problems all done.&lt;br /&gt;
*By Wed Jun 28, 4PM:&lt;br /&gt;
**Python3, try to install pip &amp;lt;---&lt;br /&gt;
**Look into matplotlib and numpy packages for python, show me yourself opening a picture from SPICE in Python.&lt;br /&gt;
***Call plt.imshow() on a numpy array obtained from an image.&lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for to test Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: &lt;br /&gt;
## [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
## (Attempt) the project Euler Problems 1-5 https://projecteuler.net/archives&lt;br /&gt;
#For editing and coding machine learning in Python (which will be useful from now on, as you use more of the packages) I recommend [https://code.visualstudio.com/ VScode] with the Jupyter extension installed, which should allow you to put &amp;quot;#%%&amp;quot; at the top of your code, press shift+enter, and run the code immediately :DD&lt;br /&gt;
#[https://www.cs.toronto.edu/~guerzhoy/411/lec/W01/numpy/NumpyImgs.html On opening images with numpy, scipy and matplotlib]&lt;br /&gt;
#Removing sinusoidal interference the [https://docs.opencv.org/3.4/d2/d0b/tutorial_periodic_noise_removing_filter.html Python way]&lt;br /&gt;
##Oh no! The terms are too hard! : Fourier Transform: [https://youtu.be/spUNpyF58BY 3b1b video], [https://lpsa.swarthmore.edu/ Primer (needs calculus to understand)]&lt;br /&gt;
##Also, if you do attempt this, ''do not hesitate to ask me questions''.&lt;br /&gt;
#Opening images in python with matplotlib&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=569</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=569"/>
		<updated>2023-06-23T08:56:07Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: Friday progress&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Day 1 Picture.png|thumb|From Left to Right: Allen Tan (CIDR P3), Randolf Dela Cruz, Quentin Pison, Raph Racho, Lawrence Quizon (CIDR P3)]]&lt;br /&gt;
Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules MWF @ 4PM&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
* By Friday Jun 23, 4PM:&lt;br /&gt;
** 2000 more pictures sorted by Friday&lt;br /&gt;
** Finished reading up to Ch 2.3 of the tutorial.&lt;br /&gt;
*By Monday Jun 26, 4PM:&lt;br /&gt;
**2000 more pictures.&lt;br /&gt;
**Euler problems all done.&lt;br /&gt;
*By Wed Jun 28, 4PM:&lt;br /&gt;
**Python3, try to install pip &amp;lt;---&lt;br /&gt;
**Look into matplotlib and numpy packages for python, show me yourself opening a picture from SPICE in Python.&lt;br /&gt;
***Call plt.imshow() on a numpy array obtained from an image.&lt;br /&gt;
*Stuff to research on (optional):&lt;br /&gt;
**Removing sinusoidal interference&lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for to test Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: &lt;br /&gt;
## [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
## (Attempt) the project Euler Problems 1-5 https://projecteuler.net/archives&lt;br /&gt;
# Git is a versioning tool for code. How to use Git will be discussed someday.&lt;br /&gt;
# To run Linux programs in windows, we'll use a docker. Dockerfile for Pytorch and Linux flow.  &lt;br /&gt;
## To be uploaded&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=File:Day_1_Picture.png&amp;diff=568</id>
		<title>File:Day 1 Picture.png</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=File:Day_1_Picture.png&amp;diff=568"/>
		<updated>2023-06-23T07:59:12Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;From Left to Right:&lt;br /&gt;
Allen Tan, Randolf Dela Cruz, Quentin Severo, Raph Racho, Lawrence Quizon&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=567</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=567"/>
		<updated>2023-06-21T09:25:53Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules MWF @ 4PM&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
* By Friday Jun 23, 4PM:&lt;br /&gt;
** 2000 more pictures sorted by Friday&lt;br /&gt;
** Finished reading up to Ch 2.3 of the tutorial.&lt;br /&gt;
*By Monday, 2000 more pictures.&lt;br /&gt;
**Euler problems. &lt;br /&gt;
*By Wed Jun 28, 4PM:&lt;br /&gt;
**Python3, try to install pip &amp;lt;---&lt;br /&gt;
**Look into matplotlib and numpy packages for python, show me yourself opening a picture from SPICE in Python.&lt;br /&gt;
***Call plt.imshow() on a numpy array obtained from an image.&lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for to test Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: &lt;br /&gt;
## [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
## (Attempt) the project Euler Problems 1-5 https://projecteuler.net/archives&lt;br /&gt;
# Git is a versioning tool for code. How to use Git will be discussed someday.&lt;br /&gt;
# To run Linux programs in windows, we'll use a docker. Dockerfile for Pytorch and Linux flow.  &lt;br /&gt;
## To be uploaded&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=566</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=566"/>
		<updated>2023-06-19T07:16:49Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules MWF @ 4PM&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
* By Wednesday Jun 19, 4PM:&lt;br /&gt;
** At least 400 pictures sorted&lt;br /&gt;
** Programming Tutorial and Project Euler problems 1-5&lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for to test Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: &lt;br /&gt;
## [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
## (Attempt) the project Euler Problems 1-5 https://projecteuler.net/archives&lt;br /&gt;
# Git is a versioning tool for code. How to use Git will be discussed someday.&lt;br /&gt;
# To run Linux programs in windows, we'll use a docker. Dockerfile for Pytorch and Linux flow.  &lt;br /&gt;
## To be uploaded&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=565</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=565"/>
		<updated>2023-06-18T07:52:41Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules MWF @ 4PM&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for to test Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: &lt;br /&gt;
## [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
## For the first week, you should do problems 1-5 of Project Euler.&lt;br /&gt;
# How to use Git: &lt;br /&gt;
## git clone&lt;br /&gt;
## git add *&lt;br /&gt;
## git commit&lt;br /&gt;
## git push&lt;br /&gt;
# Dockerfile for Pytorch and Linux flow.  &lt;br /&gt;
## To be uploaded&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=561</id>
		<title>PSHS Internship 2023</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=PSHS_Internship_2023&amp;diff=561"/>
		<updated>2023-06-08T09:44:45Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: initial commit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Main page for distributing resource for and documenting the internship.&lt;br /&gt;
&lt;br /&gt;
* June 19, 2023 - July 2023&lt;br /&gt;
&lt;br /&gt;
* Meeting Schedules TBA&lt;br /&gt;
* Day 1: Initial orientation, tour- then orientation of intern tasks.&lt;br /&gt;
&lt;br /&gt;
== About CIDR Project 3 ==&lt;br /&gt;
[[Energy Efficient Machine Learning Hardware Co-design|CIDR Project 3]], under the larger [[CIDR Wiki Home Page|CIDR project]], focuses on the creation and evaluation of machine learning hardware and software for use in small devices. Essentially, machine learning software is too heavy to run in smaller computers, and so we focus on creating optimized software and hardware specifically for machine learning. &lt;br /&gt;
&lt;br /&gt;
== Your tasks ==&lt;br /&gt;
As interns, we'd like you guys to process data for to test Project 3's machine learning software. &lt;br /&gt;
&lt;br /&gt;
[[File:Intern Tasks.png|center|thumb|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# As some of you might not yet be familiar with Python or are a bit rusty, you should read through the following: [https://composingprograms.com/ Composing Programs - Introduction to Programming with Python3]&lt;br /&gt;
# How to use git (sabi ni sir rhands si allen daw to)&lt;br /&gt;
# Tutorials for file renaming workflow? mv name &amp;gt; name&lt;br /&gt;
# Download. Dockerfile. &lt;br /&gt;
## Python&lt;br /&gt;
## Pytorch&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=File:Intern_Tasks.png&amp;diff=560</id>
		<title>File:Intern Tasks.png</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=File:Intern_Tasks.png&amp;diff=560"/>
		<updated>2023-06-08T07:43:24Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flowchart of intern tasks for the month.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Energy_Efficient_Machine_Learning_Hardware_Co-design&amp;diff=559</id>
		<title>Energy Efficient Machine Learning Hardware Co-design</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Energy_Efficient_Machine_Learning_Hardware_Co-design&amp;diff=559"/>
		<updated>2023-06-08T05:52:47Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: /* Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This  component  project  of  the  CIDR  program tackles  the  co-design  of  energy-efficient  machine  learning algorithms and hardware. Methodologies to integrate machine learning on-chip for distributed data processing, network lifespan improvement and security will be explored. These methodologies will likewise pave the way for automated hardware generation for the accelerator needed to perform these tasks.&lt;br /&gt;
&lt;br /&gt;
==Personnel==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Project Leader || Anastacia B. Alvarez, PhD&lt;br /&gt;
|-&lt;br /&gt;
| Supervising SRS || Sherry Joy Alvionne S. Baquiran&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | University Researcher || Fredrick Angelo Galapon&lt;br /&gt;
|-&lt;br /&gt;
| Allen Jason Tan&lt;br /&gt;
|-&lt;br /&gt;
| Science Research Specialist || Maria Luz Limun&lt;br /&gt;
|-&lt;br /&gt;
|Science Aide&lt;br /&gt;
|Patrick Jake Valdez&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Project Staff || Ryan Albert Antonio&lt;br /&gt;
|-&lt;br /&gt;
| Rhandley D. Cajote, PhD&lt;br /&gt;
|-&lt;br /&gt;
| Lawrence Roman Quizon&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Student Affiliate || Joenard Matanguihan&lt;br /&gt;
|-&lt;br /&gt;
| Randolf Tamayo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Activities==&lt;br /&gt;
The project will have four (4) major activities:&lt;br /&gt;
#Design and implementation WSN machine learning for [[clustering and routing]]&lt;br /&gt;
#ISA-optimization of [[RISC-V processor for machine learning]]&lt;br /&gt;
#Design, implementation, and verification of a proof-of-concept [[distributed learning]] in 28nm FDSOI CMOS technology.&lt;br /&gt;
#Design and implementation of a proof-of-concept [[security module]] using physically unclonable functions (PUF)&lt;br /&gt;
==Resources==&lt;br /&gt;
*[[PSHS Internship 2023]]&lt;br /&gt;
*Tutorials&lt;br /&gt;
*Scripts&lt;br /&gt;
*Presentations&lt;br /&gt;
*Papers&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Energy_Efficient_Machine_Learning_Hardware_Co-design&amp;diff=558</id>
		<title>Energy Efficient Machine Learning Hardware Co-design</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Energy_Efficient_Machine_Learning_Hardware_Co-design&amp;diff=558"/>
		<updated>2023-06-08T05:52:12Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: /* Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This  component  project  of  the  CIDR  program tackles  the  co-design  of  energy-efficient  machine  learning algorithms and hardware. Methodologies to integrate machine learning on-chip for distributed data processing, network lifespan improvement and security will be explored. These methodologies will likewise pave the way for automated hardware generation for the accelerator needed to perform these tasks.&lt;br /&gt;
&lt;br /&gt;
==Personnel==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Project Leader || Anastacia B. Alvarez, PhD&lt;br /&gt;
|-&lt;br /&gt;
| Supervising SRS || Sherry Joy Alvionne S. Baquiran&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | University Researcher || Fredrick Angelo Galapon&lt;br /&gt;
|-&lt;br /&gt;
| Allen Jason Tan&lt;br /&gt;
|-&lt;br /&gt;
| Science Research Specialist || Maria Luz Limun&lt;br /&gt;
|-&lt;br /&gt;
|Science Aide&lt;br /&gt;
|Patrick Jake Valdez&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Project Staff || Ryan Albert Antonio&lt;br /&gt;
|-&lt;br /&gt;
| Rhandley D. Cajote, PhD&lt;br /&gt;
|-&lt;br /&gt;
| Lawrence Roman Quizon&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Student Affiliate || Joenard Matanguihan&lt;br /&gt;
|-&lt;br /&gt;
| Randolf Tamayo&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Activities==&lt;br /&gt;
The project will have four (4) major activities:&lt;br /&gt;
#Design and implementation WSN machine learning for [[clustering and routing]]&lt;br /&gt;
#ISA-optimization of [[RISC-V processor for machine learning]]&lt;br /&gt;
#Design, implementation, and verification of a proof-of-concept [[distributed learning]] in 28nm FDSOI CMOS technology.&lt;br /&gt;
#Design and implementation of a proof-of-concept [[security module]] using physically unclonable functions (PUF)&lt;br /&gt;
==Resources==&lt;br /&gt;
*PSHS Internship 2023&lt;br /&gt;
*Tutorials&lt;br /&gt;
*Scripts&lt;br /&gt;
*Presentations&lt;br /&gt;
*Papers&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=530</id>
		<title>Distributed learning</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=530"/>
		<updated>2022-12-06T01:41:25Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: notes of efficient vision models&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Distributed Machine Learning}}&lt;br /&gt;
&lt;br /&gt;
The use of artificial intelligence (AI) in extreme edge devices such as wireless sensor nodes (WSNs) will greatly benefit its scalability and application space. AI can be applied to solve problems with clustering, data routing, and most importantly it can be used to reduce the volume of data transmission via data compression or making conclusions from data within the node itself &amp;lt;ref&amp;gt;Alsheikh, Mohammad Abu, et al. &amp;quot;Machine learning in wireless sensor networks: Algorithms, strategies, and applications.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 16.4 (2014): 1996-2018.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
At the moment, potential use cases for ML in WSN include, but are not limited to:&lt;br /&gt;
&lt;br /&gt;
# General Pattern Classification (including recognizing speech commands, voice recognition for authentication, bio-signal processing for medical sensors)&lt;br /&gt;
# Image Processing (including presence detection a.k.a. visual wake words, car counting for traffic analytics)&lt;br /&gt;
# Node routing and scheduling to improve network scalability and lifespan (through the use of RL, see more in [[Clustering and routing|clustering]]). &lt;br /&gt;
&lt;br /&gt;
However, since devices in the extreme edge are constrained to work with extremely low amounts of energy &amp;lt;ref&amp;gt;Ma, Dong, et al. &amp;quot;Sensing, computing, and communications for energy harvesting iots: A survey.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 22.2 (2019): 1222-1250.&amp;lt;/ref&amp;gt;, even the simplest AI models are difficult to execute with typical sequential processors. WSNs have memories in the order of kB and clock speeds in the order of kHz to MHz due to energy constraints, rendering them unable to run state-of-the art AI applications.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Reference WSN Project&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory&lt;br /&gt;
!Secondary Memory&lt;br /&gt;
!Processor&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v1&lt;br /&gt;
|Digi XBee-Pro, TI MSP430F213&lt;br /&gt;
|16MHz&lt;br /&gt;
|512B&lt;br /&gt;
|8KB+256B&lt;br /&gt;
|16-bit MSP-430&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v2&lt;br /&gt;
|ATSAMR21&lt;br /&gt;
|&amp;lt;48MHz&lt;br /&gt;
|32KB&lt;br /&gt;
|256KB&lt;br /&gt;
|ARM32-Cortex M0&lt;br /&gt;
|}&lt;br /&gt;
To contrast with the above specs, the TinyML recommended model to classify CIFAR-10 has 3.5MB parameters. &lt;br /&gt;
&lt;br /&gt;
Apart from the above constraints, WSNs running AI are placed in potentially changing environments that are potentially different from the environment in which the AI was trained. This is a problem known as concept drift. AI algorithms running on WSN need to be able to work regardless of continuously changing patterns using concepts such as online learning.&lt;br /&gt;
&lt;br /&gt;
Zhou '21 describes edge AI as using widespread edge resources to gain AI insight. This means not only running an AI algorithm on one node, but potentially cooperatively running inference and training on multiple nodes. There are several degrees to the concept, ranging from training and inference in the server, training in the server but inference in the node, and running both training and inference on the node itself. Ideally, for the highest scalability and lowest communication overhead, training and inference ideally take place in the nodes.&lt;br /&gt;
[[File:Concept Map of Distributed Machine Learning for WSN 2.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
== TinyML and accepted benchmarks for Edge AI ==&lt;br /&gt;
The [https://www.tinyml.org/ TinyML organization] describes tinyML as the &amp;quot;field of machine learning technologies and applications including hardware, algorithms and software capable of performing on-device sensor data analytics at extremely low power, typically in the mW range and below, and hence enabling a variety of always-on use-cases and targeting battery operated devices&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
MLPerfTiny&amp;lt;ref&amp;gt;Banbury, Colby, et al. &amp;quot;Mlperf tiny benchmark.&amp;quot; ''arXiv preprint arXiv:2106.07597'' (2021).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ref&amp;gt; is widely accepted as the common benchmarking requirement for TinyML works. It prescribes basic accuracy targets along with suggested models (if benchmarking hardware) for 4 selected basic use cases for TinyML as shown in the table below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Use Case&lt;br /&gt;
!Dataset&lt;br /&gt;
!Suggested Model&lt;br /&gt;
!Quality Target&lt;br /&gt;
|-&lt;br /&gt;
|Visual Wakewords&lt;br /&gt;
|MSCOCO&lt;br /&gt;
|MobileNetv1&lt;br /&gt;
|80% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Keyword Spotting&lt;br /&gt;
|Google Speech Commands&lt;br /&gt;
|DS-CNN&lt;br /&gt;
|90% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Image Classification&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|ResNet&lt;br /&gt;
|85% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Anomaly Detection&lt;br /&gt;
|DCASE2020&lt;br /&gt;
|FC-Autoencoder&lt;br /&gt;
|85% Area under Curve&lt;br /&gt;
|}&lt;br /&gt;
Visual Wakewords is a classification task of telling whether or not a person is in a picture. This covers similar tasks where complex high-resolution data is provided but the conclusions required are simple.&lt;br /&gt;
&lt;br /&gt;
Anomaly detection is a similar task, where . This task covers cases where both the conclusions required and the input data are likely to be simple, but stakes are slightly higher where false positives and negatives must be minimized.&lt;br /&gt;
&lt;br /&gt;
= Efficient Software Models =&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Efficient Vision Models ===&lt;br /&gt;
Traditional ML techniques struggle most with high-dimension image classification tasks. This is the main task for which heavily parametrized resource-heavy neural networks are used. Additionally, similar architectures are applied to reinforcement learning (such as the one for AlphaZero)&amp;lt;ref&amp;gt;Silver, David, et al. &amp;quot;A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play.&amp;quot; Science 362.6419 (2018): 1140-1144.&amp;lt;/ref&amp;gt;, and so similar efficient architectures are needed for running RL clustering models.&lt;br /&gt;
&lt;br /&gt;
Shown below is a table summarizing the most efficient known vision models.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Notes&lt;br /&gt;
!Architecture&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Applied to&lt;br /&gt;
!Parameters&lt;br /&gt;
!#FLOPs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Residual Blocks &amp;amp; Skip Connections&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ResNet-18&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|85% (Wan et al.)&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |11M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |1800M&lt;br /&gt;
|-&lt;br /&gt;
|CIFAR-100&lt;br /&gt;
|82.3% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72.33%/91.8% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|Linear Bottleneck Blocks&lt;br /&gt;
|MobileNetv2&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72%&lt;br /&gt;
|3.5M&lt;br /&gt;
|300M&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Efficiently Scaled Model Depth &amp;amp; Width&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |EfficientNetB0&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|'''93.52% (Main Paper) (Transfer  Learning)'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |5.3M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |390M&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|'''77.1%/93.3% (Main Paper)'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Grouped Pointwise Convolutions&lt;br /&gt;
|kEffNet-B0 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.24%/71.92%&lt;br /&gt;
|0.64M&lt;br /&gt;
|129M&lt;br /&gt;
|-&lt;br /&gt;
|kMobileNet Large 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.74%/71.36%&lt;br /&gt;
|'''0.40M'''&lt;br /&gt;
|'''81M'''&lt;br /&gt;
|-&lt;br /&gt;
|Neural Architecture Search&lt;br /&gt;
|MCUNetv2M4&lt;br /&gt;
|ImageNet&lt;br /&gt;
|64.90%&lt;br /&gt;
|0.47M&lt;br /&gt;
|119M&lt;br /&gt;
|-&lt;br /&gt;
|Neural Architecture Search&lt;br /&gt;
|MCUNetv2H7&lt;br /&gt;
|ImageNet&lt;br /&gt;
|71.80%&lt;br /&gt;
|0.67M&lt;br /&gt;
|256M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Principles of Efficient Inference ===&lt;br /&gt;
Convolutional neural networks (CNNs) are widely used for any task with data that come with spatial relations, such as images or time-based data.&lt;br /&gt;
&lt;br /&gt;
Empirically, deeper networks (with more layers) are known to perform better on more complicated tasks &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;. However, making networks deeper had a limit where training them is no longer possible after a certain depth is reached. Models such as '''ResNet''' with sets of layers that skip connections (known as residual blocks) between layers was introduced to solve this problem allowing for extremely deep networks. &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Improving upon that, it was found with '''MobileNetv2''' that models with residual blocks that reduce and then expand the number of channels (known as bottleneck residuals or inverted residuals) allows networks to keep good performance with a much lower parameter count and number of operations.&amp;lt;ref&amp;gt;Sandler, Mark, et al. &amp;quot;Mobilenetv2: Inverted residuals and linear bottlenecks.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2018.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''EfficientNet''' was developed when researchers attempted to analyze how performance changes in the former networks as you vary parameters of the architecture, like the number of channels or the network depth. They found both ways to improve accuracy by scaling the network up and also ways to improve efficiency by scaling the network down in a way that preserves accuracy.&amp;lt;ref&amp;gt;Tan, Mingxing, and Quoc Le. &amp;quot;Efficientnet: Rethinking model scaling for convolutional neural networks.&amp;quot; ''International conference on machine learning''. PMLR, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Works this year ('''kEffNet, kMobileNet''') have found that applying old principles like grouped convolutions and pointwise convolutions to the recent efficient networks further reduce the needed parameters and float operations.  &amp;lt;ref&amp;gt;Schuler, Joao Paulo Schwarz, et al. &amp;quot;Grouped Pointwise Convolutions Reduce Parameters in Convolutional Neural Networks.&amp;quot; ''MENDEL''. Vol. 28. No. 1. 2022.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from those, NAS is an approach where heuristic algorithms are used to find accurate models with parameter count constraints ('''ProxylessNAS, MCUNet''') by efficiently estimating the probability of high accuracy (on a specific task) from a candidate model before training and optimizing search spaces.&amp;lt;ref&amp;gt;Lin, Ji, et al. &amp;quot;Mcunet: Tiny deep learning on iot devices.&amp;quot; ''Advances in Neural Information Processing Systems'' 33 (2020): 11711-11722.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Cai, Han, Ligeng Zhu, and Song Han. &amp;quot;Proxylessnas: Direct neural architecture search on target task and hardware.&amp;quot; ''arXiv preprint arXiv:1812.00332'' (2018).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Running efficient software in small hardware =&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Models demonstrated in microcontrollers ===&lt;br /&gt;
Microcontrollers are devices that can be used for IoT and also as wireless sensors. Works in the TinyML field tend to demonstrate their works on resource-constrained microcontrollers, the best of whom are summarized here.&lt;br /&gt;
&lt;br /&gt;
The table below summarizes the best demonstrations submitted to [https://mlcommons.org/en/inference-tiny-07/ MLCommons: Tiny Inference]. The most efficient work by far is by a digital accelerator, part of the open division, which used custom models (not the prescribed models) and special high level synthesis (HLS) on an FPGA, and is work by CERN. &amp;lt;ref&amp;gt;Borras, Hendrik, et al. &amp;quot;Open-source FPGA-ML codesign for the MLPerf Tiny Benchmark.&amp;quot; ''arXiv preprint arXiv:2206.11791'' (2022).&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Application'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Accuracy/AUC/Dist'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Inference Latency'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Energy Per Inference'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Software Stack'''&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |'''Device, Specs'''&lt;br /&gt;
|-&lt;br /&gt;
|'''Device'''&lt;br /&gt;
|'''CLK'''&lt;br /&gt;
|'''Memory + Secondary'''&lt;br /&gt;
|'''Processor'''&lt;br /&gt;
|'''Voltage'''&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80%&lt;br /&gt;
|151.63ms&lt;br /&gt;
|4.03mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |X-Cube-AI v.7.1.0&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Nucleo-U575ZI-Q&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |160 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |768k + 2M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V / SMPS&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85%&lt;br /&gt;
|158.13ms&lt;br /&gt;
|4.15mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90%&lt;br /&gt;
|54.81ms&lt;br /&gt;
|1.48mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|85%&lt;br /&gt;
|5.73ms&lt;br /&gt;
|0.152mJ&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80%&lt;br /&gt;
|186ms&lt;br /&gt;
|1.721mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs Gecko SDK/ TFLite  Micro&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs xG24-DK2601B&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |78 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |256k + 1.5M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33 w/ FPU + DSP +  TrustZone&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85%&lt;br /&gt;
|240ms&lt;br /&gt;
|2.248mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90%&lt;br /&gt;
|63.1ms&lt;br /&gt;
|0.611mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|85%&lt;br /&gt;
|5.41ms&lt;br /&gt;
|0.045mJ&lt;br /&gt;
|-&lt;br /&gt;
|'''CF10'''&lt;br /&gt;
|'''84.5%'''&lt;br /&gt;
|'''1.5ms'''&lt;br /&gt;
|'''2.535mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Xilinx PynqZ2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |100 MHz / 650 MHz&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |+ 128M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Dual Core ARM, Cortex-A9 MPCore&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''Speech Commands'''&lt;br /&gt;
|'''82.5%'''&lt;br /&gt;
|'''0.033ms'''&lt;br /&gt;
|'''0.0537mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''ToyADMOS Car'''&lt;br /&gt;
|83%&lt;br /&gt;
|'''0.019ms'''&lt;br /&gt;
|'''0.03mJ'''&lt;br /&gt;
|hls4ml&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
In addition to the above, [https://hanlab.mit.edu/ MIT's Han Lab] has a lot of MLPerfTiny-passing works demonstrated on very small microcontrollers, as tabulated below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!Accuracy&lt;br /&gt;
!Latency&lt;br /&gt;
!Software Stack&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory + Secondary&lt;br /&gt;
!Processor&lt;br /&gt;
!Voltage&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet1&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |INT4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ImageNet&lt;br /&gt;
|62&lt;br /&gt;
|&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; |TinyEngine&lt;br /&gt;
|STM32F412&lt;br /&gt;
|100 MHz&lt;br /&gt;
|256kB + 1M&lt;br /&gt;
|ARM32CM4&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|63.5&lt;br /&gt;
|&lt;br /&gt;
|STM32F746&lt;br /&gt;
|216 MHz&lt;br /&gt;
|320k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|65.9&lt;br /&gt;
|&lt;br /&gt;
|STM32F765&lt;br /&gt;
|216 MHz&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|70.7&lt;br /&gt;
|&lt;br /&gt;
|STM32H743&lt;br /&gt;
|480 MHz&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |VWW&lt;br /&gt;
|92&lt;br /&gt;
|880ms&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |STM32F746&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |216 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |320k + 1M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|88.7&lt;br /&gt;
|200ms&lt;br /&gt;
|-&lt;br /&gt;
|87&lt;br /&gt;
|100ms&lt;br /&gt;
|-&lt;br /&gt;
|INT8&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|96&lt;br /&gt;
|1105ms&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ImageNet&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |71.8&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|STM32H743&lt;br /&gt;
|480 MHz&lt;br /&gt;
|512k  + 2M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |STM32F412&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |100 MHz&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |256kB  + 1M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |ARM32CM4&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|64.9&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Online learning &amp;amp; Learning with little data =&lt;br /&gt;
As mentioned before, the AI model running on the WSN needs to be able to adapt to long-term changes in the sensing environment. To do this, one has to update the AI model based on new inputs. This puts special constraints on model requirements:&lt;br /&gt;
&lt;br /&gt;
# The AI must be able to do model updates in an unsupervised fashion, as it is infeasible to have labelled data on the edge.&lt;br /&gt;
# The AI and online learning algorithm pair must not overfit, or erroneously update to misclassified data. &lt;br /&gt;
# As training is known to be much more resource heavy than inference, the training algorithm must be efficient.&lt;br /&gt;
&lt;br /&gt;
Additionally, a major requirement of AI algorithms is the presence of large sets of data (labeled or unlabeled, depending on the application). For novel applications, the datasets may not yet exist such as for kinetic energy harvesting patterns for microelectromechanical (MEMS) harvesting nodes. There is a high work overhead with respect to deploying nodes to gather beforehand, and it will be hard to create effective AI that generalize from only loosely related public datasets.&lt;br /&gt;
&lt;br /&gt;
=== Transfer Learning &amp;amp; Classifier Fine Tuning ===&lt;br /&gt;
By pre-training a heavy feature extractor and a much lighter classifier on a general but difficult task (ImageNet 1000-class classification for vision networks, for example), and then further using this pre-trained network on an easier task, it can be made to converge (for the easier task) much faster with less data. &lt;br /&gt;
&lt;br /&gt;
This scheme can be made to use much less resources by freezing (not training) parameters of earlier layers (or maybe the feature extractor as a whole, if not using a DNN), as later layers are empirically found to contribute much better to accuracy. This scheme is demonstrated in Han Lab's MCUNetv3 &amp;lt;ref&amp;gt;Lin, Ji, et al. &amp;quot;On-Device Training Under 256KB Memory.&amp;quot; ''arXiv preprint arXiv:2206.15472'' (2022).&amp;lt;/ref&amp;gt;. By analyzing marginal accuracy gains from freezing different parameters, they found heuristics that train models to near-original performances with tight resource constraints (under 256kB memory).&lt;br /&gt;
&lt;br /&gt;
=== Federated Learning ===&lt;br /&gt;
A recent approach known as federated learning&amp;lt;ref&amp;gt;McMahan, Brendan, et al. &amp;quot;Communication-efficient learning of deep networks from decentralized data.&amp;quot; ''Artificial intelligence and statistics''. PMLR, 2017.&amp;lt;/ref&amp;gt; was put forth to solve privacy issues when training deep neural network (DNN) models, but can also be applied. By aggregating local updates to model parameters in a central host, a powerful trained model can be created in the host which can then distribute the better model.&lt;br /&gt;
&lt;br /&gt;
== Simulation Methodologies ==&lt;br /&gt;
To confirm the applicability principles of efficient inference, learning and distributed processing, we can run simulations and measure memory footprint, communication overhead, and number of multiply-add operations needed. From the available ML frameworks, we use [https://pytorch.org/ PyTorch] because that’s what UCL uses.&lt;br /&gt;
&lt;br /&gt;
To run a federated learning (distributed processing) simulation, one can do the following:&lt;br /&gt;
&lt;br /&gt;
* Host multiple Pytorch models&lt;br /&gt;
* Give separate data batches to each model&lt;br /&gt;
* Send the gradients from those models to train a global model (optionally, with a selection methodology)&lt;br /&gt;
* Aggregate gradients of each model (through also some methodology)&lt;br /&gt;
&lt;br /&gt;
To compare, one can run a baseline model trained using all batches alone. The metrics to analyze are:&lt;br /&gt;
&lt;br /&gt;
# Loss function convergence speed&lt;br /&gt;
# Final accuracy&lt;br /&gt;
# Total communication overhead (in MB)&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=MOSAIC&amp;diff=490</id>
		<title>MOSAIC</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=MOSAIC&amp;diff=490"/>
		<updated>2022-11-16T13:49:29Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:MOSAIC Logo Desc.png|center|frameless|710x710px]]&lt;br /&gt;
The [https://www.mosaic-ic.org/ Modular Open-source Analog IC Design (MOSAIC) community] and projects involve connecting all independent parties working on automated analog design frameworks and workflows to “touch base”- to share the ideas and developments that had previously been fragmented and largely independent. MOSAIC aims to create a structured and modular development environment for analog generators using open-source tools.&lt;br /&gt;
&lt;br /&gt;
Affiliated projects include:&lt;br /&gt;
&lt;br /&gt;
* '''Layout with Gridded Objects 2 :''' LAYGO2 (c) Hanyang University NiftyLab&lt;br /&gt;
** SKY130 version: https://github.com/niftylab/laygo2_workspace_sky130&lt;br /&gt;
** Core: [https://github.com/niftylab/laygo2/tree/master https://github.com/niftylab/laygo2/]&lt;br /&gt;
* '''AnalogBase :''' mosaic-BAG2 (c) (1) University Aalto &amp;amp; SAL (2) Thomas Parry &amp;amp; Matthias Koefferlein&lt;br /&gt;
** https://gitlab.com/mosaic_group/mosaic_BAG&lt;br /&gt;
** Being developed to work with either proprietary PDKs &amp;amp; tools or OS tools: XSchem, NGSpice, KLayout.&lt;br /&gt;
* '''Berkeley Analog Generator 3 enabled for open source tools:''' OS BAG3 (c) IFAT &amp;amp; SAL, Thomas Parry&lt;br /&gt;
** https://gitlab.com/mosaic_group/mosaic_BAG3&lt;br /&gt;
* '''Framework for integrating Python and SKILL code within Cadence''' : Virtue (c) Cascode Labs&lt;br /&gt;
** https://www.cascode-labs.org/virtue/&lt;br /&gt;
&lt;br /&gt;
MOSAIC also has a community [https://www.youtube.com/channel/UCo1m8CuVbyYCGUxesiVKZAQ/videos YouTube channel here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tutorials on MOSAIC tools for CIDR:&lt;br /&gt;
&lt;br /&gt;
* '''[https://docs.google.com/document/d/e/2PACX-1vQUUwd1l8Vq8vQ7_z-utXPB7EZUYWr4SRfwNDlXh6xqtEUwPG4qZLAvLRTbS-izRA/pub LAYGO2 Tutorial]'''&lt;br /&gt;
* '''[https://docs.google.com/document/d/e/2PACX-1vTDHiNjf25WV7PHDefFmsB5pgy_zAyT2Naku0Ly-UDFJzvUmKNLRPS1FPW4dwfyDA/pub AnalogBase Tutorial]'''&lt;br /&gt;
** [[Layout script for NAND gate]]. This is part of the AnalogBase tutorial.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=MOSAIC&amp;diff=487</id>
		<title>MOSAIC</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=MOSAIC&amp;diff=487"/>
		<updated>2022-11-16T12:03:46Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: community&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:MOSAIC Logo Desc.png|center|frameless|710x710px]]&lt;br /&gt;
The [https://www.mosaic-ic.org/ Modular Open-source Analog IC Design (MOSAIC) community] and projects involve connecting all independent parties working on automated analog design frameworks and workflows to “touch base”- to share the ideas and developments that had previously been fragmented and largely independent. MOSAIC aims to create a structured and modular development environment for analog generators using open-source tools.&lt;br /&gt;
&lt;br /&gt;
Affiliated projects include:&lt;br /&gt;
&lt;br /&gt;
* '''Layout with Gridded Objects 2 :''' LAYGO2 (c) Hanyang University NiftyLab&lt;br /&gt;
** SKY130 version: https://github.com/niftylab/laygo2_workspace_sky130&lt;br /&gt;
** Core: [https://github.com/niftylab/laygo2/tree/master https://github.com/niftylab/laygo2/]&lt;br /&gt;
* '''AnalogBase :''' mosaic-BAG2 (c) IFAT &amp;amp; SAL, Thomas Parry&lt;br /&gt;
** https://gitlab.com/mosaic_group/mosaic_BAG&lt;br /&gt;
** Being developed to work with OS tools: XSchem, NGSpice, KLayout.&lt;br /&gt;
* '''Berkeley Analog Generator 3 enabled for open source tools:''' OS BAG3 (c) IFAT &amp;amp; SAL, Thomas Parry&lt;br /&gt;
** https://gitlab.com/mosaic_group/mosaic_BAG3&lt;br /&gt;
* '''Framework for integrating Python and SKILL code within Cadence''' : Virtue (c) Cascode Labs&lt;br /&gt;
** https://www.cascode-labs.org/virtue/&lt;br /&gt;
&lt;br /&gt;
MOSAIC also has a community [https://www.youtube.com/channel/UCo1m8CuVbyYCGUxesiVKZAQ/videos YouTube channel here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tutorials on MOSAIC tools for CIDR:&lt;br /&gt;
&lt;br /&gt;
* '''[https://docs.google.com/document/d/e/2PACX-1vQUUwd1l8Vq8vQ7_z-utXPB7EZUYWr4SRfwNDlXh6xqtEUwPG4qZLAvLRTbS-izRA/pub LAYGO2 Tutorial]'''&lt;br /&gt;
* '''AnalogBase Tutorial'''&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=MOSAIC&amp;diff=479</id>
		<title>MOSAIC</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=MOSAIC&amp;diff=479"/>
		<updated>2022-11-14T06:54:47Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: init&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:MOSAIC Logo Desc.png|center|frameless|710x710px]]&lt;br /&gt;
The [https://www.mosaic-ic.org/ Modular Open-source Analog IC Design (MOSAIC) community] and projects involve connecting all independent parties working on automated analog design frameworks and workflows to “touch base”- to share the ideas and developments that had previously been fragmented and largely independent. MOSAIC aims to create a structured and modular development environment for analog generators using open-source tools.&lt;br /&gt;
&lt;br /&gt;
Affiliated projects include:&lt;br /&gt;
&lt;br /&gt;
* '''Layout with Gridded Objects 2 :''' LAYGO2 (c) Hanyang University NiftyLab&lt;br /&gt;
** SKY130 version: https://github.com/niftylab/laygo2_workspace_sky130&lt;br /&gt;
** Core: [https://github.com/niftylab/laygo2/tree/master https://github.com/niftylab/laygo2/]&lt;br /&gt;
* '''AnalogBase :''' mosaic-BAG2 (c) IFAT &amp;amp; SAL, Thomas Parry&lt;br /&gt;
** https://gitlab.com/mosaic_group/mosaic_BAG&lt;br /&gt;
** Being developed to work with OS tools: XSchem, NGSpice, KLayout.&lt;br /&gt;
* '''Berkeley Analog Generator 3 enabled for open source tools:''' OS BAG3 (c) IFAT &amp;amp; SAL, Thomas Parry&lt;br /&gt;
** https://gitlab.com/mosaic_group/mosaic_BAG3&lt;br /&gt;
* '''Framework for integrating Python and SKILL code within Cadence''' : Virtue (c) Cascode Labs&lt;br /&gt;
** https://www.cascode-labs.org/virtue/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tutorials on MOSAIC tools for CIDR:&lt;br /&gt;
&lt;br /&gt;
* '''[https://docs.google.com/document/d/e/2PACX-1vQUUwd1l8Vq8vQ7_z-utXPB7EZUYWr4SRfwNDlXh6xqtEUwPG4qZLAvLRTbS-izRA/pub LAYGO2 Tutorial]'''&lt;br /&gt;
* '''AnalogBase Tutorial'''&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=File:MOSAIC_Logo_Desc.png&amp;diff=478</id>
		<title>File:MOSAIC Logo Desc.png</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=File:MOSAIC_Logo_Desc.png&amp;diff=478"/>
		<updated>2022-11-14T06:37:00Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MOSAIC Logo Desc&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=451</id>
		<title>Distributed learning</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=451"/>
		<updated>2022-11-08T03:12:11Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: Added simulation methodologies&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Distributed Machine Learning}}&lt;br /&gt;
&lt;br /&gt;
The use of artificial intelligence (AI) in extreme edge devices such as wireless sensor nodes (WSNs) will greatly benefit its scalability and application space. AI can be applied to solve problems with clustering, data routing, and most importantly it can be used to reduce the volume of data transmission via data compression or making conclusions from data within the node itself &amp;lt;ref&amp;gt;Alsheikh, Mohammad Abu, et al. &amp;quot;Machine learning in wireless sensor networks: Algorithms, strategies, and applications.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 16.4 (2014): 1996-2018.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
At the moment, potential use cases for ML in WSN include, but are not limited to:&lt;br /&gt;
&lt;br /&gt;
# General Pattern Classification (including recognizing speech commands, voice recognition for authentication, bio-signal processing for medical sensors)&lt;br /&gt;
# Image Processing (including presence detection a.k.a. visual wake words, car counting for traffic analytics)&lt;br /&gt;
# Node routing and scheduling to improve network scalability and lifespan (through the use of RL, see more in [[Clustering and routing|clustering]]). &lt;br /&gt;
&lt;br /&gt;
However, since devices in the extreme edge are constrained to work with extremely low amounts of energy &amp;lt;ref&amp;gt;Ma, Dong, et al. &amp;quot;Sensing, computing, and communications for energy harvesting iots: A survey.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 22.2 (2019): 1222-1250.&amp;lt;/ref&amp;gt;, even the simplest AI models are difficult to execute with typical sequential processors. WSNs have memories in the order of kB and clock speeds in the order of kHz to MHz due to energy constraints, rendering them unable to run state-of-the art AI applications.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Reference WSN Project&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory&lt;br /&gt;
!Secondary Memory&lt;br /&gt;
!Processor&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v1&lt;br /&gt;
|Digi XBee-Pro, TI MSP430F213&lt;br /&gt;
|16MHz&lt;br /&gt;
|512B&lt;br /&gt;
|8KB+256B&lt;br /&gt;
|16-bit MSP-430&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v2&lt;br /&gt;
|ATSAMR21&lt;br /&gt;
|&amp;lt;48MHz&lt;br /&gt;
|32KB&lt;br /&gt;
|256KB&lt;br /&gt;
|ARM32-Cortex M0&lt;br /&gt;
|}&lt;br /&gt;
To contrast with the above specs, the TinyML recommended model to classify CIFAR-10 has 3.5MB parameters. &lt;br /&gt;
&lt;br /&gt;
Apart from the above constraints, WSNs running AI are placed in potentially changing environments that are potentially different from the environment in which the AI was trained. This is a problem known as concept drift. AI algorithms running on WSN need to be able to work regardless of continuously changing patterns using concepts such as online learning.&lt;br /&gt;
&lt;br /&gt;
Zhou '21 describes edge AI as using widespread edge resources to gain AI insight. This means not only running an AI algorithm on one node, but potentially cooperatively running inference and training on multiple nodes. There are several degrees to the concept, ranging from training and inference in the server, training in the server but inference in the node, and running both training and inference on the node itself. Ideally, for the highest scalability and lowest communication overhead, training and inference ideally take place in the nodes.&lt;br /&gt;
[[File:Concept Map of Distributed Machine Learning for WSN 2.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
== TinyML and accepted benchmarks for Edge AI ==&lt;br /&gt;
The [https://www.tinyml.org/ TinyML organization] describes tinyML as the &amp;quot;field of machine learning technologies and applications including hardware, algorithms and software capable of performing on-device sensor data analytics at extremely low power, typically in the mW range and below, and hence enabling a variety of always-on use-cases and targeting battery operated devices&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
MLPerfTiny&amp;lt;ref&amp;gt;Banbury, Colby, et al. &amp;quot;Mlperf tiny benchmark.&amp;quot; ''arXiv preprint arXiv:2106.07597'' (2021).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ref&amp;gt; is widely accepted as the common benchmarking requirement for TinyML works. It prescribes basic accuracy targets along with suggested models (if benchmarking hardware) for 4 selected basic use cases for TinyML as shown in the table below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Use Case&lt;br /&gt;
!Dataset&lt;br /&gt;
!Suggested Model&lt;br /&gt;
!Quality Target&lt;br /&gt;
|-&lt;br /&gt;
|Visual Wakewords&lt;br /&gt;
|MSCOCO&lt;br /&gt;
|MobileNetv1&lt;br /&gt;
|80% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Keyword Spotting&lt;br /&gt;
|Google Speech Commands&lt;br /&gt;
|DS-CNN&lt;br /&gt;
|90% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Image Classification&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|ResNet&lt;br /&gt;
|85% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Anomaly Detection&lt;br /&gt;
|DCASE2020&lt;br /&gt;
|FC-Autoencoder&lt;br /&gt;
|85% Area under Curve&lt;br /&gt;
|}&lt;br /&gt;
Visual Wakewords is a classification task of telling whether or not a person is in a picture. This covers similar tasks where complex high-resolution data is provided but the conclusions required are simple.&lt;br /&gt;
&lt;br /&gt;
Anomaly detection is a similar task, where . This task covers cases where both the conclusions required and the input data are likely to be simple, but stakes are slightly higher where false positives and negatives must be minimized.&lt;br /&gt;
&lt;br /&gt;
= Efficient Software Models =&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Efficient Vision Models ===&lt;br /&gt;
Traditional ML techniques struggle most with high-dimension image classification tasks. This is the main task for which heavily parametrized resource-heavy neural networks are used. Additionally, similar architectures are applied to reinforcement learning (such as the one for AlphaZero)&amp;lt;ref&amp;gt;Silver, David, et al. &amp;quot;A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play.&amp;quot; Science 362.6419 (2018): 1140-1144.&amp;lt;/ref&amp;gt;, and so similar efficient architectures are needed for running RL clustering models.&lt;br /&gt;
&lt;br /&gt;
Shown below is a table summarizing the most efficient known vision models.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Notes&lt;br /&gt;
!Architecture&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Applied to&lt;br /&gt;
!Parameters&lt;br /&gt;
!#FLOPs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Deep Residual Learning&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ResNet-18&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|85% (Wan et al.)&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |11M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |1800M&lt;br /&gt;
|-&lt;br /&gt;
|CIFAR-100&lt;br /&gt;
|82.3% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72.33%/91.8% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|MobileNet&lt;br /&gt;
|MobileNetv2&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72%&lt;br /&gt;
|3.5M&lt;br /&gt;
|300M&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Baseline Effnet&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |EfficientNetB0&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|'''93.52% (Main Paper) (Transfer  Learning)'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |5.3M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |390M&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|'''77.1%/93.3% (Main Paper)'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Grouped  Pointwise Convolutions&lt;br /&gt;
|kEffNet-B0 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.24%/71.92%&lt;br /&gt;
|0.64M&lt;br /&gt;
|129M&lt;br /&gt;
|-&lt;br /&gt;
|kMobileNet Large 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.74%/71.36%&lt;br /&gt;
|'''0.40M'''&lt;br /&gt;
|'''81M'''&lt;br /&gt;
|-&lt;br /&gt;
|Patch-based Inference&lt;br /&gt;
|MCUNetv2M4&lt;br /&gt;
|ImageNet&lt;br /&gt;
|64.90%&lt;br /&gt;
|0.47M&lt;br /&gt;
|119M&lt;br /&gt;
|-&lt;br /&gt;
|Patch-based Inference&lt;br /&gt;
|MCUNetv2H7&lt;br /&gt;
|ImageNet&lt;br /&gt;
|71.80%&lt;br /&gt;
|0.67M&lt;br /&gt;
|256M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Principles of Efficient Inference ===&lt;br /&gt;
Convolutional neural networks (CNNs) are widely used for any task with data that come with spatial relations, such as images or time-based data.&lt;br /&gt;
&lt;br /&gt;
Empirically, deeper networks (with more layers) are known to perform better on more complicated tasks &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;. However, making networks deeper had a limit where training them is no longer possible after a certain depth is reached. Models such as '''ResNet''' with sets of layers that skip connections (known as residual blocks) between layers was introduced to solve this problem allowing for extremely deep networks. &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Improving upon that, it was found with '''MobileNetv2''' that models with residual blocks that reduce and then expand the number of channels (known as bottleneck residuals or inverted residuals) allows networks to keep good performance with a much lower parameter count and number of operations.&amp;lt;ref&amp;gt;Sandler, Mark, et al. &amp;quot;Mobilenetv2: Inverted residuals and linear bottlenecks.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2018.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''EfficientNet''' was developed when researchers attempted to analyze how performance changes in the former networks as you vary parameters of the architecture, like the number of channels or the network depth. They found both ways to improve accuracy by scaling the network up and also ways to improve efficiency by scaling the network down in a way that preserves accuracy.&amp;lt;ref&amp;gt;Tan, Mingxing, and Quoc Le. &amp;quot;Efficientnet: Rethinking model scaling for convolutional neural networks.&amp;quot; ''International conference on machine learning''. PMLR, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Works this year ('''kEffNet, kMobileNet''') have found that applying old principles like grouped convolutions and pointwise convolutions to the recent efficient networks further reduce the needed parameters and float operations.  &amp;lt;ref&amp;gt;Schuler, Joao Paulo Schwarz, et al. &amp;quot;Grouped Pointwise Convolutions Reduce Parameters in Convolutional Neural Networks.&amp;quot; ''MENDEL''. Vol. 28. No. 1. 2022.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from those, NAS is an approach where heuristic algorithms are used to find accurate models with parameter count constraints ('''ProxylessNAS, MCUNet''') by efficiently estimating the probability of high accuracy (on a specific task) from a candidate model before training and optimizing search spaces.&amp;lt;ref&amp;gt;Lin, Ji, et al. &amp;quot;Mcunet: Tiny deep learning on iot devices.&amp;quot; ''Advances in Neural Information Processing Systems'' 33 (2020): 11711-11722.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Cai, Han, Ligeng Zhu, and Song Han. &amp;quot;Proxylessnas: Direct neural architecture search on target task and hardware.&amp;quot; ''arXiv preprint arXiv:1812.00332'' (2018).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Running efficient software in small hardware =&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Models demonstrated in microcontrollers ===&lt;br /&gt;
Microcontrollers are devices that can be used for IoT and also as wireless sensors. Works in the TinyML field tend to demonstrate their works on resource-constrained microcontrollers, the best of whom are summarized here.&lt;br /&gt;
&lt;br /&gt;
The table below summarizes the best demonstrations submitted to [https://mlcommons.org/en/inference-tiny-07/ MLCommons: Tiny Inference]. The most efficient work by far is by a digital accelerator, part of the open division, which used custom models (not the prescribed models) and special high level synthesis (HLS) on an FPGA, and is work by CERN. &amp;lt;ref&amp;gt;Borras, Hendrik, et al. &amp;quot;Open-source FPGA-ML codesign for the MLPerf Tiny Benchmark.&amp;quot; ''arXiv preprint arXiv:2206.11791'' (2022).&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Application'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Accuracy/AUC/Dist'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Inference Latency'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Energy Per Inference'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Software Stack'''&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |'''Device, Specs'''&lt;br /&gt;
|-&lt;br /&gt;
|'''Device'''&lt;br /&gt;
|'''CLK'''&lt;br /&gt;
|'''Memory + Secondary'''&lt;br /&gt;
|'''Processor'''&lt;br /&gt;
|'''Voltage'''&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80%&lt;br /&gt;
|151.63ms&lt;br /&gt;
|4.03mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |X-Cube-AI v.7.1.0&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Nucleo-U575ZI-Q&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |160 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |768k + 2M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V / SMPS&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85%&lt;br /&gt;
|158.13ms&lt;br /&gt;
|4.15mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90%&lt;br /&gt;
|54.81ms&lt;br /&gt;
|1.48mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|85%&lt;br /&gt;
|5.73ms&lt;br /&gt;
|0.152mJ&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80%&lt;br /&gt;
|186ms&lt;br /&gt;
|1.721mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs Gecko SDK/ TFLite  Micro&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs xG24-DK2601B&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |78 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |256k + 1.5M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33 w/ FPU + DSP +  TrustZone&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85%&lt;br /&gt;
|240ms&lt;br /&gt;
|2.248mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90%&lt;br /&gt;
|63.1ms&lt;br /&gt;
|0.611mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|85%&lt;br /&gt;
|5.41ms&lt;br /&gt;
|0.045mJ&lt;br /&gt;
|-&lt;br /&gt;
|'''CF10'''&lt;br /&gt;
|'''84.5%'''&lt;br /&gt;
|'''1.5ms'''&lt;br /&gt;
|'''2.535mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Xilinx PynqZ2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |100 MHz / 650 MHz&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |+ 128M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Dual Core ARM, Cortex-A9 MPCore&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''Speech Commands'''&lt;br /&gt;
|'''82.5%'''&lt;br /&gt;
|'''0.033ms'''&lt;br /&gt;
|'''0.0537mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''ToyADMOS Car'''&lt;br /&gt;
|83%&lt;br /&gt;
|'''0.019ms'''&lt;br /&gt;
|'''0.03mJ'''&lt;br /&gt;
|hls4ml&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
In addition to the above, [https://hanlab.mit.edu/ MIT's Han Lab] has a lot of MLPerfTiny-passing works demonstrated on very small microcontrollers, as tabulated below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!Accuracy&lt;br /&gt;
!Latency&lt;br /&gt;
!Software Stack&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory + Secondary&lt;br /&gt;
!Processor&lt;br /&gt;
!Voltage&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet1&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |INT4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ImageNet&lt;br /&gt;
|62&lt;br /&gt;
|&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; |TinyEngine&lt;br /&gt;
|STM32F412&lt;br /&gt;
|100 MHz&lt;br /&gt;
|256kB + 1M&lt;br /&gt;
|ARM32CM4&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|63.5&lt;br /&gt;
|&lt;br /&gt;
|STM32F746&lt;br /&gt;
|216 MHz&lt;br /&gt;
|320k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|65.9&lt;br /&gt;
|&lt;br /&gt;
|STM32F765&lt;br /&gt;
|216 MHz&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|70.7&lt;br /&gt;
|&lt;br /&gt;
|STM32H743&lt;br /&gt;
|480 MHz&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |VWW&lt;br /&gt;
|92&lt;br /&gt;
|880ms&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |STM32F746&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |216 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |320k + 1M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|88.7&lt;br /&gt;
|200ms&lt;br /&gt;
|-&lt;br /&gt;
|87&lt;br /&gt;
|100ms&lt;br /&gt;
|-&lt;br /&gt;
|INT8&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|96&lt;br /&gt;
|1105ms&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ImageNet&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |71.8&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|STM32H743&lt;br /&gt;
|480 MHz&lt;br /&gt;
|512k  + 2M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |STM32F412&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |100 MHz&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |256kB  + 1M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |ARM32CM4&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|64.9&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Online learning &amp;amp; Learning with little data =&lt;br /&gt;
As mentioned before, the AI model running on the WSN needs to be able to adapt to long-term changes in the sensing environment. To do this, one has to update the AI model based on new inputs. This puts special constraints on model requirements:&lt;br /&gt;
&lt;br /&gt;
# The AI must be able to do model updates in an unsupervised fashion, as it is infeasible to have labelled data on the edge.&lt;br /&gt;
# The AI and online learning algorithm pair must not overfit, or erroneously update to misclassified data. &lt;br /&gt;
# As training is known to be much more resource heavy than inference, the training algorithm must be efficient.&lt;br /&gt;
&lt;br /&gt;
Additionally, a major requirement of AI algorithms is the presence of large sets of data (labeled or unlabeled, depending on the application). For novel applications, the datasets may not yet exist such as for kinetic energy harvesting patterns for microelectromechanical (MEMS) harvesting nodes. There is a high work overhead with respect to deploying nodes to gather beforehand, and it will be hard to create effective AI that generalize from only loosely related public datasets.&lt;br /&gt;
&lt;br /&gt;
=== Transfer Learning &amp;amp; Classifier Fine Tuning ===&lt;br /&gt;
By pre-training a heavy feature extractor and a much lighter classifier on a general but difficult task (ImageNet 1000-class classification for vision networks, for example), and then further using this pre-trained network on an easier task, it can be made to converge (for the easier task) much faster with less data. &lt;br /&gt;
&lt;br /&gt;
This scheme can be made to use much less resources by freezing (not training) parameters of earlier layers (or maybe the feature extractor as a whole, if not using a DNN), as later layers are empirically found to contribute much better to accuracy. This scheme is demonstrated in Han Lab's MCUNetv3 &amp;lt;ref&amp;gt;Lin, Ji, et al. &amp;quot;On-Device Training Under 256KB Memory.&amp;quot; ''arXiv preprint arXiv:2206.15472'' (2022).&amp;lt;/ref&amp;gt;. By analyzing marginal accuracy gains from freezing different parameters, they found heuristics that train models to near-original performances with tight resource constraints (under 256kB memory).&lt;br /&gt;
&lt;br /&gt;
=== Federated Learning ===&lt;br /&gt;
A recent approach known as federated learning&amp;lt;ref&amp;gt;McMahan, Brendan, et al. &amp;quot;Communication-efficient learning of deep networks from decentralized data.&amp;quot; ''Artificial intelligence and statistics''. PMLR, 2017.&amp;lt;/ref&amp;gt; was put forth to solve privacy issues when training deep neural network (DNN) models, but can also be applied. By aggregating local updates to model parameters in a central host, a powerful trained model can be created in the host which can then distribute the better model.&lt;br /&gt;
&lt;br /&gt;
== Simulation Methodologies ==&lt;br /&gt;
To confirm the applicability principles of efficient inference, learning and distributed processing, we can run simulations and measure memory footprint, communication overhead, and number of multiply-add operations needed. From the available ML frameworks, we use [https://pytorch.org/ PyTorch] because that’s what UCL uses.&lt;br /&gt;
&lt;br /&gt;
To run a federated learning (distributed processing) simulation, one can do the following:&lt;br /&gt;
&lt;br /&gt;
* Host multiple Pytorch models&lt;br /&gt;
* Give separate data batches to each model&lt;br /&gt;
* Send the gradients from those models to train a global model (optionally, with a selection methodology)&lt;br /&gt;
* Aggregate gradients of each model (through also some methodology)&lt;br /&gt;
&lt;br /&gt;
To compare, one can run a baseline model trained using all batches alone. The metrics to analyze are:&lt;br /&gt;
&lt;br /&gt;
# Loss function convergence speed&lt;br /&gt;
# Final accuracy&lt;br /&gt;
# Total communication overhead (in MB)&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=450</id>
		<title>Distributed learning</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=450"/>
		<updated>2022-11-08T01:31:52Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: /* State of the Art: Models demonstrated in microcontrollers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Distributed Machine Learning}}&lt;br /&gt;
&lt;br /&gt;
The use of artificial intelligence (AI) in extreme edge devices such as wireless sensor nodes (WSNs) will greatly benefit its scalability and application space. AI can be applied to solve problems with clustering, data routing, and most importantly it can be used to reduce the volume of data transmission via data compression or making conclusions from data within the node itself &amp;lt;ref&amp;gt;Alsheikh, Mohammad Abu, et al. &amp;quot;Machine learning in wireless sensor networks: Algorithms, strategies, and applications.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 16.4 (2014): 1996-2018.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
At the moment, potential use cases for ML in WSN include, but are not limited to:&lt;br /&gt;
&lt;br /&gt;
# General Pattern Classification (including recognizing speech commands, voice recognition for authentication, bio-signal processing for medical sensors)&lt;br /&gt;
# Image Processing (including presence detection a.k.a. visual wake words, car counting for traffic analytics)&lt;br /&gt;
# Node routing and scheduling to improve network scalability and lifespan (through the use of RL, see more in [[Clustering and routing|clustering]]). &lt;br /&gt;
&lt;br /&gt;
However, since devices in the extreme edge are constrained to work with extremely low amounts of energy &amp;lt;ref&amp;gt;Ma, Dong, et al. &amp;quot;Sensing, computing, and communications for energy harvesting iots: A survey.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 22.2 (2019): 1222-1250.&amp;lt;/ref&amp;gt;, even the simplest AI models are difficult to execute with typical sequential processors. WSNs have memories in the order of kB and clock speeds in the order of kHz to MHz due to energy constraints, rendering them unable to run state-of-the art AI applications.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Reference WSN Project&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory&lt;br /&gt;
!Secondary Memory&lt;br /&gt;
!Processor&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v1&lt;br /&gt;
|Digi XBee-Pro, TI MSP430F213&lt;br /&gt;
|16MHz&lt;br /&gt;
|512B&lt;br /&gt;
|8KB+256B&lt;br /&gt;
|16-bit MSP-430&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v2&lt;br /&gt;
|ATSAMR21&lt;br /&gt;
|&amp;lt;48MHz&lt;br /&gt;
|32KB&lt;br /&gt;
|256KB&lt;br /&gt;
|ARM32-Cortex M0&lt;br /&gt;
|}&lt;br /&gt;
To contrast with the above specs, the TinyML recommended model to classify CIFAR-10 has 3.5MB parameters. &lt;br /&gt;
&lt;br /&gt;
Apart from the above constraints, WSNs running AI are placed in potentially changing environments that are potentially different from the environment in which the AI was trained. This is a problem known as concept drift. AI algorithms running on WSN need to be able to work regardless of continuously changing patterns using concepts such as online learning.&lt;br /&gt;
&lt;br /&gt;
Zhou '21 describes edge AI as using widespread edge resources to gain AI insight. This means not only running an AI algorithm on one node, but potentially cooperatively running inference and training on multiple nodes. There are several degrees to the concept, ranging from training and inference in the server, training in the server but inference in the node, and running both training and inference on the node itself. Ideally, for the highest scalability and lowest communication overhead, training and inference ideally take place in the nodes.&lt;br /&gt;
[[File:Concept Map of Distributed Machine Learning for WSN 2.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
== TinyML and accepted benchmarks for Edge AI ==&lt;br /&gt;
The [https://www.tinyml.org/ TinyML organization] describes tinyML as the &amp;quot;field of machine learning technologies and applications including hardware, algorithms and software capable of performing on-device sensor data analytics at extremely low power, typically in the mW range and below, and hence enabling a variety of always-on use-cases and targeting battery operated devices&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
MLPerfTiny&amp;lt;ref&amp;gt;Banbury, Colby, et al. &amp;quot;Mlperf tiny benchmark.&amp;quot; ''arXiv preprint arXiv:2106.07597'' (2021).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ref&amp;gt; is widely accepted as the common benchmarking requirement for TinyML works. It prescribes basic accuracy targets along with suggested models (if benchmarking hardware) for 4 selected basic use cases for TinyML as shown in the table below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Use Case&lt;br /&gt;
!Dataset&lt;br /&gt;
!Suggested Model&lt;br /&gt;
!Quality Target&lt;br /&gt;
|-&lt;br /&gt;
|Visual Wakewords&lt;br /&gt;
|MSCOCO&lt;br /&gt;
|MobileNetv1&lt;br /&gt;
|80% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Keyword Spotting&lt;br /&gt;
|Google Speech Commands&lt;br /&gt;
|DS-CNN&lt;br /&gt;
|90% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Image Classification&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|ResNet&lt;br /&gt;
|85% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Anomaly Detection&lt;br /&gt;
|DCASE2020&lt;br /&gt;
|FC-Autoencoder&lt;br /&gt;
|85% Area under Curve&lt;br /&gt;
|}&lt;br /&gt;
Visual Wakewords is a classification task of telling whether or not a person is in a picture. This covers similar tasks where complex high-resolution data is provided but the conclusions required are simple.&lt;br /&gt;
&lt;br /&gt;
Anomaly detection is a similar task, where . This task covers cases where both the conclusions required and the input data are likely to be simple, but stakes are slightly higher where false positives and negatives must be minimized.&lt;br /&gt;
&lt;br /&gt;
= Efficient Software Models =&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Efficient Vision Models ===&lt;br /&gt;
Traditional ML techniques struggle most with high-dimension image classification tasks. This is the main task for which heavily parametrized resource-heavy neural networks are used. Additionally, similar architectures are applied to reinforcement learning (such as the one for AlphaZero)&amp;lt;ref&amp;gt;Silver, David, et al. &amp;quot;A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play.&amp;quot; Science 362.6419 (2018): 1140-1144.&amp;lt;/ref&amp;gt;, and so similar efficient architectures are needed for running RL clustering models.&lt;br /&gt;
&lt;br /&gt;
Shown below is a table summarizing the most efficient known vision models.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Notes&lt;br /&gt;
!Architecture&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Applied to&lt;br /&gt;
!Parameters&lt;br /&gt;
!#FLOPs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Deep Residual Learning&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ResNet-18&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|85% (Wan et al.)&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |11M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |1800M&lt;br /&gt;
|-&lt;br /&gt;
|CIFAR-100&lt;br /&gt;
|82.3% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72.33%/91.8% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|MobileNet&lt;br /&gt;
|MobileNetv2&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72%&lt;br /&gt;
|3.5M&lt;br /&gt;
|300M&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Baseline Effnet&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |EfficientNetB0&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|'''93.52% (Main Paper) (Transfer  Learning)'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |5.3M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |390M&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|'''77.1%/93.3% (Main Paper)'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Grouped  Pointwise Convolutions&lt;br /&gt;
|kEffNet-B0 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.24%/71.92%&lt;br /&gt;
|0.64M&lt;br /&gt;
|129M&lt;br /&gt;
|-&lt;br /&gt;
|kMobileNet Large 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.74%/71.36%&lt;br /&gt;
|'''0.40M'''&lt;br /&gt;
|'''81M'''&lt;br /&gt;
|-&lt;br /&gt;
|Patch-based Inference&lt;br /&gt;
|MCUNetv2M4&lt;br /&gt;
|ImageNet&lt;br /&gt;
|64.90%&lt;br /&gt;
|0.47M&lt;br /&gt;
|119M&lt;br /&gt;
|-&lt;br /&gt;
|Patch-based Inference&lt;br /&gt;
|MCUNetv2H7&lt;br /&gt;
|ImageNet&lt;br /&gt;
|71.80%&lt;br /&gt;
|0.67M&lt;br /&gt;
|256M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Principles of Efficient Inference ===&lt;br /&gt;
Convolutional neural networks (CNNs) are widely used for any task with data that come with spatial relations, such as images or time-based data.&lt;br /&gt;
&lt;br /&gt;
Empirically, deeper networks (with more layers) are known to perform better on more complicated tasks &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;. However, making networks deeper had a limit where training them is no longer possible after a certain depth is reached. Models such as '''ResNet''' with sets of layers that skip connections (known as residual blocks) between layers was introduced to solve this problem allowing for extremely deep networks. &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Improving upon that, it was found with '''MobileNetv2''' that models with residual blocks that reduce and then expand the number of channels (known as bottleneck residuals or inverted residuals) allows networks to keep good performance with a much lower parameter count and number of operations.&amp;lt;ref&amp;gt;Sandler, Mark, et al. &amp;quot;Mobilenetv2: Inverted residuals and linear bottlenecks.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2018.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''EfficientNet''' was developed when researchers attempted to analyze how performance changes in the former networks as you vary parameters of the architecture, like the number of channels or the network depth. They found both ways to improve accuracy by scaling the network up and also ways to improve efficiency by scaling the network down in a way that preserves accuracy.&amp;lt;ref&amp;gt;Tan, Mingxing, and Quoc Le. &amp;quot;Efficientnet: Rethinking model scaling for convolutional neural networks.&amp;quot; ''International conference on machine learning''. PMLR, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Works this year ('''kEffNet, kMobileNet''') have found that applying old principles like grouped convolutions and pointwise convolutions to the recent efficient networks further reduce the needed parameters and float operations.  &amp;lt;ref&amp;gt;Schuler, Joao Paulo Schwarz, et al. &amp;quot;Grouped Pointwise Convolutions Reduce Parameters in Convolutional Neural Networks.&amp;quot; ''MENDEL''. Vol. 28. No. 1. 2022.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from those, NAS is an approach where heuristic algorithms are used to find accurate models with parameter count constraints ('''ProxylessNAS, MCUNet''') by efficiently estimating the probability of high accuracy (on a specific task) from a candidate model before training and optimizing search spaces.&amp;lt;ref&amp;gt;Lin, Ji, et al. &amp;quot;Mcunet: Tiny deep learning on iot devices.&amp;quot; ''Advances in Neural Information Processing Systems'' 33 (2020): 11711-11722.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Cai, Han, Ligeng Zhu, and Song Han. &amp;quot;Proxylessnas: Direct neural architecture search on target task and hardware.&amp;quot; ''arXiv preprint arXiv:1812.00332'' (2018).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Running efficient software in small hardware =&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Models demonstrated in microcontrollers ===&lt;br /&gt;
Microcontrollers are devices that can be used for IoT and also as wireless sensors. Works in the TinyML field tend to demonstrate their works on resource-constrained microcontrollers, the best of whom are summarized here.&lt;br /&gt;
&lt;br /&gt;
The table below summarizes the best demonstrations submitted to [https://mlcommons.org/en/inference-tiny-07/ MLCommons: Tiny Inference]. The most efficient work by far is by a digital accelerator, part of the open division, which used custom models (not the prescribed models) and special high level synthesis (HLS) on an FPGA, and is work by CERN. &amp;lt;ref&amp;gt;Borras, Hendrik, et al. &amp;quot;Open-source FPGA-ML codesign for the MLPerf Tiny Benchmark.&amp;quot; ''arXiv preprint arXiv:2206.11791'' (2022).&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Application'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Accuracy/AUC/Dist'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Inference Latency'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Energy Per Inference'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Software Stack'''&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |'''Device, Specs'''&lt;br /&gt;
|-&lt;br /&gt;
|'''Device'''&lt;br /&gt;
|'''CLK'''&lt;br /&gt;
|'''Memory + Secondary'''&lt;br /&gt;
|'''Processor'''&lt;br /&gt;
|'''Voltage'''&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80%&lt;br /&gt;
|151.63ms&lt;br /&gt;
|4.03mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |X-Cube-AI v.7.1.0&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Nucleo-U575ZI-Q&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |160 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |768k + 2M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V / SMPS&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85%&lt;br /&gt;
|158.13ms&lt;br /&gt;
|4.15mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90%&lt;br /&gt;
|54.81ms&lt;br /&gt;
|1.48mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|85%&lt;br /&gt;
|5.73ms&lt;br /&gt;
|0.152mJ&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80%&lt;br /&gt;
|186ms&lt;br /&gt;
|1.721mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs Gecko SDK/ TFLite  Micro&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs xG24-DK2601B&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |78 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |256k + 1.5M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33 w/ FPU + DSP +  TrustZone&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85%&lt;br /&gt;
|240ms&lt;br /&gt;
|2.248mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90%&lt;br /&gt;
|63.1ms&lt;br /&gt;
|0.611mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|85%&lt;br /&gt;
|5.41ms&lt;br /&gt;
|0.045mJ&lt;br /&gt;
|-&lt;br /&gt;
|'''CF10'''&lt;br /&gt;
|'''84.5%'''&lt;br /&gt;
|'''1.5ms'''&lt;br /&gt;
|'''2.535mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Xilinx PynqZ2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |100 MHz / 650 MHz&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |+ 128M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Dual Core ARM, Cortex-A9 MPCore&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''Speech Commands'''&lt;br /&gt;
|'''82.5%'''&lt;br /&gt;
|'''0.033ms'''&lt;br /&gt;
|'''0.0537mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''ToyADMOS Car'''&lt;br /&gt;
|83%&lt;br /&gt;
|'''0.019ms'''&lt;br /&gt;
|'''0.03mJ'''&lt;br /&gt;
|hls4ml&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
In addition to the above, [https://hanlab.mit.edu/ MIT's Han Lab] has a lot of MLPerfTiny-passing works demonstrated on very small microcontrollers, as tabulated below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!Accuracy&lt;br /&gt;
!Latency&lt;br /&gt;
!Software Stack&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory + Secondary&lt;br /&gt;
!Processor&lt;br /&gt;
!Voltage&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet1&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |INT4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ImageNet&lt;br /&gt;
|62&lt;br /&gt;
|&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; |TinyEngine&lt;br /&gt;
|STM32F412&lt;br /&gt;
|100 MHz&lt;br /&gt;
|256kB + 1M&lt;br /&gt;
|ARM32CM4&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|63.5&lt;br /&gt;
|&lt;br /&gt;
|STM32F746&lt;br /&gt;
|216 MHz&lt;br /&gt;
|320k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|65.9&lt;br /&gt;
|&lt;br /&gt;
|STM32F765&lt;br /&gt;
|216 MHz&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|70.7&lt;br /&gt;
|&lt;br /&gt;
|STM32H743&lt;br /&gt;
|480 MHz&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |VWW&lt;br /&gt;
|92&lt;br /&gt;
|880ms&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |STM32F746&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |216 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |320k + 1M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|88.7&lt;br /&gt;
|200ms&lt;br /&gt;
|-&lt;br /&gt;
|87&lt;br /&gt;
|100ms&lt;br /&gt;
|-&lt;br /&gt;
|INT8&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|96&lt;br /&gt;
|1105ms&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ImageNet&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |71.8&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|STM32H743&lt;br /&gt;
|480 MHz&lt;br /&gt;
|512k  + 2M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |STM32F412&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |100 MHz&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |256kB  + 1M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |ARM32CM4&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|64.9&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Online learning &amp;amp; Learning with little data =&lt;br /&gt;
As mentioned before, the AI model running on the WSN needs to be able to adapt to long-term changes in the sensing environment. To do this, one has to update the AI model based on new inputs. This puts special constraints on model requirements:&lt;br /&gt;
&lt;br /&gt;
# The AI must be able to do model updates in an unsupervised fashion, as it is infeasible to have labelled data on the edge.&lt;br /&gt;
# The AI and online learning algorithm pair must not overfit, or erroneously update to misclassified data. &lt;br /&gt;
# As training is known to be much more resource heavy than inference, the training algorithm must be efficient.&lt;br /&gt;
&lt;br /&gt;
Additionally, a major requirement of AI algorithms is the presence of large sets of data (labeled or unlabeled, depending on the application). For novel applications, the datasets may not yet exist such as for kinetic energy harvesting patterns for microelectromechanical (MEMS) harvesting nodes. There is a high work overhead with respect to deploying nodes to gather beforehand, and it will be hard to create effective AI that generalize from only loosely related public datasets.&lt;br /&gt;
&lt;br /&gt;
=== Transfer Learning &amp;amp; Classifier Fine Tuning ===&lt;br /&gt;
By pre-training a heavy feature extractor and a much lighter classifier on a general but difficult task (ImageNet 1000-class classification for vision networks, for example), and then further using this pre-trained network on an easier task, it can be made to converge (for the easier task) much faster with less data. &lt;br /&gt;
&lt;br /&gt;
This scheme can be made to use much less resources by freezing (not training) parameters of earlier layers (or maybe the feature extractor as a whole, if not using a DNN), as later layers are empirically found to contribute much better to accuracy. This scheme is demonstrated in Han Lab's MCUNetv3 &amp;lt;ref&amp;gt;Lin, Ji, et al. &amp;quot;On-Device Training Under 256KB Memory.&amp;quot; ''arXiv preprint arXiv:2206.15472'' (2022).&amp;lt;/ref&amp;gt;. By analyzing marginal accuracy gains from freezing different parameters, they found heuristics that train models to near-original performances with tight resource constraints (under 256kB memory).&lt;br /&gt;
&lt;br /&gt;
=== Federated Learning ===&lt;br /&gt;
A recent approach known as federated learning&amp;lt;ref&amp;gt;McMahan, Brendan, et al. &amp;quot;Communication-efficient learning of deep networks from decentralized data.&amp;quot; ''Artificial intelligence and statistics''. PMLR, 2017.&amp;lt;/ref&amp;gt; was put forth to solve privacy issues when training deep neural network (DNN) models, but can also be applied. By aggregating local updates to model parameters in a central host, a powerful trained model can be created in the host which can then distribute the better model.&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=430</id>
		<title>Distributed learning</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=430"/>
		<updated>2022-11-04T11:33:44Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: title change&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Distributed Machine Learning}}&lt;br /&gt;
&lt;br /&gt;
The use of artificial intelligence (AI) in extreme edge devices such as wireless sensor nodes (WSNs) will greatly benefit its scalability and application space. AI can be applied to solve problems with clustering, data routing, and most importantly it can be used to reduce the volume of data transmission via data compression or making conclusions from data within the node itself &amp;lt;ref&amp;gt;Alsheikh, Mohammad Abu, et al. &amp;quot;Machine learning in wireless sensor networks: Algorithms, strategies, and applications.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 16.4 (2014): 1996-2018.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
At the moment, potential use cases for ML in WSN include, but are not limited to:&lt;br /&gt;
&lt;br /&gt;
# General Pattern Classification (including recognizing speech commands, voice recognition for authentication, bio-signal processing for medical sensors)&lt;br /&gt;
# Image Processing (including presence detection a.k.a. visual wake words, car counting for traffic analytics)&lt;br /&gt;
# Node routing and scheduling to improve network scalability and lifespan (through the use of RL, see more in [[Clustering and routing|clustering]]). &lt;br /&gt;
&lt;br /&gt;
However, since devices in the extreme edge are constrained to work with extremely low amounts of energy &amp;lt;ref&amp;gt;Ma, Dong, et al. &amp;quot;Sensing, computing, and communications for energy harvesting iots: A survey.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 22.2 (2019): 1222-1250.&amp;lt;/ref&amp;gt;, even the simplest AI models are difficult to execute with typical sequential processors. WSNs have memories in the order of kB and clock speeds in the order of kHz to MHz due to energy constraints, rendering them unable to run state-of-the art AI applications.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Reference WSN Project&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory&lt;br /&gt;
!Secondary Memory&lt;br /&gt;
!Processor&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v1&lt;br /&gt;
|Digi XBee-Pro, TI MSP430F213&lt;br /&gt;
|16MHz&lt;br /&gt;
|512B&lt;br /&gt;
|8KB+256B&lt;br /&gt;
|16-bit MSP-430&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v2&lt;br /&gt;
|ATSAMR21&lt;br /&gt;
|&amp;lt;48MHz&lt;br /&gt;
|32KB&lt;br /&gt;
|256KB&lt;br /&gt;
|ARM32-Cortex M0&lt;br /&gt;
|}&lt;br /&gt;
To contrast with the above specs, the TinyML recommended model to classify CIFAR-10 has 3.5MB parameters. &lt;br /&gt;
&lt;br /&gt;
Apart from the above constraints, WSNs running AI are placed in potentially changing environments that are potentially different from the environment in which the AI was trained. This is a problem known as concept drift. AI algorithms running on WSN need to be able to work regardless of continuously changing patterns using concepts such as online learning.&lt;br /&gt;
&lt;br /&gt;
Zhou '21 describes edge AI as using widespread edge resources to gain AI insight. This means not only running an AI algorithm on one node, but potentially cooperatively running inference and training on multiple nodes. There are several degrees to the concept, ranging from training and inference in the server, training in the server but inference in the node, and running both training and inference on the node itself. Ideally, for the highest scalability and lowest communication overhead, training and inference ideally take place in the nodes.&lt;br /&gt;
[[File:Concept Map of Distributed Machine Learning for WSN 2.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
== TinyML and accepted benchmarks for Edge AI ==&lt;br /&gt;
The [https://www.tinyml.org/ TinyML organization] describes tinyML as the &amp;quot;field of machine learning technologies and applications including hardware, algorithms and software capable of performing on-device sensor data analytics at extremely low power, typically in the mW range and below, and hence enabling a variety of always-on use-cases and targeting battery operated devices&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
MLPerfTiny&amp;lt;ref&amp;gt;Banbury, Colby, et al. &amp;quot;Mlperf tiny benchmark.&amp;quot; ''arXiv preprint arXiv:2106.07597'' (2021).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ref&amp;gt; is widely accepted as the common benchmarking requirement for TinyML works. It prescribes basic accuracy targets along with suggested models (if benchmarking hardware) for 4 selected basic use cases for TinyML as shown in the table below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Use Case&lt;br /&gt;
!Dataset&lt;br /&gt;
!Suggested Model&lt;br /&gt;
!Quality Target&lt;br /&gt;
|-&lt;br /&gt;
|Visual Wakewords&lt;br /&gt;
|MSCOCO&lt;br /&gt;
|MobileNetv1&lt;br /&gt;
|80% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Keyword Spotting&lt;br /&gt;
|Google Speech Commands&lt;br /&gt;
|DS-CNN&lt;br /&gt;
|90% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Image Classification&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|ResNet&lt;br /&gt;
|85% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Anomaly Detection&lt;br /&gt;
|DCASE2020&lt;br /&gt;
|FC-Autoencoder&lt;br /&gt;
|85% Area under Curve&lt;br /&gt;
|}&lt;br /&gt;
Visual Wakewords is a classification task of telling whether or not a person is in a picture. This covers similar tasks where complex high-resolution data is provided but the conclusions required are simple.&lt;br /&gt;
&lt;br /&gt;
Anomaly detection is a similar task, where . This task covers cases where both the conclusions required and the input data are likely to be simple, but stakes are slightly higher where false positives and negatives must be minimized.&lt;br /&gt;
&lt;br /&gt;
= Efficient Software Models =&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Efficient Vision Models ===&lt;br /&gt;
Traditional ML techniques struggle most with high-dimension image classification tasks. This is the main task for which heavily parametrized resource-heavy neural networks are used. Additionally, similar architectures are applied to reinforcement learning (such as the one for AlphaZero)&amp;lt;ref&amp;gt;Silver, David, et al. &amp;quot;A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play.&amp;quot; Science 362.6419 (2018): 1140-1144.&amp;lt;/ref&amp;gt;, and so similar efficient architectures are needed for running RL clustering models.&lt;br /&gt;
&lt;br /&gt;
Shown below is a table summarizing the most efficient known vision models.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Notes&lt;br /&gt;
!Architecture&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Applied to&lt;br /&gt;
!Parameters&lt;br /&gt;
!#FLOPs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Deep Residual Learning&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ResNet-18&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|85% (Wan et al.)&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |11M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |1800M&lt;br /&gt;
|-&lt;br /&gt;
|CIFAR-100&lt;br /&gt;
|82.3% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72.33%/91.8% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|MobileNet&lt;br /&gt;
|MobileNetv2&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72%&lt;br /&gt;
|3.5M&lt;br /&gt;
|300M&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Baseline Effnet&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |EfficientNetB0&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|'''93.52% (Main Paper) (Transfer  Learning)'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |5.3M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |390M&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|'''77.1%/93.3% (Main Paper)'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Grouped  Pointwise Convolutions&lt;br /&gt;
|kEffNet-B0 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.24%/71.92%&lt;br /&gt;
|0.64M&lt;br /&gt;
|129M&lt;br /&gt;
|-&lt;br /&gt;
|kMobileNet Large 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.74%/71.36%&lt;br /&gt;
|'''0.40M'''&lt;br /&gt;
|'''81M'''&lt;br /&gt;
|-&lt;br /&gt;
|Patch-based Inference&lt;br /&gt;
|MCUNetv2M4&lt;br /&gt;
|ImageNet&lt;br /&gt;
|64.90%&lt;br /&gt;
|0.47M&lt;br /&gt;
|119M&lt;br /&gt;
|-&lt;br /&gt;
|Patch-based Inference&lt;br /&gt;
|MCUNetv2H7&lt;br /&gt;
|ImageNet&lt;br /&gt;
|71.80%&lt;br /&gt;
|0.67M&lt;br /&gt;
|256M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Principles of Efficient Inference ===&lt;br /&gt;
Convolutional neural networks (CNNs) are widely used for any task with data that come with spatial relations, such as images or time-based data.&lt;br /&gt;
&lt;br /&gt;
Empirically, deeper networks (with more layers) are known to perform better on more complicated tasks &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;. However, making networks deeper had a limit where training them is no longer possible after a certain depth is reached. Models such as '''ResNet''' with sets of layers that skip connections (known as residual blocks) between layers was introduced to solve this problem allowing for extremely deep networks. &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Improving upon that, it was found with '''MobileNetv2''' that models with residual blocks that reduce and then expand the number of channels (known as bottleneck residuals or inverted residuals) allows networks to keep good performance with a much lower parameter count and number of operations.&amp;lt;ref&amp;gt;Sandler, Mark, et al. &amp;quot;Mobilenetv2: Inverted residuals and linear bottlenecks.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2018.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''EfficientNet''' was developed when researchers attempted to analyze how performance changes in the former networks as you vary parameters of the architecture, like the number of channels or the network depth. They found both ways to improve accuracy by scaling the network up and also ways to improve efficiency by scaling the network down in a way that preserves accuracy.&amp;lt;ref&amp;gt;Tan, Mingxing, and Quoc Le. &amp;quot;Efficientnet: Rethinking model scaling for convolutional neural networks.&amp;quot; ''International conference on machine learning''. PMLR, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Works this year ('''kEffNet, kMobileNet''') have found that applying old principles like grouped convolutions and pointwise convolutions to the recent efficient networks further reduce the needed parameters and float operations.  &amp;lt;ref&amp;gt;Schuler, Joao Paulo Schwarz, et al. &amp;quot;Grouped Pointwise Convolutions Reduce Parameters in Convolutional Neural Networks.&amp;quot; ''MENDEL''. Vol. 28. No. 1. 2022.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from those, NAS is an approach where heuristic algorithms are used to find accurate models with parameter count constraints ('''ProxylessNAS, MCUNet''') by efficiently estimating the probability of high accuracy (on a specific task) from a candidate model before training and optimizing search spaces.&amp;lt;ref&amp;gt;Lin, Ji, et al. &amp;quot;Mcunet: Tiny deep learning on iot devices.&amp;quot; ''Advances in Neural Information Processing Systems'' 33 (2020): 11711-11722.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Cai, Han, Ligeng Zhu, and Song Han. &amp;quot;Proxylessnas: Direct neural architecture search on target task and hardware.&amp;quot; ''arXiv preprint arXiv:1812.00332'' (2018).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Running efficient software in small hardware =&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Models demonstrated in microcontrollers ===&lt;br /&gt;
Microcontrollers are devices that can be used for IoT and also as wireless sensors. Works in the TinyML field tend to demonstrate their works on resource-constrained microcontrollers, the best of whom are summarized here.&lt;br /&gt;
&lt;br /&gt;
The table below summarizes the best demonstrations submitted to [https://mlcommons.org/en/inference-tiny-07/ MLCommons: Tiny Inference]. The most efficient work by far is by a digital accelerator, part of the open division, which used custom models (not the prescribed models) and special high level synthesis (HLS) on an FPGA, and is work by CERN. &amp;lt;ref&amp;gt;Borras, Hendrik, et al. &amp;quot;Open-source FPGA-ML codesign for the MLPerf Tiny Benchmark.&amp;quot; ''arXiv preprint arXiv:2206.11791'' (2022).&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Application'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Accuracy/AUC/Dist'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Inference Latency'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Energy Per Inference'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Software Stack'''&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |'''Device, Specs'''&lt;br /&gt;
|-&lt;br /&gt;
|'''Device'''&lt;br /&gt;
|'''CLK'''&lt;br /&gt;
|'''Memory + Secondary'''&lt;br /&gt;
|'''Processor'''&lt;br /&gt;
|'''Voltage'''&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80&lt;br /&gt;
|151.63ms&lt;br /&gt;
|4.03mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |X-Cube-AI v.7.1.0&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Nucleo-U575ZI-Q&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |160 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |768k + 2M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V / SMPS&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85&lt;br /&gt;
|158.13ms&lt;br /&gt;
|4.15mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90&lt;br /&gt;
|54.81ms&lt;br /&gt;
|1.48mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|0.85&lt;br /&gt;
|5.73ms&lt;br /&gt;
|0.152mJ&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80&lt;br /&gt;
|186ms&lt;br /&gt;
|1.721mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs Gecko SDK/ TFLite  Micro&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs xG24-DK2601B&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |78 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |256k + 1.5M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33 w/ FPU + DSP +  TrustZone&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85&lt;br /&gt;
|240ms&lt;br /&gt;
|2.248mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90&lt;br /&gt;
|63.1ms&lt;br /&gt;
|0.611mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|0.85&lt;br /&gt;
|5.41ms&lt;br /&gt;
|0.045mJ&lt;br /&gt;
|-&lt;br /&gt;
|'''CF10'''&lt;br /&gt;
|'''84.5'''&lt;br /&gt;
|'''1.5ms'''&lt;br /&gt;
|'''2.535mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Xilinx PynqZ2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |100 MHz / 650 MHz&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |+ 128M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Dual Core ARM, Cortex-A9 MPCore&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''Speech Commands'''&lt;br /&gt;
|'''82.5'''&lt;br /&gt;
|'''0.033ms'''&lt;br /&gt;
|'''0.0537mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''ToyADMOS Car'''&lt;br /&gt;
|'''0.83'''&lt;br /&gt;
|'''0.019ms'''&lt;br /&gt;
|'''0.03mJ'''&lt;br /&gt;
|hls4ml&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
In addition to the above, [https://hanlab.mit.edu/ MIT's Han Lab] has a lot of MLPerfTiny-passing works demonstrated on very small microcontrollers, as tabulated below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!Accuracy&lt;br /&gt;
!Latency&lt;br /&gt;
!Software Stack&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory + Secondary&lt;br /&gt;
!Processor&lt;br /&gt;
!Voltage&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet1&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |INT4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ImageNet&lt;br /&gt;
|62&lt;br /&gt;
|&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; |TinyEngine&lt;br /&gt;
|STM32F412&lt;br /&gt;
|100 MHz&lt;br /&gt;
|256kB + 1M&lt;br /&gt;
|ARM32CM4&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|63.5&lt;br /&gt;
|&lt;br /&gt;
|STM32F746&lt;br /&gt;
|216 MHz&lt;br /&gt;
|320k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|65.9&lt;br /&gt;
|&lt;br /&gt;
|STM32F765&lt;br /&gt;
|216 MHz&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|70.7&lt;br /&gt;
|&lt;br /&gt;
|STM32H743&lt;br /&gt;
|480 MHz&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |VWW&lt;br /&gt;
|92&lt;br /&gt;
|880ms&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |STM32F746&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |216 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |320k + 1M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|88.7&lt;br /&gt;
|200ms&lt;br /&gt;
|-&lt;br /&gt;
|87&lt;br /&gt;
|100ms&lt;br /&gt;
|-&lt;br /&gt;
|INT8&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|96&lt;br /&gt;
|1105ms&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ImageNet&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |71.8&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|STM32H743&lt;br /&gt;
|480 MHz&lt;br /&gt;
|512k  + 2M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |STM32F412&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |100 MHz&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |256kB  + 1M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |ARM32CM4&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|64.9&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Online learning &amp;amp; Learning with little data =&lt;br /&gt;
As mentioned before, the AI model running on the WSN needs to be able to adapt to long-term changes in the sensing environment. To do this, one has to update the AI model based on new inputs. This puts special constraints on model requirements:&lt;br /&gt;
&lt;br /&gt;
# The AI must be able to do model updates in an unsupervised fashion, as it is infeasible to have labelled data on the edge.&lt;br /&gt;
# The AI and online learning algorithm pair must not overfit, or erroneously update to misclassified data. &lt;br /&gt;
# As training is known to be much more resource heavy than inference, the training algorithm must be efficient.&lt;br /&gt;
&lt;br /&gt;
Additionally, a major requirement of AI algorithms is the presence of large sets of data (labeled or unlabeled, depending on the application). For novel applications, the datasets may not yet exist such as for kinetic energy harvesting patterns for microelectromechanical (MEMS) harvesting nodes. There is a high work overhead with respect to deploying nodes to gather beforehand, and it will be hard to create effective AI that generalize from only loosely related public datasets.&lt;br /&gt;
&lt;br /&gt;
=== Transfer Learning &amp;amp; Classifier Fine Tuning ===&lt;br /&gt;
By pre-training a heavy feature extractor and a much lighter classifier on a general but difficult task (ImageNet 1000-class classification for vision networks, for example), and then further using this pre-trained network on an easier task, it can be made to converge (for the easier task) much faster with less data. &lt;br /&gt;
&lt;br /&gt;
This scheme can be made to use much less resources by freezing (not training) parameters of earlier layers (or maybe the feature extractor as a whole, if not using a DNN), as later layers are empirically found to contribute much better to accuracy. This scheme is demonstrated in Han Lab's MCUNetv3 &amp;lt;ref&amp;gt;Lin, Ji, et al. &amp;quot;On-Device Training Under 256KB Memory.&amp;quot; ''arXiv preprint arXiv:2206.15472'' (2022).&amp;lt;/ref&amp;gt;. By analyzing marginal accuracy gains from freezing different parameters, they found heuristics that train models to near-original performances with tight resource constraints (under 256kB memory).&lt;br /&gt;
&lt;br /&gt;
=== Federated Learning ===&lt;br /&gt;
A recent approach known as federated learning&amp;lt;ref&amp;gt;McMahan, Brendan, et al. &amp;quot;Communication-efficient learning of deep networks from decentralized data.&amp;quot; ''Artificial intelligence and statistics''. PMLR, 2017.&amp;lt;/ref&amp;gt; was put forth to solve privacy issues when training deep neural network (DNN) models, but can also be applied. By aggregating local updates to model parameters in a central host, a powerful trained model can be created in the host which can then distribute the better model.&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=429</id>
		<title>Distributed learning</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=429"/>
		<updated>2022-11-04T08:45:33Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: Q1 commit 1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The use of artificial intelligence (AI) in extreme edge devices such as wireless sensor nodes (WSNs) will greatly benefit its scalability and application space. AI can be applied to solve problems with clustering, data routing, and most importantly it can be used to reduce the volume of data transmission via data compression or making conclusions from data within the node itself &amp;lt;ref&amp;gt;Alsheikh, Mohammad Abu, et al. &amp;quot;Machine learning in wireless sensor networks: Algorithms, strategies, and applications.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 16.4 (2014): 1996-2018.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
At the moment, potential use cases for ML in WSN include, but are not limited to:&lt;br /&gt;
&lt;br /&gt;
# General Pattern Classification (including recognizing speech commands, voice recognition for authentication, bio-signal processing for medical sensors)&lt;br /&gt;
# Image Processing (including presence detection a.k.a. visual wake words, car counting for traffic analytics)&lt;br /&gt;
# Node routing and scheduling to improve network scalability and lifespan (through the use of RL, see more in [[Clustering and routing|clustering]]). &lt;br /&gt;
&lt;br /&gt;
However, since devices in the extreme edge are constrained to work with extremely low amounts of energy &amp;lt;ref&amp;gt;Ma, Dong, et al. &amp;quot;Sensing, computing, and communications for energy harvesting iots: A survey.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 22.2 (2019): 1222-1250.&amp;lt;/ref&amp;gt;, even the simplest AI models are difficult to execute with typical sequential processors. WSNs have memories in the order of kB and clock speeds in the order of kHz to MHz due to energy constraints, rendering them unable to run state-of-the art AI applications.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Reference WSN Project&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory&lt;br /&gt;
!Secondary Memory&lt;br /&gt;
!Processor&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v1&lt;br /&gt;
|Digi XBee-Pro, TI MSP430F213&lt;br /&gt;
|16MHz&lt;br /&gt;
|512B&lt;br /&gt;
|8KB+256B&lt;br /&gt;
|16-bit MSP-430&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v2&lt;br /&gt;
|ATSAMR21&lt;br /&gt;
|&amp;lt;48MHz&lt;br /&gt;
|32KB&lt;br /&gt;
|256KB&lt;br /&gt;
|ARM32-Cortex M0&lt;br /&gt;
|}&lt;br /&gt;
To contrast with the above specs, the TinyML recommended model to classify CIFAR-10 has 3.5MB parameters. &lt;br /&gt;
&lt;br /&gt;
Apart from the above constraints, WSNs running AI are placed in potentially changing environments that are potentially different from the environment in which the AI was trained. This is a problem known as concept drift. AI algorithms running on WSN need to be able to work regardless of continuously changing patterns using concepts such as online learning.&lt;br /&gt;
&lt;br /&gt;
Zhou '21 describes edge AI as using widespread edge resources to gain AI insight. This means not only running an AI algorithm on one node, but potentially cooperatively running inference and training on multiple nodes. There are several degrees to the concept, ranging from training and inference in the server, training in the server but inference in the node, and running both training and inference on the node itself. Ideally, for the highest scalability and lowest communication overhead, training and inference ideally take place in the nodes.&lt;br /&gt;
[[File:Concept Map of Distributed Machine Learning for WSN 2.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
== TinyML and accepted benchmarks for Edge AI ==&lt;br /&gt;
The [https://www.tinyml.org/ TinyML organization] describes tinyML as the &amp;quot;field of machine learning technologies and applications including hardware, algorithms and software capable of performing on-device sensor data analytics at extremely low power, typically in the mW range and below, and hence enabling a variety of always-on use-cases and targeting battery operated devices&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
MLPerfTiny&amp;lt;ref&amp;gt;Banbury, Colby, et al. &amp;quot;Mlperf tiny benchmark.&amp;quot; ''arXiv preprint arXiv:2106.07597'' (2021).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ref&amp;gt; is widely accepted as the common benchmarking requirement for TinyML works. It prescribes basic accuracy targets along with suggested models (if benchmarking hardware) for 4 selected basic use cases for TinyML as shown in the table below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Use Case&lt;br /&gt;
!Dataset&lt;br /&gt;
!Suggested Model&lt;br /&gt;
!Quality Target&lt;br /&gt;
|-&lt;br /&gt;
|Visual Wakewords&lt;br /&gt;
|MSCOCO&lt;br /&gt;
|MobileNetv1&lt;br /&gt;
|80% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Keyword Spotting&lt;br /&gt;
|Google Speech Commands&lt;br /&gt;
|DS-CNN&lt;br /&gt;
|90% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Image Classification&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|ResNet&lt;br /&gt;
|85% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Anomaly Detection&lt;br /&gt;
|DCASE2020&lt;br /&gt;
|FC-Autoencoder&lt;br /&gt;
|85% Area under Curve&lt;br /&gt;
|}&lt;br /&gt;
Visual Wakewords is a classification task of telling whether or not a person is in a picture. This covers similar tasks where complex high-resolution data is provided but the conclusions required are simple.&lt;br /&gt;
&lt;br /&gt;
Anomaly detection is a similar task, where . This task covers cases where both the conclusions required and the input data are likely to be simple, but stakes are slightly higher where false positives and negatives must be minimized.&lt;br /&gt;
&lt;br /&gt;
= Efficient Software Models =&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Efficient Vision Models ===&lt;br /&gt;
Traditional ML techniques struggle most with high-dimension image classification tasks. This is the main task for which heavily parametrized resource-heavy neural networks are used. Additionally, similar architectures are applied to reinforcement learning (such as the one for AlphaZero)&amp;lt;ref&amp;gt;Silver, David, et al. &amp;quot;A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play.&amp;quot; Science 362.6419 (2018): 1140-1144.&amp;lt;/ref&amp;gt;, and so similar efficient architectures are needed for running RL clustering models.&lt;br /&gt;
&lt;br /&gt;
Shown below is a table summarizing the most efficient known vision models.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Notes&lt;br /&gt;
!Architecture&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Applied to&lt;br /&gt;
!Parameters&lt;br /&gt;
!#FLOPs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Deep Residual Learning&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ResNet-18&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|85% (Wan et al.)&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |11M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |1800M&lt;br /&gt;
|-&lt;br /&gt;
|CIFAR-100&lt;br /&gt;
|82.3% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72.33%/91.8% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|MobileNet&lt;br /&gt;
|MobileNetv2&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72%&lt;br /&gt;
|3.5M&lt;br /&gt;
|300M&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Baseline Effnet&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |EfficientNetB0&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|'''93.52% (Main Paper) (Transfer  Learning)'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |5.3M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |390M&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|'''77.1%/93.3% (Main Paper)'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Grouped  Pointwise Convolutions&lt;br /&gt;
|kEffNet-B0 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.24%/71.92%&lt;br /&gt;
|0.64M&lt;br /&gt;
|129M&lt;br /&gt;
|-&lt;br /&gt;
|kMobileNet Large 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.74%/71.36%&lt;br /&gt;
|'''0.40M'''&lt;br /&gt;
|'''81M'''&lt;br /&gt;
|-&lt;br /&gt;
|Patch-based Inference&lt;br /&gt;
|MCUNetv2M4&lt;br /&gt;
|ImageNet&lt;br /&gt;
|64.90%&lt;br /&gt;
|0.47M&lt;br /&gt;
|119M&lt;br /&gt;
|-&lt;br /&gt;
|Patch-based Inference&lt;br /&gt;
|MCUNetv2H7&lt;br /&gt;
|ImageNet&lt;br /&gt;
|71.80%&lt;br /&gt;
|0.67M&lt;br /&gt;
|256M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Principles of Efficient Inference ===&lt;br /&gt;
Convolutional neural networks (CNNs) are widely used for any task with data that come with spatial relations, such as images or time-based data.&lt;br /&gt;
&lt;br /&gt;
Empirically, deeper networks (with more layers) are known to perform better on more complicated tasks &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;. However, making networks deeper had a limit where training them is no longer possible after a certain depth is reached. Models such as '''ResNet''' with sets of layers that skip connections (known as residual blocks) between layers was introduced to solve this problem allowing for extremely deep networks. &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Improving upon that, it was found with '''MobileNetv2''' that models with residual blocks that reduce and then expand the number of channels (known as bottleneck residuals or inverted residuals) allows networks to keep good performance with a much lower parameter count and number of operations.&amp;lt;ref&amp;gt;Sandler, Mark, et al. &amp;quot;Mobilenetv2: Inverted residuals and linear bottlenecks.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2018.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''EfficientNet''' was developed when researchers attempted to analyze how performance changes in the former networks as you vary parameters of the architecture, like the number of channels or the network depth. They found both ways to improve accuracy by scaling the network up and also ways to improve efficiency by scaling the network down in a way that preserves accuracy.&amp;lt;ref&amp;gt;Tan, Mingxing, and Quoc Le. &amp;quot;Efficientnet: Rethinking model scaling for convolutional neural networks.&amp;quot; ''International conference on machine learning''. PMLR, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Works this year ('''kEffNet, kMobileNet''') have found that applying old principles like grouped convolutions and pointwise convolutions to the recent efficient networks further reduce the needed parameters and float operations.  &amp;lt;ref&amp;gt;Schuler, Joao Paulo Schwarz, et al. &amp;quot;Grouped Pointwise Convolutions Reduce Parameters in Convolutional Neural Networks.&amp;quot; ''MENDEL''. Vol. 28. No. 1. 2022.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from those, NAS is an approach where heuristic algorithms are used to find accurate models with parameter count constraints ('''ProxylessNAS, MCUNet''') by efficiently estimating the probability of high accuracy (on a specific task) from a candidate model before training and optimizing search spaces.&amp;lt;ref&amp;gt;Lin, Ji, et al. &amp;quot;Mcunet: Tiny deep learning on iot devices.&amp;quot; ''Advances in Neural Information Processing Systems'' 33 (2020): 11711-11722.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Cai, Han, Ligeng Zhu, and Song Han. &amp;quot;Proxylessnas: Direct neural architecture search on target task and hardware.&amp;quot; ''arXiv preprint arXiv:1812.00332'' (2018).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Running efficient software in small hardware =&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Models demonstrated in microcontrollers ===&lt;br /&gt;
Microcontrollers are devices that can be used for IoT and also as wireless sensors. Works in the TinyML field tend to demonstrate their works on resource-constrained microcontrollers, the best of whom are summarized here.&lt;br /&gt;
&lt;br /&gt;
The table below summarizes the best demonstrations submitted to [https://mlcommons.org/en/inference-tiny-07/ MLCommons: Tiny Inference]. The most efficient work by far is by a digital accelerator, part of the open division, which used custom models (not the prescribed models) and special high level synthesis (HLS) on an FPGA, and is work by CERN. &amp;lt;ref&amp;gt;Borras, Hendrik, et al. &amp;quot;Open-source FPGA-ML codesign for the MLPerf Tiny Benchmark.&amp;quot; ''arXiv preprint arXiv:2206.11791'' (2022).&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Application'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Accuracy/AUC/Dist'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Inference Latency'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Energy Per Inference'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Software Stack'''&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |'''Device, Specs'''&lt;br /&gt;
|-&lt;br /&gt;
|'''Device'''&lt;br /&gt;
|'''CLK'''&lt;br /&gt;
|'''Memory + Secondary'''&lt;br /&gt;
|'''Processor'''&lt;br /&gt;
|'''Voltage'''&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80&lt;br /&gt;
|151.63ms&lt;br /&gt;
|4.03mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |X-Cube-AI v.7.1.0&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Nucleo-U575ZI-Q&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |160 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |768k + 2M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V / SMPS&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85&lt;br /&gt;
|158.13ms&lt;br /&gt;
|4.15mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90&lt;br /&gt;
|54.81ms&lt;br /&gt;
|1.48mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|0.85&lt;br /&gt;
|5.73ms&lt;br /&gt;
|0.152mJ&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80&lt;br /&gt;
|186ms&lt;br /&gt;
|1.721mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs Gecko SDK/ TFLite  Micro&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs xG24-DK2601B&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |78 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |256k + 1.5M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33 w/ FPU + DSP +  TrustZone&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85&lt;br /&gt;
|240ms&lt;br /&gt;
|2.248mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90&lt;br /&gt;
|63.1ms&lt;br /&gt;
|0.611mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|0.85&lt;br /&gt;
|5.41ms&lt;br /&gt;
|0.045mJ&lt;br /&gt;
|-&lt;br /&gt;
|'''CF10'''&lt;br /&gt;
|'''84.5'''&lt;br /&gt;
|'''1.5ms'''&lt;br /&gt;
|'''2.535mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Xilinx PynqZ2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |100 MHz / 650 MHz&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |+ 128M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Dual Core ARM, Cortex-A9 MPCore&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''Speech Commands'''&lt;br /&gt;
|'''82.5'''&lt;br /&gt;
|'''0.033ms'''&lt;br /&gt;
|'''0.0537mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''ToyADMOS Car'''&lt;br /&gt;
|'''0.83'''&lt;br /&gt;
|'''0.019ms'''&lt;br /&gt;
|'''0.03mJ'''&lt;br /&gt;
|hls4ml&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
In addition to the above, [https://hanlab.mit.edu/ MIT's Han Lab] has a lot of MLPerfTiny-passing works demonstrated on very small microcontrollers, as tabulated below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!Accuracy&lt;br /&gt;
!Latency&lt;br /&gt;
!Software Stack&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory + Secondary&lt;br /&gt;
!Processor&lt;br /&gt;
!Voltage&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet1&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |INT4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ImageNet&lt;br /&gt;
|62&lt;br /&gt;
|&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; |TinyEngine&lt;br /&gt;
|STM32F412&lt;br /&gt;
|100 MHz&lt;br /&gt;
|256kB + 1M&lt;br /&gt;
|ARM32CM4&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|63.5&lt;br /&gt;
|&lt;br /&gt;
|STM32F746&lt;br /&gt;
|216 MHz&lt;br /&gt;
|320k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|65.9&lt;br /&gt;
|&lt;br /&gt;
|STM32F765&lt;br /&gt;
|216 MHz&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|70.7&lt;br /&gt;
|&lt;br /&gt;
|STM32H743&lt;br /&gt;
|480 MHz&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |VWW&lt;br /&gt;
|92&lt;br /&gt;
|880ms&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |STM32F746&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |216 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |320k + 1M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|88.7&lt;br /&gt;
|200ms&lt;br /&gt;
|-&lt;br /&gt;
|87&lt;br /&gt;
|100ms&lt;br /&gt;
|-&lt;br /&gt;
|INT8&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|96&lt;br /&gt;
|1105ms&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ImageNet&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |71.8&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|STM32H743&lt;br /&gt;
|480 MHz&lt;br /&gt;
|512k  + 2M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |STM32F412&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |100 MHz&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |256kB  + 1M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |ARM32CM4&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|64.9&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Online learning &amp;amp; Learning with little data =&lt;br /&gt;
As mentioned before, the AI model running on the WSN needs to be able to adapt to long-term changes in the sensing environment. To do this, one has to update the AI model based on new inputs. This puts special constraints on model requirements:&lt;br /&gt;
&lt;br /&gt;
# The AI must be able to do model updates in an unsupervised fashion, as it is infeasible to have labelled data on the edge.&lt;br /&gt;
# The AI and online learning algorithm pair must not overfit, or erroneously update to misclassified data. &lt;br /&gt;
# As training is known to be much more resource heavy than inference, the training algorithm must be efficient.&lt;br /&gt;
&lt;br /&gt;
Additionally, a major requirement of AI algorithms is the presence of large sets of data (labeled or unlabeled, depending on the application). For novel applications, the datasets may not yet exist such as for kinetic energy harvesting patterns for microelectromechanical (MEMS) harvesting nodes. There is a high work overhead with respect to deploying nodes to gather beforehand, and it will be hard to create effective AI that generalize from only loosely related public datasets.&lt;br /&gt;
&lt;br /&gt;
=== Transfer Learning &amp;amp; Classifier Fine Tuning ===&lt;br /&gt;
By pre-training a heavy feature extractor and a much lighter classifier on a general but difficult task (ImageNet 1000-class classification for vision networks, for example), and then further using this pre-trained network on an easier task, it can be made to converge (for the easier task) much faster with less data. &lt;br /&gt;
&lt;br /&gt;
This scheme can be made to use much less resources by freezing (not training) parameters of earlier layers (or maybe the feature extractor as a whole, if not using a DNN), as later layers are empirically found to contribute much better to accuracy. This scheme is demonstrated in Han Lab's MCUNetv3 &amp;lt;ref&amp;gt;Lin, Ji, et al. &amp;quot;On-Device Training Under 256KB Memory.&amp;quot; ''arXiv preprint arXiv:2206.15472'' (2022).&amp;lt;/ref&amp;gt;. By analyzing marginal accuracy gains from freezing different parameters, they found heuristics that train models to near-original performances with tight resource constraints (under 256kB memory).&lt;br /&gt;
&lt;br /&gt;
=== Federated Learning ===&lt;br /&gt;
A recent approach known as federated learning&amp;lt;ref&amp;gt;McMahan, Brendan, et al. &amp;quot;Communication-efficient learning of deep networks from decentralized data.&amp;quot; ''Artificial intelligence and statistics''. PMLR, 2017.&amp;lt;/ref&amp;gt; was put forth to solve privacy issues when training deep neural network (DNN) models, but can also be applied. By aggregating local updates to model parameters in a central host, a powerful trained model can be created in the host which can then distribute the better model.&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=428</id>
		<title>Distributed learning</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=428"/>
		<updated>2022-11-04T07:57:24Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: Checkpoint 2, saving to secure backup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The use of artificial intelligence (AI) in extreme edge devices such as wireless sensor nodes (WSNs) will greatly benefit its scalability and application space. AI can be applied to solve problems with clustering, data routing, and most importantly it can be used to reduce the volume of data transmission via data compression or making conclusions from data within the node itself &amp;lt;ref&amp;gt;Alsheikh, Mohammad Abu, et al. &amp;quot;Machine learning in wireless sensor networks: Algorithms, strategies, and applications.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 16.4 (2014): 1996-2018.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
At the moment, potential use cases for ML in WSN include, but are not limited to:&lt;br /&gt;
&lt;br /&gt;
# General Pattern Classification (including recognizing speech commands, voice recognition for authentication, bio-signal processing for medical sensors)&lt;br /&gt;
# Image Processing (including presence detection a.k.a. visual wake words, car counting for traffic analytics)&lt;br /&gt;
# Node routing and scheduling to improve network scalability and lifespan (through the use of RL, see more in [[Clustering and routing|clustering]]). &lt;br /&gt;
&lt;br /&gt;
However, since devices in the extreme edge are constrained to work with extremely low amounts of energy &amp;lt;ref&amp;gt;Ma, Dong, et al. &amp;quot;Sensing, computing, and communications for energy harvesting iots: A survey.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 22.2 (2019): 1222-1250.&amp;lt;/ref&amp;gt;, even the simplest AI models are difficult to execute with typical sequential processors. WSNs have memories in the order of kB and clock speeds in the order of kHz to MHz due to energy constraints, rendering them unable to run state-of-the art AI applications.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Reference WSN Project&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory&lt;br /&gt;
!Secondary Memory&lt;br /&gt;
!Processor&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v1&lt;br /&gt;
|Digi XBee-Pro, TI MSP430F213&lt;br /&gt;
|16MHz&lt;br /&gt;
|512B&lt;br /&gt;
|8KB+256B&lt;br /&gt;
|16-bit MSP-430&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v2&lt;br /&gt;
|ATSAMR21&lt;br /&gt;
|&amp;lt;48MHz&lt;br /&gt;
|32KB&lt;br /&gt;
|256KB&lt;br /&gt;
|ARM32-Cortex M0&lt;br /&gt;
|}&lt;br /&gt;
To contrast with the above specs, the TinyML recommended model to classify CIFAR-10 has 3.5MB parameters. &lt;br /&gt;
&lt;br /&gt;
Apart from the above constraints, WSNs running AI are placed in potentially changing environments that are potentially different from the environment in which the AI was trained. This is a problem known as concept drift. AI algorithms running on WSN need to be able to work regardless of continuously changing patterns using concepts such as online learning.&lt;br /&gt;
&lt;br /&gt;
Zhou '21 describes edge AI as using widespread edge resources to gain AI insight. This means not only running an AI algorithm on one node, but potentially cooperatively running inference and training on multiple nodes. There are several degrees to the concept, ranging from training and inference in the server, training in the server but inference in the node, and running both training and inference on the node itself. Ideally, for the highest scalability and lowest communication overhead, training and inference ideally take place in the nodes.&lt;br /&gt;
[[File:Concept Map of Distributed Machine Learning for WSN 2.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
=== TinyML and accepted benchmarks for Edge AI ===&lt;br /&gt;
The [https://www.tinyml.org/ TinyML organization] describes tinyML as the &amp;quot;field of machine learning technologies and applications including hardware, algorithms and software capable of performing on-device sensor data analytics at extremely low power, typically in the mW range and below, and hence enabling a variety of always-on use-cases and targeting battery operated devices&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
MLPerfTiny&amp;lt;ref&amp;gt;Banbury, Colby, et al. &amp;quot;Mlperf tiny benchmark.&amp;quot; ''arXiv preprint arXiv:2106.07597'' (2021).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ref&amp;gt; is widely accepted as the common benchmarking requirement for TinyML works. It prescribes basic accuracy targets along with suggested models (if benchmarking hardware) for 4 selected basic use cases for TinyML as shown in the table below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Use Case&lt;br /&gt;
!Dataset&lt;br /&gt;
!Suggested Model&lt;br /&gt;
!Quality Target&lt;br /&gt;
|-&lt;br /&gt;
|Visual Wakewords&lt;br /&gt;
|MSCOCO&lt;br /&gt;
|MobileNetv1&lt;br /&gt;
|80% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Keyword Spotting&lt;br /&gt;
|Google Speech Commands&lt;br /&gt;
|DS-CNN&lt;br /&gt;
|90% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Image Classification&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|ResNet&lt;br /&gt;
|85% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Anomaly Detection&lt;br /&gt;
|DCASE2020&lt;br /&gt;
|FC-Autoencoder&lt;br /&gt;
|85% Area under Curve&lt;br /&gt;
|}&lt;br /&gt;
Visual Wakewords is a classification task of telling whether or not a person is in a picture. This covers similar tasks where complex high-resolution data is provided but the conclusions required are simple.&lt;br /&gt;
&lt;br /&gt;
Anomaly detection is a similar task, where . This task covers cases where both the conclusions required and the input data are likely to be simple, but stakes are slightly higher where false positives and negatives must be minimized.&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Efficient Vision Models ===&lt;br /&gt;
Traditional ML techniques struggle most with high-dimension image classification tasks. This is the main task for which heavily parametrized resource-heavy neural networks are used. Additionally, similar architectures are applied to reinforcement learning (such as the one for AlphaZero)&amp;lt;ref&amp;gt;Silver, David, et al. &amp;quot;A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play.&amp;quot; Science 362.6419 (2018): 1140-1144.&amp;lt;/ref&amp;gt;, and so similar efficient architectures are needed for running RL clustering models.&lt;br /&gt;
&lt;br /&gt;
Shown below is a table summarizing the most efficient known vision models.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Notes&lt;br /&gt;
!Architecture&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Applied to&lt;br /&gt;
!Parameters&lt;br /&gt;
!#FLOPs&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Deep Residual Learning&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ResNet-18&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|85% (Wan et al.)&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |11M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |1800M&lt;br /&gt;
|-&lt;br /&gt;
|CIFAR-100&lt;br /&gt;
|82.3% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72.33%/91.8% (SAMix  Augmented Data)&lt;br /&gt;
|-&lt;br /&gt;
|MobileNet&lt;br /&gt;
|MobileNetv2&lt;br /&gt;
|ImageNet&lt;br /&gt;
|72%&lt;br /&gt;
|3.5M&lt;br /&gt;
|300M&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Baseline Effnet&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |EfficientNetB0&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|'''93.52% (Main Paper) (Transfer  Learning)'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |5.3M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |390M&lt;br /&gt;
|-&lt;br /&gt;
|ImageNet&lt;br /&gt;
|'''77.1%/93.3% (Main Paper)'''&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Grouped  Pointwise Convolutions&lt;br /&gt;
|kEffNet-B0 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.24%/71.92%&lt;br /&gt;
|0.64M&lt;br /&gt;
|129M&lt;br /&gt;
|-&lt;br /&gt;
|kMobileNet Large 16ch&lt;br /&gt;
|CIFAR-10/100&lt;br /&gt;
|92.74%/71.36%&lt;br /&gt;
|'''0.40M'''&lt;br /&gt;
|'''81M'''&lt;br /&gt;
|-&lt;br /&gt;
|Patch-based Inference&lt;br /&gt;
|MCUNetv2M4&lt;br /&gt;
|ImageNet&lt;br /&gt;
|64.90%&lt;br /&gt;
|0.47M&lt;br /&gt;
|119M&lt;br /&gt;
|-&lt;br /&gt;
|Patch-based Inference&lt;br /&gt;
|MCUNetv2H7&lt;br /&gt;
|ImageNet&lt;br /&gt;
|71.80%&lt;br /&gt;
|0.67M&lt;br /&gt;
|256M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Principles of Efficient Inference ===&lt;br /&gt;
Convolutional neural networks (CNNs) are widely used for any task with data that come with spatial relations, such as images or time-based data.&lt;br /&gt;
&lt;br /&gt;
Empirically, deeper networks (with more layers) are known to perform better on more complicated tasks &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;. However, making networks deeper had a limit where training them is no longer possible after a certain depth is reached. Models such as '''ResNet''' with sets of layers that skip connections (known as residual blocks) between layers was introduced to solve this problem allowing for extremely deep networks. &amp;lt;ref&amp;gt;He, Kaiming, et al. &amp;quot;Deep residual learning for image recognition.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2016.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Improving upon that, it was found with '''MobileNetv2''' that models with residual blocks that reduce and then expand the number of channels (known as bottleneck residuals or inverted residuals) allows networks to keep good performance with a much lower parameter count and number of operations.&amp;lt;ref&amp;gt;Sandler, Mark, et al. &amp;quot;Mobilenetv2: Inverted residuals and linear bottlenecks.&amp;quot; ''Proceedings of the IEEE conference on computer vision and pattern recognition''. 2018.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''EfficientNet''' was developed when researchers attempted to analyze how performance changes in the former networks as you vary parameters of the architecture, like the number of channels or the network depth. They found both ways to improve accuracy by scaling the network up and also ways to improve efficiency by scaling the network down in a way that preserves accuracy.&amp;lt;ref&amp;gt;Tan, Mingxing, and Quoc Le. &amp;quot;Efficientnet: Rethinking model scaling for convolutional neural networks.&amp;quot; ''International conference on machine learning''. PMLR, 2019.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Works this year ('''kEffNet, kMobileNet''') have found that applying old principles like grouped convolutions and pointwise convolutions to the recent efficient networks further reduce the needed parameters and float operations.  &amp;lt;ref&amp;gt;Schuler, Joao Paulo Schwarz, et al. &amp;quot;Grouped Pointwise Convolutions Reduce Parameters in Convolutional Neural Networks.&amp;quot; ''MENDEL''. Vol. 28. No. 1. 2022.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Apart from those, NAS is an approach where heuristic algorithms are used to find accurate models with parameter count constraints ('''ProxylessNAS, MCUNet''') by efficiently estimating the probability of high accuracy (on a specific task) from a candidate model before training and optimizing search spaces.&amp;lt;ref&amp;gt;Lin, Ji, et al. &amp;quot;Mcunet: Tiny deep learning on iot devices.&amp;quot; ''Advances in Neural Information Processing Systems'' 33 (2020): 11711-11722.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Cai, Han, Ligeng Zhu, and Song Han. &amp;quot;Proxylessnas: Direct neural architecture search on target task and hardware.&amp;quot; ''arXiv preprint arXiv:1812.00332'' (2018).&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== State of the Art: Models demonstrated in microcontrollers ===&lt;br /&gt;
Microcontrollers are devices that can be used for IoT and also as wireless sensors. Works in the TinyML field tend to demonstrate their works on resource-constrained microcontrollers, the best of whom are summarized here.&lt;br /&gt;
&lt;br /&gt;
The table below summarizes the best demonstrations submitted to [https://mlcommons.org/en/inference-tiny-07/ MLCommons: Tiny Inference]. The most efficient work by far is by a digital accelerator, part of the open division, which used custom models (not the prescribed models) and special high level synthesis (HLS) on an FPGA, and is work by CERN. &amp;lt;ref&amp;gt;Borras, Hendrik, et al. &amp;quot;Open-source FPGA-ML codesign for the MLPerf Tiny Benchmark.&amp;quot; ''arXiv preprint arXiv:2206.11791'' (2022).&amp;lt;/ref&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Application'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Accuracy/AUC/Dist'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Inference Latency'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Energy Per Inference'''&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |'''Software Stack'''&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; |'''Device, Specs'''&lt;br /&gt;
|-&lt;br /&gt;
|'''Device'''&lt;br /&gt;
|'''CLK'''&lt;br /&gt;
|'''Memory + Secondary'''&lt;br /&gt;
|'''Processor'''&lt;br /&gt;
|'''Voltage'''&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80&lt;br /&gt;
|151.63ms&lt;br /&gt;
|4.03mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |X-Cube-AI v.7.1.0&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Nucleo-U575ZI-Q&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |160 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |768k + 2M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V / SMPS&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85&lt;br /&gt;
|158.13ms&lt;br /&gt;
|4.15mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90&lt;br /&gt;
|54.81ms&lt;br /&gt;
|1.48mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|0.85&lt;br /&gt;
|5.73ms&lt;br /&gt;
|0.152mJ&lt;br /&gt;
|-&lt;br /&gt;
|VWW&lt;br /&gt;
|80&lt;br /&gt;
|186ms&lt;br /&gt;
|1.721mJ&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs Gecko SDK/ TFLite  Micro&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |Silicon Labs xG24-DK2601B&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |78 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |256k + 1.5M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM33 w/ FPU + DSP +  TrustZone&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.8V&lt;br /&gt;
|-&lt;br /&gt;
|CF10&lt;br /&gt;
|85&lt;br /&gt;
|240ms&lt;br /&gt;
|2.248mJ&lt;br /&gt;
|-&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|90&lt;br /&gt;
|63.1ms&lt;br /&gt;
|0.611mJ&lt;br /&gt;
|-&lt;br /&gt;
|ToyADMOS Car&lt;br /&gt;
|0.85&lt;br /&gt;
|5.41ms&lt;br /&gt;
|0.045mJ&lt;br /&gt;
|-&lt;br /&gt;
|'''CF10'''&lt;br /&gt;
|'''84.5'''&lt;br /&gt;
|'''1.5ms'''&lt;br /&gt;
|'''2.535mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Xilinx PynqZ2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |100 MHz / 650 MHz&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |+ 128M&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Dual Core ARM, Cortex-A9 MPCore&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''Speech Commands'''&lt;br /&gt;
|'''82.5'''&lt;br /&gt;
|'''0.033ms'''&lt;br /&gt;
|'''0.0537mJ'''&lt;br /&gt;
|FINN&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|'''ToyADMOS Car'''&lt;br /&gt;
|'''0.83'''&lt;br /&gt;
|'''0.019ms'''&lt;br /&gt;
|'''0.03mJ'''&lt;br /&gt;
|hls4ml&lt;br /&gt;
|?&lt;br /&gt;
|}&lt;br /&gt;
In addition to the above, [https://hanlab.mit.edu/ MIT's Han Lab] has a lot of MLPerfTiny-passing works demonstrated on very small microcontrollers, as tabulated below.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!&lt;br /&gt;
!Accuracy&lt;br /&gt;
!Latency&lt;br /&gt;
!Software Stack&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory + Secondary&lt;br /&gt;
!Processor&lt;br /&gt;
!Voltage&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet1&lt;br /&gt;
| rowspan=&amp;quot;8&amp;quot; |MCUNet&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |INT4&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ImageNet&lt;br /&gt;
|62&lt;br /&gt;
|&lt;br /&gt;
| rowspan=&amp;quot;11&amp;quot; |TinyEngine&lt;br /&gt;
|STM32F412&lt;br /&gt;
|&lt;br /&gt;
|256kB + 1M&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|63.5&lt;br /&gt;
|&lt;br /&gt;
|STM32F746&lt;br /&gt;
|216 MHz&lt;br /&gt;
|320k + 1M&lt;br /&gt;
|ARM32CM7&lt;br /&gt;
|1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|65.9&lt;br /&gt;
|&lt;br /&gt;
|STM32F765&lt;br /&gt;
|&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|70.7&lt;br /&gt;
|&lt;br /&gt;
|STM32H743&lt;br /&gt;
|&lt;br /&gt;
|512k + 1M&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |VWW&lt;br /&gt;
|92&lt;br /&gt;
|880ms&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |STM32F746&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |216 MHz&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |320k + 1M&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |ARM32CM7&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; |1.7V-3.6V&lt;br /&gt;
|-&lt;br /&gt;
|88.7&lt;br /&gt;
|200ms&lt;br /&gt;
|-&lt;br /&gt;
|87&lt;br /&gt;
|100ms&lt;br /&gt;
|-&lt;br /&gt;
|INT8&lt;br /&gt;
|Speech Commands&lt;br /&gt;
|96&lt;br /&gt;
|1105ms&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |MCUNet2&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |INT8&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |ImageNet&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |71.8&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|STM32H743&lt;br /&gt;
|&lt;br /&gt;
|512k  + 2M&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |STM32F412&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |256kB  + 1M&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|64.9&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Federated Learning ===&lt;br /&gt;
A recent approach known as federated learning&amp;lt;ref&amp;gt;McMahan, Brendan, et al. &amp;quot;Communication-efficient learning of deep networks from decentralized data.&amp;quot; ''Artificial intelligence and statistics''. PMLR, 2017.&amp;lt;/ref&amp;gt; was put forth to solve privacy issues when training deep neural network (DNN) models, but can also be applied. By aggregating local updates to model parameters in a central host, a powerful trained model can be created in the host which can then distribute the better model.&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=427</id>
		<title>Distributed learning</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=Distributed_learning&amp;diff=427"/>
		<updated>2022-11-04T06:46:52Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: Under construction, saving for backup.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The use of artificial intelligence (AI) in extreme edge devices such as wireless sensor nodes (WSNs) will greatly benefit its scalability and application space. AI can be applied to solve problems with clustering, data routing, and most importantly it can be used to reduce the volume of data transmission via data compression or making conclusions from data within the node itself &amp;lt;ref&amp;gt;Alsheikh, Mohammad Abu, et al. &amp;quot;Machine learning in wireless sensor networks: Algorithms, strategies, and applications.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 16.4 (2014): 1996-2018.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
At the moment, potential use cases for ML include, but are not limited to:&lt;br /&gt;
&lt;br /&gt;
# Pattern Classification (including recognizing speech commands, voice recognition for authentication, bio-signal processing for medical sensors)&lt;br /&gt;
# Image Processing (including presence detection a.k.a. visual wake words, car counting for traffic analytics)&lt;br /&gt;
# Node routing and scheduling (see more in clustering)&lt;br /&gt;
&lt;br /&gt;
However, since devices in the extreme edge are constrained to work with extremely low amounts of energy &amp;lt;ref&amp;gt;Ma, Dong, et al. &amp;quot;Sensing, computing, and communications for energy harvesting iots: A survey.&amp;quot; ''IEEE Communications Surveys &amp;amp; Tutorials'' 22.2 (2019): 1222-1250.&amp;lt;/ref&amp;gt;, even the simplest AI models are difficult to execute with typical sequential processors. WSNs have memories in the order of kB and clock speeds in the order of kHz to MHz due to energy constraints, rendering them unable to run state-of-the art AI applications.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Reference WSN Project&lt;br /&gt;
!Device&lt;br /&gt;
!CLK&lt;br /&gt;
!Memory&lt;br /&gt;
!Secondary Memory&lt;br /&gt;
!Processor&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v1&lt;br /&gt;
|Digi XBee-Pro, TI MSP430F213&lt;br /&gt;
|16MHz&lt;br /&gt;
|512B&lt;br /&gt;
|8KB+256B&lt;br /&gt;
|16-bit MSP-430&lt;br /&gt;
|-&lt;br /&gt;
|ReSE2NSE v2&lt;br /&gt;
|ATSAMR21&lt;br /&gt;
|&amp;lt;48MHz&lt;br /&gt;
|32KB&lt;br /&gt;
|256KB&lt;br /&gt;
|ARM32-Cortex M0&lt;br /&gt;
|}&lt;br /&gt;
To contrast with the above specs, the TinyML recommended model to classify CIFAR-10 has 3.5MB parameters. &lt;br /&gt;
&lt;br /&gt;
Apart from the above constraints, WSNs running AI are placed in potentially changing environments that are potentially different from the environment in which the AI was trained. This is a problem known as concept drift. AI algorithms running on WSN need to be able to work regardless of continuously changing patterns using concepts such as online learning.&lt;br /&gt;
&lt;br /&gt;
Zhou '21 describes edge AI as using widespread edge resources to gain AI insight. This means not only running an AI algorithm on one node, but potentially cooperatively running inference and training on multiple nodes. There are several degrees to the concept, ranging from training and inference in the server, training in the server but inference in the node, and running both training and inference on the node itself. Ideally, for the highest scalability and lowest communication overhead, training and inference ideally take place in the nodes.&lt;br /&gt;
[[File:Concept Map of Distributed Machine Learning for WSN 2.png|center|frame]]&lt;br /&gt;
&lt;br /&gt;
=== TinyML ===&lt;br /&gt;
The [https://www.tinyml.org/ TinyML organization] describes tinyML as the &amp;quot;field of machine learning technologies and applications including hardware, algorithms and software capable of performing on-device sensor data analytics at extremely low power, typically in the mW range and below, and hence enabling a variety of always-on use-cases and targeting battery operated devices&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
MLPerfTiny&amp;lt;ref&amp;gt;Banbury, Colby, et al. &amp;quot;Mlperf tiny benchmark.&amp;quot; ''arXiv preprint arXiv:2106.07597'' (2021).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ref&amp;gt; is widely accepted as the common benchmarking requirement for TinyML works. It prescribes basic accuracy targets for 4 selected basic use cases for TinyML as shown in Table.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Use Case&lt;br /&gt;
!Dataset&lt;br /&gt;
!Specified Model&lt;br /&gt;
!Quality Target&lt;br /&gt;
|-&lt;br /&gt;
|Visual Wakewords&lt;br /&gt;
|MSCOCO&lt;br /&gt;
|MobileNetv1&lt;br /&gt;
|80% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Keyword Spotting&lt;br /&gt;
|Google Speech Commands&lt;br /&gt;
|DS-CNN&lt;br /&gt;
|90% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Image Classification&lt;br /&gt;
|CIFAR-10&lt;br /&gt;
|ResNet&lt;br /&gt;
|85% (top-1)&lt;br /&gt;
|-&lt;br /&gt;
|Anomaly Detection&lt;br /&gt;
|DCASE2020&lt;br /&gt;
|FC-Autoencoder&lt;br /&gt;
|85% Area under Curve&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Concept Drift ===&lt;br /&gt;
A recent approach known as federated learning&amp;lt;ref&amp;gt;McMahan, Brendan, et al. &amp;quot;Communication-efficient learning of deep networks from decentralized data.&amp;quot; ''Artificial intelligence and statistics''. PMLR, 2017.&amp;lt;/ref&amp;gt; was put forth to solve privacy issues when training deep neural network (DNN) models, but can also be applied. By aggregating local updates to model parameters in a central host, a powerful trained model can be created in the host which can then distribute the better model.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=File:Concept_Map_of_Distributed_Machine_Learning_for_WSN_2.png&amp;diff=426</id>
		<title>File:Concept Map of Distributed Machine Learning for WSN 2.png</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=File:Concept_Map_of_Distributed_Machine_Learning_for_WSN_2.png&amp;diff=426"/>
		<updated>2022-11-04T06:03:27Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Map showing the relationships of ideas involved with enabling ML for WSN, including the specific constraints they work on.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
	<entry>
		<id>https://cidr.up-microlab.org/index.php?title=File:Concept_Map_of_Distributed_Machine_Learning_for_WSN.svg&amp;diff=425</id>
		<title>File:Concept Map of Distributed Machine Learning for WSN.svg</title>
		<link rel="alternate" type="text/html" href="https://cidr.up-microlab.org/index.php?title=File:Concept_Map_of_Distributed_Machine_Learning_for_WSN.svg&amp;diff=425"/>
		<updated>2022-11-04T06:00:26Z</updated>

		<summary type="html">&lt;p&gt;Lawrence Quizon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Map displaying the constraints involved with running distributed ML on WSN, along with potential concepts and solutions.&lt;/div&gt;</summary>
		<author><name>Lawrence Quizon</name></author>
	</entry>
</feed>