opea-project / GenAIExamples

Generative AI Examples is a collection of GenAI examples such as ChatQnA, Copilot, which illustrate the pipeline capabilities of the Open Platform for Enterprise AI (OPEA) project.
https://opea.dev
Apache License 2.0
285 stars 195 forks source link

Terraform template for different GenAI Examples #427

Open arun-gupta opened 4 months ago

arun-gupta commented 4 months ago

There is a Terraform template for Chat QnA sample at https://github.com/intel/terraform-intel-aws-vm/tree/main/examples/gen-ai-xeon-opea-chatqna. This is only targeted at AWS.

We need a Terraform template for all GenAI examples that can be used to deploy on different cloud providers. Here are the target CSPs:

Each template should require the least amount of configuration, assume reasonable defaults yet configurable, and be able to deploy the entire sample with a public IP address to run the sample.

tedivm commented 4 months ago

What is the end result goal? Are we attempting to make it easy to create a demo, or do we want to make reusable modules that allow others to launch production environments? The reason I ask is that the approach is going to be very different depending on the goal.

I think ultimately we want to build reusable modules, but there is a lot that will go into that so I also understand why pushing out simple examples first would make sense.

arun-gupta commented 4 months ago

The answer is "and" instead of "or". I'd like to have a simple demo that shows a quick run of OPEA on these CSPs. And then eventually modules that others can build on.

mkbhanda commented 4 months ago

We have a template for AWS, but looking to cover other CSPs and more of the GenAIExamples. https://github.com/intel/optimized-cloud-recipes/tree/main/recipes/ai-opea-chatqna-xeon

lucasmelogithub commented 3 months ago

Our Intel team has developed and maintained 31 Terraform Modules and some Ansible Modules.

TF Modules: https://github.com/orgs/intel/repositories?q=terraform-&type=all&language=&sort= Ansible Modules: https://github.com/intel/optimized-cloud-recipes/tree/main/recipes

And as pointed out, we are now showcasing OPEA examples for end-to-end. @wsfowler kicked us off with the first one for AWS that was linked above. We plan to add others but lean on OPEA components/examples. The stronger the OPEA examples are, the better these will be. We are adding the glue between OPEA and cloud deployments, starting with single nodes.

The current focus is Azure/AWS/GCP, no plans yet to support other CSPs.

I'll work with the team to focus on two new ones:

Do we know which OPEA use cases(page views?) are getting the most attention so we can prioritize?

Does this help? Open to discussing if needed(MS Teams).

lucasmelogithub commented 3 months ago

By the way we keep them modular for many reasons.

They all work independently, but better together. Legos, building blocks, solutions.

arun-gupta commented 3 months ago

ChatQnA on Amazon, Azure and GCP are a great start.

Can the Terraform templates show how to deploy this sample on CSP's k8s service?

Are the Terraform templates modular where other samples can be accommodated when ready?

Are there any discussions about Ansible script to deploy on OpenShift?

lucasmelogithub commented 3 months ago

ChatQnA on Amazon, Azure and GCP are a great start.

Cool, thanks for the feedback.

Can the Terraform templates show how to deploy this sample on CSP's k8s service?

We have modules to deploy EKS, GKE, AKS. In short yes, we would depend and use OPEA helm charts as the integration point. If those are available, it should not be too hard.

Are the Terraform templates modular where other samples can be accommodated when ready? Yes, since we have VM modules for AWS/Azure/GCP. All we need is to automate the OPEA deployments with Ansible Modules and then create new Terraform examples like we did for AWS ChatQnA.

For example, the same OPEA ChatQnA Ansible Module will be used on the Azure/GCP Terraform examples.

Are there any discussions about Ansible script to deploy on OpenShift?

We have not looked into OpenShift at all. Due to priorities, so far, the focus has been on first party cloud services. Once we developed the other two, my focus was going to be on developing Ansible Modules for other use cases, ex: CodeGen, for more Xeon single node Terraform examples

arun-gupta commented 3 months ago

I would suggest the following priority:

ChatQnA on Amazon, Microsoft, Azure ChatQnA on OpenShift ChatQnA on EKS, GKE, AKS

lucasmelogithub commented 3 months ago

I would suggest the following priority:

ChatQnA on Amazon, Microsoft, Azure ChatQnA on OpenShift ChatQnA on EKS, GKE, AKS

Thanks for the feedback, let me bring this up with the team.

mkbhanda commented 3 months ago

So @arun-gupta is suggesting first single node deployments on AWS and Microsoft Azure, then Red Hat OpenShift followed by Kubernetes variants on popular CSPs: Amazon, Google, and Microsoft Azure.

arun-gupta commented 3 months ago

@mkbhanda just to be clear, single node deployments on AWS, Microsoft and Google using Docker Compose, then Red Hat Open Shift, and K8s distros on hyperscalers in the order mentioned above.

lucasmelogithub commented 3 months ago

@mkbhanda just to be clear, single node deployments on AWS, Microsoft and Google using Docker Compose, then Red Hat Open Shift, and K8s distros on hyperscalers in the order mentioned above.

Yes, for single nodes we will leverage the OPEA docker compose files. For K8, we will hopefully use the OPEA helm charts.

chickenrae commented 1 month ago

This is an issue for the OPEA Hackathon, if @lucasmelogithub you are going to do this during October great, if not, can you unassign yourself so we can have someone work on it?

lucasmelogithub commented 1 month ago

PR for ChatQnA for AWS and GCP created

https://github.com/opea-project/GenAIExamples/pull/970

poussa commented 1 month ago

PR for ChatQnA for AWS EKS including persistent volume support for model data and load balancer service type for external consumtion.

https://github.com/opea-project/GenAIInfra/pull/480