Marqo redefines multimodal AI vector search by offering a powerful, all-in-one engine for both text and image processing, complete with inbuilt vector generation, storage, and retrieval based on tensor search.
It simplifies machine learning deployment and input transformations, ensuring seamless integration into your application. Embrace Marqo to elevate your AI and ML search capabilities with minimal effort and maximum efficiency.
For more information on Marqo, see the Marqo official website.
Popular open stacks on Kubernetes, packaged by Google.
This solution uses Vespa as the vector repository. For more information visit official documentation.
Get up and running with a few clicks! To install this MarqoCloud app to a Google Kubernetes Engine (GKE) cluster by using Google Cloud Marketplace, follow the on-screen instructions.
You can use Google Cloud Shell or a local workstation to follow the steps below.
You'll need the following tools in your development environment. If you are
using Cloud Shell, then gcloud
, kubectl
, Docker, and Git are installed in your
environment by default.
Login gcloud
and follow the instructions:
gcloud auth login
Set the default project:
export PROJECT_ID=<PROJECT_ID>
gcloud config set project $PROJECT_ID
Set the app instance name:
export APP_INSTANCE_NAME=marqo1
Configure the container registery:
gcloud services enable containerregistry.googleapis.com
You will need to create a cluster, into which you will deploy the Marqo application.
Create a new cluster from the command line (this can take a few minutes):
# set cluster name
export CLUSTER=marqo-cluster
# set preferred zone and region
export REGION=australia-southeast1
export ZONE=australia-southeast1-a
gcloud config set compute/region $REGION
gcloud config set compute/zone $ZONE
Note: Ensure you have Kubernetes enabled in the project settings:
echo Open this URL: https://console.developers.google.com/apis/api/container.googleapis.com/overview?project=$PROJECT_ID
Create the cluster:
gcloud container clusters create $CLUSTER
Configure kubectl
to connect to the new cluster:
gcloud container clusters get-credentials "$CLUSTER"
Ensure you have enough quota to be able to provision the node pools below, the documentation for quotas in Google Kubernetes Engine can be found here. The same principle applies if you are seeking GPU-based Marqo instances, please refer to the GPU documentation for Google Kubernetes Engine for provisioning GPU enabled machine instances. You may seek to use the reservation system to ensure you have the quota required.
The Marqo system is composed of:
- Marqo
- Vespa
Each requires their own set of node-pools in order to function. Each of the various Marqo and Vespa containers will deploy into their own node-pool. Operating in seperate node-pools ensures fine control over each machine instance type.
Create the node pools (each can take a few minutes):
gcloud container node-pools create vespa-configserver-nodes --cluster "$CLUSTER" --machine-type n1-standard-2 --disk-type pd-standard --disk-size=20 --num-nodes 3
gcloud container node-pools create vespa-admin-nodes --cluster "$CLUSTER" --machine-type n1-standard-2 --disk-type pd-standard --disk-size=20 --num-nodes 1
gcloud container node-pools create vespa-feed-nodes --cluster "$CLUSTER" --machine-type n1-standard-2 --disk-type pd-standard --disk-size=20 --num-nodes 1
gcloud container node-pools create vespa-query-nodes --cluster "$CLUSTER" --machine-type n1-standard-2 --disk-type pd-standard --disk-size=20 --num-nodes 1
gcloud container node-pools create vespa-content-nodes --cluster "$CLUSTER" --machine-type n1-standard-2 --disk-type pd-standard --disk-size=20 --num-nodes 2
# Non-GPU enabled Marqo
# Alternatively, if you would like to make use of GPU-acceleration, uncommment and run the alternate command
gcloud container node-pools create marqo-nodes --cluster "$CLUSTER" --machine-type n2-standard-4 --disk-type pd-standard --disk-size=100 --num-nodes 1
# GPU enabled
# Uncommend and run this command in order to provision a GPU-accelerated machine instance type.
# gcloud container node-pools create marqo-nodes --accelerator type=nvidia-tesla-t4,count=1,gpu-driver-version=latest --cluster "$CLUSTER" --machine-type n1-standard-4 --disk-type pd-standard --disk-size=100 --num-nodes 1
Now we have the correct node pools configured, we can delete the default-pool
gcloud container node-pools delete default-pool --cluster "$CLUSTER" --quiet
kubectl apply -f "https://raw.githubusercontent.com/GoogleCloudPlatform/marketplace-k8s-app-tools/master/crd/app-crd.yaml"
Now the cluster is provisioned and configured it is possible to deploy from the GCP marketplace.