讲解 IERG 4080、辅导 Python程序语言
IERG 4080 Assignment 4 (Mini Project)
Individual project: each student should work on his/her own project
Deadline: 23:59, 12 May 2024 (Sunday)
15% of the final grade
Overview
In this mini project, you will deploy a machine learning application to AWS cloud service utilizing what you
have learnt in this course. You are free to choose a topic and a machine learning task (or work on Assignment
3) in which you are interested.
The machine learning task does not have to be a very complicated one. The focus of this project should be on
how the system is designed such that it is scalable.
Your system should be implemented using Python 3, and deployed in AWS cloud (within the AWS Academy
to avoid charges). You are free to use any open source packages or libraries in your project.
If you have used AI tools or online resources, please make a explicit declaration in the front page of the
report.
Requirements
Your project should implement the following kinds of features/functions:
Machine Learning
Your application should be powered by a machine learning model
You can collect data and train a model for the task all by yourself
You can also use existing pre-trained models available on the Internet, or even packages that
implement specific machine learning applications
You should provide functions in addition to simply applying the model to the user's input, such
as allowing the user to retrieve the most recent predictions, or configure some settings to choose
different models
Network programming
Using HTTP, or asynchronous messaging to implement clients and servers
HTTP: Your service should be accessible with a URL, e.g., the HTTP part in Assignment 3
Concurrent programming
Using multi-threading, multi-processing or asyncio to achieve concurrent execution of tasks
System design
Consider which part(s) of the system is the bottleneck
Design your system in such a way that it allows horizontal scaling
Ideally, you should setup the AWS Auto Scaling Group and Load Balancing
Your system should be able to support multiple concurrent users
Use either asynchronous message queues, pub/sub systems, or caches to increase the
throughput and scalability of your system
Robustness
You should prevent the application from crashing by validating inputs and catch possible
exceptions wherever necessary
User Interface
You can use Telegram as your frontend (recommended), or you can develop your own interface
using Python, or create a Web-based application
Testing
You shall use some load testing tools to benchmark your applications, e.g., Apache Bench,
jMeter, Postman, ...
Ideally, you shall run a first benchmark after your first successfuly deployment. Record the
improvements after you extend your system.
Note
You will be invited to AWS Academy Learner Lab. From there, you have $100 credits and 4 hours lab
time for each session (can be resumed). Remember to always test on your local PC, and keep a backup
of your code in your PC or cloud storages like Github or OneDrive.
The first challenging part would be deploying it to the cloud (you need to recall how to use ssh, scp,
and related Linux techniques). The second challenging part is setting up auto scaling in AWS.
Assessment Scheme
Your project will be assessed using the criteria listed below:
20% - Machine learning
20% - Network programming
20% - Concurrent programming
20% - System design and complexity
10% - Robustness
10% - User Interface
Other Topics
Below are some possible topics for reference:
Language detection
Allow user to type in a sentence in a certain language, the system will detect which language the
sentence is written in
Gender and age prediction
Take a photo of a person, and predict the gender and age of the person
News classification
Given a URL to a news article, the system will classify the news article into one of the major
categories (e.g. sports, finance, technology, science, etc.)
Audio to Text
Let the user record a voice message in Telegram, the system will translate the audio into text
Recommendation
Allow users to rate items and the system will recommend new items to the users, e.g., movies,
books, articles
...
References and Resources
Pre-trained Machine Learning Models
https://huggingface.co/
https://www.kaggle.com/models
https://modelzoo.co/
Programming Big Data System
IERG4330 (K8s, Kafka, Spark, Hadoop)
Some guides available online
Deploying a flask application on an AWS EC2 instance
Submission
You should submit the following files to Blackboard:
A README file containing brief description of each Python script, the dependencies (i.e. open source
packages or libraries you have used), and instructions on how to run your programs
All source codes
Data files (if the data is larger than 10MB, upload to cloud storage and include links in the README
file)
A report in PDF format with the following information:
Functions/features of your system
e.g., the APIs, endpoints that receive user requests, and the backend workers/process.
Description of your machine learning task (e.g. where did you get the data, what ML algorithm
did you use, what is the performance of your model)
A diagram of the system architecture
Description of how your system is designed to be scalable
with Load/Stress testing result