uclasystem / dorylus

Dorylus: Affordable, Scalable, and Accurate GNN Training
77 stars 12 forks source link

Question: how to run dorylus on other platforms #2

Closed CodingYuanLiu closed 3 years ago

CodingYuanLiu commented 3 years ago

Dear maintainers,

I'm using another faas platform rather than AWS Lambda and I would like to run dorylus on other serverless platforms like openwhisk. However, I find that the implementation of dorylus is tightly coupled with AWS Lambda.

Could you please give me some advice on how to run dorylus on other platforms? E.g., what files should I modify? How much time or effort I need to take approximately?

Thank you!

johnnt849 commented 3 years ago

Hi,

You're right that our current implementation assumes that the serverless implementation will be AWS Lambda. However, it should be possible to implement a module specific to OW so that you can run your own serverless threads.

You can implement a new ResourceComm module as seen in src/graph-server/resource_comm.hpp which is a virtual class that can implement different backends. You can follow our example of src/graph-server/lambda_comm.hpp which starts by initializing several listener threads (LambdaWorker) and then uses the NNCompute() function to invoke Lambdas. Basically you should take our similar logic from src/graph-server/lambda_comm.cpp such as LambdaComm::invokeLambda(), LambdaComm::asyncRelaunchLoop(), and LambdaComm::callback(). The rest of the implementation should be reusable. The LambdaWorker class for example is not tied to AWS Lambdas, it just listens for requests and sends/receives tensors.

You will also need to add some logic to instantiate the new ResourceComm class here.

As long as you have some way of invoking your serverless functions and have it compiled and uploaded to your serverless platform then that should work. I would estimate this taking about 2 to 3 weeks.

CodingYuanLiu commented 3 years ago

Thank you very much! Your answer is really helpful.