diff --git a/ai-ml/jupyterhub/examples/docker/elyra-updated-jupyterhub.Dockerfile b/ai-ml/jupyterhub/examples/docker/elyra-updated-jupyterhub.Dockerfile new file mode 100644 index 000000000..abf465ac5 --- /dev/null +++ b/ai-ml/jupyterhub/examples/docker/elyra-updated-jupyterhub.Dockerfile @@ -0,0 +1,3 @@ +FROM elyra/elyra:3.15.0 + +RUN pip install --upgrade jupyterhub==4.0.2 diff --git a/ai-ml/jupyterhub/helm/jupyterhub/jupyterhub-values-dummy.yaml b/ai-ml/jupyterhub/helm/jupyterhub/jupyterhub-values-dummy.yaml index 12873189e..24320e22a 100755 --- a/ai-ml/jupyterhub/helm/jupyterhub/jupyterhub-values-dummy.yaml +++ b/ai-ml/jupyterhub/helm/jupyterhub/jupyterhub-values-dummy.yaml @@ -25,6 +25,17 @@ proxy: singleuser: startTimeout: 1200 # 20 mins to spin up a notebook server for GPU including the image pull profileList: + - display_name: Elyra (CPU) + description: "Elyra Notebooks | Karpenter Autoscaling" + kubespawner_override: + image: public.ecr.aws/data-on-eks/elyra-jupyter:3.15.0 + node_selector: + NodePool: default + cpu_guarantee: 2 + mem_guarantee: 8G + cpu_limit: 4 + mem_limit: 8G + cmd: null - display_name: Data Engineering (CPU) description: "PySpark Notebooks | Karpenter AutoScaling" profile_options: diff --git a/website/docs/blueprints/ai-ml/img/elyra-workflow.png b/website/docs/blueprints/ai-ml/img/elyra-workflow.png new file mode 100644 index 000000000..a2f8ac6ef Binary files /dev/null and b/website/docs/blueprints/ai-ml/img/elyra-workflow.png differ diff --git a/website/docs/blueprints/ai-ml/img/notebook-server-list.png b/website/docs/blueprints/ai-ml/img/notebook-server-list.png new file mode 100644 index 000000000..c1e1d5cb1 Binary files /dev/null and b/website/docs/blueprints/ai-ml/img/notebook-server-list.png differ diff --git a/website/docs/blueprints/ai-ml/jupyterhub.md b/website/docs/blueprints/ai-ml/jupyterhub.md index 75b7afc14..3b97237f8 100644 --- a/website/docs/blueprints/ai-ml/jupyterhub.md +++ b/website/docs/blueprints/ai-ml/jupyterhub.md @@ -166,9 +166,11 @@ kubectl port-forward svc/proxy-public 8080:80 -n jupyterhub **Sign-in:** Navigate to [http://localhost:8080/](http://localhost:8080/) in your web browser. Input `user-1` as the username and choose any password. ![alt text](img/image.png) -Select server options: Upon sign-in, you’ll be presented with a variety of Notebook instance profiles to choose from. For this time-slicing feature demonstration, we’ll be using the **Data Science (GPU + Time-Slicing – G5)** profile. Go ahead and select this option and choose the Start button. +Select server options: Upon sign-in, you’ll be presented with a variety of Notebook instance profiles to choose from. The `Data Engineering (CPU)` server is for traditional, CPU based notebook work. The `Elyra` server provides [Elyra](https://github.com/elyra-ai/elyra) functionality, allowing you to quickly develop pipelines: ![workflow](img/elyra-workflow.png). `Trainium` and `Inferentia` servers will deploy the notebook server onto Trainium and Inferentia nodes, allowing accelerated workloads. `Time Slicing` and `MIG` are two different strategies for GPU sharing. Finally, the `Data Science (GPU)` server is a traditional server running on an NVIDIA GPU. -![alt text](img/image-1.png) +For this time-slicing feature demonstration, we’ll be using the **Data Science (GPU + Time-Slicing – G5)** profile. Go ahead and select this option and choose the Start button. + +![alt text](img/notebook-server-list.png) The new node created by Karpenter with the `g5.2xlarge` instance type has been configured to leverage the timeslicing feature provided by the [NVIDIA device plugin](https://github.com/NVIDIA/k8s-device-plugin). This feature allows for efficient GPU utilization by dividing a single GPU into multiple allocatable units. In this case, we have defined `4` allocatable GPUs in the NVIDIA device plugin Helm chart config map. Below is the status of the node: