Skip to content

A framework for using High Performance Computing applications as serverless functions. (FaaS)

License

Notifications You must be signed in to change notification settings

adhinneupane/serverless-hpc

Repository files navigation

tensorflow-logo aws-logo docker-logo openwhisk-logo python-logo

Serverless FaaS for High Performance Computing

High Performance Computing (HPC) workloads such as predicting weather and genome sequencing utilize neural networks and popular machine learning libraries that require significant computing power and generally run-on coupled nodes that manage their own execution environments. This requires a layered architecture that is always available for exposing supercomputing power shared between different layers to an in house or remote user(s)/endpoint whenever necessary. This results in large waiting queues, unutilized idle times, custom configurations per cluster and ultimately high maintenance costs.

Function as a Service (FaaS) has led to optimized cloud architectures that facilitate heavy workloads while keeping minimal idle times, always available and powerful fault tolerant implementations often coupled with pay as you use models. FaaS has been successfully utilized in designing microservices that power modern web-applications that have proliferated commercial and open-source clouds.

However, HPC infrastructure designed using only FaaS workloads that is available on run time and can perform scientific workloads are limited. In order to explore this area, we design a fully serverless workflow that can allow FaaSification of scientific workloads and evaluate the performance results against a parallel computing setup designed using virtualization technologies. We train and deploy a neural network to classify up to 3000 images of clothing and predict labels with 99% accuracy.

We also explore some opensource implementations that stem from this design.

The repository is not limited to: tensorflow image classification and includes examples for deploying use cases such as data-processing on Apache Openwhisk.

Requirements:

aws-cli	 
Apache openwhisk	
wsk cli 
docker
python	
TensorFlow 

Architecture:

image

Setup:

wsk-cli

AUTH=<YOUR UUID>
APIHOST==<YOUR APIHOST> 
NAMESPACE=<YOUR NAMESPACE>
wsk property set --apihost <YOUR API HOST>  --auth  <Your auth code from the Runtime team>  namespace  <Your namespace from the Runtime team>

aws-cli

region = <region>
output = json
cli-binary-format = raw-in-base64-out

Deploy:

image

cd ../serverless-hpc 
npm install 
node index.js

Author

Ashutosh Neupane
adhinneupane2020@gmail.com