Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
Individual project: each student should work on his/her own project
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