From 962b70c888bfbed4c8acc553ac7f4d3e8eab7a4c Mon Sep 17 00:00:00 2001 From: nithiyn Date: Mon, 28 Apr 2025 09:41:04 -0400 Subject: [PATCH 01/28] Create nxdi.txt --- 2.projects/NxD-inference/nxdi.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 2.projects/NxD-inference/nxdi.txt diff --git a/2.projects/NxD-inference/nxdi.txt b/2.projects/NxD-inference/nxdi.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2.projects/NxD-inference/nxdi.txt @@ -0,0 +1 @@ + From 7a818cad5fdfd6cf432aece217bc93199476c12f Mon Sep 17 00:00:00 2001 From: nithiyn Date: Mon, 28 Apr 2025 09:42:04 -0400 Subject: [PATCH 02/28] commit mistral small nxdi-vllm deployment guide deployment, profiling, and benchmarking --- .../mistral-small-3-0-nxdi-guide.ipynb | 1173 +++++++++++++++++ 1 file changed, 1173 insertions(+) create mode 100644 2.projects/NxD-inference/mistral-small-3-0-nxdi-guide.ipynb diff --git a/2.projects/NxD-inference/mistral-small-3-0-nxdi-guide.ipynb b/2.projects/NxD-inference/mistral-small-3-0-nxdi-guide.ipynb new file mode 100644 index 0000000..e2a00e6 --- /dev/null +++ b/2.projects/NxD-inference/mistral-small-3-0-nxdi-guide.ipynb @@ -0,0 +1,1173 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5a972332", + "metadata": {}, + "source": [ + "# Guide to deploy, benchmark, and profile Mistral Small 2501 with NXDI and VLLM on Trn1\n", + "\n", + "This notebook provides a step-by-step guide for serving, profiling, and running benchmarks on Mistral Small 24B model on a **Trn1** instance. \n", + "\n", + "## Mistral Small 2501\n", + "\n", + "[Mistral Small 3.0](https://mistral.ai/news/mistral-small-3) is a 24B-parameter language model from Mistral AI optimized for low-latency performance across common AI tasks. Released under the Apache 2.0 license, it features both pre-trained and instruction-tuned versions designed for efficient local deployment. The model achieves 81% accuracy on the MMLU benchmark and performs competitively with larger models like Llama 3.3 70B and Qwen 32B, while operating at three times the speed on equivalent hardware.\n", + "\n", + "## Neuronx-Distributed-Inference (NxDI)\n", + "\n", + "[NxD Inference](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/nxdi-overview.html#nxdi-overview) (where NxD stands for NeuronX Distributed) is an open-source PyTorch-based inference library that simplifies deep learning model deployment on AWS Inferentia and Trainium instances. Introduced with Neuron SDK 2.21 release, it offers advanced inference capabilities, including features such as continuous batching and speculative decoding for high performance inference. Additionally, it supports inference engine for vLLM for seamless integration with the majority of customers’ production deployment systems. ML developers can use NxD Inference library at different levels of abstraction that fits their inference use case.\n", + "\n", + "## Overview\n", + "\n", + "1. **Check/Install Dependencies** for AWS Neuron (NXDI, vLLM fork, etc.).\n", + "2. **Optional**: Install additional utilities (`inference-benchmarking` (lm_eval), InfluxDB, `llmperf` for performance benchmarking, etc.).\n", + "3. **Download** Mistral Small 24B base model.\n", + "4. **Spin Up** a VLLM server, benchmark and pull a profile.\n", + " \n", + "### Prerequisites\n", + "\n", + "- **Amazon EC2 Trn1.32xlarge instance** with AWS Neuron drivers and recommended PyTorch environment.\n", + "- **NXDI virtual environment** (e.g., `aws_neuronx_venv_pytorch_2_5_nxd_inference`) is required.\n", + "\n", + "- To request a quota increase for `trn1.32xlarge` on EC2, follow these steps:\n", + "\n", + "1. Navigate to the [Service Quotas console](https://console.aws.amazon.com/servicequotas/).\n", + "2. Choose Amazon EC2.\n", + "3. Review your default quota for the following resources:\n", + " - `trn1.32xlarge` for ec2 on-demand use\n", + "4. If needed, request a quota increase for these resources.\n" + ] + }, + { + "cell_type": "markdown", + "id": "355c31c9-b15d-4879-84d4-92d62fd82d4d", + "metadata": {}, + "source": [ + "
\n", + "\n", + "NOTE: To make sure that you have enough quotas to support your usage requirements, it's a best practice to monitor and manage your service quotas. Requests for Amazon EC2 service quota increases are subject to review by AWS engineering teams. Also, service quota increase requests aren't immediately processed when you submit a request. After your request is processed, you receive an email notification.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "8934c846-b3f5-458a-b11b-77b813904e0c", + "metadata": {}, + "source": [ + "### Create Your EC2 instance\n", + "\n", + "Follow the steps here for a detailed set up of your EC2 instance setup:\n", + "\n", + "#### Steps:\n", + "- Navigate to the EC2 dashboard from the AWS mgmt console and launch your instance.\n", + "- Search for the Ubuntu 22.04 Neuron DLAMI.\n", + "- Choose the instance size as Trn1.32xlarge or any other Neuron based instance you're able to fit the model.\n", + "- Set the inbound rule for ssh to your local machine's ip address or anywhere (note that it is not in accordance to set this to allow trafic from any ipv4, please ensure you secure these ports once done testing.\n", + "- Create and specify your ssh key in the instance configuration step. You will need your .pem file\n", + "- Create your instance.\n", + "- Once you have launched your instance, navigate to either your terminal or VSCODE and follow the steps below:\n", + "\n", + "#### ssh for powershell:\n", + "\n", + "`$PUBLIC_DNS=\"paste your public ipv4 dns here\" # public ipv4 DNS, e.g. ec2-3-80-.... from ec2 console`\n", + "`$KEY_PATH=\"paste ssh key path here\" # local path to key, e.g. ssh/trn.pem`\n", + "\n", + "`ssh -i $KEY_PATH -L 8888:127.0.0.1:8888 -L 8000:127.0.0.1:8000 -L 8086:127.0.0.1:8086 -L 3001:127.0.0.1:3001 ec2-user@$PUBLIC_DNS`\n", + "\n", + "#### ssh for linux/macOS:\n", + "\n", + "`export PUBLIC_DNS=\"paste your public ipv4 dns here\" # public ipv4 DNS, e.g. ec2-3-80-.... from ec2 console`\n", + "`export KEY_PATH=\"paste ssh key path here\" # local path to key, e.g. ssh/trn.pem`\n", + "\n", + "`ssh -i $KEY_PATH -L 8888:127.0.0.1:8888 -L 8000:127.0.0.1:8000 -L 8086:127.0.0.1:8086 -L 3001:127.0.0.1:3001 ec2-user@$PUBLIC_DNS`\n", + "\n", + "You should have sshed into your EC2 instance. \n", + "\n", + "- Activate your NXDI venv:\n", + "\n", + "`source /opt/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate`\n", + "\n", + "- Activate jupyter server:\n", + "\n", + "`jupyter lab —no-browser —port 8888 —ip 0.0.0.0`\n", + "\n", + "You should see a familiar jupyter output with a URL to the notebook.\n", + "\n", + "`http://localhost:8888/....`\n", + "\n", + "We can click on it, and a jupyter environment opens in our local browser. Upload this notebook to your jupyter environment and run the steps in the cells below." + ] + }, + { + "cell_type": "markdown", + "id": "c8d12827-cdd6-49ad-a5b9-fae27f1e7cda", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "511f6786-8ed7-4036-9070-3d6669fcb92b", + "metadata": {}, + "source": [ + "## Install and Set up Dependencies" + ] + }, + { + "cell_type": "markdown", + "id": "3652fc5a", + "metadata": {}, + "source": [ + "### 1. Validate / Activate Python Environment\n", + "\n", + "Inside a Jupyter notebook, using `source myenv/bin/activate` directly will not persist the environment in subsequent cells, because source runs in a subshell. Please run the command to actuvate the venv in the terminal or activate prior to spinning up the server" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1fa75aff", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "# (Optional) Uncomment or modify the following line to activate a custom environment.\n", + "#source /opt/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate\n", + "\n", + "echo 'Python environment check:'\n", + "which python\n", + "python --version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e657dec1-61fc-4cf7-bec8-48ecd1213c75", + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile requirements.txt\n", + "torch==2.5.1\n", + "transformers==4.45.2\n", + "huggingface_hub\n", + "git-lfs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f4844ef-f16c-4bda-bb05-62ca83a7d65f", + "metadata": {}, + "outputs": [], + "source": [ + "!pip install -U -r requirements.txt --quiet" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "88dc63be-90d4-4145-b42b-ef3fcf4c1f6c", + "metadata": {}, + "outputs": [], + "source": [ + "! pip list | grep neuron" + ] + }, + { + "cell_type": "markdown", + "id": "e9200f12-356c-43f9-afad-68cb1b486e4b", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "18ea6ed2", + "metadata": {}, + "source": [ + "### 2. Install Neuron vLLM Fork\n", + "\n", + "If you would like to serve your model via [vLLM](https://vllm.readthedocs.io/en/latest/) specialized for Neuron-based inference, you can install AWS Neuron's vLLM fork. NxD Inference integrates into vLLM by extending the model execution components responsible for loading and invoking models used in vLLM’s LLMEngine (see [link](https://docs.vllm.ai/en/latest/design/arch_overview.html#llm-engine) for more details on vLLM architecture). This means input processing, scheduling and output processing follow the default vLLM behavior.\n", + "\n", + "You enable the Neuron integration in vLLM by setting the device type used by `vLLM` to `neuron`.\n", + "\n", + "Currently, we support continuous batching and streaming generation in the NxD Inference vLLM integration. We are working with the vLLM community to enable support for other vLLM features like PagedAttention and Chunked Prefill on Neuron instances through NxD Inference in upcoming releases.\n", + "\n", + "\n", + "Skip this step if you do not need the vLLM server. Cloning and installing vLLM takes 8-10 minutes to complete\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cb9c80f8", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "set -euxo pipefail\n", + "\n", + "if [ -d \"/home/ubuntu/upstreaming-to-vllm\" ]; then\n", + " echo \"Neuron vLLM fork already cloned. Skipping.\"\n", + "else\n", + " echo \"Cloning and installing AWS Neuron vLLM fork...\"\n", + " cd /home/ubuntu/\n", + " git clone -b neuron-2.22-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git #neuron 2.22 vllm version\n", + " cd upstreaming-to-vllm\n", + " pip install -r requirements-neuron.txt --quiet\n", + "\n", + " # Install in editable mode with device set to neuron\n", + " VLLM_TARGET_DEVICE=\"neuron\" pip install -e . --quiet\n", + "fi" + ] + }, + { + "cell_type": "markdown", + "id": "b2c245e5-21ee-4002-b85e-01127d3e4340", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "adb91034", + "metadata": {}, + "source": [ + "### 3. (Optional) Install benchmarking and profiling tools\n", + "\n", + "#### 3.1 Install llmperf\n", + "\n", + "If you'd like to run benchmarks or load tests, you can install [llmperf](https://github.com/ray-project/llmperf). Skip if not needed.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cba57d72", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "if pip show llmperf > /dev/null 2>&1; then\n", + " echo \"llmperf is already installed. Skipping.\"\n", + "else\n", + " echo \"Installing llmperf...\"\n", + " cd /home/ubuntu/\n", + " git clone https://github.com/ray-project/llmperf.git > /dev/null 2>&1 --quiet\n", + " cd llmperf\n", + " pip install -e . --quiet\n", + "fi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e1b95852-a69f-4c6a-bdcd-915bdaf6d46a", + "metadata": {}, + "outputs": [], + "source": [ + "!pip list| grep neuron" + ] + }, + { + "cell_type": "markdown", + "id": "7ef8c80e-20dd-4d40-8d38-9973f03e08eb", + "metadata": {}, + "source": [ + "#### 3.2 Install AWS Neuron Tools (If Needed)\n", + "\n", + "This cell installs the Neuron packages for profiling and other tooling. If already installed, the script checks and skips. For more information, see [Installing Neuron Tools](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/index.html).\n", + "\n", + "> **Note**: If you have your apt sources already configured and have installed the Neuron packages, you can skip this step.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2855f8f0-7451-454d-a25f-2ac3574334de", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "set -euxo pipefail\n", + "\n", + "# Check if aws-neuronx-tools is installed\n", + "if dpkg -s aws-neuronx-tools > /dev/null 2>&1; then\n", + " echo \"aws-neuronx-tools is already installed. Skipping.\"\n", + "else\n", + " echo \"Installing aws-neuronx-tools...\"\n", + " . /etc/os-release\n", + "\n", + " sudo tee /etc/apt/sources.list.d/neuron.list > /dev/null < /dev/null 2>&1; then\n", + " echo \"InfluxDB2 is already installed, skipping.\"\n", + " if systemctl is-active --quiet influxdb; then\n", + " echo \"InfluxDB is already running.\"\n", + " else\n", + " sudo systemctl start influxdb\n", + " echo \"Setting up InfluxDB ...\"\n", + " # influx setup\n", + " fi\n", + "else\n", + " # Install InfluxDB\n", + " wget -q https://repos.influxdata.com/influxdata-archive_compat.key\n", + " echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && \\\n", + " cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null\n", + " echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list\n", + " \n", + " sudo apt-get update && sudo apt-get install influxdb2 influxdb2-cli -y\n", + " sudo systemctl start influxdb\n", + " \n", + " # Run non-interactive influx setup with all necessary flags\n", + " # replace the following flags below with the necessary credentials\n", + " influx setup \\\n", + " --username admin \\\n", + " --password testpassowrd \\\n", + " --org yourorg \\\n", + " --bucket yourbucket \\\n", + " --token yoursupersecrettoken \\\n", + " --force\n", + "\n", + "fi" + ] + }, + { + "cell_type": "markdown", + "id": "16eb98a5-dcc6-4d82-8283-949c6b3bf266", + "metadata": {}, + "source": [ + "#### 3.4 Accuracy-benchmarking with lm_eval\n" + ] + }, + { + "cell_type": "markdown", + "id": "d614ddb2-5284-488c-b377-77598508e001", + "metadata": {}, + "source": [ + "Copy the [inference-benchmarking](https://github.com/aws-neuron/aws-neuron-samples/tree/master/inference-benchmarking/) directory to some location on your instance. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8702b601-0a7e-4d87-8004-fa7bb7e0389a", + "metadata": {}, + "outputs": [], + "source": [ + "! git clone https://github.com/aws-neuron/aws-neuron-samples.git" + ] + }, + { + "cell_type": "markdown", + "id": "12f5e818-6488-4270-975a-81845b3d3cd4", + "metadata": {}, + "source": [ + "Change directory to the your copy of inference-benchmarking. Install other required dependencies in the same python env (e.g aws_neuron_venv_pytorch if you followed manual install NxD Inference ) by:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "07dddce8-101c-4d2d-b01c-fb93c6a07b72", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "cd /home/ubuntu/aws-neuron-samples/inference-benchmarking/\n", + "pip install -r requirements.txt --quiet" + ] + }, + { + "cell_type": "markdown", + "id": "4abe3940-45bb-4bae-a12f-d7d6959a2927", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "0d1970fc", + "metadata": {}, + "source": [ + "## 4. Download or Provide Your Model\n", + "\n", + "Below is a template for downloading the model. You can skip or adjust if you already have a local model.\n", + "\n", + "For more information on model checkpoint usage, see the [NxDI inference with Hugging Face-based models](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/developer_guides/feature-guide.html)." + ] + }, + { + "cell_type": "markdown", + "id": "ccff01a8-94f7-4d10-bdf7-71229ec19cb9", + "metadata": {}, + "source": [ + "You will need to log in to huggingface from the commandline. You will need your token from https://huggingface.co/settings/tokens Paste it to replace the MY_HUGGINGFACE_TOKEN_HERE text below. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d7186278-332e-4e07-87b8-fdf1a30f3335", + "metadata": {}, + "outputs": [], + "source": [ + "!git config --global credential.helper store\n", + "from huggingface_hub import notebook_login\n", + "notebook_login()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "860b9863-fc7e-4752-ae55-8d4b89312d4b", + "metadata": {}, + "outputs": [], + "source": [ + "#run the following code in the terminal to install git-lfs" + ] + }, + { + "cell_type": "markdown", + "id": "2500bcdc-6f0a-4484-b64d-dc23ef94c445", + "metadata": {}, + "source": [ + "`sudo apt-get update`\n", + "\n", + "`sudo apt-get install git-lfs`\n", + "\n", + "`git lfs install`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "01d2bdbf-1af1-4a20-a255-7642b8da704d", + "metadata": {}, + "outputs": [], + "source": [ + "#check that git lfs is installed on path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c72f91e7-89ee-4b90-99f4-91239197ed72", + "metadata": {}, + "outputs": [], + "source": [ + "!git lfs version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a8774eaf-d975-49ab-a1dc-2f6062513aab", + "metadata": {}, + "outputs": [], + "source": [ + "#start a tmux session and run the following code in the terminal:" + ] + }, + { + "cell_type": "markdown", + "id": "5117214b-99fd-4ecf-92fa-e084ee4d95cc", + "metadata": {}, + "source": [ + "`sudo apt-get update`\n", + "\n", + "`sudo apt-get install tmux`\n", + "\n", + "`tmux new -s mysession`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bcae2706-cd59-4e38-9353-fe9d3b2283ff", + "metadata": {}, + "outputs": [], + "source": [ + "# run the following code to download the model in a tmux session since this may take a while - run in terminal" + ] + }, + { + "cell_type": "markdown", + "id": "fb753745-5fd9-4e17-984f-e1647be82dda", + "metadata": {}, + "source": [ + "`git clone https://huggingface.co/mistralai/Mistral-Small-24B-Instruct-2501`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "baae5abf-e4e8-4418-8747-d5bc05e7f3fe", + "metadata": {}, + "outputs": [], + "source": [ + "!du -sh /home/ubuntu/Mistral-Small-24B-Instruct-2501/ #check if the full model was copied in" + ] + }, + { + "cell_type": "markdown", + "id": "6f481bc0-8312-4d24-8dd3-ad834518d1dc", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "083589fe-ee9b-4908-bbe0-b66fff1703a9", + "metadata": {}, + "source": [ + "## 5. Compile and save model and run generation with HuggingFaceGenerationAdapter- `inference_demo.py`\n", + "\n", + "NxD Inference supports running inference with the HuggingFace generate inference. To use HuggingFace-style generation, create a HuggingFaceGenerationAdapter that wraps a Neuron application model. Then, you can call generate on the adapted model. In the below cell, we use the `inference_demo` script that NXDI provides to compile, save, and run some prompts with our Mistral Small 24B model, for more information on the flags we set, refer to the [nxdi api reference guide](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/api-guides/api-guide.html)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a76a78e0-4ed2-4057-b702-d472d24f515f", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "# Replace this with the path where you downloaded and saved the model files.\n", + "# These should be the same paths used when compiling the model.\n", + "MODEL_PATH=\"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", + "COMPILED_MODEL_PATH=\"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", + "TP_DEGREE=32\n", + "\n", + "inference_demo \\\n", + " --model-type llama \\\n", + " --task-type causal-lm \\\n", + " run \\\n", + " --model-path $MODEL_PATH \\\n", + " --compiled-model-path $COMPILED_MODEL_PATH \\\n", + " --torch-dtype bfloat16 \\\n", + " --start_rank_id 0 \\\n", + " --tp-degree $TP_DEGREE \\\n", + " --batch-size 1 \\\n", + " --max-context-length 12288 \\\n", + " --seq-len 12800 \\\n", + " --on-device-sampling \\\n", + " --top-k 1 \\\n", + " --do-sample \\\n", + " --fused-qkv \\\n", + " --sequence-parallel-enabled \\\n", + " --pad-token-id 2 \\\n", + " --enable-bucketing \\\n", + " --context-encoding-buckets 2048 4096 8192 12288 \\\n", + " --token-generation-buckets 2048 4096 8192 12800 \\\n", + " --prompt \"What is annapurna labs?\" 2>&1 | tee log" + ] + }, + { + "cell_type": "markdown", + "id": "7df76059-45ba-4726-9bcc-7a545a6d1575", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "9a8ba793-3901-4620-b4b0-5150325a005a", + "metadata": {}, + "source": [ + "## 6. vLLM demo and perf benchmarking - standalone model " + ] + }, + { + "cell_type": "markdown", + "id": "cc9425cb-9354-4f0a-8375-900961ff54af", + "metadata": {}, + "source": [ + "#### 6.1 Run Mistral Small 2501 on Trainium" + ] + }, + { + "cell_type": "markdown", + "id": "1d58b2a2-8475-4599-8750-24253c3c9c29", + "metadata": {}, + "source": [ + "Here is an example for running online inference with Mistral Small 2501 and let's get some perf results. We will first compile and run generation on a sample prompt using a command installed by neuronx-distributed-inference. The script compiles the model and runs generation on the given input prompt. Note the path we used to save the compiled model. This path should be used when launching vLLM server for inference so that the compiled model can be loaded without recompilation. Please refer to [NxD Inference API Reference](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/api-guides/api-guide.html) and [VLLM user guide for NxDI](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/developer_guides/vllm-user-guide.html)for more information on these `inference_demo` flags." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "71c866cb-9ace-4fae-a940-8776c4e41ad1", + "metadata": {}, + "outputs": [], + "source": [ + "!pip list | grep neuron" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8fd75bb0-6fb8-4f89-8203-73b8247fc879", + "metadata": {}, + "outputs": [], + "source": [ + "# RUN THE FOLLOWING CELL IN A TERMINAL - spin up the vllm server" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca565569-45f9-4c0c-b81d-e0c7eaa98249", + "metadata": {}, + "outputs": [], + "source": [ + "# These should be the same paths used when compiling the model. - command for terminal\n", + "MODEL_PATH=\"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", + "COMPILED_MODEL_PATH=\"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", + "\n", + "export VLLM_NEURON_FRAMEWORK=\"neuronx-distributed-inference\"\n", + "export NEURON_COMPILED_ARTIFACTS=$COMPILED_MODEL_PATH\n", + "VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \\\n", + " --model $MODEL_PATH \\\n", + " --max-num-seqs 1 \\\n", + " --max-model-len 12800 \\\n", + " --tensor-parallel-size 32 \\\n", + " --device neuron \\\n", + " --use-v2-block-manager \\\n", + " --port 8000 &\n", + "PID=$!\n", + "echo \"vLLM server started with PID $PID\"" + ] + }, + { + "cell_type": "markdown", + "id": "2d24058f-67a6-4f94-9a39-0ce4ab64d801", + "metadata": {}, + "source": [ + "Let's send a quick request with a python client to the server:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "124db78f-f910-4bcd-b631-4a2fb4166a54", + "metadata": {}, + "outputs": [], + "source": [ + "from openai import OpenAI\n", + "\n", + "# Client Setup\n", + "openai_api_key = \"EMPTY\"\n", + "openai_api_base = \"http://localhost:8000/v1\"\n", + "\n", + "client = OpenAI(\n", + " api_key=openai_api_key,\n", + " base_url=openai_api_base,\n", + ")\n", + "\n", + "models = client.models.list()\n", + "model_name = models.data[0].id\n", + "\n", + "# Sampling Parameters\n", + "max_tokens = 1024\n", + "temperature = 1.0\n", + "top_p = 1.0\n", + "top_k = 50\n", + "stream = False\n", + "\n", + "# Chat Completion Request\n", + "response = client.chat.completions.create(\n", + " model=model_name,\n", + " messages=[\n", + " {\"role\": \"system\", \"content\": \"You are a helpful AI assistant.\"},\n", + " {\"role\": \"user\", \"content\": \"What is AWS Neuron?\"}\n", + " ],\n", + ")\n", + "\n", + "# Parse the response\n", + "generated_text = \"\"\n", + "generated_text = response.choices[0].message.content\n", + "\n", + "print(generated_text)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d9c4bad-6cb2-43d6-86db-d2011f1bdaf3", + "metadata": {}, + "outputs": [], + "source": [ + "!neuron-ls # show running processes - vllm server is still running" + ] + }, + { + "cell_type": "markdown", + "id": "8d8f6afb-6f64-4387-ad65-a7fe705d9fe9", + "metadata": {}, + "source": [ + "----" + ] + }, + { + "cell_type": "markdown", + "id": "053e81d2-e2cf-4ef7-9a55-1fb495bc416f", + "metadata": {}, + "source": [ + "#### 6.2 llmperf- let's run some quick benchmarks " + ] + }, + { + "cell_type": "markdown", + "id": "c45478cd-64a5-4a9a-8622-294848e2f852", + "metadata": {}, + "source": [ + "After the above steps, the vllm server should be running. You can now measure the performance using LLMPerf. Before we can use the llmperf package, we need to make a few changes to its code. Follow benchmarking with LLMPerf guide to apply the code changes.\n", + "\n", + "Below is a sample shell script to run LLMPerf. To provide the model with 10000 tokens as input and generate 1500 tokens as output on average, we use the following parameters from LLMPerf:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa9ab418-c069-40cb-8041-5c0574c3377f", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "cd /home/ubuntu/llmperf/\n", + "\n", + "MODEL_PATH=\"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", + "COMPILED_MODEL_PATH=\"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", + "OUTPUT_PATH=llmperf-results-sonnets\n", + "\n", + "export OPENAI_API_BASE=\"http://localhost:8000/v1\"\n", + "export OPENAI_API_KEY=\"mock_key\"\n", + "\n", + "python token_benchmark_ray.py \\\n", + " --model $MODEL_PATH \\\n", + " --mean-input-tokens 10000 \\\n", + " --stddev-input-tokens 0 \\\n", + " --mean-output-tokens 1500 \\\n", + " --stddev-output-tokens 0 \\\n", + " --num-concurrent-requests 1\\\n", + " --timeout 3600 \\\n", + " --max-num-completed-requests 50 \\\n", + " --additional-sampling-params '{}' \\\n", + " --results-dir $OUTPUT_PATH \\\n", + " --llm-api \"openai\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c38d5e8d-0c16-4061-b22f-c558ba1d5050", + "metadata": {}, + "outputs": [], + "source": [ + "!sudo kill 55509 #stop the server" + ] + }, + { + "cell_type": "markdown", + "id": "dc00332e-d7e0-4607-b91e-e08503a2319a", + "metadata": {}, + "source": [ + "Summarized results:" + ] + }, + { + "cell_type": "markdown", + "id": "3943d616-6474-40a7-b9cd-61faac231c15", + "metadata": {}, + "source": [ + "| Scenario | TTFT (p50 ms) | TPOT (p50 ms) | Output-token Throughput (tokens/s, p50) |\n", + "|---------------------------------------------------------------------------|---------------|---------------|-----------------------------------------|\n", + "| Mistral-Small-24B-Instruct-2501 on Trainium (OpenAI-style API) | 347 | 10.55 | 107.35 |\n" + ] + }, + { + "cell_type": "markdown", + "id": "2c99fb0e-5712-43f1-be25-2892342bbce4", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "f6ec3558-b527-44a2-b107-72a6c89d4722", + "metadata": {}, + "source": [ + "#### 6.3 Running Evaluations\n", + "\n", + "There are two methods that you can use the evaluation scirpts to run your evaluation. For more information, check out the [inference-demo](https://github.com/aws-neuron/aws-neuron-samples/tree/master/inference-benchmarking/)directory and [tutorials](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/tutorials/trn1-llama3.1-70b-instruct-accuracy-eval-tutorial.html) in NXDI.\n", + "\n", + "1. Using a `yaml` configuration file and `accuracy.py` script\n", + "\n", + "2. Writing your own python script that uses several components provided in `accuracy.py` and `server_config.py`\n", + "\n", + "In this notebook we only demonstrate running an eval with the `yaml` config file.\n", + "\n", + "In this method all you need is to create a yaml config file that specifies the server configuration and testing scenario you want to run. Create `config.yaml` with the following content." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2c81c85a-6e50-47f5-9baa-f22e465f7297", + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile mistral_config.yaml\n", + "\n", + "server:\n", + " name: \"Mistral-Small-24B-Instruct\"\n", + " model_path: \"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", + " model_s3_path: null\n", + " compiled_model_path: \"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", + " max_seq_len: 12800\n", + " context_encoding_len: 12288\n", + " tp_degree: 32\n", + " n_vllm_threads: 32\n", + " server_port: 8888\n", + " continuous_batch_size: 1\n", + "\n", + "test:\n", + " accuracy:\n", + " mytest:\n", + " client: \"lm_eval\"\n", + " datasets: [\"gsm8k_cot\"]\n", + " max_concurrent_requests: 1\n", + " timeout: 3600\n", + " client_params:\n", + " limit: 200\n", + " use_chat: True" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b4c171e0-a6ef-4782-bb67-2927d393e4b7", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "if test -f \"/home/ubuntu/aws-neuron-samples/inference-benchmarking/mistral_config.yaml\"; then\n", + " echo \"config file exists.\"\n", + "else \n", + " echo \"Copying config file.\"\n", + " mv /home/ubuntu/mistral_config.yaml /home/ubuntu/aws-neuron-samples/inference-benchmarking/\n", + "fi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1efea9af-ed19-476e-9841-764ea6f1b101", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "cd /home/ubuntu/aws-neuron-samples/inference-benchmarking/\n", + "python accuracy.py --config mistral_config.yaml" + ] + }, + { + "cell_type": "markdown", + "id": "6ee55692-a5f9-41f5-a955-ce36c52f5b96", + "metadata": {}, + "source": [ + "Results Summary:\n", + "\n", + "Accuracy_mytest_gsm8k_cot:\n", + " Saved at results/accuracy/mytest/gsm8k_cot/__home__ubuntu__Mistral-Small-24B-Instruct-2501__/results_2025-04-26T20-02-47.843052.json:\n", + " \n", + " Metrics: {'gsm8k_cot': {'AccuracyExactMatchStrictMatch': 39.5, 'AccuracyExactMatchStrictMatchStderr': 3.46537, 'AccuracyExactMatchFlexibleExtract': 78.5, 'AccuracyExactMatchFlexibleExtractStderr': 2.91224}}" + ] + }, + { + "cell_type": "markdown", + "id": "c0b0f6af-8bb3-4e62-b98e-a6bb779f85a4", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "b7b7fa83-aa5c-44c1-986b-c472a1243ed4", + "metadata": {}, + "source": [ + "#### 6.4 Profiling with `neuron-profile`" + ] + }, + { + "cell_type": "markdown", + "id": "a3376804-9c21-4e68-ba32-e299ed75fb9d", + "metadata": {}, + "source": [ + "`neuron-profile` helps developers identify performance bottlenecks and optimize their workloads for NeuronDevices. `neuron-profile` provides insights into NeuronDevice activity including the instructions executed on each compute engine (ex. Tensor engine, Vector engine, etc.), DMA data movement activity, and performance metrics such as engine utilization, DMA throughput, memory usage, and more. NeuronDevice activity is collected by the `neuron-profile` capture command which runs the model with tracing enabled. Profiling typically has near zero overhead because NeuronDevices have dedicated on-chip hardware profiling." + ] + }, + { + "cell_type": "markdown", + "id": "c2be3b7c-a7e0-4295-b306-e31bbbac8da9", + "metadata": {}, + "source": [ + "Let's cd into `/tmp/nxd_model` for the compiler working dir with the `context_encoding` and `token_generation` directories that we set the context encoding and token generation buckets for, which hold the NEFFs for these. The neuron-profile tool can both capture and post-process profiling information. neuron-profile takes a compiled model (a NEFF), executes it, and saves the profile results to a NTFF (profile.ntff by default)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8d6ce0b5-f029-41a3-9971-a087341584fc", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash \n", + "cd /tmp/nxd_model/\n", + "ls #list directories\n", + "cd context_encoding_model\n", + "ls " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea3c44a0-7c75-46f8-adb6-e413344e51bf", + "metadata": {}, + "outputs": [], + "source": [ + "#_tp0_bk0 _tp0_bk1 _tp0_bk2 _tp0_bk3 - are the context encoding buckets" + ] + }, + { + "cell_type": "markdown", + "id": "f9398648-ae6c-4069-baee-338e1205a1e0", + "metadata": {}, + "source": [ + "##### Capturing profiles for multi-worker jobs\n", + "`neuron-profile` can capture profiles for collectives-enabled NEFFs running across multiple NeuronCores, NeuronDevices, or even nodes. This is useful for understanding performance and communication overheads when deploying larger distributed models.\n", + "\n", + "The following example, performs a distributed run across all NeuronDevices and NeuronCores on our trn1.32xlarge instance, capturing profiles for all 32 workers (one for each NeuronCore)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c746ce34-fc4a-48bb-9558-c1babbcd7c91", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "# 1. Make sure the directory exists and is writable\n", + "mkdir -p /tmp/output/ \n", + "\n", + "cd /tmp/nxd_model/context_encoding_model/_tp0_bk1/\n", + "# 2. Run the capture, pointing -s at that directory\n", + "neuron-profile capture \\\n", + " -n graph.neff \\\n", + " --collectives-workers-per-node 32 \\\n", + " -s /tmp/output/profile.ntff \n" + ] + }, + { + "cell_type": "markdown", + "id": "1c5250d4-f3a7-494b-9c42-d14fbbb07a26", + "metadata": {}, + "source": [ + "Now if we check our output dir- A profile is saved for each worker in the output directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6b40fe3a-f01f-4f62-96f5-2df5db0d05dd", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash \n", + "cd /tmp/output/\n", + "ls" + ] + }, + { + "cell_type": "markdown", + "id": "ee5fbaba-ecfb-4f5e-8af8-31bd6df05162", + "metadata": {}, + "source": [ + "##### Viewing profiles for multi-worker jobs\n", + "Profiles from multi-worker jobs (i.e. more than one NeuronCore) can either be viewed individually or in a combined collectives view. Since profile data is often similar between workers and processing profile data for all workers can be time-consuming, it is recommended to first explore the profile for a single worker or small subset of workers. Viewing the profile for a specific worker is the same as for single-worker profiles." + ] + }, + { + "cell_type": "markdown", + "id": "a5b39974-8a7a-456b-b035-c841adecb8d1", + "metadata": {}, + "source": [ + "In the beginning, we forwarded port 3001 and 806. This is because `neuron-profile` view is running on a remote instance, we need to use port forwarding to access the profiles.\n" + ] + }, + { + "cell_type": "markdown", + "id": "898c5311-fc27-4dc3-b9e1-ec3da5654089", + "metadata": {}, + "source": [ + "Viewing the profile for a specific worker is as below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "504f6ec8-ee60-49b2-912f-b2a9be8c1f03", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "cd /tmp/nxd_model/context_encoding_model/_tp0_bk1/\n", + "neuron-profile view -n graph.neff -s /tmp/output/profile_rank_2.ntff" + ] + }, + { + "cell_type": "markdown", + "id": "e3308394-08a3-413d-a38b-d3266ae2c58f", + "metadata": {}, + "source": [ + "You will see an output like- View profile at http://localhost:3001/profile/n_a1143c514431fb4c23b7aae9208fd1a89cad42f6" + ] + }, + { + "cell_type": "markdown", + "id": "f756c277-bc7b-462a-91ed-eaaf3fa6dd8d", + "metadata": {}, + "source": [ + "![image-profile](imgs/img-neff.png)" + ] + }, + { + "cell_type": "markdown", + "id": "3e323e2f-3980-4ac7-8c32-ed395c937f0e", + "metadata": {}, + "source": [ + "To view the profile for multiple workers, pass the directory containing all worker profiles to neuron-profile." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0b082bd6-ed2c-4d70-b092-1e97fe9df1ce", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "cd /tmp/nxd_model/context_encoding_model/_tp0_bk1/\n", + "neuron-profile view -n graph.neff -d /tmp/output" + ] + }, + { + "cell_type": "markdown", + "id": "eb861db0-99e5-42ce-b9c9-bb7cc185af6a", + "metadata": {}, + "source": [ + "For more on profiling with neuron and understanding profiles,check out the [link](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-profile-user-guide.html) to `neuron-profile` user guide" + ] + }, + { + "cell_type": "markdown", + "id": "40aca927-7701-4f4e-9320-cc2faf9d05bd", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "f071be6d-3a5c-4fa0-b02f-4cf3802ff7c2", + "metadata": {}, + "source": [ + "## Conclusion" + ] + }, + { + "cell_type": "markdown", + "id": "e70149be-ba89-4320-a17c-082ba6a72b6d", + "metadata": {}, + "source": [ + "In this notebook, we successfully walked through deploying, benchmarking, and generating profiles for NEFFs on TRN1 using Mistral Small 2501" + ] + }, + { + "cell_type": "markdown", + "id": "a281311e-0c58-41c1-9f61-93735c768f1f", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "d98b2877-bb28-4762-8ef2-9165ef505046", + "metadata": {}, + "source": [ + "#### Distributors\n", + "- AWS\n", + "- Mistral" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 7e0633552da6ba82d1c9ad7c336d8cb730439a3d Mon Sep 17 00:00:00 2001 From: nithiyn Date: Mon, 28 Apr 2025 09:48:37 -0400 Subject: [PATCH 03/28] Create imgs sub directory --- 2.projects/NxD-inference/imgs/img.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 2.projects/NxD-inference/imgs/img.txt diff --git a/2.projects/NxD-inference/imgs/img.txt b/2.projects/NxD-inference/imgs/img.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2.projects/NxD-inference/imgs/img.txt @@ -0,0 +1 @@ + From c7187d3b8cb3ddf3b9b03640315bb98ad3576235 Mon Sep 17 00:00:00 2001 From: nithiyn Date: Mon, 28 Apr 2025 09:50:07 -0400 Subject: [PATCH 04/28] upload profiler image --- 2.projects/NxD-inference/imgs/img-neff.png | Bin 0 -> 422791 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 2.projects/NxD-inference/imgs/img-neff.png diff --git a/2.projects/NxD-inference/imgs/img-neff.png b/2.projects/NxD-inference/imgs/img-neff.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5d5a4c1f644d7c0462a84b7073e4b0d5fd2eec GIT binary patch literal 422791 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ɩ=4~A8C)0 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 z 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 z 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 z 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 Ef-nJqivR!s literal 0 HcmV?d00001 From 7a830a467cb3abe7235acdb42ddc65aa15acb665 Mon Sep 17 00:00:00 2001 From: nithiyn Date: Sun, 6 Jul 2025 01:44:28 +0000 Subject: [PATCH 05/28] feat: 1p1d manifest and markdowns --- .../trn1-nxd-cluster-config.yaml | 85 ++ .../1p1d/manifests/1p1d-sts.yaml | 308 +++++ .../1p1d/manifests/compile.yaml | 143 ++ .../README.md | 47 + .../nxdi-ec2-vllm/imgs/img-neff.png | Bin 0 -> 422791 bytes .../mistral-small-3-0-nxdi-guide.ipynb | 1173 +++++++++++++++++ 6 files changed, 1756 insertions(+) create mode 100644 1.infrastructure/1_setup_cluster/nxd-1p1d-inference/trn1-nxd-cluster-config.yaml create mode 100644 2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/1p1d-sts.yaml create mode 100644 2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml create mode 100644 2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/README.md create mode 100644 2.projects/neuronx-distributed/nxdi-ec2-vllm/imgs/img-neff.png create mode 100644 2.projects/neuronx-distributed/nxdi-ec2-vllm/mistral-small-3-0-nxdi-guide.ipynb diff --git a/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/trn1-nxd-cluster-config.yaml b/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/trn1-nxd-cluster-config.yaml new file mode 100644 index 0000000..6aae13b --- /dev/null +++ b/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/trn1-nxd-cluster-config.yaml @@ -0,0 +1,85 @@ +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: nxdi-inference-cluster + region: $REGION + version: "1.00" + +vpc: + id: $PLACEHOLDER_VPC_ID + subnets: + private: + $AVAILABILITY_ZONE_1: + id: $PLACEHOLDER_SUBNET_PRIVATE_1 + $AVAILABILITY_ZONE_2: + id: $PLACEHOLDER_SUBNET_PRIVATE_2 + public: + $AVAILABILITY_ZONE_1: + id: $PLACEHOLDER_SUBNET_PUBLIC_1 + $AVAILABILITY_ZONE_2: + id: $PLACEHOLDER_SUBNET_PUBLIC_2 + + clusterEndpoints: + privateAccess: true + publicAccess: true + +cloudwatch: + clusterLogging: + enableTypes: ["*"] + +iam: + withOIDC: true + +# Adding additional section to Cluster (eksctl) for any controllers you may want to install. Uncomment as required. +wellKnownPolicies: +# ebsCSIController: true # Adds policies for using the ebs-csi-controller + efsCSIController: true # Adds policies for using the efs-csi-controller + +addons: + - name: vpc-cni + version: 1.18.1-eksbuild.1 + configurationValues: '{"env":{"ENABLE_PREFIX_DELEGATION":"true", "ENABLE_POD_ENI":"true", "POD_SECURITY_GROUP_ENFORCING_MODE":"standard"},"enableNetworkPolicy": "true"}' + resolveConflicts: overwrite + - name: amazon-cloudwatch-observability + version: v1.16.4-eksbuild.1 + # - name: aws-ebs-csi-driver + # version: v1.26.0-eksbuild.1 + - name: aws-efs-csi-driver + version: v2.1.9-eksbuild.1 + +managedNodeGroups: + - name: trn-compute-node-group + instanceType: trn1.32xlarge + instancePrefix: trtllm-compute-node + privateNetworking: true + efaEnabled: true + minSize: 0 + desiredCapacity: 2 + maxSize: 2 + volumeSize: 500 + # comment out capacityReservation if you do not need ODCR + #capacityReservation: + #capacityReservationTarget: + #capacityReservationID: "$CR_ID" + ami: ami-07c8bc6b0bb890e9e + amiFamily: AmazonLinux2 + ssh: + publicKeyName: $PUBLIC_KEYPAIR_NAME + sourceSecurityGroupIds: [$SECURITY_GROUP_IDS] + updateConfig: + maxUnavailablePercentage: 50 + iam: + withAddonPolicies: + externalDNS: true + certManager: true + autoScaler: true + cloudWatch: true + ebs: true + efs: true + fsx: true + imageBuilder: true + xRay: true + awsLoadBalancerController: true + albIngress: true + \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/1p1d-sts.yaml b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/1p1d-sts.yaml new file mode 100644 index 0000000..32b37f4 --- /dev/null +++ b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/1p1d-sts.yaml @@ -0,0 +1,308 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: disaggregated-server-scripts + namespace: neuron-inference +data: + server.sh: | + #!/bin/bash + # Official tutorial server.sh with direct IP support + + # Parse command line arguments + while [[ $# -gt 0 ]]; do + case $1 in + --tp-degree) + TP_DEGREE="$2" + shift 2 + ;; + --batch-size) + BATCH_SIZE="$2" + shift 2 + ;; + --model-path) + MODEL_PATH="$2" + shift 2 + ;; + --compiled-model-path) + COMPILED_MODEL_PATH="$2" + shift 2 + ;; + --send-ip) + SEND_IP="$2" + shift 2 + ;; + --recv-ip) + RECV_IP="$2" + shift 2 + ;; + *) + echo "Unknown parameter: $1" + echo "Usage: $0 --tp-degree --batch-size --model-path \ + --compiled-model-path --send-ip --recv-ip " + exit 1 + ;; + esac + done + + export NEURON_RT_ASYNC_SENDRECV_BOOTSTRAP_PORT=45645 + export NEURON_RT_ASYNC_SENDRECV_EXPERIMENTAL_ENABLED=1 + export NEURON_COMPILED_ARTIFACTS="$COMPILED_MODEL_PATH" + export NEURON_SEND_IP="$SEND_IP" + export NEURON_RECV_IP="$RECV_IP" + export NEURON_RT_ASYNC_EXEC_MAX_INFLIGHT_REQUESTS=2 + + if [ "$SEND" = "1" ]; then + PORT=8100 + if [ "$SINGLE_INSTANCE" = "1" ]; then + export NEURON_RT_VISIBLE_CORES=0-31 + fi + TRANSFER_CONFIG='{ + "kv_connector":"NeuronConnector", + "kv_buffer_device":"cpu", + "kv_role":"kv_producer", + "kv_rank":0, + "kv_parallel_size":2, + "kv_buffer_size":2e11, + "kv_ip":"'"$NEURON_SEND_IP"'", + "neuron_core_offset": 0 + }' + else + PORT=8200 + if [ "$SINGLE_INSTANCE" = "1" ]; then + NC_OFFSET=32 + export NEURON_RT_VISIBLE_CORES=32-63 + else + NC_OFFSET=0 + fi + TRANSFER_CONFIG='{ + "kv_connector":"NeuronConnector", + "kv_buffer_device":"cpu", + "kv_role":"kv_consumer", + "kv_rank":1, + "kv_parallel_size":2, + "kv_buffer_size":2e11, + "kv_ip":"'"$NEURON_SEND_IP"'", + "neuron_core_offset": "'"$NC_OFFSET"'" + }' + fi + + python3 -m vllm.entrypoints.openai.api_server \ + --model "$MODEL_PATH" \ + --max-num-seqs "$BATCH_SIZE" \ + --max-model-len 8192 \ + --tensor-parallel-size "$TP_DEGREE" \ + --device neuron \ + --use-v2-block-manager \ + --override-neuron-config "{}" \ + --kv-transfer-config "$TRANSFER_CONFIG" \ + --port "$PORT" + + entrypoint.sh: | + #!/bin/bash + set -e + + # Determine role: pod-0 = prefill, pod-1 = decode + POD_ORDINAL=$(echo $POD_NAME | grep -o '[0-9]*$') + if [ "$POD_ORDINAL" = "0" ]; then + export SEND=1 + echo "Pod-0: Prefill + Router" + else + echo "Pod-1: Decode" + fi + + # Setup environment + source ~/aws_neuronx_venv_pytorch_2_7_nxd_inference/bin/activate + cd /shared + + # Install vLLM once + if [ ! -d "upstreaming-to-vllm" ]; then + git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git + cd upstreaming-to-vllm + pip install -r requirements-neuron.txt + VLLM_TARGET_DEVICE="neuron" pip install -e . + cd /shared + fi + + # Find peer pod IP + PEER_ORDINAL=$((1 - POD_ORDINAL)) + while true; do + PEER_IP=$(kubectl get pod neuron-disaggregated-${PEER_ORDINAL} -o jsonpath='{.status.podIP}' 2>/dev/null || echo "") + [ -n "$PEER_IP" ] && [ "$PEER_IP" != "null" ] && break + sleep 5 + done + echo "Peer IP: $PEER_IP" + + # Start inference server + /scripts/server.sh \ + --tp-degree $TP_DEGREE \ + --batch-size $BATCH_SIZE \ + --model-path $MODEL_PATH \ + --compiled-model-path $COMPILED_MODEL_PATH \ + --send-ip $POD_IP \ + --recv-ip $PEER_IP & + + # Start router (only on pod-0) + if [ "$POD_ORDINAL" = "0" ]; then + pip install quart + + # Wait for both servers + while ! curl -s http://localhost:8100/health; do sleep 5; done + while ! curl -s http://$PEER_IP:8200/health; do sleep 5; done + + echo "Starting router..." + neuron-proxy-server \ + --prefill-ip localhost \ + --decode-ip $PEER_IP \ + --prefill-port 8100 \ + --decode-port 8200 & + fi + + # Wait for all background processes + wait + +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: neuron-disaggregated + namespace: neuron-inference +spec: + serviceName: neuron-disaggregated-headless + replicas: 2 # Exactly 1 prefill + 1 decode + selector: + matchLabels: + app: neuron-disaggregated + template: + metadata: + labels: + app: neuron-disaggregated + spec: + # Use separate nodes for better EFA performance + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchLabels: + app: neuron-disaggregated + topologyKey: kubernetes.io/hostname + + nodeSelector: + workload-type: "neuron-inference" + tolerations: + - key: aws.amazon.com/neuron + operator: Exists + effect: NoSchedule + + serviceAccountName: neuron-pod-reader # Need to read pod IPs + + containers: + - name: inference-server + image: public.ecr.aws/neuron/pytorch-inference-neuronx:2.1.2-neuronx-py310-sdk2.21.0-ubuntu20.04 + command: ["/bin/bash", "/scripts/entrypoint.sh"] + ports: + - containerPort: 8100 + name: prefill-port + - containerPort: 8200 + name: decode-port + - containerPort: 8000 + name: router-port # Router port (only used by pod-0) + resources: + limits: + aws.amazon.com/neuroncore: "32" + vpc.amazonaws.com/efa: "1" # Request EFA interface + memory: "64Gi" + cpu: "32" + requests: + aws.amazon.com/neuroncore: "32" + memory: "32Gi" + cpu: "16" + volumeMounts: + - name: shared-storage + mountPath: /shared + - name: server-scripts + mountPath: /scripts + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: TP_DEGREE + value: "32" + - name: BATCH_SIZE + value: "4" + - name: MODEL_PATH + value: "/shared/models/Llama-3.3-70B-Instruct" + - name: COMPILED_MODEL_PATH + value: "/shared/di_traced_model_tp64_b4/" + - name: FI_PROVIDER + value: "efa" # Force EFA provider + - name: FI_EFA_USE_DEVICE_RDMA + value: "1" # Enable RDMA over EFA + + # Health checks + livenessProbe: + exec: + command: + - /bin/bash + - -c + - | + # Check if the appropriate services are running based on pod ordinal + POD_ORDINAL=$(echo $POD_NAME | grep -o '[0-9]*$') + if [ "$POD_ORDINAL" = "0" ]; then + # Prefill pod: check both prefill server and router + curl -f http://localhost:8100/health && curl -f http://localhost:8000/ + else + # Decode pod: check decode server + curl -f http://localhost:8200/health + fi + initialDelaySeconds: 240 # Longer wait for router startup + periodSeconds: 30 + readinessProbe: + exec: + command: + - /bin/bash + - -c + - | + # Check if the appropriate port is responding based on pod ordinal + POD_ORDINAL=$(echo $POD_NAME | grep -o '[0-9]*$') + if [ "$POD_ORDINAL" = "0" ]; then + # Prefill pod: both server and router must be ready + curl -f http://localhost:8100/health && curl -f http://localhost:8000/ + else + # Decode pod: just the decode server + curl -f http://localhost:8200/health + fi + initialDelaySeconds: 180 # Wait for router startup + periodSeconds: 15 + + volumes: + - name: shared-storage + persistentVolumeClaim: + claimName: efs-models-pvc + - name: server-scripts + configMap: + name: disaggregated-server-scripts + defaultMode: 0755 + + podManagementPolicy: OrderedReady # Start pods in order + +--- +# Service to expose the router (running on pod-0) +apiVersion: v1 +kind: Service +metadata: + name: neuron-router-service + namespace: neuron-inference +spec: + selector: + app: neuron-disaggregated + statefulset.kubernetes.io/pod-name: neuron-disaggregated-0 # Only target prefill pod + ports: + - name: router-port + port: 8000 + targetPort: 8000 + type: LoadBalancer \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml new file mode 100644 index 0000000..190a799 --- /dev/null +++ b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml @@ -0,0 +1,143 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: neuron-disaggregated-compilation + namespace: neuron-inference +spec: + template: + spec: + restartPolicy: OnFailure + nodeSelector: + workload-type: "neuron-inference" + tolerations: + - key: aws.amazon.com/neuron + operator: Exists + effect: NoSchedule + containers: + - name: model-compiler + image: public.ecr.aws/neuron/pytorch-inference-neuronx:2.1.2-neuronx-py310-sdk2.21.0-ubuntu20.04 + command: ["/bin/bash", "-c"] + args: + - | + set -e + echo "Setting up Neuron vLLM environment..." + + # Activate virtual environment + source ~/aws_neuronx_venv_pytorch_2_7_nxd_inference/bin/activate + + #source in env vars + + # Install Neuron vLLM fork + cd /shared + git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git + cd upstreaming-to-vllm + pip install -r requirements-neuron.txt + VLLM_TARGET_DEVICE="neuron" pip install -e . + cd /shared + + # Download model (if not already present) + if [ ! -d "/shared/models/Llama-3.3-70B-Instruct" ]; then + echo "Downloading Llama-3.3-70B-Instruct model..." + mkdir -p /shared/models + # Note: Requires HuggingFace token for gated model + huggingface-cli download meta-llama/Llama-3.3-70B-Instruct --local-dir /shared/models/Llama-3.3-70B-Instruct + fi + + # Create compilation script + cat > /shared/compile.sh << 'EOL' + #!/bin/bash + # Official tutorial compile.sh script + + + export COMPILED_MODEL_PATH="di_traced_model_tp${TP_DEGREE}_b${BATCH_SIZE}/" + + inference_demo \ + --model-type llama \ + --task-type causal-lm \ + run \ + --model-path $MODEL_PATH \ + --compiled-model-path $COMPILED_MODEL_PATH \ + --torch-dtype bfloat16 \ + --tp-degree $TP_DEGREE \ + --batch-size $BATCH_SIZE \ + --ctx-batch-size 1 \ + --tkg-batch-size $BATCH_SIZE \ + --is-continuous-batching \ + --max-context-length 8192 \ + --seq-len 8192 \ + --on-device-sampling \ + --fused-qkv \ + --global-topk 256 --dynamic \ + --top-k 50 --top-p 0.9 --temperature 0.7 \ + --do-sample \ + --sequence-parallel-enabled \ + --qkv-kernel-enabled \ + --attn-kernel-enabled \ + --mlp-kernel-enabled \ + --cc-pipeline-tiling-factor 1 \ + --pad-token-id 2 \ + --logical-neuron-cores 2 \ + --context-encoding-buckets 256 512 1024 2048 4096 8192 \ + --token-generation-buckets 512 1024 2048 4096 8192 \ + --apply-seq-ids-mask \ + --enable-bucketing \ + --prompt "test prompt" \ + --save-sharded-checkpoint \ + --attn-block-tkg-nki-kernel-enabled \ + --attn-block-tkg-nki-kernel-cache-update \ + --k-cache-transposed \ + --async-mode \ + --compile-only + EOL + + chmod +x /shared/compile.sh + + # Compile for multi-instance (TP=32) + echo "Compiling model for multi-instance deployment (TP=64)..." + cd /shared + ./compile.sh --tp-degree 64 --batch-size 4 --model-path /shared/models/Llama-3.3-70B-Instruct + + # Create metadata file + cat > /shared/compilation_metadata.json << EOL + { + "model_name": "meta-llama/Llama-3.3-70B-Instruct", + "compilation_date": "$(date -u +%Y-%m-%dT%H:%M:%SZ)", + "neuron_sdk_version": "2.24.0", + "vllm_version": "0.7.2", + "configurations": { + "multi_instance": { + "tp_degree": 64, + "batch_size": 4, + "compiled_path": "di_traced_model_tp64_b4/" + }, + "single_instance": { + "tp_degree": 32, + "batch_size": 4, + "compiled_path": "di_traced_model_tp32_b4/" + } + } + } + EOL + + echo "Model compilation completed successfully!" + + resources: + limits: + aws.amazon.com/neuroncore: "32" + memory: "64Gi" + cpu: "32" + requests: + aws.amazon.com/neuroncore: "32" + memory: "32Gi" + cpu: "16" + volumeMounts: + - name: shared-storage + mountPath: /shared + env: + - name: NEURON_RT_NUM_CORES + value: "32" + volumes: + - name: shared-storage + persistentVolumeClaim: + claimName: efs-models-pvc + diff --git a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/README.md b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/README.md new file mode 100644 index 0000000..c2d56c1 --- /dev/null +++ b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/README.md @@ -0,0 +1,47 @@ +default readme for example + +## 1. EFS Setup for Shared Model Storage + +### Create EFS Filesystem +```bash +# Create EFS filesystem +aws efs create-file-system \ + --creation-token neuron-models-$(date +%s) \ + --performance-mode generalPurpose \ + --throughput-mode provisioned \ + --provisioned-throughput-in-mibps 1000 \ + --tags Key=Name,Value=neuron-disaggregated-efs + +# Get the filesystem ID +EFS_ID=$(aws efs describe-file-systems \ + --query 'FileSystems[?Tags[?Key==`Name`&&Value==`neuron-disaggregated-efs`]].FileSystemId' \ + --output text) + +# Create mount targets in each subnet +for subnet in subnet-xxx subnet-yyy subnet-zzz; do + aws efs create-mount-target \ + --file-system-id $EFS_ID \ + --subnet-id $subnet \ + --security-groups sg-your-efs-security-group +done +``` + + +### EFS CSI Driver Installation +```bash +# Install EFS CSI Driver +kubectl apply -k "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.7" + +# Create StorageClass +cat <ZoxgcyL)hkL4NYyySsPy-@Etw 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ɩ=4~A8C)0 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 z z7*%2CS@`wE*KqI21i-^!o<8UnGW~tJiGC|3%bz&mSTeVd>^}XK#-U4LGqrXN*x|N~ zEv(050!rRf46u){5fop|Y=8G5_#FgNUZQfu;HA025VrxL394UYdtZM0r`X+OJEnX3 z#_d3XZc(|Uq$I<_Z4VRH>1`hwLR~HoUdkV@`YoOwo7X6?;_-^e^I3euSn*@KP3Ztx zsEP2%kUkC~A8j&UKbc|SeZazx0d}K$-m3Gtv9is?$9`h>vN@SjhYlTp#kG;Et=D7bllA5=g-DStK%LBw( zp;IM!{!Vp(sF7*elUC`|Zu=H(dl@jsjD1)5ZmCOQV+V(ZuC0_4oo~>N#2(iyf{dD= z_sj5qILH_3#@6Kl7(h>BVm1I8cCuF@Y6CD3ViReg*FOP)?3wh8yabX4OZgGj)htsS zy^Lhv$XfH|-opBk+`}@}Mjn$;Mn!5K6YA}yt!LpG-m_@H+d_|L94f4qcJM~o-zxXz zDFC@~Gt<$Rz=tj{tkHC6!0Hl-)tYIvnIgJG4iX0RX3^R{s@}y2&EeDg|h< zL%KfiB~7bIHxm;Eo?vpos4BLNwZjf`N&#kUaFo6;UiB>@)wcQDz5{|S;BJrp+=~}s zRI!l(Mj2-LnuD2iND_>9{oR(n>XFya;t|lTwXJ8y31hh2@{I>WvE+f8^u>+-X8ESs zirxHcrUWraK>a#oaihwer(-%{Yj3Y26>+!48t!V*GJhdZ^L+8`YmmuOf?vU=JCPn| zI1#GGWD(lj@tRqr8+elp^kUWKS4sxo< zjR*GOI{c(eAKsT;S+olzGEiwmCW_6L@5=*(tey-c!30EtYbYKPog3coQV?oECrv&l zIzSx50rLABo_ytws(q(GAQlIj0*+IXi6FgUS23jPAYAA)wzL7&B_lk$XZfhtBo~ie zNl3e9E;WtOa;McTHztN?$ul~Z%ZQ>PwVr6_$reG=w^sp>Nsd{H5eHONA^eL2A}3%6 zur5=)aj|gYH|p>n50)Y3bhlH3&WgeIt~|JSHeLh}gX&8Fw~Z#-4mG4XYXkx*yUH<( zbwqI>ZNpHY=>#)US)QLN+5zp0w>m+Z#qsbD2LK`t zzho06yKwqzQi*GdrNOIXq+{gO7M<&IT;N+s*+1=W+~NDoXH;(Wf4ycsygBod>K^qy z84gKtKFFCrsM;UozG6pAJR+8f#^Rwy)20$X;4^W$j{g3_i>l-nDKWpo%ts6ERmjP3 zA_4}$TjlMjK>QC`VCiMqlLNw@#ksF(gKZq^=Cr0_k8G5^W+E|m(ZqVB4hJ{i0go{u zVOFoU*p4&vCnM67ix@kwof?i{Gn51W)W9grz7{~k7wK~>Y(#c>`T*6ad|mey6U7ct)ItQN<7Ym-=m3;DuJ_jEAc;GEN4Di-kx^Yc zuok1VSqzBQ5o4b&smo^jKQ_Ijq>DX;=39YFz#XWBbk7@HnS27%73C$3<9^r%d@Jt; zNE=*X9Duziow^={SUwZK93ZPe?bJ2e_l<>)1kgv*H5(oC=T;^)_gOSJ$=Z$ndhK%9 zsd3nT`oYz+(Nyo|l5b^*m6QHt!w2@$zmbO35*<_!+OYK=>Bxqn(^c3J_H>Q-SGIygVOxjMSX(;rpL^>oDfO zXmyPA+Ksvay`8`?>-I$1(5cYd)#;;(19@dnP%TZ}vg zhI7O#r{Y%&Eq)Fo`{m?mc9W8v_~(~@txV(3Nu(+V9K&@(k=8uFTt9u_S zULC`QNK^1ruXx@3Pme?? zFiCC9hUuTl0}%ohc9bN+TyRygrus)4+ABtW_SI8cPn`uj>B9TJR$21b*5#fjNxqYI z45uWPLA+$YTA)Hak~vbL)Ov#8PX+Y1lL(|`=+(C)R#Ehgl$f><(`Ti_zc;^TuO_6s?!hDzWmkWBIPe%HGd&T*a#>T0c(Gt+`TTd|xPZ8TVwckRtf_f9>0AC6Y;iKxLQdNn!%e~o}?jo&- zV@{mAUd>Jr6_^qMbr!^OE`V#>pmgK=k38{qV=$jmnP-AW?WJt`Ao(T0_VZe+7@0V= zyfxp|QCGW=;u@X;9o8?|N#-{XG4#Wsc^yH06~}JP%yVWlPruZk|L9Ou$^b9F7-2lSFyVu7`8p#j>Mum1Z-Gw&Z=0C`8#`Tqze znu{s#6`ll{ly09R53-vl^1;>2_wN;f_c#GRZV>U8F8!bPy_bX(z#^sKA=FU{{d}vg zJmOp4De{d!8bP3JGz4BY_^(mLs;>p}BC-Q?TgH5lA(rE0<@)E9tUyd8kPo_dxA z!Ho5M!RA-p`R2A0dXlz`Q&z zpyY=bb4rd>^73ayLF|VHXq@sTNN^LI&uYn>H>4p^&^o#vn8c#$4Zq#Gcm7l_4S111 zo`{5oXDxNEmRWR_4hj1Veef`PPRq(Au~x3t>;j@AZ7*PXvr0-dzy)n;J?51fc#xN0 zq;ylxGTEfg-M+oD@=>C&ebN@=Z;u1)O1{vqH&mj*mYj!?26P7@MA%NTNlSit;v6YYB1405otUg`HA{iobq?(_2jF~6ImJ`X_ zH&^USN?p)Oed&%yAdgj6AP;)ZO_K)^5199ZB$sQ%B`LEJBM()@cDLiQO4+2kywzVx z89a&Y)!Hw=V7UUkq{4a-4i+kndrZU7IWmOz$tMm00VSSTf8dtAw{5;UT7t=7BRr@D zJ-E{5EHEQmI{>#bKeaOr5|8qZo)-lyRPqVL3V^>~b+NH5+)ycC-G$QgpzX>ZaL;IzxLt;^ZlHM0)pN5ecRvfzLyx!Dm;kr+;RJuVFh{5=csaZ|~Qj zuK*%(eGjUj$*Jk9^_FjLm`<@q$H@Pgyq!H! zHK`(rg`ifwcreo&843~cKowVW`GGPE7hpa@vSs$ae{w(tkQ|=_iaQ?E4a#}%tS(h{ zfy>z~bLcCgybp3Tw-i{MpHin+xr6Yr>`Bw6_v?%Z>2dOJkXj@Xc%T?iHhR1M)$ZRP z7&u8rGPftud8e%H{)6=m#iiBw%sqjW#DGCffxxLDMzbF(P9e|{2?RBTu;$6?T)f{cHRtW}ICHQpGMqSW-s=D{QYLqDss%ptBN;m9nvG zC=nd;jicZP|BNuR6$Ws>o$KXpm6dTtqX898`Z>$dcbv}pzO?FHA+MMk#|^c7^3a4$$U@&kn> z{7zqGmARJmXy&TqEdzSWpKfI>Fp4;&)OpGF%z`uyI$UDiNrteun*eC)y7ymSyiB|z zcY-OhHrmCHoH7M)js!jwGyeVl16>Rl_toflh~Whxs=ZOu2%fg(<<1?MA5C;~06&f* zQpV_c4R63swXm%Yh7vNh?_ZNcjH`07VKQKG{ zIA7zNWwm)ovRWQu`u!%#eYGzUTZswwx4~?u@cFV#aN~WqcDjckS{FMpyH7 z3!@b-dEEomsDcbP9GB{kRHvCI7f)ey-X}kj`lRjtpapS=Pk*ol4nu*KI%*^JXQ5~z7XZW)tu3&8HF@e^E$(tD;k5nqD zM(F@aTd$s_ZRtgrG`{PqJ^%()k=VCJFCx`rN*^fb{d)B-K$@}nY*|w)2DjpqY7YbEm-i4%V1+a%Mxw)Gg9O11vBq>26gLxr45H*O7HlHw zF(DJct#~Jp;juAgM5IcAh7SHNjoTsyCWRh@??01v&vPcN{RP`~^H2UyT4rCqwxgl(<9V_rrSbeFh6eR5T1y|GZS@$rcP1{!`Dpl7v&rvZc8 zxM?0V{D@cPYZ#2v2Td){zCkcojXt5SS$r2dVcQ-!pgRvjlXKTq9-zic@c;n~Js9P8 zTYQKEsYS>9YlJ+JYbt4yV+1RC?DfFyfJ34e-VN3r?LZlKlt_p0JdSBFOAE>#6`K2T z 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 z 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 Ef-nJqivR!s literal 0 HcmV?d00001 diff --git a/2.projects/neuronx-distributed/nxdi-ec2-vllm/mistral-small-3-0-nxdi-guide.ipynb b/2.projects/neuronx-distributed/nxdi-ec2-vllm/mistral-small-3-0-nxdi-guide.ipynb new file mode 100644 index 0000000..e2a00e6 --- /dev/null +++ b/2.projects/neuronx-distributed/nxdi-ec2-vllm/mistral-small-3-0-nxdi-guide.ipynb @@ -0,0 +1,1173 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5a972332", + "metadata": {}, + "source": [ + "# Guide to deploy, benchmark, and profile Mistral Small 2501 with NXDI and VLLM on Trn1\n", + "\n", + "This notebook provides a step-by-step guide for serving, profiling, and running benchmarks on Mistral Small 24B model on a **Trn1** instance. \n", + "\n", + "## Mistral Small 2501\n", + "\n", + "[Mistral Small 3.0](https://mistral.ai/news/mistral-small-3) is a 24B-parameter language model from Mistral AI optimized for low-latency performance across common AI tasks. Released under the Apache 2.0 license, it features both pre-trained and instruction-tuned versions designed for efficient local deployment. The model achieves 81% accuracy on the MMLU benchmark and performs competitively with larger models like Llama 3.3 70B and Qwen 32B, while operating at three times the speed on equivalent hardware.\n", + "\n", + "## Neuronx-Distributed-Inference (NxDI)\n", + "\n", + "[NxD Inference](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/nxdi-overview.html#nxdi-overview) (where NxD stands for NeuronX Distributed) is an open-source PyTorch-based inference library that simplifies deep learning model deployment on AWS Inferentia and Trainium instances. Introduced with Neuron SDK 2.21 release, it offers advanced inference capabilities, including features such as continuous batching and speculative decoding for high performance inference. Additionally, it supports inference engine for vLLM for seamless integration with the majority of customers’ production deployment systems. ML developers can use NxD Inference library at different levels of abstraction that fits their inference use case.\n", + "\n", + "## Overview\n", + "\n", + "1. **Check/Install Dependencies** for AWS Neuron (NXDI, vLLM fork, etc.).\n", + "2. **Optional**: Install additional utilities (`inference-benchmarking` (lm_eval), InfluxDB, `llmperf` for performance benchmarking, etc.).\n", + "3. **Download** Mistral Small 24B base model.\n", + "4. **Spin Up** a VLLM server, benchmark and pull a profile.\n", + " \n", + "### Prerequisites\n", + "\n", + "- **Amazon EC2 Trn1.32xlarge instance** with AWS Neuron drivers and recommended PyTorch environment.\n", + "- **NXDI virtual environment** (e.g., `aws_neuronx_venv_pytorch_2_5_nxd_inference`) is required.\n", + "\n", + "- To request a quota increase for `trn1.32xlarge` on EC2, follow these steps:\n", + "\n", + "1. Navigate to the [Service Quotas console](https://console.aws.amazon.com/servicequotas/).\n", + "2. Choose Amazon EC2.\n", + "3. Review your default quota for the following resources:\n", + " - `trn1.32xlarge` for ec2 on-demand use\n", + "4. If needed, request a quota increase for these resources.\n" + ] + }, + { + "cell_type": "markdown", + "id": "355c31c9-b15d-4879-84d4-92d62fd82d4d", + "metadata": {}, + "source": [ + "
\n", + "\n", + "NOTE: To make sure that you have enough quotas to support your usage requirements, it's a best practice to monitor and manage your service quotas. Requests for Amazon EC2 service quota increases are subject to review by AWS engineering teams. Also, service quota increase requests aren't immediately processed when you submit a request. After your request is processed, you receive an email notification.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "8934c846-b3f5-458a-b11b-77b813904e0c", + "metadata": {}, + "source": [ + "### Create Your EC2 instance\n", + "\n", + "Follow the steps here for a detailed set up of your EC2 instance setup:\n", + "\n", + "#### Steps:\n", + "- Navigate to the EC2 dashboard from the AWS mgmt console and launch your instance.\n", + "- Search for the Ubuntu 22.04 Neuron DLAMI.\n", + "- Choose the instance size as Trn1.32xlarge or any other Neuron based instance you're able to fit the model.\n", + "- Set the inbound rule for ssh to your local machine's ip address or anywhere (note that it is not in accordance to set this to allow trafic from any ipv4, please ensure you secure these ports once done testing.\n", + "- Create and specify your ssh key in the instance configuration step. You will need your .pem file\n", + "- Create your instance.\n", + "- Once you have launched your instance, navigate to either your terminal or VSCODE and follow the steps below:\n", + "\n", + "#### ssh for powershell:\n", + "\n", + "`$PUBLIC_DNS=\"paste your public ipv4 dns here\" # public ipv4 DNS, e.g. ec2-3-80-.... from ec2 console`\n", + "`$KEY_PATH=\"paste ssh key path here\" # local path to key, e.g. ssh/trn.pem`\n", + "\n", + "`ssh -i $KEY_PATH -L 8888:127.0.0.1:8888 -L 8000:127.0.0.1:8000 -L 8086:127.0.0.1:8086 -L 3001:127.0.0.1:3001 ec2-user@$PUBLIC_DNS`\n", + "\n", + "#### ssh for linux/macOS:\n", + "\n", + "`export PUBLIC_DNS=\"paste your public ipv4 dns here\" # public ipv4 DNS, e.g. ec2-3-80-.... from ec2 console`\n", + "`export KEY_PATH=\"paste ssh key path here\" # local path to key, e.g. ssh/trn.pem`\n", + "\n", + "`ssh -i $KEY_PATH -L 8888:127.0.0.1:8888 -L 8000:127.0.0.1:8000 -L 8086:127.0.0.1:8086 -L 3001:127.0.0.1:3001 ec2-user@$PUBLIC_DNS`\n", + "\n", + "You should have sshed into your EC2 instance. \n", + "\n", + "- Activate your NXDI venv:\n", + "\n", + "`source /opt/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate`\n", + "\n", + "- Activate jupyter server:\n", + "\n", + "`jupyter lab —no-browser —port 8888 —ip 0.0.0.0`\n", + "\n", + "You should see a familiar jupyter output with a URL to the notebook.\n", + "\n", + "`http://localhost:8888/....`\n", + "\n", + "We can click on it, and a jupyter environment opens in our local browser. Upload this notebook to your jupyter environment and run the steps in the cells below." + ] + }, + { + "cell_type": "markdown", + "id": "c8d12827-cdd6-49ad-a5b9-fae27f1e7cda", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "511f6786-8ed7-4036-9070-3d6669fcb92b", + "metadata": {}, + "source": [ + "## Install and Set up Dependencies" + ] + }, + { + "cell_type": "markdown", + "id": "3652fc5a", + "metadata": {}, + "source": [ + "### 1. Validate / Activate Python Environment\n", + "\n", + "Inside a Jupyter notebook, using `source myenv/bin/activate` directly will not persist the environment in subsequent cells, because source runs in a subshell. Please run the command to actuvate the venv in the terminal or activate prior to spinning up the server" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1fa75aff", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "# (Optional) Uncomment or modify the following line to activate a custom environment.\n", + "#source /opt/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate\n", + "\n", + "echo 'Python environment check:'\n", + "which python\n", + "python --version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e657dec1-61fc-4cf7-bec8-48ecd1213c75", + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile requirements.txt\n", + "torch==2.5.1\n", + "transformers==4.45.2\n", + "huggingface_hub\n", + "git-lfs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f4844ef-f16c-4bda-bb05-62ca83a7d65f", + "metadata": {}, + "outputs": [], + "source": [ + "!pip install -U -r requirements.txt --quiet" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "88dc63be-90d4-4145-b42b-ef3fcf4c1f6c", + "metadata": {}, + "outputs": [], + "source": [ + "! pip list | grep neuron" + ] + }, + { + "cell_type": "markdown", + "id": "e9200f12-356c-43f9-afad-68cb1b486e4b", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "18ea6ed2", + "metadata": {}, + "source": [ + "### 2. Install Neuron vLLM Fork\n", + "\n", + "If you would like to serve your model via [vLLM](https://vllm.readthedocs.io/en/latest/) specialized for Neuron-based inference, you can install AWS Neuron's vLLM fork. NxD Inference integrates into vLLM by extending the model execution components responsible for loading and invoking models used in vLLM’s LLMEngine (see [link](https://docs.vllm.ai/en/latest/design/arch_overview.html#llm-engine) for more details on vLLM architecture). This means input processing, scheduling and output processing follow the default vLLM behavior.\n", + "\n", + "You enable the Neuron integration in vLLM by setting the device type used by `vLLM` to `neuron`.\n", + "\n", + "Currently, we support continuous batching and streaming generation in the NxD Inference vLLM integration. We are working with the vLLM community to enable support for other vLLM features like PagedAttention and Chunked Prefill on Neuron instances through NxD Inference in upcoming releases.\n", + "\n", + "\n", + "Skip this step if you do not need the vLLM server. Cloning and installing vLLM takes 8-10 minutes to complete\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cb9c80f8", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "set -euxo pipefail\n", + "\n", + "if [ -d \"/home/ubuntu/upstreaming-to-vllm\" ]; then\n", + " echo \"Neuron vLLM fork already cloned. Skipping.\"\n", + "else\n", + " echo \"Cloning and installing AWS Neuron vLLM fork...\"\n", + " cd /home/ubuntu/\n", + " git clone -b neuron-2.22-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git #neuron 2.22 vllm version\n", + " cd upstreaming-to-vllm\n", + " pip install -r requirements-neuron.txt --quiet\n", + "\n", + " # Install in editable mode with device set to neuron\n", + " VLLM_TARGET_DEVICE=\"neuron\" pip install -e . --quiet\n", + "fi" + ] + }, + { + "cell_type": "markdown", + "id": "b2c245e5-21ee-4002-b85e-01127d3e4340", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "adb91034", + "metadata": {}, + "source": [ + "### 3. (Optional) Install benchmarking and profiling tools\n", + "\n", + "#### 3.1 Install llmperf\n", + "\n", + "If you'd like to run benchmarks or load tests, you can install [llmperf](https://github.com/ray-project/llmperf). Skip if not needed.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cba57d72", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "if pip show llmperf > /dev/null 2>&1; then\n", + " echo \"llmperf is already installed. Skipping.\"\n", + "else\n", + " echo \"Installing llmperf...\"\n", + " cd /home/ubuntu/\n", + " git clone https://github.com/ray-project/llmperf.git > /dev/null 2>&1 --quiet\n", + " cd llmperf\n", + " pip install -e . --quiet\n", + "fi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e1b95852-a69f-4c6a-bdcd-915bdaf6d46a", + "metadata": {}, + "outputs": [], + "source": [ + "!pip list| grep neuron" + ] + }, + { + "cell_type": "markdown", + "id": "7ef8c80e-20dd-4d40-8d38-9973f03e08eb", + "metadata": {}, + "source": [ + "#### 3.2 Install AWS Neuron Tools (If Needed)\n", + "\n", + "This cell installs the Neuron packages for profiling and other tooling. If already installed, the script checks and skips. For more information, see [Installing Neuron Tools](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/index.html).\n", + "\n", + "> **Note**: If you have your apt sources already configured and have installed the Neuron packages, you can skip this step.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2855f8f0-7451-454d-a25f-2ac3574334de", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "set -euxo pipefail\n", + "\n", + "# Check if aws-neuronx-tools is installed\n", + "if dpkg -s aws-neuronx-tools > /dev/null 2>&1; then\n", + " echo \"aws-neuronx-tools is already installed. Skipping.\"\n", + "else\n", + " echo \"Installing aws-neuronx-tools...\"\n", + " . /etc/os-release\n", + "\n", + " sudo tee /etc/apt/sources.list.d/neuron.list > /dev/null < /dev/null 2>&1; then\n", + " echo \"InfluxDB2 is already installed, skipping.\"\n", + " if systemctl is-active --quiet influxdb; then\n", + " echo \"InfluxDB is already running.\"\n", + " else\n", + " sudo systemctl start influxdb\n", + " echo \"Setting up InfluxDB ...\"\n", + " # influx setup\n", + " fi\n", + "else\n", + " # Install InfluxDB\n", + " wget -q https://repos.influxdata.com/influxdata-archive_compat.key\n", + " echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && \\\n", + " cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null\n", + " echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list\n", + " \n", + " sudo apt-get update && sudo apt-get install influxdb2 influxdb2-cli -y\n", + " sudo systemctl start influxdb\n", + " \n", + " # Run non-interactive influx setup with all necessary flags\n", + " # replace the following flags below with the necessary credentials\n", + " influx setup \\\n", + " --username admin \\\n", + " --password testpassowrd \\\n", + " --org yourorg \\\n", + " --bucket yourbucket \\\n", + " --token yoursupersecrettoken \\\n", + " --force\n", + "\n", + "fi" + ] + }, + { + "cell_type": "markdown", + "id": "16eb98a5-dcc6-4d82-8283-949c6b3bf266", + "metadata": {}, + "source": [ + "#### 3.4 Accuracy-benchmarking with lm_eval\n" + ] + }, + { + "cell_type": "markdown", + "id": "d614ddb2-5284-488c-b377-77598508e001", + "metadata": {}, + "source": [ + "Copy the [inference-benchmarking](https://github.com/aws-neuron/aws-neuron-samples/tree/master/inference-benchmarking/) directory to some location on your instance. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8702b601-0a7e-4d87-8004-fa7bb7e0389a", + "metadata": {}, + "outputs": [], + "source": [ + "! git clone https://github.com/aws-neuron/aws-neuron-samples.git" + ] + }, + { + "cell_type": "markdown", + "id": "12f5e818-6488-4270-975a-81845b3d3cd4", + "metadata": {}, + "source": [ + "Change directory to the your copy of inference-benchmarking. Install other required dependencies in the same python env (e.g aws_neuron_venv_pytorch if you followed manual install NxD Inference ) by:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "07dddce8-101c-4d2d-b01c-fb93c6a07b72", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "cd /home/ubuntu/aws-neuron-samples/inference-benchmarking/\n", + "pip install -r requirements.txt --quiet" + ] + }, + { + "cell_type": "markdown", + "id": "4abe3940-45bb-4bae-a12f-d7d6959a2927", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "0d1970fc", + "metadata": {}, + "source": [ + "## 4. Download or Provide Your Model\n", + "\n", + "Below is a template for downloading the model. You can skip or adjust if you already have a local model.\n", + "\n", + "For more information on model checkpoint usage, see the [NxDI inference with Hugging Face-based models](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/developer_guides/feature-guide.html)." + ] + }, + { + "cell_type": "markdown", + "id": "ccff01a8-94f7-4d10-bdf7-71229ec19cb9", + "metadata": {}, + "source": [ + "You will need to log in to huggingface from the commandline. You will need your token from https://huggingface.co/settings/tokens Paste it to replace the MY_HUGGINGFACE_TOKEN_HERE text below. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d7186278-332e-4e07-87b8-fdf1a30f3335", + "metadata": {}, + "outputs": [], + "source": [ + "!git config --global credential.helper store\n", + "from huggingface_hub import notebook_login\n", + "notebook_login()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "860b9863-fc7e-4752-ae55-8d4b89312d4b", + "metadata": {}, + "outputs": [], + "source": [ + "#run the following code in the terminal to install git-lfs" + ] + }, + { + "cell_type": "markdown", + "id": "2500bcdc-6f0a-4484-b64d-dc23ef94c445", + "metadata": {}, + "source": [ + "`sudo apt-get update`\n", + "\n", + "`sudo apt-get install git-lfs`\n", + "\n", + "`git lfs install`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "01d2bdbf-1af1-4a20-a255-7642b8da704d", + "metadata": {}, + "outputs": [], + "source": [ + "#check that git lfs is installed on path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c72f91e7-89ee-4b90-99f4-91239197ed72", + "metadata": {}, + "outputs": [], + "source": [ + "!git lfs version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a8774eaf-d975-49ab-a1dc-2f6062513aab", + "metadata": {}, + "outputs": [], + "source": [ + "#start a tmux session and run the following code in the terminal:" + ] + }, + { + "cell_type": "markdown", + "id": "5117214b-99fd-4ecf-92fa-e084ee4d95cc", + "metadata": {}, + "source": [ + "`sudo apt-get update`\n", + "\n", + "`sudo apt-get install tmux`\n", + "\n", + "`tmux new -s mysession`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bcae2706-cd59-4e38-9353-fe9d3b2283ff", + "metadata": {}, + "outputs": [], + "source": [ + "# run the following code to download the model in a tmux session since this may take a while - run in terminal" + ] + }, + { + "cell_type": "markdown", + "id": "fb753745-5fd9-4e17-984f-e1647be82dda", + "metadata": {}, + "source": [ + "`git clone https://huggingface.co/mistralai/Mistral-Small-24B-Instruct-2501`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "baae5abf-e4e8-4418-8747-d5bc05e7f3fe", + "metadata": {}, + "outputs": [], + "source": [ + "!du -sh /home/ubuntu/Mistral-Small-24B-Instruct-2501/ #check if the full model was copied in" + ] + }, + { + "cell_type": "markdown", + "id": "6f481bc0-8312-4d24-8dd3-ad834518d1dc", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "083589fe-ee9b-4908-bbe0-b66fff1703a9", + "metadata": {}, + "source": [ + "## 5. Compile and save model and run generation with HuggingFaceGenerationAdapter- `inference_demo.py`\n", + "\n", + "NxD Inference supports running inference with the HuggingFace generate inference. To use HuggingFace-style generation, create a HuggingFaceGenerationAdapter that wraps a Neuron application model. Then, you can call generate on the adapted model. In the below cell, we use the `inference_demo` script that NXDI provides to compile, save, and run some prompts with our Mistral Small 24B model, for more information on the flags we set, refer to the [nxdi api reference guide](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/api-guides/api-guide.html)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a76a78e0-4ed2-4057-b702-d472d24f515f", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "# Replace this with the path where you downloaded and saved the model files.\n", + "# These should be the same paths used when compiling the model.\n", + "MODEL_PATH=\"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", + "COMPILED_MODEL_PATH=\"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", + "TP_DEGREE=32\n", + "\n", + "inference_demo \\\n", + " --model-type llama \\\n", + " --task-type causal-lm \\\n", + " run \\\n", + " --model-path $MODEL_PATH \\\n", + " --compiled-model-path $COMPILED_MODEL_PATH \\\n", + " --torch-dtype bfloat16 \\\n", + " --start_rank_id 0 \\\n", + " --tp-degree $TP_DEGREE \\\n", + " --batch-size 1 \\\n", + " --max-context-length 12288 \\\n", + " --seq-len 12800 \\\n", + " --on-device-sampling \\\n", + " --top-k 1 \\\n", + " --do-sample \\\n", + " --fused-qkv \\\n", + " --sequence-parallel-enabled \\\n", + " --pad-token-id 2 \\\n", + " --enable-bucketing \\\n", + " --context-encoding-buckets 2048 4096 8192 12288 \\\n", + " --token-generation-buckets 2048 4096 8192 12800 \\\n", + " --prompt \"What is annapurna labs?\" 2>&1 | tee log" + ] + }, + { + "cell_type": "markdown", + "id": "7df76059-45ba-4726-9bcc-7a545a6d1575", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "9a8ba793-3901-4620-b4b0-5150325a005a", + "metadata": {}, + "source": [ + "## 6. vLLM demo and perf benchmarking - standalone model " + ] + }, + { + "cell_type": "markdown", + "id": "cc9425cb-9354-4f0a-8375-900961ff54af", + "metadata": {}, + "source": [ + "#### 6.1 Run Mistral Small 2501 on Trainium" + ] + }, + { + "cell_type": "markdown", + "id": "1d58b2a2-8475-4599-8750-24253c3c9c29", + "metadata": {}, + "source": [ + "Here is an example for running online inference with Mistral Small 2501 and let's get some perf results. We will first compile and run generation on a sample prompt using a command installed by neuronx-distributed-inference. The script compiles the model and runs generation on the given input prompt. Note the path we used to save the compiled model. This path should be used when launching vLLM server for inference so that the compiled model can be loaded without recompilation. Please refer to [NxD Inference API Reference](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/api-guides/api-guide.html) and [VLLM user guide for NxDI](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/developer_guides/vllm-user-guide.html)for more information on these `inference_demo` flags." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "71c866cb-9ace-4fae-a940-8776c4e41ad1", + "metadata": {}, + "outputs": [], + "source": [ + "!pip list | grep neuron" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8fd75bb0-6fb8-4f89-8203-73b8247fc879", + "metadata": {}, + "outputs": [], + "source": [ + "# RUN THE FOLLOWING CELL IN A TERMINAL - spin up the vllm server" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca565569-45f9-4c0c-b81d-e0c7eaa98249", + "metadata": {}, + "outputs": [], + "source": [ + "# These should be the same paths used when compiling the model. - command for terminal\n", + "MODEL_PATH=\"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", + "COMPILED_MODEL_PATH=\"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", + "\n", + "export VLLM_NEURON_FRAMEWORK=\"neuronx-distributed-inference\"\n", + "export NEURON_COMPILED_ARTIFACTS=$COMPILED_MODEL_PATH\n", + "VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \\\n", + " --model $MODEL_PATH \\\n", + " --max-num-seqs 1 \\\n", + " --max-model-len 12800 \\\n", + " --tensor-parallel-size 32 \\\n", + " --device neuron \\\n", + " --use-v2-block-manager \\\n", + " --port 8000 &\n", + "PID=$!\n", + "echo \"vLLM server started with PID $PID\"" + ] + }, + { + "cell_type": "markdown", + "id": "2d24058f-67a6-4f94-9a39-0ce4ab64d801", + "metadata": {}, + "source": [ + "Let's send a quick request with a python client to the server:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "124db78f-f910-4bcd-b631-4a2fb4166a54", + "metadata": {}, + "outputs": [], + "source": [ + "from openai import OpenAI\n", + "\n", + "# Client Setup\n", + "openai_api_key = \"EMPTY\"\n", + "openai_api_base = \"http://localhost:8000/v1\"\n", + "\n", + "client = OpenAI(\n", + " api_key=openai_api_key,\n", + " base_url=openai_api_base,\n", + ")\n", + "\n", + "models = client.models.list()\n", + "model_name = models.data[0].id\n", + "\n", + "# Sampling Parameters\n", + "max_tokens = 1024\n", + "temperature = 1.0\n", + "top_p = 1.0\n", + "top_k = 50\n", + "stream = False\n", + "\n", + "# Chat Completion Request\n", + "response = client.chat.completions.create(\n", + " model=model_name,\n", + " messages=[\n", + " {\"role\": \"system\", \"content\": \"You are a helpful AI assistant.\"},\n", + " {\"role\": \"user\", \"content\": \"What is AWS Neuron?\"}\n", + " ],\n", + ")\n", + "\n", + "# Parse the response\n", + "generated_text = \"\"\n", + "generated_text = response.choices[0].message.content\n", + "\n", + "print(generated_text)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d9c4bad-6cb2-43d6-86db-d2011f1bdaf3", + "metadata": {}, + "outputs": [], + "source": [ + "!neuron-ls # show running processes - vllm server is still running" + ] + }, + { + "cell_type": "markdown", + "id": "8d8f6afb-6f64-4387-ad65-a7fe705d9fe9", + "metadata": {}, + "source": [ + "----" + ] + }, + { + "cell_type": "markdown", + "id": "053e81d2-e2cf-4ef7-9a55-1fb495bc416f", + "metadata": {}, + "source": [ + "#### 6.2 llmperf- let's run some quick benchmarks " + ] + }, + { + "cell_type": "markdown", + "id": "c45478cd-64a5-4a9a-8622-294848e2f852", + "metadata": {}, + "source": [ + "After the above steps, the vllm server should be running. You can now measure the performance using LLMPerf. Before we can use the llmperf package, we need to make a few changes to its code. Follow benchmarking with LLMPerf guide to apply the code changes.\n", + "\n", + "Below is a sample shell script to run LLMPerf. To provide the model with 10000 tokens as input and generate 1500 tokens as output on average, we use the following parameters from LLMPerf:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa9ab418-c069-40cb-8041-5c0574c3377f", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "cd /home/ubuntu/llmperf/\n", + "\n", + "MODEL_PATH=\"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", + "COMPILED_MODEL_PATH=\"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", + "OUTPUT_PATH=llmperf-results-sonnets\n", + "\n", + "export OPENAI_API_BASE=\"http://localhost:8000/v1\"\n", + "export OPENAI_API_KEY=\"mock_key\"\n", + "\n", + "python token_benchmark_ray.py \\\n", + " --model $MODEL_PATH \\\n", + " --mean-input-tokens 10000 \\\n", + " --stddev-input-tokens 0 \\\n", + " --mean-output-tokens 1500 \\\n", + " --stddev-output-tokens 0 \\\n", + " --num-concurrent-requests 1\\\n", + " --timeout 3600 \\\n", + " --max-num-completed-requests 50 \\\n", + " --additional-sampling-params '{}' \\\n", + " --results-dir $OUTPUT_PATH \\\n", + " --llm-api \"openai\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c38d5e8d-0c16-4061-b22f-c558ba1d5050", + "metadata": {}, + "outputs": [], + "source": [ + "!sudo kill 55509 #stop the server" + ] + }, + { + "cell_type": "markdown", + "id": "dc00332e-d7e0-4607-b91e-e08503a2319a", + "metadata": {}, + "source": [ + "Summarized results:" + ] + }, + { + "cell_type": "markdown", + "id": "3943d616-6474-40a7-b9cd-61faac231c15", + "metadata": {}, + "source": [ + "| Scenario | TTFT (p50 ms) | TPOT (p50 ms) | Output-token Throughput (tokens/s, p50) |\n", + "|---------------------------------------------------------------------------|---------------|---------------|-----------------------------------------|\n", + "| Mistral-Small-24B-Instruct-2501 on Trainium (OpenAI-style API) | 347 | 10.55 | 107.35 |\n" + ] + }, + { + "cell_type": "markdown", + "id": "2c99fb0e-5712-43f1-be25-2892342bbce4", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "f6ec3558-b527-44a2-b107-72a6c89d4722", + "metadata": {}, + "source": [ + "#### 6.3 Running Evaluations\n", + "\n", + "There are two methods that you can use the evaluation scirpts to run your evaluation. For more information, check out the [inference-demo](https://github.com/aws-neuron/aws-neuron-samples/tree/master/inference-benchmarking/)directory and [tutorials](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/tutorials/trn1-llama3.1-70b-instruct-accuracy-eval-tutorial.html) in NXDI.\n", + "\n", + "1. Using a `yaml` configuration file and `accuracy.py` script\n", + "\n", + "2. Writing your own python script that uses several components provided in `accuracy.py` and `server_config.py`\n", + "\n", + "In this notebook we only demonstrate running an eval with the `yaml` config file.\n", + "\n", + "In this method all you need is to create a yaml config file that specifies the server configuration and testing scenario you want to run. Create `config.yaml` with the following content." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2c81c85a-6e50-47f5-9baa-f22e465f7297", + "metadata": {}, + "outputs": [], + "source": [ + "%%writefile mistral_config.yaml\n", + "\n", + "server:\n", + " name: \"Mistral-Small-24B-Instruct\"\n", + " model_path: \"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", + " model_s3_path: null\n", + " compiled_model_path: \"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", + " max_seq_len: 12800\n", + " context_encoding_len: 12288\n", + " tp_degree: 32\n", + " n_vllm_threads: 32\n", + " server_port: 8888\n", + " continuous_batch_size: 1\n", + "\n", + "test:\n", + " accuracy:\n", + " mytest:\n", + " client: \"lm_eval\"\n", + " datasets: [\"gsm8k_cot\"]\n", + " max_concurrent_requests: 1\n", + " timeout: 3600\n", + " client_params:\n", + " limit: 200\n", + " use_chat: True" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b4c171e0-a6ef-4782-bb67-2927d393e4b7", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "if test -f \"/home/ubuntu/aws-neuron-samples/inference-benchmarking/mistral_config.yaml\"; then\n", + " echo \"config file exists.\"\n", + "else \n", + " echo \"Copying config file.\"\n", + " mv /home/ubuntu/mistral_config.yaml /home/ubuntu/aws-neuron-samples/inference-benchmarking/\n", + "fi" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1efea9af-ed19-476e-9841-764ea6f1b101", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "cd /home/ubuntu/aws-neuron-samples/inference-benchmarking/\n", + "python accuracy.py --config mistral_config.yaml" + ] + }, + { + "cell_type": "markdown", + "id": "6ee55692-a5f9-41f5-a955-ce36c52f5b96", + "metadata": {}, + "source": [ + "Results Summary:\n", + "\n", + "Accuracy_mytest_gsm8k_cot:\n", + " Saved at results/accuracy/mytest/gsm8k_cot/__home__ubuntu__Mistral-Small-24B-Instruct-2501__/results_2025-04-26T20-02-47.843052.json:\n", + " \n", + " Metrics: {'gsm8k_cot': {'AccuracyExactMatchStrictMatch': 39.5, 'AccuracyExactMatchStrictMatchStderr': 3.46537, 'AccuracyExactMatchFlexibleExtract': 78.5, 'AccuracyExactMatchFlexibleExtractStderr': 2.91224}}" + ] + }, + { + "cell_type": "markdown", + "id": "c0b0f6af-8bb3-4e62-b98e-a6bb779f85a4", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "b7b7fa83-aa5c-44c1-986b-c472a1243ed4", + "metadata": {}, + "source": [ + "#### 6.4 Profiling with `neuron-profile`" + ] + }, + { + "cell_type": "markdown", + "id": "a3376804-9c21-4e68-ba32-e299ed75fb9d", + "metadata": {}, + "source": [ + "`neuron-profile` helps developers identify performance bottlenecks and optimize their workloads for NeuronDevices. `neuron-profile` provides insights into NeuronDevice activity including the instructions executed on each compute engine (ex. Tensor engine, Vector engine, etc.), DMA data movement activity, and performance metrics such as engine utilization, DMA throughput, memory usage, and more. NeuronDevice activity is collected by the `neuron-profile` capture command which runs the model with tracing enabled. Profiling typically has near zero overhead because NeuronDevices have dedicated on-chip hardware profiling." + ] + }, + { + "cell_type": "markdown", + "id": "c2be3b7c-a7e0-4295-b306-e31bbbac8da9", + "metadata": {}, + "source": [ + "Let's cd into `/tmp/nxd_model` for the compiler working dir with the `context_encoding` and `token_generation` directories that we set the context encoding and token generation buckets for, which hold the NEFFs for these. The neuron-profile tool can both capture and post-process profiling information. neuron-profile takes a compiled model (a NEFF), executes it, and saves the profile results to a NTFF (profile.ntff by default)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8d6ce0b5-f029-41a3-9971-a087341584fc", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash \n", + "cd /tmp/nxd_model/\n", + "ls #list directories\n", + "cd context_encoding_model\n", + "ls " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea3c44a0-7c75-46f8-adb6-e413344e51bf", + "metadata": {}, + "outputs": [], + "source": [ + "#_tp0_bk0 _tp0_bk1 _tp0_bk2 _tp0_bk3 - are the context encoding buckets" + ] + }, + { + "cell_type": "markdown", + "id": "f9398648-ae6c-4069-baee-338e1205a1e0", + "metadata": {}, + "source": [ + "##### Capturing profiles for multi-worker jobs\n", + "`neuron-profile` can capture profiles for collectives-enabled NEFFs running across multiple NeuronCores, NeuronDevices, or even nodes. This is useful for understanding performance and communication overheads when deploying larger distributed models.\n", + "\n", + "The following example, performs a distributed run across all NeuronDevices and NeuronCores on our trn1.32xlarge instance, capturing profiles for all 32 workers (one for each NeuronCore)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c746ce34-fc4a-48bb-9558-c1babbcd7c91", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "# 1. Make sure the directory exists and is writable\n", + "mkdir -p /tmp/output/ \n", + "\n", + "cd /tmp/nxd_model/context_encoding_model/_tp0_bk1/\n", + "# 2. Run the capture, pointing -s at that directory\n", + "neuron-profile capture \\\n", + " -n graph.neff \\\n", + " --collectives-workers-per-node 32 \\\n", + " -s /tmp/output/profile.ntff \n" + ] + }, + { + "cell_type": "markdown", + "id": "1c5250d4-f3a7-494b-9c42-d14fbbb07a26", + "metadata": {}, + "source": [ + "Now if we check our output dir- A profile is saved for each worker in the output directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6b40fe3a-f01f-4f62-96f5-2df5db0d05dd", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash \n", + "cd /tmp/output/\n", + "ls" + ] + }, + { + "cell_type": "markdown", + "id": "ee5fbaba-ecfb-4f5e-8af8-31bd6df05162", + "metadata": {}, + "source": [ + "##### Viewing profiles for multi-worker jobs\n", + "Profiles from multi-worker jobs (i.e. more than one NeuronCore) can either be viewed individually or in a combined collectives view. Since profile data is often similar between workers and processing profile data for all workers can be time-consuming, it is recommended to first explore the profile for a single worker or small subset of workers. Viewing the profile for a specific worker is the same as for single-worker profiles." + ] + }, + { + "cell_type": "markdown", + "id": "a5b39974-8a7a-456b-b035-c841adecb8d1", + "metadata": {}, + "source": [ + "In the beginning, we forwarded port 3001 and 806. This is because `neuron-profile` view is running on a remote instance, we need to use port forwarding to access the profiles.\n" + ] + }, + { + "cell_type": "markdown", + "id": "898c5311-fc27-4dc3-b9e1-ec3da5654089", + "metadata": {}, + "source": [ + "Viewing the profile for a specific worker is as below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "504f6ec8-ee60-49b2-912f-b2a9be8c1f03", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "cd /tmp/nxd_model/context_encoding_model/_tp0_bk1/\n", + "neuron-profile view -n graph.neff -s /tmp/output/profile_rank_2.ntff" + ] + }, + { + "cell_type": "markdown", + "id": "e3308394-08a3-413d-a38b-d3266ae2c58f", + "metadata": {}, + "source": [ + "You will see an output like- View profile at http://localhost:3001/profile/n_a1143c514431fb4c23b7aae9208fd1a89cad42f6" + ] + }, + { + "cell_type": "markdown", + "id": "f756c277-bc7b-462a-91ed-eaaf3fa6dd8d", + "metadata": {}, + "source": [ + "![image-profile](imgs/img-neff.png)" + ] + }, + { + "cell_type": "markdown", + "id": "3e323e2f-3980-4ac7-8c32-ed395c937f0e", + "metadata": {}, + "source": [ + "To view the profile for multiple workers, pass the directory containing all worker profiles to neuron-profile." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0b082bd6-ed2c-4d70-b092-1e97fe9df1ce", + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "cd /tmp/nxd_model/context_encoding_model/_tp0_bk1/\n", + "neuron-profile view -n graph.neff -d /tmp/output" + ] + }, + { + "cell_type": "markdown", + "id": "eb861db0-99e5-42ce-b9c9-bb7cc185af6a", + "metadata": {}, + "source": [ + "For more on profiling with neuron and understanding profiles,check out the [link](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-profile-user-guide.html) to `neuron-profile` user guide" + ] + }, + { + "cell_type": "markdown", + "id": "40aca927-7701-4f4e-9320-cc2faf9d05bd", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "f071be6d-3a5c-4fa0-b02f-4cf3802ff7c2", + "metadata": {}, + "source": [ + "## Conclusion" + ] + }, + { + "cell_type": "markdown", + "id": "e70149be-ba89-4320-a17c-082ba6a72b6d", + "metadata": {}, + "source": [ + "In this notebook, we successfully walked through deploying, benchmarking, and generating profiles for NEFFs on TRN1 using Mistral Small 2501" + ] + }, + { + "cell_type": "markdown", + "id": "a281311e-0c58-41c1-9f61-93735c768f1f", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "d98b2877-bb28-4762-8ef2-9165ef505046", + "metadata": {}, + "source": [ + "#### Distributors\n", + "- AWS\n", + "- Mistral" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 8638a20157fcaa2712a7e52373d05d8daf14d21f Mon Sep 17 00:00:00 2001 From: nithiyn Date: Tue, 8 Jul 2025 13:34:47 +0000 Subject: [PATCH 06/28] commit tp32 updates trn1 --- .../nxd-1p1d-inference/trn1-nxd-cluster-config.yaml | 4 ++-- .../nxdi-disaggregated-inference-eks/.env | 0 .../1p1d/Cluster-setup.md | 1 + .../1p1d/manifests/compile.yaml | 10 ++-------- 4 files changed, 5 insertions(+), 10 deletions(-) create mode 100644 2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/.env create mode 100644 2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/Cluster-setup.md diff --git a/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/trn1-nxd-cluster-config.yaml b/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/trn1-nxd-cluster-config.yaml index 6aae13b..e1dcdd5 100644 --- a/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/trn1-nxd-cluster-config.yaml +++ b/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/trn1-nxd-cluster-config.yaml @@ -12,8 +12,6 @@ vpc: private: $AVAILABILITY_ZONE_1: id: $PLACEHOLDER_SUBNET_PRIVATE_1 - $AVAILABILITY_ZONE_2: - id: $PLACEHOLDER_SUBNET_PRIVATE_2 public: $AVAILABILITY_ZONE_1: id: $PLACEHOLDER_SUBNET_PUBLIC_1 @@ -52,6 +50,8 @@ managedNodeGroups: - name: trn-compute-node-group instanceType: trn1.32xlarge instancePrefix: trtllm-compute-node + subnets: + - $PLACEHOLDER_SUBNET_PRIVATE_1 privateNetworking: true efaEnabled: true minSize: 0 diff --git a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/.env b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/.env new file mode 100644 index 0000000..e69de29 diff --git a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/Cluster-setup.md b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/Cluster-setup.md new file mode 100644 index 0000000..daed665 --- /dev/null +++ b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/Cluster-setup.md @@ -0,0 +1 @@ +update ConfigMap to update all pods, or add to .env at start \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml index 190a799..59c6731 100644 --- a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml +++ b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml @@ -76,7 +76,6 @@ spec: --mlp-kernel-enabled \ --cc-pipeline-tiling-factor 1 \ --pad-token-id 2 \ - --logical-neuron-cores 2 \ --context-encoding-buckets 256 512 1024 2048 4096 8192 \ --token-generation-buckets 512 1024 2048 4096 8192 \ --apply-seq-ids-mask \ @@ -93,9 +92,9 @@ spec: chmod +x /shared/compile.sh # Compile for multi-instance (TP=32) - echo "Compiling model for multi-instance deployment (TP=64)..." + echo "Compiling model for multi-instance deployment (TP=32)..." cd /shared - ./compile.sh --tp-degree 64 --batch-size 4 --model-path /shared/models/Llama-3.3-70B-Instruct + ./compile.sh --tp-degree 32 --batch-size 4 --model-path /shared/models/Llama-3.3-70B-Instruct # Create metadata file cat > /shared/compilation_metadata.json << EOL @@ -106,11 +105,6 @@ spec: "vllm_version": "0.7.2", "configurations": { "multi_instance": { - "tp_degree": 64, - "batch_size": 4, - "compiled_path": "di_traced_model_tp64_b4/" - }, - "single_instance": { "tp_degree": 32, "batch_size": 4, "compiled_path": "di_traced_model_tp32_b4/" From 40f9be873dae654567af97a5dd74eff61f8ca9b2 Mon Sep 17 00:00:00 2001 From: nithiyn Date: Wed, 9 Jul 2025 20:51:25 +0000 Subject: [PATCH 07/28] feat: updated FSD artifacts --- .../nxd-1p1d-inference/Create_EKS_Cluster.md | 206 ++++++++++++++++++ .../trn1-nxd-cluster-config.yaml | 2 + .../nxd-inference-eks/.env | 11 + .../fused-SD/Cluster-setup.md | 15 ++ .../fused-SD/manifests/compile.yaml | 191 ++++++++++++++++ .../fused-SD/manifests/fsd-deploy.yaml | 165 ++++++++++++++ .../neuron-monitor/neuron-container.yaml | 62 ++++++ 7 files changed, 652 insertions(+) create mode 100644 1.infrastructure/1_setup_cluster/nxd-1p1d-inference/Create_EKS_Cluster.md create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/.env create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/Cluster-setup.md create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/neuron-monitor/neuron-container.yaml diff --git a/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/Create_EKS_Cluster.md b/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/Create_EKS_Cluster.md new file mode 100644 index 0000000..1f4520e --- /dev/null +++ b/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/Create_EKS_Cluster.md @@ -0,0 +1,206 @@ +# Steps to create EKS cluster with EFS + +## 1. Install CLIs + +### a. Install AWS CLI (steps [here](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)) + +``` +sudo apt install unzip +curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" +unzip awscliv2.zip +sudo ./aws/install +``` + +### b. Install Kubernetes CLI (steps [here](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)) + +``` +curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.0/2024-05-12/bin/linux/amd64/kubectl +chmod +x ./kubectl +mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH +echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc +``` + +### c. Install EKS CLI (steps [here](https://eksctl.io/installation/)) + +``` +ARCH=amd64 +PLATFORM=$(uname -s)_$ARCH +curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz" +curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check +tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz +sudo mv /tmp/eksctl /usr/local/bin +``` + + +## 2. Create an EKS cluster + +In this example we create an EKS cluster consisting of two `trn1.32xlarge` compute nodes. We also setup EFA between the compute nodes. + +### a. Configure AWS CLI + +``` +aws configure +``` + +### b. Create a config file for EKS cluster creation + +We have provided an example file here: [p5-trtllm-cluster-config.yaml](./trn1-nxd-cluster-config.yaml) + +``` +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: nxdi-inference-cluster + region: $REGION + version: "1.00" + +vpc: + id: $PLACEHOLDER_VPC_ID + subnets: + private: + $AVAILABILITY_ZONE_1: + id: $PLACEHOLDER_SUBNET_PRIVATE_1 + public: + $AVAILABILITY_ZONE_1: + id: $PLACEHOLDER_SUBNET_PUBLIC_1 + $AVAILABILITY_ZONE_2: + id: $PLACEHOLDER_SUBNET_PUBLIC_2 + + clusterEndpoints: + privateAccess: true + publicAccess: true + +cloudwatch: + clusterLogging: + enableTypes: ["*"] + +iam: + withOIDC: true + +# Adding additional section to Cluster (eksctl) for any controllers you may want to install. Uncomment as required. +wellKnownPolicies: +# ebsCSIController: true # Adds policies for using the ebs-csi-controller + efsCSIController: true # Adds policies for using the efs-csi-controller + +addons: + - name: vpc-cni + version: 1.18.1-eksbuild.1 + configurationValues: '{"env":{"ENABLE_PREFIX_DELEGATION":"true", "ENABLE_POD_ENI":"true", "POD_SECURITY_GROUP_ENFORCING_MODE":"standard"},"enableNetworkPolicy": "true"}' + resolveConflicts: overwrite + - name: amazon-cloudwatch-observability + version: v1.16.4-eksbuild.1 + # - name: aws-ebs-csi-driver + # version: v1.26.0-eksbuild.1 + - name: aws-efs-csi-driver + version: v2.1.9-eksbuild.1 + +managedNodeGroups: + - name: trn-compute-node-group + instanceType: trn1.32xlarge + instancePrefix: trtllm-compute-node + subnets: + - $PLACEHOLDER_SUBNET_PRIVATE_1 + privateNetworking: true + efaEnabled: true + minSize: 0 + desiredCapacity: 2 + maxSize: 2 + volumeSize: 500 + # comment out capacityReservation if you do not need ODCR + #capacityReservation: + #capacityReservationTarget: + #capacityReservationID: "$CR_ID" + ami: ami-07c8bc6b0bb890e9e + amiFamily: AmazonLinux2 + ssh: + publicKeyName: $PUBLIC_KEYPAIR_NAME + sourceSecurityGroupIds: [$SECURITY_GROUP_IDS] + updateConfig: + maxUnavailablePercentage: 50 + iam: + withAddonPolicies: + externalDNS: true + certManager: true + autoScaler: true + cloudWatch: true + ebs: true + efs: true + fsx: true + imageBuilder: true + xRay: true + awsLoadBalancerController: true + albIngress: true + +``` + + +### c. Create the EKS cluster + +``` +eksctl create cluster -f trn1-nxdi-cluster-config.yaml +``` + +## 3. (Optional) Capacity Blocks + +If you have Capacity Blocks for P5 or P4 instances, you can follow the [steps here](https://github.com/aws-samples/awsome-inference/tree/main/1.infrastructure#capacity-blocks) to create a self-managed nodegroup and add to your existing EKS cluster. + + +## 4. Create an EFS file system + +To enable multiple pods deployed to multiple nodes to load shards of the same model so that they can used in coordination to serve inference request too large to loaded by a single GPU, we'll need a common, shared storage location. In Kubernetes, these common, shared storage locations are referred to as persistent volumes. Persistent volumes can be volume mapped in to any number of pods and then accessed by processes running inside of said pods as if they were part of the pod's file system. We will be using EFS as persistent volume. + +Additionally, we will need to create a persistent-volume claim which can use to assign the persistent volume to a pod. +### a. Create an IAM role + +Follow the steps to create an IAM role for your EFS file system: https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html#efs-create-iam-resources. This role will be used later when you install the EFS CSI Driver. + +### b. Install EFS CSI driver + +Install the EFS CSI Driver through the Amazon EKS add-on in AWS console: https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html#efs-install-driver. Once it's done, check the Add-ons section in EKS console, you should see the driver is showing `Active` under Status. + +### c. Create EFS file system + +### Create EFS Filesystem +```bash +# Create EFS filesystem +aws efs create-file-system \ + --creation-token neuron-models-$(date +%s) \ + --performance-mode generalPurpose \ + --throughput-mode provisioned \ + --provisioned-throughput-in-mibps 1000 \ + --tags Key=Name,Value=neuron-disaggregated-efs + +# Get the filesystem ID +EFS_ID=$(aws efs describe-file-systems \ + --query 'FileSystems[?Tags[?Key==`Name`&&Value==`neuron-disaggregated-efs`]].FileSystemId' \ + --output text) + +# Create mount targets in each subnet +for subnet in subnet-xxx subnet-yyy subnet-zzz; do + aws efs create-mount-target \ + --file-system-id $EFS_ID \ + --subnet-id $subnet \ + --security-groups sg-your-efs-security-group +done +``` + + +### EFS CSI Driver Installation +```bash +# Install EFS CSI Driver +kubectl apply -k "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.7" + +# Create StorageClass +cat <&1 | tee /shared/compile.log + else + # Compilation with speculative decoding + echo "Compiling with speculative decoding..." + inference_demo \ + --model-type llama \ + --task-type causal-lm \ + run \ + --model-path $MODEL_PATH \ + --compiled-model-path $COMPILED_MODEL_PATH \ + --torch-dtype bfloat16 \ + --start_rank_id 0 \ + --local_ranks_size $TP_DEGREE \ + --tp-degree $TP_DEGREE \ + --batch-size ${BATCH_SIZE} \ + --max-context-length 12288 \ + --seq-len 12800 \ + --on-device-sampling \ + --top-k 1 \ + --fused-qkv \ + --sequence-parallel-enabled \ + --qkv-kernel-enabled \ + --attn-kernel-enabled \ + --mlp-kernel-enabled \ + --cc-pipeline-tiling-factor 1 \ + --draft-model-path $DRAFT_MODEL_PATH \ + --enable-fused-speculation \ + --speculation-length 7 \ + --pad-token-id 2 \ + --enable-bucketing \ + --context-encoding-buckets 2048 4096 8192 12288 \ + --token-generation-buckets 2048 4096 8192 12800 \ + --prompt "What is annapurna labs?" 2>&1 | tee /shared/compile_speculative.log + fi + + echo "Compilation completed successfully!" + +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: neuron-model-compilation + namespace: neuron-inference +spec: + template: + spec: + restartPolicy: OnFailure + nodeSelector: + workload-type: "neuron-inference" + tolerations: + - key: aws.amazon.com/neuron + operator: Exists + effect: NoSchedule + containers: + - name: model-compiler + image: public.ecr.aws/neuron/pytorch-inference-vllm-neuronx:0.7.2-neuronx-py310-sdk2.24.0-ubuntu22.04 + command: ["/bin/bash", "-c"] + args: + - | + set -e + echo "Setting up Neuron environment..." + + # Activate virtual environment + source ~/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate + + # Install vLLM Neuron fork + cd /shared + if [ ! -d "upstreaming-to-vllm" ]; then + git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git + cd upstreaming-to-vllm + pip install -r requirements-neuron.txt + VLLM_TARGET_DEVICE="neuron" pip install -e . + cd /shared + fi + + # Download models (if not already present) + if [ ! -d "/shared/models/Llama-3.3-70B-Instruct" ]; then + echo "Downloading Llama-3.3-70B-Instruct model..." + mkdir -p /shared/models + # Note: Requires HuggingFace token for gated model + huggingface-cli download meta-llama/Llama-3.3-70B-Instruct --local-dir /shared/models/Llama-3.3-70B-Instruct + fi + + # Optional: Download draft model for speculative decoding + if [ "$ENABLE_SPECULATIVE" = "true" ] && [ ! -d "/shared/models/Llama-3.2-1B-Instruct" ]; then + echo "Downloading draft model..." + huggingface-cli download meta-llama/Llama-3.2-1B-Instruct --local-dir /shared/models/Llama-3.2-1B-Instruct + fi + + # Run compilation + chmod +x /scripts/compile_model.sh + /scripts/compile_model.sh + + resources: + limits: + aws.amazon.com/neuroncore: "128" + memory: "128Gi" + cpu: "64" + requests: + aws.amazon.com/neuroncore: "128" + memory: "64Gi" + cpu: "32" + volumeMounts: + - name: shared-storage + mountPath: /shared + - name: compile-scripts + mountPath: /scripts + env: + - name: BATCH_SIZE + value: "1" # Can be 1-4 + - name: ENABLE_SPECULATIVE + value: "false" # Set to "true" for speculative decoding + volumes: + - name: shared-storage + persistentVolumeClaim: + claimName: efs-models-pvc + - name: compile-scripts + configMap: + name: neuron-compile-scripts + defaultMode: 0755 + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: efs-models-pvc + namespace: neuron-inference +spec: + accessModes: + - ReadWriteMany + storageClassName: efs-sc + resources: + requests: + storage: 500Gi \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml new file mode 100644 index 0000000..98d3b35 --- /dev/null +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml @@ -0,0 +1,165 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: neuron-vllm-scripts + namespace: neuron-inference +data: + start_vllm.sh: | + #!/bin/bash + set -e + + export NEURON_RT_INSPECT_ENABLE=0 + export NEURON_RT_VIRTUAL_CORE_SIZE=2 + + # Model paths + MODEL_PATH="/shared/models/Llama-3.3-70B-Instruct/" + COMPILED_MODEL_PATH="/shared/traced_model/Llama-3.3-70B-Instruct/" + + export VLLM_NEURON_FRAMEWORK="neuronx-distributed-inference" + export NEURON_COMPILED_ARTIFACTS=$COMPILED_MODEL_PATH + + # Standard deployment (without speculative decoding) + if [ "$ENABLE_SPECULATIVE" != "true" ]; then + echo "Starting vLLM server (standard mode)..." + VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ + --model $MODEL_PATH \ + --max-num-seqs ${MAX_NUM_SEQS:-1} \ + --max-model-len 12800 \ + --tensor-parallel-size 64 \ + --device neuron \ + --use-v2-block-manager \ + --override-neuron-config "{\"on_device_sampling_config\": {\"do_sample\": true}, \"skip_warmup\": true}" \ + --port 8000 + else + # With speculative decoding + echo "Starting vLLM server (speculative decoding mode)..." + DRAFT_MODEL_PATH="/shared/models/Llama-3.2-1B-Instruct/" + + VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ + --model $MODEL_PATH \ + --max-num-seqs ${MAX_NUM_SEQS:-1} \ + --max-model-len 12800 \ + --tensor-parallel-size 64 \ + --device neuron \ + --speculative-max-model-len 12800 \ + --speculative-model $DRAFT_MODEL_PATH \ + --num-speculative-tokens 7 \ + --use-v2-block-manager \ + --override-neuron-config "{\"enable_fused_speculation\":true}" \ + --port 8000 + fi + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: neuron-llama-inference + namespace: neuron-inference +spec: + replicas: 1 + selector: + matchLabels: + app: neuron-llama-inference + template: + metadata: + labels: + app: neuron-llama-inference + spec: + nodeSelector: + workload-type: "neuron-inference" + # Optional: pin to specific instance type + node.kubernetes.io/instance-type: "trn2.48xlarge" + tolerations: + - key: aws.amazon.com/neuron + operator: Exists + effect: NoSchedule + + containers: + - name: vllm-server + image: public.ecr.aws/neuron/pytorch-inference-neuronx:2.1.2-neuronx-py310-sdk2.21.0-ubuntu20.04 + command: ["/bin/bash", "-c"] + args: + - | + set -e + + # Setup environment + source ~/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate + cd /shared + + # Install vLLM if not already installed + if [ ! -d "upstreaming-to-vllm" ]; then + git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git + cd upstreaming-to-vllm + pip install -r requirements-neuron.txt + VLLM_TARGET_DEVICE="neuron" pip install -e . + cd /shared + fi + + # Start vLLM server + exec /scripts/start_vllm.sh + + ports: + - containerPort: 8000 + name: http + resources: + limits: + aws.amazon.com/neuroncore: "128" + memory: "256Gi" + cpu: "128" + requests: + aws.amazon.com/neuroncore: "128" + memory: "128Gi" + cpu: "64" + volumeMounts: + - name: shared-storage + mountPath: /shared + - name: vllm-scripts + mountPath: /scripts + env: + - name: MAX_NUM_SEQS + value: "1" # Batch size (1-4 supported) + - name: ENABLE_SPECULATIVE + value: "false" # Set to "true" for speculative decoding + - name: NEURON_RT_NUM_CORES + value: "128" + + # Liveness and readiness probes + livenessProbe: + httpGet: + path: /health + port: 8000 + initialDelaySeconds: 300 + periodSeconds: 30 + timeoutSeconds: 10 + readinessProbe: + httpGet: + path: /health + port: 8000 + initialDelaySeconds: 240 + periodSeconds: 10 + timeoutSeconds: 5 + + volumes: + - name: shared-storage + persistentVolumeClaim: + claimName: efs-models-pvc + - name: vllm-scripts + configMap: + name: neuron-vllm-scripts + defaultMode: 0755 + +--- +# Service to expose the vLLM server +apiVersion: v1 +kind: Service +metadata: + name: neuron-llama-service + namespace: neuron-inference +spec: + selector: + app: neuron-llama-inference + ports: + - name: http + port: 8000 + targetPort: 8000 + type: LoadBalancer \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/neuron-monitor/neuron-container.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/neuron-monitor/neuron-container.yaml new file mode 100644 index 0000000..9e77bf0 --- /dev/null +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/neuron-monitor/neuron-container.yaml @@ -0,0 +1,62 @@ +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: neuron-monitor + namespace: neuron-monitor + labels: + app: neuron-monitor + version: v1 +spec: + selector: + matchLabels: + app: neuron-monitor + template: + metadata: + labels: + app: neuron-monitor + version: v1 + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/os + operator: In + values: + - linux + - key: node.kubernetes.io/instance-type + operator: In + values: + - trn1.2xlarge + - trn1.32xlarge + - trn1n.32xlarge + - inf1.xlarge + - inf1.2xlarge + - inf1.6xlarge + - inf2.xlarge + - inf2.8xlarge + - inf2.24xlarge + - inf2.48xlarge + containers: + - name: neuron-monitor + image: public.ecr.aws/neuron/neuron-monitor:1.0.1 + ports: + - containerPort: 8000 + command: + - "/opt/bin/entrypoint.sh" + args: + - "--port" + - "8000" + resources: + limits: + cpu: 500m + memory: 256Mi + requests: + cpu: 256m + memory: 128Mi + env: + - name: GOMEMLIMIT + value: 160MiB + securityContext: + privileged: true From 98857fb65450f08a7eca47051d67fc1c1dd1de7d Mon Sep 17 00:00:00 2001 From: nithiyn Date: Tue, 15 Jul 2025 16:58:41 +0000 Subject: [PATCH 08/28] commit updates --- .../Create_EKS_Cluster.md | 36 +- .../trn1-nxd-cluster-config.yaml | 4 +- 2.projects/NxD-inference/imgs/img-neff.png | Bin 422791 -> 0 bytes .../mistral-small-3-0-nxdi-guide.ipynb | 1173 ----------------- 2.projects/NxD-inference/nxdi.txt | 1 - .../nxd-inference-eks/.env | 23 +- .../fused-SD/manifests/compile.yaml | 73 +- .../fused-SD/manifests/fsd-deploy.yaml | 10 +- .../nxdi-disaggregated-inference-eks/.env | 0 .../1p1d/Cluster-setup.md | 1 - .../1p1d/manifests/1p1d-sts.yaml | 308 ----- .../1p1d/manifests/compile.yaml | 137 -- .../README.md | 47 - .../nxdi-ec2-vllm}/imgs/img.txt | 0 14 files changed, 79 insertions(+), 1734 deletions(-) rename 1.infrastructure/1_setup_cluster/{nxd-1p1d-inference => nxd-inference}/Create_EKS_Cluster.md (81%) rename 1.infrastructure/1_setup_cluster/{nxd-1p1d-inference => nxd-inference}/trn1-nxd-cluster-config.yaml (97%) delete mode 100644 2.projects/NxD-inference/imgs/img-neff.png delete mode 100644 2.projects/NxD-inference/mistral-small-3-0-nxdi-guide.ipynb delete mode 100644 2.projects/NxD-inference/nxdi.txt delete mode 100644 2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/.env delete mode 100644 2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/Cluster-setup.md delete mode 100644 2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/1p1d-sts.yaml delete mode 100644 2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml delete mode 100644 2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/README.md rename 2.projects/{NxD-inference => neuronx-distributed/nxdi-ec2-vllm}/imgs/img.txt (100%) diff --git a/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/Create_EKS_Cluster.md b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md similarity index 81% rename from 1.infrastructure/1_setup_cluster/nxd-1p1d-inference/Create_EKS_Cluster.md rename to 1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md index 1f4520e..80d7117 100644 --- a/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/Create_EKS_Cluster.md +++ b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md @@ -1,39 +1,5 @@ # Steps to create EKS cluster with EFS -## 1. Install CLIs - -### a. Install AWS CLI (steps [here](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)) - -``` -sudo apt install unzip -curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" -unzip awscliv2.zip -sudo ./aws/install -``` - -### b. Install Kubernetes CLI (steps [here](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)) - -``` -curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.30.0/2024-05-12/bin/linux/amd64/kubectl -chmod +x ./kubectl -mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH -echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc -``` - -### c. Install EKS CLI (steps [here](https://eksctl.io/installation/)) - -``` -ARCH=amd64 -PLATFORM=$(uname -s)_$ARCH -curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz" -curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check -tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz -sudo mv /tmp/eksctl /usr/local/bin -``` - - -## 2. Create an EKS cluster - In this example we create an EKS cluster consisting of two `trn1.32xlarge` compute nodes. We also setup EFA between the compute nodes. ### a. Configure AWS CLI @@ -44,7 +10,7 @@ aws configure ### b. Create a config file for EKS cluster creation -We have provided an example file here: [p5-trtllm-cluster-config.yaml](./trn1-nxd-cluster-config.yaml) +We have provided an example file here: [trn1-nxd-cluster-config..yaml](./trn1-nxd-cluster-config.yaml) ``` apiVersion: eksctl.io/v1alpha5 diff --git a/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/trn1-nxd-cluster-config.yaml b/1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml similarity index 97% rename from 1.infrastructure/1_setup_cluster/nxd-1p1d-inference/trn1-nxd-cluster-config.yaml rename to 1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml index ff1d3e9..8f8bad2 100644 --- a/1.infrastructure/1_setup_cluster/nxd-1p1d-inference/trn1-nxd-cluster-config.yaml +++ b/1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml @@ -64,8 +64,8 @@ managedNodeGroups: #capacityReservation: #capacityReservationTarget: #capacityReservationID: "$CR_ID" - ami: ami-07c8bc6b0bb890e9e - amiFamily: AmazonLinux2 + ami: ami-052f325f7962a1734 + amiFamily: AmazonLinux2023 ssh: publicKeyName: $PUBLIC_KEYPAIR_NAME sourceSecurityGroupIds: [$SECURITY_GROUP_IDS] diff --git a/2.projects/NxD-inference/imgs/img-neff.png b/2.projects/NxD-inference/imgs/img-neff.png deleted file mode 100644 index 7b5d5a4c1f644d7c0462a84b7073e4b0d5fd2eec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 422791 zcmb@u1z23ok}!;Gg1ZL^?g_5J-QC?GxDOKC-JRg>ZoxgcyL)hkL4NYyySsPy-@Etw zHs8!S&*`b|>Z-0TJKgI>{!D`|FtB%0 z7D7Vu5<)^G@(y;U7S<+UVB(>PYOv}`!&q5biXWihgasrIWl&<#1SH|;eQ!uZB*h^D z(2Tyw*W`yIRO$#<=arF!5u(%>sA2V=YhoeN(4H9fRJOx|J1wbovTv}vzJMlEeI__v z_t&|>ey#u&Es#p#1uDtqu+UE@@sbn9NSz_x;Xr)uhGFpX(;f*8Lx8P*SMS4kVGAL= zr0Xbe`CRwfg+-q$&Hx4$>dzrVg}wX53k9rQf+TSdTp;1gx|d~^a;Tb6IoUU)FWLot zxHPNZ`z&a@3MM}?1R-9cgAE;fb<#nCMcNM4T|wi@2P5S}%cA9~L(~xW@wK$X2ck>{ zF2XE#a~?^0yDTGf;rh%-`S}n7nTpET>t0(X6U(Oj<;|eT1k1b*P2O%oqL=$6c1LDmxnW z3i1aDTL6bn96IW{ol*(|lHzjrQ?AK2k1j!<2Z~zgu3ybF8>Ml)5zKx^D#MP$Bk;gW zBO6)r*)HtVElQGjW&-2#@s@eef2>(Jqyz69RJbq&dn&qW-((=L*ddS?^%v+VxJG}C6rK_w zAVyA%&4&^$kAYGgMo1Y>epy39v=F}!94sE#cA3s726(ROC7_q@j*~>i9}FTzj8A?G zS1O3cmblK_Rt9YEX*~U;O5}ggML}vN0ju_fnE%9tYYc90rRI&@u5=3p&KKkNjsybf zd8|96uagMAeZU{$7o{*M2{FOJ#sVz_Fy@sjK*eEOP}bQQ?C9BBGST`M#FMkJ6BsCSOW`!3*gO`K12@ngw4{-UBDY5-!359Xc-=&y%HaokX`1+fcpp4oo z@qN&-Jg(U`OgFfz-}Tq8dK`7M#x2hP+PWWjdCyI70JksCE*O*ulDMLm`HSxeOALy( zxQg?}Zli$;z%;fLyL0`?pTHJ=V?DT)>fEG7(o--OB<@h1?zC!;?jKP`@6{1qltW?F zR^vM{*_pJYv-y|g%?{ImFUE_ zV7h_55P@`h{aYi5;GLX@U+<3~jr5VM^?4?`-@AeHqriO;BoBd<&?mj&L$7qiO+hgA zch7-K@ZHmYPX(Lattt=g^6fc?=#yXkCS5aBr7!*_gElYWCiEf9MYkE0pg7!n1CqxO zc*D>|vI#i+OF@X(ujDWiUle2C3HwvUqz-v~htdd5Ak&JmG$wYy;SALlSdQTy68etr z9_jUkS($K7FjAh@iF`zq(;NpcSXO}bC$%|vE0|7LQf}fQLp>62sO}fLoU=p3dRWL5 zyn#MxX4r^G`x$ zG3D$&anSP33mHuRXS-ota7TmFbUwKeOIZZpilJ6>X5zi;ZFVC;# z6A0*d@rGROo*-G)FYOWi#tNg;>m20y9{U|5QK!#?T~Kjura{EkyWWZ*`XFA>0nr{& z#e8ScqKMXr)B(VN#z0wQG_GqJleCv~-^VhUsPw0vX%l;O&T^J{3)QBQT#JyBA5P&G zWk+VLR&{Q5U+Q>G@5f8_t*@P~=k~|<*RVcf8PS_+&Z<9|O4Jx@nQB%x@R$MDN0w=( zEOS*l<{Yhft+Jf`oFi{}@zWx!#xc?*(@z?OwHj?2&tO()U5YcybP9C>*GxQT*T;3O zyLvippbP>A;f6y-P@4#52|18}NS~3A2~(rCq5`9CqZq|BBczF140l^%H!`#{9Woj@ z*9Z%EX`Ga|iU$;`GS4!gCom@##AZZcBePgr4Q^<$J+Wg)MUz)5-!0TsBI=~;bhWm$ z4X;|Rajns>Dy=QFZ5W+}4o%dcz+%BEYoLe1_-dEgs@0y)c-mIM8M;MI`Z=Y_r-?&~S1BtJE zCU18qwzJ^6A^ai3AT=QyAa@`~A&H?Jgq!uD|0;D~ z%RSGn`yv-y65Jn@7|e^%gqR%29wjmu6s7a|PB*|LfIN>6P56pbO=LZ~HYyFxnLG`L z5K{;B`ID*g*jS2VO~j%^4Y$!oKX8yfyba$Dy(+{`Hiz;%xiV$D+&gjY)I~nq-DZs) z1`1sA(0IH!iDCHRm3Yqq*eE^LPO|>b1yp;X2c_#FtvlMjh&L&Opbw*{qudbuvQ#BC-0KmRsFDyqNhb{y?59_!e^yc z6NB0_2Vp+J^_U_^pBpU5E=V&!k?P@@4d=Hkh!naND?C6I^p5?mLaW&(iuF&Bf@sUKJ=CNQ<~JA(yey+-=^o z3LWi(@KRDJo-eNIWR<({Lni!}$hJsDxEP~u(}Pw`^@Cxkl7z)@GKD_{whz&*oBSleSdVvVu+>=r*^g;#{Ut7OvK%!)h@esF*x0V^v~>X|*!? zV-#;*qg<==T*}=P7>V#2#(VO9fl>Dr@a=2wTqFSBiXGR6X6eSF&h7e)zDMhrrh-PQ z39V`0&byV~V5LQGu}j&GeNnge`2=Y=>aH}UbY|{+ZjSrCD?^!}6~^bxHbobmCBo{q z-1%IWQKJ2b+T33&MNn= z8^5h@BO5k88#CwgfE$DE-XyV_=yN_S9>AsW%dXU*e^Gr=!K8GS3co90eHM4teJ}db z$EiK0^I=uxrf5F>oH-`*~gOw=Vz zWn{o;-pX)b(BNobkZ&dMw=Wnt9vJjrWiT*FaQuHSD}qz~y$u8ySg-{c)Zg1^zCC|` zV&3jI?7u%DdN5C%3$YU#>mXc$;rsX!pOox|JH)u(cRX` zz>VJ4k?e1s{98Z5CXPl97GIq#>}*MX_iJEi=j_BwO8T47zkmM5r-_@ze^9b@{QI!p z2FUokhLM?piSfTfbFwh~CuqNG{)YC~xc)|t=XYmZ@)m9;*6P9*HgBSSV~vlMiRBZ| zUv&O|RsX^1-%wQ?O&o;mY~C=P`2J(E{*L^QmH!p-FPa+vL6e!2?LX1{hpK--{XGaS zMH5FmYv=7=XU zD1K*04FFwF#9Eu$nw^ZTpRa+Am{YAk4)eqhfA<2$&9~a5I|+UOMzCaR_ z_Mk=a)9V-;d<@v1Ugi)M78azFcX+NA$Xw#SP=9)nsK5zOzdYd;^kouGVqi*QqPQzk z?2MVwpovTMOS4Xr3qbtSD+U5;T8SijjPzd&>Oqc#mse-(!Mkj+^P<|V(9!6<+$!DHyZ zg)Rp%W1{%yeUfid`=MX$qLK3Iyks+c5C8Jd1^l0x`5#DA%L-`56#09F@e7$||EW$m zaQW5OzngQT89KO$>jqK&u?z@^vfmSt+xh)J5S~-4EHp4f7tZbVf0(iVqpFxIsOj&|4^Emfa=?Qj{6FM(8aNj zj*i}@^=dMf{r}jI{@Ju}W(cI!lQ0V7VeUG*ac-W)|DhxQ&7T~<=^EthF7-d7`F{bA zS%#X1q8}={LpMH`_+yKpgE&%-F_ZXnH5r0|nx39E7v#g|5nG4&<4N_+@#jGV|Ko0c z%O3q`@FgD_nBWuD{)g`EH+pOmEj#9}2GXAfV_zu6bOFsbMau?6AY7F^i#$8i=T6$I*dyn>S8xV*?@rAw`n3D=4swfR9 zH9@45s7#3rfghSAN!TqRA!cTVA^+bA*l+g(*xo}r%y_P$*A)-iegKp>Nk6=P?$l|) zO1X%b-NsakAxV!R6SB5K2i1LO5W9 z(F_%BIvOSYFD*)cqP7eEZvmy75~AG58{)*Q-h$=IXt0>%g3@T$n~2I^8Bf90)tEfFKp`A*C& z2@Ra}{5r<`$L8xRK|)WT%u@jE9uL3v=j>5Skz``+D%~wH@BDdZSblHT_I~I9&3)+G zpJozo&O|XypjA00S@Nny@$qAd`ycy)w*CySLE{jl0FgM#acrb)6BOpI}>OwwZ&nh!Kd3{+v* zJW~jDj;~#c;D9dmW{=>MPUEu0YMZXJ<;3*65bmHc>}QV*GD|foQ&1!&`PZAS*S@R0 z(f**@lm0C-G2uiSl|Ecd+AuHRRbark6BMF2Zdcn_cDwbMEg%^@xj)#b2`Lq8q%v8x z%?ewM<(^~>uxfleVYCv|E2JbBsBL9AqB(+98f7Fq6!2Y$FcVb7jbM5MyPwk}Bu3L7f$;4}s z{{>#Bo#c;O3l$EcI(G27^MfXSPkyU)9S3x#4G{o(JV=Atm3$M{FJqBGv;%vzU5fmv zx52abnMeYUlULe>rtb9xRK;N`6NPB?4#mh1AelFFeXaWx!kxM?d8&N=?B)XKPaQM) zQROLn=l1**L<#B`Oyi#?u8G@mCXZ={vdmOfw%)j}TC6?ErW-b1=V=k{L_gz#^+Y0= zh-=@i7bY{&`|hhF_AA?`0BOrdeq>y8__#K`!8N;1F_;vTQq@&st4Y}AbVPs+#lIav zD^#PKkt8KRJf<5yfR{SB&@2-`{86NiMw1PuoC(ex4u ze!re?>nK(4aAK(Q**84On!7F_Q=g13n?Vz8eGm3K}2+ZmSDTRfmoz^jWp`;bW5rTS=xY4;SkV zQlE-l8z)9eovkXsNzP(_L}jc`h969s%r(9K+Uhkt&*0269*)Zs9Z$Plg{X>*1|A)p|d^at@WpjEEnpSw=lei9efP#N$yreLT#RW@yN zIwgNmZy4ET_PU|6zvDbuTy$GAMM%z~w;z;{JsdUN108i|9)03Y1WB_e_Yn_)NyPZSMpbjze6z8#eMIXclXGB9Fcv%8QgtDff&LnOHI{y#!1fhPa|NSm|APbn4k9<;Le==pS2~edR=} z(F6l0qus7?^K5R=P1aLsOx*_Gc}9>UxO?e=~Cu5rD;opw^$u=+$<16BP9oLIR)p-rMk zOk=`O0BHZpZ$7RaE#Htz;LsS;U}7x5Q1o9{XS;hk8YJ#dOulkA*%2GlBJ(STd;0Z! zFPON4I$V=4mLEo|yy^2YoR+wgd$oISR~_UBZCaS9nfS4sDUn)9G($JnpQCFDn5Vcm za$NMC6K1qYEj9eR_m+xgL@-nyMGX2$nK^Dh+DneIb`>M$PNH+Z} zUBD3qZR>5(`mRwpe38(k^>HKsSz`B>D8VwKKSYBsx3WGdH_=yR=OE z%k&B(gcl4THj;i_eZ|0Pz8sa2=e}LGe(*gnJsHt5Sw#Np^>g3xTv>(u-bf;PH2>}Q zv#EjBx>X#U3(B(9q^*Dq0_WSd%c?bKKdV<}Ya$H(V+ zBBM!V_jJ3nk=I>7m{lRoQeqWZ-BaNdmGjL1LpcDnERHz=Lg|Syo-`%IjXTaNFG(G{*6) zIxE2KbeK{Yc(vENK0Qyb)n^pVQ`*}Dr;*4yi7|XdIER~0W&*bxm)76p!l9(SbmLSK zk);uMnKHYu{BSSG>^zKhIp9jW7bS26-_itPtjtZ^i6u$6OP`~oFn#Kz|8R70BW#(# zND8yA&QJ5s&ZkQp;$WQ);XZ?)! zCKRKj?c=Or=v4FAiCUWP(&L!neWhYyrdu0~8mJ5%ki$ebl%n}_A?s~67vuae^K3LKn=1%TMAq8j> z>?YM>#N0I-&nVc*X0fPsnL*9)-IyeEE4{gm2LrhSrf(^2O?ajI`8?-OzstwS%{Mk| zV;o&xbiHEfMdH~&+ilbc{R}-d_J)aFC+mfVdulPrPhqi$yIZUVbl}`SL;2M-e61Cy z$?sxyDn?Rm@Nhm;jVe(p4B5b9R4qa!Mji>=Htp0mC(jW1LKP*O%{DGcMzrT9{Pk*> zQfsG)pI%+RAJ!zYs*CU>4Hl=u{blLkM*VBBY-TZmUF@jFtMGK8_+DrAhS5cAQqn04 z1KQDZ+7>Cbk*Qm2U6ue#Lu##%9-GE-ZaJgI3NOQOQaB+^(y1J==X)qHF>0D&u% z>+AYCR6^ZHx*A2UHjt!{oB}^fE>*_%+HV)}yQue&(YN(%7wTD}$tP_m?zuT*A8S8X zKCMONChU+!_R^o1U&+bwe~gz!PfgY{QHe5cEn~kx*Beu}8U?2tytl>IuDR{XKg!$d zMYrBEyRoz5R-+6ty7%j4le!WwJL5DFDVPpau1<+Q$a2jx2lPODd?i+OWiX#2J=Euc z+17IhnqmC@b2|K4oWks+_BsAenVb3)iursUmcJYELLl7*X~O`}@+-6x;S z148Me9G2ZX0&|_kRv9b%<)b1oVu=vij7eJD3asEEJ|9v)Ye6v8%ST>NxijP1E)s!8 z2}#%KeL>pMnd_Q~2I~S5_4b1R4e*r?+sObs-dHilb-QeXsT##_qtjdS2yBb*br&5R zQJk^suJpRr+MP%OM7m_hle)fRY}Wr23kEk^qBU4rRFi`>t$d!fRp8WGT$jRcSBbe- zkZg9Ev}^LTM9=W%*i#o2~GB%dT*Ire<9uuXV~6 zTES#B4*dw1hFt*F>NpB17?n2@F+(|DfADmJ@F~}%7>EYRb{b{&!T^o}v3rA+;qafbA`6Cyr zU+Qj`Kd9Oi7y=7aGN&Iosk@w4?!upgU+QGvwD(w(s16pqpt~|*drqgs@wV;Cm8dS? zp}kYA<%PTiV^?efiHe3Sz9^A~O89;T#R$xIf2uxBND*N*j7FaP?kauYv?Q zoSU_15@nphJd4`$K;TK|el?T&9WR>L=7r6Qlc72;zO?0R`CHHg%2+=-#@7q$itLUg z(yB8(iim@)FoLMPbOF;QtK=xSerMBZ1}t!m{>rMTG1<$`mXtz`c@w>@4JUb>A88pL z4Ew%n)mGzOp8ss>r-g)3e=+KOl+<>xV4wPKp`_J(>W21PrqC$xl!L^JCVIikfQ^mH{!}Q1jhi(dxbqX(a93k3d?Z5*L0>imu^l(-9=^ zCF7D{#g0?aUgoswl8HdzefIC%p>0a$_RgSZNAj|npDsjo`Zg}S!Jh{UtxBU#RJmMT z;W^{z;UL>5Oau`UtDp^sTbFXw^^;QJQEWYwM^g#i6?6?jm&Ji#jr##Vsoc4CUP?Ww zZtYMgX^Mz-m!0*?$XVXC<4j+oqJsNm57{=Wh41|@pK4+2i zFDh|ZUoHvbTjomDlmy))zID%6Xzes})k*=|Nq73>$v3h6y5fZe`Q&@eRxO$<)}Oag z<=Vxfi7-d-?0GJY`x~kW{4zE6C$kw%Co?Qe45oera()ryo4ylKrxMC1zDMnjn#W* z%$Sc?G_57AG5rGMk)V{y#2$NZ2}g8@`E&htRSwy<2451Ho2(AAZ=vD}#uJYJQk~jP z;r`@r<{YBvY@OPd#~A`7MLxaXcz2ZTh_UE!7C)5h=lc44DOrpmAY709T)f|*4AHV} z`-}rIdJzo2ak4>^p}-ukP-_f~I+mV}orThz8|GQCzup9H5AwShkGP_iQ27{~O>b{@ z;bPUYLjM{znu+?hy~jMNZ8Vvfgrz*ZaSM?R;E-VWVfS{n*s?OKKMBYSqEtZ(f zH_zGoQXVyY*@fzO3RBXXs6&|As~~VZLBwGjx_*f+rxYNN%z)b#NmJmKXyaT7Sa>lS zK)6l6>aCGl2oGQ_2YS-9{RyAtGiY?n5 zyT{M#+^^?j?$&sqsd`A$mc&!aPOmiQ)hwM9uKSGg(2rE`7D>PsIUekRS(PRA7Y(HNr`!ug%YvBDBgUt|v9tves4S@@lN(*cX)gHH& z%v)_2kX^laHyWovxEpC{YERxT1dFB1Dj6S*3>9Iek1}zYzCV+Q!ZE06DqGGqoh6h9^{`)Q zK8jn3s{6I=Hc>dVZU0d8D-1H9Z*MVCU{@Wz2}UAB+mK5ksZgn`$2nW-(3&k#Q=5&) zN|-2B5=)>>c8A6t={eP?>#yBNMz9|BvTUi%(`>N3TAGb_Z&B6!Dcq?~Xpo`VjK<+x4Xd+Ws-6FV znJB<>pR?VKdjB{DOB|M1D_seEd;g%O-%3n;XYd~OUT1HNb$s)~8vcA$Q=^aW!|0b9 zi5PRk=^vBmb!g;Y!Z8_5=f1hFdp9v$Oz>=b0c-aRSDTC~K%!5SnF(^U zTxChl7i!w>fl(XnSl>SNc0K&KqS0xMICNPm*q>Z}-U1P;LlU*TZStLX-c`??71z0* zuYL%_qW@Ugd53q>LB#G-E`ZzL7Ui|YH(8>$p$Omu?#4T}SEq$L@E9#Sodugc?dJ$S zwwIU3x8kWn-ynY=n5td;coODpHILv(D=y5xJKmEg(9`YuZevy)6E|0yRRcgNibQNM z*8q!5P=8E1o4%m!suQw`c%sE&H=)gJH7|XVjv%_y^lYQ!C|VGTDSK#7FCw*FJm|fPNK*Z>*u@>{5Qw5Vlc8HWH>7qeq*KXbieL+a8_dUy#uC z9{-$YUSs&U>g3zoRQv8r7$z-4tDa*6&{3Sd{2-?@i`_0uMKAw!JJt0qX|;}rf`Jwi zK|8wVe)Ih=Pte9|&fgM^%WtQ)MZ!%wxO>AOy%d5nYRx8zE{6w+wbm&lGfqo6cG@SZ z?$ry7_7MSYKGm5;)Ue1z7{u-OS$D0KV#uRc<##bizla{^QCbe!bO(Rj&~yy6qw zp3mf+jV`w-py=FpKx{hmXH>-8uBRw6ll*%1wkx6(c7#)Wy=~E41ZNiYO%n+=0k*Xj zbH7$a-{Px+MW5npT5P|PUWwbw^SvJP7l5Y^=$5@k7;vCqmMiBEov*Lc>E(_&%QY|^ z)Fh&x@t}~L3M_M;*GN)PsAudVdQO~+64ZivPPoQn$4b_*Z+T(MdBFvZvtQv8nV)Pw zra!LIP4FEMkS*X&H0`?XFV^JOdZ#UTOsa5yR)1`BJwwYEi)`$y=o)2#76nFxo4vz3lu@v}PCe37cU!z^!^3c!Q!>@%@bnaSO6mJKNFn1ZEK$P3_OC$!yw zZ#pp0#h1}|edtB*@AL+hk7_kqQdEntQ)hc$l`J+`743N&l+6obYY3&_qnZ%xOYf{ULUD;mZlz(Pr zG-d?6ijesB=5oRjwVD(aj>wK>=U%FG^F@DlPIv*=Ufx#1Dy(J~MT!Ag*cT}yBw3e~ z#NKpRBd)eJ1j(E&$`T4%cY5-JJI_zMI|hc6S!)nBo3xd!k~&zIsNNlnCZ68?S9@{2 zX!eIc`BgK&UCrhyQLd;58Rl6dW!dyeCC zveM~6NmNCL+$Hw$TDD#Ehup!To(XMJWMY~|hUu@%bR(In>yNUZyEY-p-u-a!uD7wO z(|yk_dUqF-`?eylzB`dQSPC+@ouQ5gq)-j!CTXpoaXD45>zLtWS%)+` zSCVxWbr0O8E|s-VYva5^s}X@J)@b$JUS6m1w9Xy(7_$gww%SDs_8C(mWfR%*oh9mR z8Kf?j4#T;n6>Qmw{5ca5B6F2Omst^6XRz9^83;(3t=@Dy(Cyb~Z&x&x270_}xb4CW zS3fpq957IR+=?p3KNw51nS(4-t*jkLV48@!WcE^0@u9+9hi>u=tzW;ZTics23@KtH zII4pmfZhqhDbr(Efr<43`S+uaF1CeHCOK49Iuqp+VoU6TcE+rV9mhfq7!VW{<{8iS znpR{)y*Rb4SCR}+#K%*c6Pe8jVx!n|y$sF~Ao@KcVmYACAR`0?m;@ug ze)KITt#$cy31pj1F?KEPgY@afc6VLzXIevdUIVQ7_mUjbW5vmBKKAXXc$o5IU9y?~ zl#j*?JRbF!GrerxK$qhU00s9g+x0h0MfGf@iBn8FRBeYB*@g!hbv^;}vRqZ%BO1={ zOP@--0=PfcN*8-xJD#$yK9_FnWcDI21gjjS44QXs?Q=xvJrdCPOaLe!SJA(dvhRB_ zb>1vwrJF%>^%i> zGFocJPtxBCG9f?R#e7h8sX=t2f_9IHr)|-mP)bKTa{V;@xID=$%DUlXM(FngC|6B^ zG`iW7u!Cwo>DOy`v--aA7xB7#7SoRU?E>G_{Z3#blim8Nd;+yg+?^*Vn7=PT?`8Vn zeQ5#;vU6F<LYL^NAN!#s5El#~emm5>v+adBM z3++g@tFQ5D^H^@!VVE3KT*{fL?*1)QCOm{qO~hcXPM)( zCz5>Bq<+fB={v$GBY1^!Inp8LXEA!z9W3kFF71`txWlzOY47uWCOwA$W?IH3t92lt z0Edkt$9lfTzs)HDV{g8|3Qau|mYeT>tZw_;4#N3jsY@TW-myy2 z#IKZQx6{x;n-OC90CV{ZYg+U4Mw|XQMcn84^vA_*H^)Pi3NJ!L)^|KQi%$?{E~H$8 zmWvWIELgak5b;{*B{;WJl)Wtd-((l{OXygCE)Fc<76W>N3=i8bj1^HFgB-Jj1d&Wk z*Oos|WS2YA^{KZzg}&Hataof5QD)5|a^4^ZK}y~-j2H9{Fzf^FX%V`n?kcc?+Wz>5w4)n0i zJYat+05;b_*3Q1IL}I5uF7G@qEJfI^oAl4!Mv{gxoe#k|KY&4J>-*my#tsr;+I3tO zTHz!lhSu`={RpB?ksth$`!adY+F@fWZQJ!Q;w!xpBox~|bJj{LPpE?94Zyc8qd2PpGHHh za(4LpM)EGa@3q3mfAnwobb~F3KuuT?yZ`!-{-p`X%|V5T_>1^vUVr7g{Nza`Hfxa_ zJLB-KD8UZpGl?wkt@24zSyi*-n5#QrzyElJVA9iO06P-o>*aGY3-^xTsRp3)b2Qui zin`?ci{I^vP&AJrJxTzYY<$qcvBQIP7oZYhwc3MYcbvWABv+in{A&=mxnU3`M*4DN z`_ErB+%gogZ{l9QaQ%LU_?`PTIlH`{vIcOHlX1Um6s^JTw1lY^0${vr+Q{Hxz5aG( z(g-{DIQAsFnbiS^&cyBYTx%92dp^y)K>T6!v+bZ^;aDnI(gcX8wUk|;v2X9g|Jo|v z1l#`NLPBP`#$j_uXTLJ;P1kRkIQ*7;*DoJ(haYd593mF%c(wT6eTzP`=z2Z({JmdQzwg?5>@I&vtlD;9 zk9bxrGV%iIvA8FJ=POX^Sr0=97P--or3>A5QiuZAMx*OsqV1-!_i!{{&JF?N-SHfk zl&8VvflxGG-sG0=7r;1cnPpcE`T(rT;~e;R$Q5io_ahUB%O}&Bm3_cI@Svif``4#Y z{0U;W!w;AHC*SgD?3x*pI@z$ga*_O@K#f0Mx5HZxnUUM0cgP`&Qfw%1Plax;$2_BM z35AH{FK&;#>#Sb!j4^oozQLAaKy}U`&DEj0?c*5Kz34<99a*nk~AQ`LMENc}lz7*f31H zildQ<*Kh+0Wc$KI25tJ<=cP9{uD=bM3MQT^Pv~-gQoW0u8axL8_X=I*o0cZvZr^>i zr@LsC{1iJWUx0fY(vQG60ubSVpKpw~CseW+SV2;{Vj$}=k8A%V`U-n+6L}Jx zy2*kmR2*Y?%BiT1vIj%@`(uxTDT3gyFQ!>#_OWgo#C7jO9@HwdX!UWWC7L%>I1W$; zn2Fk70i*cOy?VQDkQhT55dGthyQFLsJI36o;nn_$%$P7@2~Fnv;redHXMq(?7^Zqk z?wwE5Qu7@3T(1^WKcs`G^o=(Quyw2bb9A^L&T?s*Pp0VV9sv5e6b*6{Jlf`2wrd8qKTRLV13zsHr`xvl<8gnT3Ga3zj8N+&IZ#{sA<(4% za2RUWlIr;Jyuo~ zjCuC>in!_{XaVmzaBXvQ@s&=uN$SSSyYkMn@a zJUP}Fc{D{)pPuwF+bNs+cRDFiMx1cIb zq$jwV9*CxPDir<`d)zoC?SkgLUtf6#Bsxk69hhZ9n$+T zlRxltKe01=tczj_LmBzpb!;4MB<>s}a}NQEx#ErF!`Z_-6>E6#O4Mqa-7fANZIbDh zsBzx$4 zmmr4Gsru4=CN{oha__hl5}u}+KRvEGlp#f_lvD%W_t1!`BLxdsOj%gG!-8TwcZ$uT z5^YXvu!MJ_$=NM~Qq6r_b&Kb^-FtY8Rft6nUUcx@REeoMOd*28RPNoRWUG=n+Ru+x zkaHG=WFNDtx*qX(rw-r6NRMT>vrfM4Ibx(7VIY(Ul)dsnLl66bnq7i>XXZCZ7| z-R7L?IYBPnQm$;k9v*v-03ilS;x;o3eKiN9Pl~vofWl!e?4u?+qU~kMi*91YMd!1s z+~M|fPaP}t1u91BS7a0(y>`&PW50I?>y6Ec>veXIV#&I4)L_Rpp_S9QI~UGJQl^r2 z{TGO{gW#RY6}yE=xTi~oG=I;x{nAqrvbVztQ5`_=NQ@d!uZNj!yzaH$% zi*v*`OE6OJxL}}Hq5@jZQtj0fUQVQKRE(0!!+n7Q-Ctm{-;bz26p;$!iV_Cgqi(b1 z7X1L-J`XUUp;R4{C2j~4<-12`0{wpw(>>7o)kZ62jM$g*+647ZP)N3FJJhH~-S4dA zPAd!|rhRgLW-wAXeb4J*x#!k?Z{91QF#n{gKLv;3yh=X*$iDuFpjuh|Q<8cx-y71z zn$GLwx*MZ_2?iN%fl z1A60ZIDjrS1~*0TPnhdG1CLStD@d%@C==cn_K;L?!6L5mh0G@9tA0{*X2oU`iER%i zu022cR(46{D44#23u(T;ZDVcV~Z z)n+tZ;8f#8yL_UXg^8z*|7d0Bf*y;2A4oP@8<`N`RMwc}45iNTt& z&*42d;b)&J4X(q(vV6W$(P&i->}2Evjj=EUj6T~MiOv8VS~82kvI`F=+UT-;xDV=973^)+IA2k0_+U}-tKdAVk%ty*; zYLY76w^$VqzK_tJ)_Y%vjDLzxWJ|X=3OHD?>oB=>WYYDuXT||zf*z37M^U^D{N+7> z<466I-giApZQGi-)Xm7|1jyX=`v^t&0jNv=8I!*g)G|Uj@Nq5!_vvE|-1$@62~b5xM7~UHx)kSi_mq`6d+1x2dX04jxnmI@;_?ni*^q$+Pm6 z&K?S9bLXc@4O*NNJad&}HbG)3ys**26+;!faR=rSeluZ@I`*18Qf7k-05`l4)Qa~@ZobLL}Ig0q0FHS38XG`;DInS^HU0gad9wLy~bF% zr| zs&aYlU>t{%M z(Gksu(lEg#72M-;c)#IU<%|?wYu>DfW8CK8?FWmbZpu?8YtsVl!pWKX^;7w+n^_!A z@da(gob%zVf);;o<3KduO|_~^?Rtp@p4^(D$y|7cQ1R?x*QtC=wn|=* zinhtF{iW4ShNfDm`uG8yQ(_y#+Sz?rB$f8PS+o8D{$A4JNZJR0t7hS$_q9xth~g8> zD2V;GMI(Vu1Fh%-G$FkDu8O~4J+|(#U0q=i(t#|n2uhMb9!q|E)dH+6*zVN++h?X= zzm1-0hnwDLzEXcPuI-jpm%+2vnE;;Lj8YwhuRWR;5~a2s9uO1mAS{txH^?bS8O5SDv2+pY> z*bLAIze9bRuH3zL+hJ_sdr6b2M^3MmBd7Y$c8Kx!2{3FHzKCFcT+`m(5$dPA9p3bY zKS|FUUELD5Ujxz3(`#?sirNWUIQ0Lp6=O{&pr=&LPBb*W#`)vh#h*S(XXxbNN=y98 zmNNgDpd#jU#_m+o{u8rH{8%K_EW&@)_g8DHx#aa)?|H6#ZHIQ&xb;>;^ve{jx$4D_ z7_ZCfNE;E|+dB-fSEKB`VQ^bi?;D{J8IQ?Fm@dP{8VL>mTwhPKhjzU8xi&Dpb6N?sr>&~ z0H0EUzeFC!dDr+o@1ad%UT$m(9mEoiB6|8qF)}8&l#85^yo)3t-aY*6%iH?Q1Xt3v zAqCl-b`P3*w9d#qB`x4?Cz7p4+J7zS{KS;&ip06ooIFDL4k{l5n}PBDB;T?&dDQdN zK{$2`%j|~jt-9jI$6LbZVyXEg-bx<*@8QU1Ic+8Mrbep|v0C;hQkjn`hK zhLA31nP+`>N;UWw%S|eZapzl94kPbp(TKs2Um1!;x|i$3$d&Y!F$wuAGIv@B%!l&vo%tRweVl}>*y}#9(vIBo(gD)~#z`Q1Js8BKNH!QV>ibz8t z`1Wo*NtY_w_BdS!=3rjUML0ALGfG{%|3S=MXjL~zJi`nC3vOt&Oq!wQ*6ogCfqhey zyy4NzW1=^o9PxiPE3dBa!PUM-^Tt{#(+ROj<<_|iw#sK`!6~sZ05Dan>av2xCxx!+ zVC%nPl@dcOu!JVylnnZEJX>UWf8@y6*`HgTAEEVE=Tlp26^mGbbV#%tv2$bKEK`Ig zV+fTG_zs!jxXAvtfS|4ty8;|b@7_fj7ys9VeKNFJq{LZKH8}DaK~M$@@V9@~HTzsl zQ#t~IvoKGhOo{rT2%UCBRl%s-`soNXO$BZ$JGCmL2Sh|#b8 zS3|PSnDs*F#;W~XXS6Y$StDM?XxR!O2`2ooo;WJNwLbM>KpH6Voze%P8b|%8C?U?q zR(d=4nXsNWHs9aO9bH(PD3a}-MV#>RyY1>~-R#1!=)hk;ozvvP|A2v%olWn`zQ(;C z-2|ke_IJEc$(#B%}^82;)@IZZ)YoX$3`OK9+1xXzplD0BlJHr ze=!)(m_esixkS_Nb^W~>+pp4hAR{@|pUZFiOK6F6xsb|aF?=V$YAy}BO0!bUzpeNv zZu?xcioZi0Ksjlxzi^%ay4&|_W+8U2UhXL+c~u^;8jiTMoWFP>VmCn~61L^H&yedt znE5y3o_TfzOlD4qYd!Zgh6Z@Vzz}_JPCS4WL*K#A9mdl6>_3jc*TPW&Vo?W<(pGDX zr!~_vX+sgXt}p`D`|s-mdZ-MoEOk!Z2onLJ@eBbWPI#Bx zWna@O*x|F5G|Nr)-`@XPQ;n@cO{L`(i+x0Vjx5?}u#v?fF%;f*70soaOm4~xuL(!+ zxsiIFyUKyhu=s1Yd9Yd{{qB>qp<2k}+Af9P-%oooV=h#jIG3{9);>F%UfvM1jy1Zm z8*SQk2ywU=*S?$hrp}#Y>uoX&VD0kA1;>O<*+E@N8Ee5WUJ|y@-u=|MsPOEQ(cyA& zp+UXz$&D;>BneL8`%%_TRiYrit(cywiCNaaK5C`jA^uQqn#w>=H}$3IC(`L2zkE%j z8jI4rcg*%}#53NG`R%@9r7`t^j&qecxHY-o&)nw9nv6gaeYTy~|vCMJ5M<Lbb8+ z!dYz>E{>G5An?dE*IO?1FE5R^@Ey|d6W~%aNG|!7>diHyM@Urc@?svNap?1%Sn8ES$3ytB{Yi*5(5iCukKZ~XpTWEM?6+r5b63BD+rkt zf3@2`p8aO?Q}ZfVZrwVq5=mg!+vseI&GSo*n=R^p*axz#Xo} zM{CcQPiQ@?JJM_uz1vIjNuvUPjpfJ>ZWBhaa%5X1sup)T{R}4*);!t=gq7Wh)2iId zeQL1qMaE8~_R@{<#f29BRoKTL-M%%ZJ1>{!wCpa`TA_qtkmdJ9)1Pk6A;c`8?S!!82#>f#=1d_(tRHhp{o~!WJCjObK)CGDHE7P7U_|=ky;7I;uRgM z(iqVh%OjIgzuCDFls9p@2}h9bO<|oG|rmCEqEkpX(4Ts`2n@~{M~IBqKU08ZYB_Xm9bQe5YvacdE9a@E6S?^ zaW1uDU%A7)-w%)*ggOafS7?c;*XQK_1gv#;)8EL`8MZ`0HSnwL_AHa8k%}nMYw>R*t4m7h1Z{yrS$TB7v-YP!U?VeQ+x6T=Gii1O z<+khK7>+B9gIsNB!`omqq7a_>jI94e3*d^H6G>kVvuqhXUvcIj`-`S+iom#iUwFXp zD%^+Yjg7aT;hBw{ew6t+mm|>E*3U3$@Va#L7SHw|0l3v3OZeokqvKmX>JMLfl@nMaNM3#7#6A9GR+CDqsyPqzt8I+rd4_0z zZ(nu<4eTd<&*8Sxq_4g5j)%I>r!Shk8MdmODP&m|*87>0^Gcb7$g}86=_W5-Jm;e0 z0|#9a{%&>l?CxlBIS$Z=zcJ~&hI;CN)AAOiQaRxBg>2rnqO=O#k6#K`@V8_c*1I3dY$fc|dn}1&n5~NH zH5h4K&!pfdD6W9-BhjE{s<*=5?p7UW8VR;g8gPdRCF!=4a_+qN@NjHJAM)PTmg1go zR@`yu*URxJ?-tg_yMROW<*!upSi!wT4cys+b@THvLLJ>rVZ!;!xt~vP`I$FkpfW%w zN&sr(iQv>4D`fY^uVa(AQHXGOb#k!=-;`}p!YUNBTHc(Yt`PcypIGtiph3okY+LBJ zyME7O(w(oAspTHTw5~EM=-0Qfu-m!#4x0+1jl77UCbjV=%h+12bARRQhyPRkCOnR$YnWy=o09r4n9 zX5a4<*o~TtY^Tk7ayyQ%c2*+GPB_qhH9L;{*We(X5L#pEXadVHMqZMSqa5$s1y2Gov7fL*v%U_ zg;}DJE<5!8LJ3=4h>(SRXHK-3L7=$5!v*py05W=LrQB(cYVI>&DUpU_Jwql7t{xw( zN9E(6_oVV%-)O5zJ&!_hup2)1y^Bfqx}r|&R3(FrnAWYYHBuj3Q<9Gw^hv4ACPkbH?PuTUnN|Bmjf64TZp=BuY8hS z5!#ci#pd%`?bK;^25Hy6-MMJy6B(pUFI-S>5j}YCu+8xf%{T#oV(!bZX?7I~D@j+E zI5*xy&!jX1JiX-3d_@yPmR}zC`w%3DwwpX)>aggJ3*rtJ#eOB8pld31@Ydf3g7|!m zrE1E_Tn<4&%x}Ll8$aj*`8lslg08xP^&M4x%zsE}e@t)SJLt2+j7RRot4za#8wsF6 z`eirGb8=^EmiU^U`4g8dJ3{^d-Fo+x(9!8unZZYzOI#XcH`M+FCa1P$hw86=@KI7s zZiHxu=eYI^ADh3px@rH59d-SMuNK}nX4lss&jtZOpTWc25x9_Zay#bJu64OmXe`ACfz!T~qTTzn`O?4_vVEqzff4Vsu_=c<$VU zg*31ww`wUZhu-H`AkSDK;dS}%_1$@-&F~OUncgRHXD_MjUh z`}=Y0^vZW%%yfdxFMl^nC`#RXO`>`4^EP0UmUum7m`;}%lf)TNDq4R?!7t?S#Es9h@YZjCH zkKTYcYEWX94Hj7f=7JVRqSr}>lNrI{9~-l|{F^*SZmzLSbkxozk02vP1#&&I=8o&$ zJASuE*(1?3e1;N24Q+hJBsj-;;^vnM1^=qI3Ihd?eCt6b;16|O3vc66uCk6PUVyhJ zbDen7d-oJ*XEx+xI2J8s5Bc2s2De#yCo#+Na|zaE6M42|5r?@bCfhp7Ge&AELCDYC zY$@Nk=DkIDZ)UrdstLD51#-DKima*riQlznbEIo516P?hHEmHF`Ku>c@4c_it|!vJ zogP;ykY*Z*UN*Tc7@6}GO88d(_0{*_12iPYuDNGf@)iV~z8huLL|x1)gEBfF&uHet zU=$f;D^sg9_a@J}00i@V<1V3>mrfx;FM68`+n*ZzyJ%FRFrh0QE`y*~)UZRvQ$(&;vTm{rx$K|~PD{AjzIj)v0e%D7eao-&)dP)?px(C3a zbrkoJ_c*;qG6kyY8BXYROg;RRe3&sWoHI~`VK;SM&S>&CD1ogOa$3f^3*xif$39*< zS@G<~-2*jxLXeAM8gg0~f|7K*oL!{L=4hgLI&Sl?(K`IlMTO^4#}N)UqhlnYTlnI` zVz=J!cL;W^E&q@z3xm(hnBTR_tzIP#P^L-aGu5J@54^{!-Z~q-t!oWS)&sH>Wc^lg zOOm2=L$WjF25qV5W^Hz*e(HPo&l2y`#jv{7dpfI~bU4#YFmyGnR{ufkDAa-9Wy&-< zy9j_kdyyQ>(vHQoiX{OR2D9T+_q^}qo1Ol`;p7IeHR|76fC15q`F|In@uiRA&fw*F z@1atU2YMui+c{ZC&i?sX@#5AY?j44~r#-~;TdZJg&4oJeko_2G1T&vKgJjo193PN5 z75JLzc2;JeKSt*yzxNm#;w=fm9(4_7w#Bdn_WRXnKQ>gaIxUvAJAhI9$gQ3F`#3>6 z{$$c!sGEB@sdn%g+>FEEArg)j+WzH1GYk^*==Xw{y7e^Hg&yzIv}AclReAS=mS$B6 z`@!Inw0;YlpN}W;V*THu$i0ZJXuZ>1Ip@@^m@fUaGObPJiiG?_+ShmQf$HO-T4l;% zVoUxfW@A^wOjYM4i8+7I)97~Byl1qYNDoLtn55aCO-pDIq`Pt%Kfvs!_;Lw`D{Ai@fHatJd$G+r+Ea>Q3Myvawfbs>Dt9^zQqo@O_sK}4hZ%b;aivGp z$P}2*x%&p+jC_u0N&2m#UQvABR#@FZ>AZh};%wOO-Uul9dT|xujk;41#RI8XaVs!8 zk{-RKO{~gjyez~!Tqp!DQd-vkF^J>49T)5k^z>+)_pimjEG@Sse<2>!!uqbs!uF7I z@RVc4btk1@R%ToQa|e(kR_H->;_cHCH4JgD^SduRs+1e#(0{zN??$F?<7_4Hv8RKC z<7!~;0Le^y&vgX>v+x1ePKUW%TmE;_kRfgDFe z-+}8pPSz4`4y&D}fyj&ULUOnSp)>Z`;`(VgF*Z)ty;Dm)EDYAQ>?UKQp&jcSsB>At zPQ5er(12;d|)!Yhq60_Ak$P&~)@VmB=EwKe(N3k1gt%Gkf z0$j+nK?F-WX01@z+=3O~QHr@VyTx;Ys3l1&)}O@H>}><_!lA$7>pggrXm~BS_gwk5 z7%c8P#CSd)hktp`Z{Ditl>ZLC*)3r+ffaJ*9}wQZ>(pu>uR}{)=5QCp|EwA_$d;WR zdK^yN@1dvBCxpUwCOwB~6Z-K(BM1nA{Y}nZMTUhXe2vmS2-&7Q^4t0x zEO{hb{Z#R$}51xs* z?8Hf|dIQv00jn*rkKI|;zNLOKKK=UhWHh|bX*^bjg8mZoG4KaCPd8RHbH{o-+z>dGymJ7lgmU8_LymQYjxd&d8CXaM{N>paIpd`u(o!jVJ1NA?~>%NWagIT zVetzas@5I$JKAPSEF-eI->jd~k@7l!T5q$%!Wc;Nj?JIa(Z3A$O|s1qOUY~;4+Zdt z(D_=stD~`>yfrZAKbPiT73j8Lt1W(<9H{5Mg&r={ZL}r!@6=lc+9wyZ-^O;a-~3i< zMIUv%N@fh=G}x6}28hF2M7@EWDRyP~hW05|iYolSRV^7buxoGTts496#&w2MIiSq` zFae^@^Y1iJy26mMl3olut@AuMr`tWFg8w4=L7)$49aSE=nxo5;Dud+9+5gZm9uXuk z?V)VcNv7RAf&Kuy1b*^FGD3r*b&TO3i1vl#^C3+@4FHm4wA_~<2&Fd%zU z4>6ZfWsnjdw-*(sc1w#4&}Wp^E~ei6HPi*I_Fr{p_^FGIGWlZGq0OAXzPjYYPk2c) zO&|3USsa=?uveADpU~&lHJL0?wiK=L3Ol@iD(vAp(G#V#zdKpU^i)srO1{8R;_Z7= zX`)~C+eSxo$YH;+Bi}H#kuTQHKjBQFKetwZDh-t|24}0ZXL*+emCb79!BElLEn3!X z+w`Zbi%TFpTF9tSli`I*C*2r*dAs1E$U25|Zh$^gfk3kD04WO_Z|H@5PgD$0VreJ_?le^1K+$e zHv3uYy;|I)xgl2Z6Zz|9-D)~B;4nI59G1Fdxn>)}6i8n72dpaipQmP1eH23P+pXuw zN7PjdU*42s6`GQ>wwY%Lv0d{as6D&kz{8feqVG08Htf&CCIepP&ZA7{<0l=g{41^M zv#De(>3LkRHhJQ^YISwOThQ9fIGrQs;)t)>Q~+||kqlXq;pQ9AH2y8c!^O&l6azx<|4-^TKD_v@*JNghHs}yptlI1jzdOQk z+UkK+IJ9mBg#|9eUTiKx6g^q%Uaaef=lD#+3$Qm_)!3-e!^(wnmPcOP-*}`w|NQW7 zXCb2@O{ZyiK-kgEAIZ66V|#sKE*uu#dRCU}HdV+$>|gZa&VGc;jY&0Ew_EsQ&j>=I zKK10sR0GL$><}h*(@^8#P#M?kY>|+5dPNlRn+l!F4(6B#p?qoHa=_yEXVe90&+kPuo#eyPj`*L-(%9tm#{p$}Z<)jqUm^pqS0&xE93| zWJnzxx)xCi466runt4mnZ!}QDT8no6xTF(G_|QB4@29SV93alVM2(tC)@VT|n4KUQi|8mb{<7 zyf#1t{7>no#~%$INQ4e;u=hI^23PJY@xO0tGZvb{=k)i@88@fPJI54$EJ;3~O<8Jr zG00_xZ|N0;!Zr3&W2v~}I=0y0reaQ}JFU0+9Lf5d5jt|Rv%8?0jE@qJNxe$hoO=5EwOrVh4+yh%dFMNB)`Sb7eug;hfKiEhC5MfTh)DVJ6^(R~roA0Ju)=T^zrDy% zs~q1@*RM${g)wLqG>8H(3xcF2S%&3p-ET*Z)}qWl$>Rw~c&SEmz5ShKKiKubzdixe zsnH~&MjoG(O~RiM*AlY+-NSVJUvPJbOF$=AZzrJ`e+=G`EgVqqFl3J88VK>c!YGLN6fp@SQo?vo=-=euAM~t{*6CVe1c_B8n$}RP(|# z-fV00P;XkrZ7cRLyzTy|!13aai2uq0>*mJk~-NGi6W1%4R#{?fUCNV9&z+8MYL3juO0KKu4YxK+Hw77TVu7E@vn2 zub+Mra{7#oECx@XaGedzI(ViY>ley0yJsRY zAoapXFvZRU4fku=s;y7Xw%W06ae9{(2&D@C3hIbIJI&Bc(!#Mpf!w=B2)?{W9}-@D z-!ZTuioXRtE#|ZrOx5ht-fvG?uN7m;u5hbit2?pk3byHGb+|vTx!TMq+2SpGcsi4( z!L^ACX%lEn{YRnlfZP^ng+GXdobAsVDm@PExADuWv8+~n3+j?Tb?a=Bovp2z42M8<)0=i!jcO3Ka1~tXxWh1kJ_et(Zb0N{_}0j zVbs*gH6v}HTqPp54L!ghGF#LGf6Iwqc7_MPkip2g(R^&c`L)SYNroWe?B% za#+4DweL8$gVsB^zx#5gGYeprV1GuC9Y>j43eVvIH3GUC8_67Kxl0AC8ecQrU_je` zOBu$m8vnkAnpT_nZc&H1z&f}HVswtf7m?-lze%E> z>|flY76NrMbnN^{Y|v_U;R-FZ^@TvA7-%a%-4$&X_s;THN&b_Kd?{^m<~4Pr`Ni&6 z(8IsK_#8qmigaSmV~xF|`TG{h3F|rfDT2&fh`J&TtBf%Q8j7g^RJ#_f#&@ePJb2Q; zza_;!Wrxgz;4^U-V&Z=Jpv~8)WBX)M?p6-vAK6b5v+ZBuDFw;f)2;a6Ld{@)EaFiB z>VfUrghA53y40K4M{dtKt_wo6!I%lzz1fBmxpYyaS2nc`|L_&o zRvfs~P`T!?EtxHw=|sg}06clK?Oka2c6Az>6#db^)dRxd5@N2F{G>Y4e{a>aqfZ*n z?9odwAxLMJ`BCgu@>R~4d+u4)KCb_}A(q(ofr?06Q{ooW zXgz528SkCud8%#%`$6}G9IIP+h6;VZGyM_-rj?eY=j3}H`pjYOEP9Dg28%4%%ZYV?DZ-!L41*`VtZaN`x)N;Z!8<)z?MG* zXEpKNOR(WLODoca{6m#F% zSK*h6ix1njSF;sY)M=FNv|J0-rd53$Rft>>1|!=P#Rea0=g>|^TIcquXfat)^!7yj zx%a~HFJmdoTZzzBDX-0;M+fd}%oOlDXq2KKs4FgBOZ{gz zmeO}Z-qwtGYYHpUY&XsjIOv$>8bF{vZ_n!ux5m2R!Y$tS+!0;OzeHMjkT0jCri||U zmOY4B0l42I**i^D{e6$^6zFTz{hgA!wK#(iP2hXmv|wGRA+4}{5fSxI;rI_pSE%p!^kap2MT8EMpu|#ITu~s}(@254)1FZnAOn%$!h_h<94@vIZx-IGbz zgU>RYHC*S%a^QGSs+E(-```-QtSE4}E6!e2ju9;zo}V}7;VtQGtMDYY1z6%y+{_%^ zdy|EisWcDnY6;~ZxaoE`#!>RBzcatITJX6gT4ux}6JB>%T}igEb8(GIn05WDSM{DU zsh>LcT>STDHMnAKKAZji-Kt@K2s>zvpa{iY^d&bc;uk|d{{+s}=$ms%A0TX(-TZ&9 z=&;LG=@vy$kU)7`kd;dkXkC2o%0!yD7-cfMmrvX;YeL z8E)WY)T%b!liIpl34nQnY(-b|?x?`Cnhq#yRTyy6b3-V+j{m@5swMsg6zkCKdcyc&VfJ&0g2_ZQZD`PSa^$6UEy2=!pFTQ7F9cBjVmN|U7 zvU5px&#z3^7AzH=i$vEa?iylwrm^R2^7Ir+j5Kc4_pcPQELR1#o2`Ea`bVQXV2HPr zJML$?Akfr>!x=r($&;E@_5|a9y|J}kPWv@VH7kw(&9=|?nY!pE)k0JrWzoq9TW#{J zORcWg1t6ejrt*;R%gkwq5tEjPE0%3i7c_+el- zNu%cczYsWEWPJyZSe84LdJ@s8?pr*y*jwi|q>3iE#9-D?@8?Uat;QtlF$*WzvK@X5p`jd;&v-`aJd%OPLk)+G8hMer-OFV$7u^Z*`o24Ybe7VJQAQuP(`5 z$}^u?^&MqG?rLioTS?(#=l8mm)(y}afJ=Q&V?aF3Ttvo-Z#p--W)Vw4Ll)5k`0mS3 z0m@JH@V~x?&*j9i7f-)sT2i%f?Y2^J*vQ{NEYvBzWO!_P>3Q;T(q}V)%9-sDn286@ zEj>w(BA$oYil6~YshJpKY@GNAwP%3-EXiYR@4ERlRzE@c=KkZ<2j{roicLgO0qLsmv^km(+I& zm$F(lVuztWEut9=%zs)-_BrTWgwpG-v4^buZ_B%GmR)2X$Vh|c|2B1hk4#ma*7Ov9 zH{yLEknK%N{W4W6iHU?e<#5f#Bb#{C#j0Y_Zsd{kyLD=lxwtb0m5euvGva8E%y%Zl z9f-!OxWUpFk!bP2}$XcYoQS!-yMvzg@0ZV(o>ms|fObE!!o{DT&)t-I6 zN6>dtmP$Z)n8s8dlTT1p6+>~^5oL(y;<*)Uj};t_DZko5)qmwqxlb@xZm1sOyh>#NDfhcS&1vCEV(v$!P&Fm-L2TEMdxW z_@cfDPny%nx4yfy)i#~_v8Ik0tehvaSZR2?5EPWGP#@a+!`#qRbvg2t+Wlv2 zA<4ECGzn9*OL!hryIe6lzd~P}+`U7Fw-PGfhx1j^pVkVPJG?!G`_DzcGN+%9(L&+x zjb)EU62W#67Q|}IEv43H=yFPcv)K@x(wbdRx3}L+~H3s_0$JS%!w!xqEKRpBg zyWKE0{8z?p1|w(=7D0^W{B;9@=k(^ly4(}z7vrfWzx%&CF7)>=+QoKe(c9l;d>T<~ zqoVt8(PRA&KfoX0-_Zg{#LCP2jpSn1agKg|e&>oF5-TtASt40$aM#G04f=<5dea@j z0(#e<7d6hhU`>rlW+4knEBtSA-Z5GGcb?S`+g_7PazD7;2BS&)prf>$%_lE|-}_|V zWS<^iVBZMw<%tb)fvyqAFr9)UUz5zz;sv-*;YA<(@b*GIa?2iBuwV^vv%T{7TP+f{ zh!6Kxz}m|<$#GSwc9@$DET~Eb(pY1;cUIe{WdM^49iX8!ofo)unNZxtW=HQ=< zM|j}#&MxDo`Evy^4qJ_<;zVHRwd{@Ii9tr@yfJt+NmWuDiVQ&onDTZOSTJ7ANkh2D z;w0;-AzX-rfa^aogUqZoU|gI;#|C8C{*#MUOzhy%8fLY@#?N*d>j{qjZSWC^QPy{J z`Dmq&ylhrL^6qqazG>Fd-?ttO+_C`F`ax<90aYQl)P=Bq37W9&LDcs4pxk(AK=2y! z^EKI0lEO)O?{NVDX-F^V|6_SytE#pxsE8^YvKHjB!8uC~2~0I~Rljw>(siv^2lRN5 zYE_-%M6H|zeb;{F!LT0#la{8@zu+#fQJ8se{Wtqn);G#z0@O8~8&|!}u`nvkntiQN z8?8Cy2#%V^t*6cDPk3>Uu1qgn+_=ZPcnT~btK^#H z>X+n@`IXX=FeJZ!$f&d;e+#heqzQv$M1h@lu`=|imqkOl<7 z6?=JebekZM!=(*AN||05Wwh*0sJ}Nto-|3CdmXunex_(2RL=M=wK_z$^C*Ss6dB|` zAESJ*dyQMMBKdXDY^G&KJz5C^;8+-i^wa9A1fE-EU!rcWt)(_U-<>Xom&C)_5eNjM z{Ukw&dNM_pm0aV)hYWWsljLt&W#(uxa*yuDXv^|B z!yiuj&*kk|Y3)3wQTHx#oC-)Jt^6&E=C4zI1&_jugiCV5&9cSyRZSa=O?{32y#JJR z$1a|~{wkQr-9ah`hfn&*D^Wo%!Fx+V2 z3~OEzc7r5}b=AK6q(=6LDM|WfaaPf45qy?up30)m!VSdSULOF7!kwaW3?DqOaMzQ@2J#ix? zRMrrB6}It1g@Pn<{t2~O;u9K{R^*NHe|uw0)o2f|Z|V=~6C_^)3&Aa1oP*%lVe;p{ z3cP|EXpCK^TnQZu)e@N)YQT<;Kdkek(?w3OqoKxJ#<)73(DnXni8pssZ7}fln)+RoI_@r| zG&i{#pMu&!2Q1VyGtO%Aa!aV!HYQlel9R}A@M*+ipXb4r!20{+1#@>T#jq!QjZF%W z`2DKw2KU{~T@L7Od0*0f?2+Vi{`N(?T|@)E1bD@H_aOHwZzxol9}^OcvGk8owDi$h z&bxS(d$m&zJ>(Y$AD*v7U6i>0`$79#g5&;i2Z1 zL5CaMzmWf0K>Frf+x;j>r@P{3)-nCdmK_Daufg1aK9fv%UG20%d`QS>b+fDPA+7m* ze)C2&qr?z;ZH*D4)Tp%mUipCM{A3gDi`bN+2Y8u%no?E4lZ{ls8zSdMSs{)CTyC>_ z+uQ%{6j&|XYVr<&Y1~d*-L+}l0s(wS3pHak53}hzmG#a1Rc%Env-#&CU~RlW`#2Xp zNr|dmMG9#(i77Pw`D>p{o<+|5-BI@P3oEB!pE5YsE=hX(eqZWF;q8G_6kD-A&fR*{ zV8SU3SUbP-zR4m6UaxR@fdK8e1HO20NX|hS1>m8xPCbM(Xv9T-4jerhaFk!_JyA`k zvF?=dGvMYC1l|8>t?)MWJhjcx+s7I_apF2{?*iT^uA}Y@OSPbsgJWSj4gLEcR$QBW z7d>vTRUWwKX0Kj6E~I^N(6rDy{41Y!p6SJYfLX9>5=;z^iM&{257n^>MnQY6um>|H zO}nRNoeR0ZpRqXtYte}`3@s{|aFH#X&*YmfNw>mJoGCh!PJ&nC9%O@K{MG{2Rq~Wo z4(7}4z>t^+8WVFKJi)hL2U}%tya0=Amp}`faKf3~L@Ui2!-d;*rdnCrU-XMXf4=3w zZsGoaFK)gr1ewVi0utO0_l3C%g7r4AdUErwT`10tl;beMbN{- z5z+Uz*VFqMIi>(GU48pL#0XvBQH8Dnj&Ft1)qGlcztwW?BE7I)wT5(QqL}LnqkXM_ zji2N|oK-i?TgmooOTx!tz=tT3_9VhGB^cT3rvcb2i;H?nxuqC zULIc3JzpS%X`W{_Dd(*ld~^;e9Z7(!S%%Fd+SYE$NrcuWhGCDI{9DC$pK?#Q#Ls?* z0qW1Qe3(W~jL^%p3xCY&Va5R0(YL%_{9GRD(&tY53r}j@>U0{7n3=aEab_M_=Qr!7 zRcAaH9BBDUrWeU5i>&wg3L%@-foT*tE=?O8V#^vV?OiMMjm>MYOlzs=;Z2^q=m~~- zYv-cP+Q4u|Rz_3N8SBDeN%DhgMKpw6f#+>I7s;%^oIREg*(~QNd;WttG8_@~-uXy+ z=e{hZl_(>*Kc`Z^h!ieqXZ_9Hsw}HkV_Pexui=Adk;#g<(<)CiqGWH=&`NO`p4sw_%jNuYqM+X?v$y2 z>?&&PFX*MW|A_6%{Pm0A)72b#t<061s-qD0{`xq5pvxuH=~~!au2w!;QY(~R{`sX6 zKX!wkh?kC-kFI5RVW)8A&s3u95m;a9b^#*zK3@Ku8Z-aIsh@Q`K9Ynq$2{=Q_f4<8 z(&-;f^Av-($1$aj8RFGu4fVXvociDoGyu}EAhGcvqE$YU^}jhdDF(;|^w9UOQp``q ze&~PE2X-GTiunThjd9`EVM5on4`=CFGjikw8(I(O4H)$wkb=1{m2SSgZ_Bou^hK#x z>G2T37AUp(GHN+y;EAj{a_1)PA8@u@MBPq2H(wd=ZYE3Z4JjAUzYKGI{Ln1#OX=^`BPL`eB|3!VZvsLr>Tj*RH==eM%hu6RQ6o$rydiIc za$Kr|_9Z=TH`P)eX-v+B-5^-W8tR`GNNs@FlRkKgK)#7ENF9Aa^fl-xTHd!yl&>6w z=s5>Xl{9FMPnP-4hVZ#qgH!$ku#C^lfPiW+A_p*gW*v1mxH9P@J`RO4v~v!cIM z*jbZ_!FPB`vHABnK&XJB+5!1ZJ)fXX5NF}sii20z1-mWENja}2WJ;eV4lNwV=YTd@Cp&AgX7DH12pi9L#Cap1KshTq1deD z(>-inIyG-72&I|yu>0+W6ExBI9PIiImp9}-G;G$YMHczB3J<lx4N7)qxZ6tBIsJlt#M{15X}k*cN-HC-_+5-_k5y5;J; zW#4rnKa~}}%nr3F@ez_zJpA$FqCo(A^LUaGu4Q>v+mOC8-h1?)<>YO zbk0o~Fj)bX+#M3>0t>T&OGdEu_6h&ifc)nyT>HOt6!XtYtn%n;@6r~A(J6-G89>Vx zpM&{JjF4w0Mx_;{E1hy6%3Dv7X(u$~X+R zpN9&)XdbT&oNSp3G@d{AhL9PzyVakVW1I3^kags92bdN3 zTmP_vf=E>qP^uMCn$o0WMY_^^5v4=uy@&`{0YSPDktQ|t9#A@j-XV|}I)o4sN(d$S z9j3ka&dfV^c>duNP0rbSuf6*EuD$tcNo*molI(ObiH6S}Z#XYH*6wfFE(jTr#&BA7 z{l$QjgjPc$Jd>psKH~fy?b|yhJJcwp93gJ|J=m9tt&pva7#V968-M@%SpXjW^MTmB zIY}#(9`H2riD#+qN)ZpK1v!>P8x^T8kOR4iWSjNEd>9RvZK(D01-gcI>6Lm6KqR;s zeD)z~goI!ot(}~CZ253b9rSB7Z|~xeH&krA9^t$qjy)4GReHP;vJcypy{Oj#21U z!{?~awY|e>cf|&WgSKN`P))t{CvRS>uRi04mtSushnjH-f4lS3ZT~s*SK*Bwl*QhH z)^e}iFm7A>1zR&x`>kVMC2XjJ)H|CMrWIpKT3C_0(Fe3?fgU=kP>fhA_zMhj_D0ai zkGpMB)fab<%1f0j=cf8t`d48a=CHMy*Wce+#dT1s2xv>Jrf;`?sxs~>RfV$OOARP> zDhkNKtL3SF`Nj4aF!{5b0ju=_re}PkXETXWt>GQq!ZEO@>3fl80}(ysj|l-~%XW+= z>i>AOA}JU5SPxZo+9*xDE(A!k`~?F zM8{LD#pd!NhNU(L4YZ81B%7S4gSN8sEB%XgaXq)?XsF)G&WwVzI3kaJ9!2_FhQutb zDq$63GwixL3wTNGv6-t=?4}zsGm7%LrQOplqtlMu+!x4LMQ#SMxCJP*LU%PQZL_DI&M@3#;wBPWW(oB3O48wqmTSW%uU$+~;z;V#`^@|i&G zi!VxbcOUtGTF~f`Dg6<6iV|k2k#V!-=ic^=#(n^A58N?QwvjSY=FHPC&vS;-+ww6w zL4oCHCcnbB7zh3qo{kAQ~g)RTUi`E zeYJLv{U<$fLQZ5q^1i~rE)nPP_8Zv-vpv=ygb2`k z-4>mtN!MrO1@%bo)J)JDuGeXGxwUmICevp=m6zRNqud%&!~6c`%!^>k#(hTl1Vgb3 z^A(iDmbjLknKUYcS!Jt_6E?xSG>+-82Gbzrr`KBFGOUZ9uA5w>xMJ1(Jq8w&oW4x` zw#8DlE=toWcjW7&ZxW1ENS(Aa(U1}Byt&?L*;p=tU=pmGjov98z*TXRulV>o(M9Ef zrypchMYhcZX)O&6YN&+FzFTjexj#XR_FvD8G1{q*_@Ni>Pwui;zH_rFI-)d{JQgMEu#N zoEv1Sz3j~lyOu|?x}ImI=d$J6^5s+3 zOPTXDRIB8u90|Aj>V+)PeZ9Ii^BCGuxum1}ZHz8+>!yMa|AsU>D0`zYzA z&$OY7hUd+D9FZC>U7A{Op81@4D8dvjY*aZt%9i1cy22W}SAPyN*h28Ao1f6nZSl*W zSTAaw&<*kxTit|R7ehdI^U>!s=i`%DcvfOTQ%Kw^~*<-pGKMDBp>eun#$9g2JK75Ob7NyYuEK6 zh>%(pQXzBqjO03f<>b&$LjAOqy-&nBSi#1gZOClSz0C%r7Ix>7p-D-t%uO*5r{aMZ zM^QD&PVKqs;BRNaUvC9Wl(`#fA)hB-uY7DSLRmnB^6HxOxO~$^q6~fM3;Dhpt`LT~ z;GG^_Bk3IL36&F;K>}M1`Q4jla6j<3XH$lj4ez)(Q4)JQ@XTVIa;2Un z^(3psI(U+MRf8hN5;BoF zkO9dGRgC_*%CAQBwX*&;?wvCViB_1~;oJIZYP*Bz%WgEnj(WU*u9}?6hz%6YQFp<$ zzToWfx%U3iNKWxa|AJX4RLGlukC^6l9yYMJA(Y)EBP7@(Jcq_tC>hUZcX;xZ3%Zy( ztaB~Moj2v$RN@fGfGo#ykM54;rP9Wr%da4Km?|CPp7!o+63VOO-|ttglH%rs7Q|NN zh3eN`Lh?bEp%W67j<6{&4KnQA((d(DH?>SgIpVG67dx6u^<;5>@)=~p>3APf0S!G1 z6xaWeJ}a@$HP|j>rZmZtX-}|LeC7Lfs*W}(Da+3A+3tjmi{Rwjrg*u3zG||1)j)M_oJwzC8oioeNS&fQw{YjVtwPpy+~tu{`d`j z7XlKT&{yCvgFXzQ@{)$k; z-mN<6*Tlg zi)IH@LeEC;SKqG64kT5a=a%(#ABfqYMm4$2L^C(q+U~}yz0@-FCAj-{t-(8d1GmN( zI-~@_q%S6Ughzl)wjVL-sd$a9!^9b78q7p)-(1WnJ|o1?KtT9)_*p;O`377|N`QOI zEE&wx)3iMI8Vbm(`rxvi2dO`KDVnee@3>?(v+EOjR?lW*Uo&W20_lCJE@tDW{3RN5 z6DQ)?#uAtS{HlEOFi6oqvH`sDYLM4w#l^qOMMX=DMWCQ`$Q2jBO=#KX`XGO|?Oo?w zMipb5qvUlWoxbyr;{)HbUE{ku!Ev8XfuEg<3@Oeo(Ug5xu@SJp`t8Y*%WZ`7XzJ37 zfbdt@ss6Vd8|fvGpXGEiCbm=)Z(Sj-aGt%YLAu3X^nFi2seU|;BrK=nRJ0#q|dceKFxMb7E+5iqBKL5_F5 z*mTONrN|WALs%$_>1F=|c)?c}v}s>$Cqnn|u=qVL9jEHKd3!8&Vy>dJeEp#D3#FKylB&xLijdn~SSb6} zxlI)H-SAr?;JhPhjq#k$ix79`{I@DwB@LifL(fDFTd^|SSHXI? zB(1$W;-+S=M;nuBg0JeD0w(RshxgDR1`Xdj(rk=IG&Tp8g`B!Bi;UcSzEJ3rvU3?+ z`HuI;6fJ+>2K_m3;EwHp8{t)%;%ZhQrC6mL24@PfVi&If&U-eLA;0CLGHFWH93Q>8~^&4KF+m3rCZO|23)_PpvrPHRs2^&2$S5NO=|hlNzk$6U#W zl`S3#-g08%)q-oLu8zPpIHnf;4`Q&a9WGzBmrr0rcQAGz2>$z0c9MuOFO;T-c8R01 zfEn5rD7^MA=UX-Oc7EF`pCI(Insx1Q78Um*=I8a`q&Puj(rB{bM3!sZJFpwBRw=WA zP(C7Qb!95_P@JbUdzz~LP zH5v#T(a$PJNEGys^yto8Wls%`CvnWHOcTTneNcT6jozaBV4udib$7;_QTyGOf9{v} zgF~NeQj|*LPZpL8?OAlx%Qmgu1ji4r)&8R3kA- zyh}@RRJK9*mVEOyO-HokD2D}RZs%2bbVHTH%AGx8rFSNNY^E;#I*dtwfNNbex%J4fGWH`y5WMvsM@9x=anl_ zxk|e;;_spLkzDe8^iGkoEh?qQxMaO{4K8t-+iVx1P?K&#Hhs}-i--YJBuL{Wsx)=x z9jzRuEN0Li(=sTvvv%qp_)+rM1zI<{-%f?*bVdjX^bjVoAU zBhkwWJH{P!^Ge;}_rXq={wT$<6HGRK!S@)YZp+};nrvHewmvu-%Th~M zb#ZAY9rXPdM}GZ{+0lgr4BAWyV>0KbapfxhG>^iIBf&j9edj1=r9<+>fq(NbFWMZ% z7n^KSPUO)<^p2E@b#`?+!A38d=tCnGQxnF5(xEWB^ts>^v8%vNg%NVB(AGYkZ3-b8Av8 zKVx;CN5Q;;^|kEr)PQ+|(9KEtrC1$j|KRi{20Fh0{WM3ogT(rLSmQBD;7vRVUzllB z)l-|dMvOq=I(jCVcOZMkto7`WhBPJ)ZasUT8nklXUN2B9B_9bEOdVCu{PakjCVa1=tT_aXf2O%mImWS#B>EU5ak2i)2KDiY)YP zzbjj$g|eQExvIv{WEKQfcUJn`03<|pOu!TXRg5VhylpRcu~4CnMTG367cu}f7jLSp z_eBrl(`354I#{in^{!$oHr`BqbWd7(mF*yY7R)s-rvYYf?#Z-mK3P>{#?+CNSJaWoT&tq48c(QP-_~ zX>+vbn_uRvEhua|z={fGzeT9S2sn*d62k zY-qEd;Jza8)#E>xW>c*o0628IWe*b##vSoV8eeB(OlPGZyzoC}5Qsyd$^c}DBKEeh z3~?tM)#4?`0E!^W)RA$s!Z?_1jse!ECcI^LgYL#wvQU1xF}SF|^W7_-g;mkKv8!;X zz;y$cma~mv?2eyw%ePOzt9%f<3~+A9$%DgDQ9yB@jxZVE<-Jf)Iry%yI459N@Qkj3 zJ3_U_Y?9L{Wl5QFrc$5XJNZ(t^(QTg z3Hr^&>J_@Yd3)&>ZpK_HnskMQHXw1m&TaDKb6oyEe>4)69MohK-++CnxqWTe>PSDg zY|U?sEPu{F>vC4@w~b!>3W$gFd>FP9=_fVM(trIxrTifwHUhz8Iv}U%p>s;#>V8!w zhGypY3? z>N8K{)+4#F0xd!2r?`~}7AF>5{!K=|r~x}x!ROTy>(PRhJ$uRE*SWc$4(?X3&5kM4 z76D$@Cwcrph4+lF2~I3u3X}VIzimNEgAs4yE^XilOu9>#LiTuTuP%JBlj&Qm0-a3E z@9W@H;)ypFO%5Uvr8Q#=p#nV}hAH~Te_Lj-An#9(QcDoNa2uL!2|88qD?NYzHtEFW zhV>Rx|JvaU;n4q&E`Jc{e|!k`Jljqi1=0(OW&R(({9RrB#>9Z$+N2P%y8L|hSi7E3 z&awa6m4EXp8@*uT$|%^}U4p0MtIl7y<1b_UG1y-}C=62&qk0!MdCbbw0gd%F!D0L;D;t@~K=FeCpm7j1#4-rh&B*B1EGhkll6agw6?3pKF^db~XKuPgf> z|DzdPcf`k!;?SdZQBhPIt25$De|VOi{7)JB53>Ajcm6Oye|%s%)()rn*JM`6KJywn zt9&p@pA2XXLxS6diJF7j5;zL z#izIp+KT;KD!6+Dhg6#0TtrpnVULf1j|7h}y>1)vejh6puQ2IE+@k~DXJ2Y7@NeJ8 zl)xwa1?i9Kw3Gl&ek^&d;3It;c-D>w0L9JR6yq|Qxv9Hs3~;E19Aj^F7-vieN z+>7LrwR`d`IrbD~rP&TP=$>&nz4#bUS3h(edkbhmKs%#xK$P@qbHuQ=$OOqD*~po4 zoc>qe<^O-@|1_=6Q|;kB+!*5?-->&weycS%0Ke`Minx%nHUSmulOdzrlh1C>%?9ihx6wYA+5X-@+mzyB-ua2o*4f`- z7s!5mvpFlbvzWd{Xqbu^#QCWLnQR&`HOzOw77fvnXFY;!rC%$5LnGbS=~WyWN&#vUL)KK>DGId zau(KI3;1fG)~SKl1>7Q`TMn_Fl{#tbTd9?ghyB;P_1FZhe||tUHTg8`=p=cdLRndO z%ovhn4kz^!$~<80p#xDX-$)g;)lB)heJN5-io>fBX8{<>d@Z#u0+Q7%-zREw`|^>7 zNo^-Y0D=9qIP&Q`VUOicMXF@d91HTodN({zFUto&E;JT}>VW8*gqao&_vYv=@M5gw!~4 zroHfa_j1~guxj!oru73ekJ+h&u0xVRn}-`Ol0_Q@$t0p7^}5#ztxq2_yMDVqDlIXX zvF!tG<)ptGo1BBU_uO23)2LYxCskpcD_hyf7w7i0@G!P#;7o}yMn=ol_cW1mdymBV zWN_OvsFJjMv@`p0#M@@1 z(6hS6H|sX%lToR)Seho&AlbUD3{ah;od2H`#PVXX&Bw%JiIit~7{Qk46p!QXSs4!+pNprxi4CUaJhQWb(bBIk4hAlmy*lZ!kb(*# z@0zjgA`*%^?ef9^%)`lh(Wd*X2JZc>EFvlY!wCL2^C-kKx6jpt`pa>wT!#2cZElX{*AYOX+GlRZW~Gv+{_9?7M(Kxz)Az^(PfCYMG^!W4Ie z%u10vBAA++qh5W&b;e^f6S&?}l2|s__)-3LZcqNwV0O5Q(7E$rrtVKtmc}0)=*L(+ zlPfa7O^!<$H^|OvW3G7xCF7`RS|L04@dQ3W@_;?$3?2f=kNb9`iXe?Nro_#{HwPe` zk2u}9Jw&r~Syg&5>RzKpuaroNXL~SpXd73eNBZ5A_sI9n;!`mW@2~Aqzr>vJ2byvW{Bx}5c@^Tfq0&jB!G=B`O3yJ=+Bo>VrvaCTzNH@Kr znTg>VK{8r@_BE`+Yz3Xci%IlBcR9MB^L0TkgDU#WNE_J>!p%oWWAK2L2XYl+Dy*OV zoW>-U_75EO-m9VP(JywUe{QqwL9GT{ zW7J5(z)EuhOuH-}?V z5v(+By|P|xH=o|W&@PYIcHT;~4uwH#N&;g;as0Of6{g1^W({S$JE%9-sxI7P_LWmj zgF-UgEQU5|jkl=&n>GIzAG_-W`#;+GpyB&bNXV`>@48ME0=9wWW{}6XI|KS8TcuTD z-ZIG9{q-H>F1Ne+*z-}7gJ62lCZ||p+pR~cR+yac*27Rdy2bx^_f?EK-2tBOb?^YB z9AVlc-PU9P;ZayUue`3I zBI5)l#vOncOP+yt2#9sa-D z$u(YxS7}3&OBDy)_KSHrz*KG4>rW%M!a4EKmo40dHBz5_TbITiAcs@&HH8XtG*KEa zXKOu7f=3M2V>G12ID)3%c$|z3#uka-W@HWKexwHou+C+IXx$e)d%Ia ze}*(}PkBw5oY;y0j!mL&Yg3(yF(p_=t{3ZVYw~R!17`vXv6G4xBI~zBcY~hoF&pSz zFunMsa6SOnpno}IIn{r$&^qp_YC;sfxc7%2q~e9`X;JU}AE+|!lqU&iK+W4bXbA1h zVY$&ZIAh)JC|(Rf`SkI2aT_-)m;c7cqTZ+r^vXf=OWBQgfKECF*~Oo0#0BtZB6*%2 z#M0_DR_tW%BW?*;sCKFt^PP{Os0b-x!lYaHro>oLU!A|Nb!%6@S2SX_R1|>Ao|J8~ z9!&E4@MF=SW+Pgq@e-pv$5Y5Ar=&oA^K|HZ3on&+k|%Ms(1V5ebDw~I&wk-g9_T*{ zSl`*>uGNWYxT)Id&dL@kA!yev)I!6~^V^&62b&sJt9d8A_vsIkS=Y5WL#i32XZ=uF z4G6=jWVj=0DLeK0duvKFf7}Ccwk!>>Dcfp0<@(0w>}Tt5N4+{SA{kxN92CPJ3S3(?S0_pV7s`tvL2L{sQ+jnPS$+ zM<@YQPi!>x!={jAcQ-_Uf(Q8H#-3d1!p1?;O=hS463QqUlv?q0qZZ3z$n2K{5-is{ z;_ZgH?nSC%Y&~1@Fk5+$f>w~tsR13~+)QAkJy0Yy-evp4y+NrYjMw+0sBqpCwx{(K z%1z<)jM-pcyOiV$b|!>IrJq3~ZhL@pr;VPDRXmhi{AHcya*A1sWRhs0JYtujBkS zZpLV6ax8gApmJXTlSzh1AWx_I;ydn29(2?BQZ~v09_u_1wlr>xoKFz8xO>~VJ#9q*hQsD5C8PQQ-9Yh`QG#saNU;jvP3PI`FkU za;Ge6F->dNM?8S?XDBaI^Gg6nrI+o0>5$4WS3z#}US(ko9#f5AmM7Oe4gk7#X`57p zpxPGOxHc{!y2@uf+}x)gTjgE`B|eCYb^O_xcLv|0Km@$u8}C^eyS|y5JdMOG>`gDA zc&$?nu1zBe@{idHTNLOtgu?<@aY}GN^GhYH{0T7jOb*uF~a-Oy=DsLULL|NiFC-I3mRPLHms<~x6}?oAE7LRxR64Mj}{SI?)`3QKt`=kJuh z!9oe9Y-E(;xJ?X%F<|{w@U$v3uR0wod8@H8BOr{9M%H)Z+I#kYm3sL@8T6GO$EW#? zQhmcrw7u9m@Cw+9@SPShYT`8e@h0LMCf`5_eudRdRT*9z2XTYWV5OHjoGU)`~4j2&#B!Ev9kjF+B3nXP~Xrz@<#aDREnp%N+7yhqA3FI7|%dh z76T=SF1@>IF9Wo9MIYI%zktwZ!hGGFRf>sbXEHsZXXc_~G5$efyh?a-Ao%$XL5SaX z{ewi<>Qrs`QA+A8xFxQImDUeasv#BFhN;XZK26opH4&pbXm=WH2HKrCfWEi4ch7ax zbC96-ns(S7*y^Deaf_VHxRcm=AcYTf)-|@D!k%G~T~0`+Z92S7JSTFu-GiA2d0zU* z+Nc@OVUu&lPrU)3l-I=J*7bxJ?!wE#eZbaCAuX0WFfi#8X}DvfyM1G+;~~HD&9OkB z*3ZxH*K6Vxx*eZ6eT1ltw}Mr+qL=OSPlb_IOGFbIs`dcK@}SZNs>eNKOF8y>RO0}x zz9q=*2M6)DB%k%1^szb;XzA0LSbq@tBR_kYUO;amC!3jg9ZE43wlDSo(CN9rprz-b z-$^1t_?Ww-I69g24d7soSmgy%=R1qQ(Zo3hS*H%ga*MtcO3wa*@w8Jlh@?uyc}Uzb zKWzNQ5pF+u&~;A0LqZ`VN+FekV{vC&Ct7SWKXDmLF(>_>$Vs2s)WBjb*b^&6KvRVR%4!gQFDa^FGLn7$>wpp z1ap>Z;%P)6y1<>EYK8y^UvYlc|1mfOv+^LH6JDs7OdqI{qP9Y$K-t!ZQ`lEdQ!?9M zjyye-a{yFnoSXZ2Plp;a**aJQWdjQcBkfFEq|kU+v1MBr!0UsJb--qx;xOwI{zF&( zyAKMS!Nw=1(5k|BzkE1eSdZ^qJFpy-x~7tJ=S8pm(xsSA52Q0rtyb-C-L?1KOp*X9 zTpghNi@}mtF9ugSSp?@2&SX?Gq5Jq{Iytd7!oKAkrQTYv!7vE|d{=sOo=+TDuf^Le_87 z4osCBdq{tVLFix;qK^u3rOfIL5AwQ*%1^lRp`tN)Jk{*(NiYCPQ0OvE~_S?LMSey+op z(%!r{LX7)n5cZ!h{a2KbN>UKarY1&IsFj5u`r+$m+OH6QNo8M1UinwU{b%IX*MAJJ z6jIZDL7_g~kri{eAP=B%a3>Jw0r~#UasE4p)F($NI8}bj>0ATxn^&8#QY9e_*YNX=gP-^i*#>1 ziHScn!%C$p$i0c^odYyjok047za#HI3jgCA1wjJ^Mtp2;hsL1^Zu9L22kq;5aY zp(XsADo^|dH+VF}|GACp;f(S@oJ4)LFT|gEN;v7kp{MFvCw@nJ9l{6gWNi=kmxE9f@jqrS|9cVpRiuL>u0^T%MloIh>PDBG zI2;epaQNeR;yK%SwyQ#ibDR%W7~CTeMe7@doiuuk{?`TX-=S5x0-+%K@(jo;_5S+DE9Srf$Mn>o!{`tFwa1M%D z4D~;a@wZC4uNp7{8Pvbl@BKvVWDm`uv-jj?U8nAPojLT_3SYEnXYZZ9cp#P8h}Y*2 zuM&_aPDEASIP?}P@Um?CPP{MMtTvXAZTFhSd|Nu~xL(!ol{D)KaC5CoZ+GkhnuV(Lyz%g9|yWpa>tFW+D$0v#Zg=GAV z70V)DnCEV}=-v2-jS8+f)jsEHF{r~r(+0rYHq5H5+vj42#C7sQ|CxFJjtWDjJYg+u z@<0u{Qs?474Epz9m4zr&dVbT2{ku2+^S*t_q9~>Y(wSmcblCp>-T&}>S-8SM%neU} z>hTK>_E0YfHl%4r%vcVD_!r!dy?1C~#9U?aJ8*@a_O2h=l?^sL(fo5e;aL0VU9EG6 zrdi)A1;s2pfZ68oyR3Z)fPxLS9BSH?equ(AXyzm$Ejk|JK zRU7Qd3NX1XJAgmi&FVXH_65drlE79kLhKGNUuiG6X6;|+Ts!oWHr&C#IILS~|7hj@o^^*bdE#L- zQIIR&N`9A?|GCcJ)#aCfW4~;fk_4W(m1A1)uOIwF48C|$OxfvuiazwvFBEoZ+(8Yw z!-s^!9ZWr!6+lE@Ak9Sw;fGnX4-X{f>8q!hnyBQEQhzV5j?*d=~ET2#Q)bK|H5br?~Xrp_E!bU z#i}-U4$a<+j}DCGz(^mh1`WmG?lHQw zQ4O1*%Ft0WZWb0(n=~uRS#G}-TvWL&TA3Z{!`n{SswOXGs;?|DUZFF4MF6NaGk#yLZV#Vl(KU9ngV<@D zM!p4mRZuZ;i^F9sZHeBp*T>22Xh%Y3+=`yg3x5IFb<^J6)gYd_sL85xgNF9> zC*h8@YPgl?rgWsAknybzucf*eb(#8Ssf9Ad(dz}{!+e2RCLWvI%lW3gsq3P*1=UD+ z*xG(mq-ul48Eb@l%!lLctRZZF)*N;hg#&grgxfgW03mymb@$IifBD_dvNhue&ZW^8 zU0{^JMQzG0&aav*E`Yh|JQqxf?n>rVOjYq!de67j$?0bnf5Kffcr3sKNbT{YTXw({5UG;sY4;9bM)qeZQ?5`H2=q;~5hLYEw`r8QlM5dzw+gm5RcV?Ddl}>nm=yGc#%&KsA4{?uMon zOd5XkTWNV^S9f1#X^Lm3($Y>F0S;g$1~Ucn{oyCdwp>Vv-Bm_;Vgoqy#`=0`FM!u8 z^@8W?YpSe>kvj7VmC!H`SSY4)N}Q(0M8KakzJNk0a??VfTfPaxs2S(&kMbuZrkouY zPfA#`%m4>{5WI2KDP@2g+~wqE)F<3U`g$q%r3wx5!@cX6Nd+pK9Ko zui_5dU9A=gD06KazgsXEy-oR3XLRr8-h3r%riRno@_gvXmo+de+2~2=xEjR1u=-(q z)tkbL9EnYNKzsCc;7Hc#4^(Y!bf7w-Zi1A@{GgUNdBp1F3`Y7-I$a@;7N`c5MK~3h z#+>{U>jVp4iP{veo(B-sK%uHsrN9r@DYvWEJL%Rleu++*;@xEmPPL!o3szfP+;B1P zHDIAW6TbxDIw!k&+K9kmHu+!HVPLQp?`^rB*O5=;mYSIxM~oa3=h-D)wX60cq-kMY zg_H+C5o%8SzVoUNDCgOaJQv?;#5 z)7aUbiELT`Yp9-m3sU84IgRu)Fa$w8O78px3mL4--2O|o%dYw4pA?9RhWUZrd6JG$ z)2l1@%{XXiZ+w4FB&qoWt6Xa&n5l%8N6pIVsZ~C2;b58VU{bq|uWs6Cx7f%DKo9FJ zscvSq`cChZE56m`4iJ@FLb=%aX(OMd6g%Ez%B~g#bW;glOsD4+4R<(Dn=Z@Y@9udA zzqu;Wjmhq2*-#4`OSOY*=N39}e~@s=7qjWsG+0(mzV%$WCUPiIAN6SR;Y{lX+8ADq zLg$WwabC3~?a~tEQDJ+#8k3j`psLzs`q;WV5gKk+O>UVnQi;e;bgm&^#ujWFs_g)$ z-#3PH2WSubmB~gV4(|j2$2x?*Xtmojv>dOH>KR>T6RqW1FtUWl8Cl7IcJVMsXQ!OQ z_Szb7s8g1Yo{?khS_-Dp(Y<<5T{cG;o0~^|%;p3O){x)jZ~nen@dzig_l6g&oM#A{ z@@PyU@A-{6!5yy`)@&<13K_NExmvU0&DP6o7hAuxoW}%y(Km^ct7o05HWJX3p^jK+ zbP32+>%W+qUIrWwV|*1N%P@O%ic?pNbs3)TUkr|01n- zgICYa$NvR4-}mi1puEiz;y1;KyEh8yDyOz0-FJY4@_C)bW66|l4PJQ0w5Tga@2~jL zz7a3Oo{GKC7hCq|?d7-1nV}_l84o5dKe+#{r0mh-nAp>2)7p69RwlIAURPfn!GwxxQP^W4$kj{=5#YVKw!xcgK3>Nd*3QP~iAwtN&`1 z|JqE*vpE71wjFO)d{jQEyTqpdt7}(3eWn?*Hq$9Z3gP;WB|zX_>iMfGae?+Bn#!N9 z3AQDyU;zAkmU|WcBqTNHXKFp6<0WKZYd0iu5R=a+pL8Ytp}fHP7v=V&PD)BjACtuF zA7$rBE5lU`RUQWOoPSp0+kL*aaII?+1s^=ZLq9gqwQD9sdgxyFtRq?z;>5W$TpG?X zRg@Ow<)~miYE;v)4AzA&5jK_tvdbM#X|{c^VRCI#PkFvu;i#Fff78cevea|RsXnkb zRYWh@(E9%`05y(eqm2;qKni zM+92u`jc8%vu3`7HFLF_Lx|h(L&AzQ^_gfX?tgC%t;SpU0Ec+@t+M_-j&O zA#{G3E)v#IXw$SRK<)eC0lK-^ck{fPsu1k`IV@~mz-T2`IbQGzJ-cXB7(IJ}eMZP9 zK@+Kot1Ir9$+Zb~W;N-xi2Qw`wa_(#(uoQimt6OiKGX9Oc4s^|QJ5bC8o)33M;0C9b5 zql5QZmq@QwP4|Xw!k6HD)1Z%mZDw6$&8rRj5zx5u{gM10oyh!)0Mf5;(${U24k`Ne z=nkX-msKaZBw%1kAukrCfjzp39xfmKd8NQ;9QB?d0FezIcgw+aY+RN7q5 zaZQwrk2jfk2(atNe!G$>EA?bjs*IR>)l|h5G8O2}NW^e@ z5%F^w&)=~OtVgVF5q1Y)%+KmdAqzGIHBW235`< z_nxQflr3(KS9D()7@tH>LJ>V{`)LiEzJX%^M_PS0T-}khcdDHWT&1OH|4BnI3uXCNFOJjpNT&m>AjiENIM+YlO@) z%GZ?*iNMezYNLXq@8m=tTu1eusaXL`EI%Y^L4ojIvuf?fz+%-*27mxlTG!HeQVSUW{O^_VOr%)ur0|Y8ckb3LM&4nbsydH)V^D zmfXVX24X!(gVv6i$7#JuV!3*ZW~vijE0>MBkZxNEe#JMiL2GFMF!ZU!b&2z2z>V*( z>-Z@p?HCS8|8A)v!N^S3+k1#n}*^oMk@BI@#L58rbLXspsoxt|p~p(*lyc>%c0FCJbqHErdCWCyOp z9*NBI+~yi1kJhW`Y# zC7zZRUkfH(2(GKaP;>d~w`zD_d3Mvwi3_;ymR>o<<|W)UeUa!n+6=zRW?BmNgjOfB zsut{ixq}BKn{QXI&v(FMu1@gOpljS?tKH=3$6M5r17iuQ3YAo*a@js zcoTCUB1HccA1_ZDvkQ4u?$%-ygN(bG{_sBiV^ZfaS;R9b_r+VN2O$@-Ra30wN0Sw5 z5MG;QDNh>FL^!3RMq$mo6oB&cxG*fr^h8?Ae-GzyPS&o9KF;fG$pF<-$@#j#fcWIP z?++{G=%Yt5^0rblbuuU&pVjf37uq1f@s6r}TlXSm>{yqA$O@L9SeP&)X-MBfY;|P= z{p#S6W>iz^Cj}mJ5mb%a%yKOXlSyw6hGWOZ4$V2LOl4S6GAp^_PeMgk_^eFjv z&o3zLO4(H}?G%hwRA77yO}$;}0MzND980P4``6#tiBu+{5h=(9GDASj-LLy)>G!gG zBrr{jRgPky<3g!#VH5mvC6{CJ z9%e9Ab~nU^yt6KZl^XQRr&2`vA@?s3d`u!u!4pa@)5)NYcfImA%GF-Dc)M`cxz|vI zTWgIq=P6jW7ISEDO zA_VKfO63SK(2ME@a)7Dxo<%t4b%?sRQUr(tI%6Qi?rLh6okG~^d7IWO_#-wFPlBYa{FTY9K+?47onzL>dkc0 zOlpACG_-}Rnr5&MFUQ(QO&8)pt%y=N2~2iincE69V0UcS?NMgYsctr8Cc1m8eimFl zT^suq%%_EnrI`=RPB~Jdxwo4VYkh$%zUg>bB4NQS=y7c_q<3P%Kp`k7gp2E1d|CZi zcL`EHIU-``Ge&5KATWwk&9+~-D=WWRKMlzX0-}f99s_Z$ zMHXfz$eqU`R)OXcBJNc*{`p!)J#uK(%5it(z3|AQAGmNX!@KH|#LF=Sd)ng_jdg7)!UB^Wu|=^%*uyL{xwt@=OP->SDW|1>g)jnFf*e~CvHEer*9`9_F7 zLLNV7`=ylXb6z!7PIsz^#(cm|j;h2$nR09=>A@uiY-S9$%&=eBAqpKhkSJK9MC zLD@8dwGCt_LcEDu)J8@6qRm>S)#fNtwYuavCYe(7ks)P;=wdyXCM*y%aRzJrJd=J0 z70x~PmO<|w)l>U^WDDQCjHvLqS$vX&w$0X4`fr0gkgY7lh8MEJU~WpzeqIOjC5_WZ zZhP$#`-#GH2Kx^nIKZWZE6LV)ty7eimNbwyt*mc<90gl#2mE-JHH?g_5a1QHeF|3% z&}xD~>g*_)HXUgr8M!V-%Hbc^OpQ1I=>g-p4ja=dv5(l(Is?s7#Rk zrIm}x(oR){ZZ(@Wycvnu>?vvnxovVr2d)k7W`J=2K7jm`szTpB><63EbN^(kg?O7V zE?EihTG`nz^DUqBxAziyUFK^iCOQ1gx>F`45`^U$NTtYC-xhY)# zkF@s=YqERRM#X}n0xAk3QUnDB0qG@FmEIHuq^tBArMD0f6_E}C0z#19gS605k=|>7 z072;l2oNA7A<21sfBSsb-s*Sl_i+9*@d?jbvu4ejnfsnuJJS=pTLN=;aJJVWLSYZR zD0M?#`Xm0nz|F#|5_!msDxC?MdsqXF54gBV!JAUf43spxq@1WoRcW z$50F`Z|sEEKzyQ^LwYn?@TS;x_>_#>vvsYMN1MVd{D}dXeKIE7(*?#`DH1M@uuw(P zzB^&1P-S;|09R7ChF;w76K+_qZtTSckC-38m&y^DOC4Fy0&Q2ShZ2rAl%XS>J3 zZ_3fZYDGeH$Nawk$^Y)n{l~eBwmQ5ZF?{|{Ys-Z?%zMYb)UUX9*Xl4YcL{tsGt`du%;HId4ZgCE zUnab)ToK+wt?924t42ykL{3-zQ+FJQAvmH&4eJZNykLznHHQ0bbZzHljwcqs2iePV%-?Iv@=&ihd`&wTEa@ESI6D!JtY)=e4m-9RLm{JO?Ae9 zebdGP#*E_{moOfllQmI0APkfm?8WZK{^12F+Vg|%r7OtVj#v&+bcCGL`Y|vR-nbwu zH6ECfz8CH8iI*qeUZ{(CeTwB+Q~~PNnonc_+x|XIc=9F|h2|J`@^S7zivCAro$SN7 zr2xK0nU0>5gvea_K{U()>T1rYu&v%MJE;zzhSbXv>llPFNbm^`h}lGqqn|!5eLYja zu?QLF+FVc1orem4_;Vbs-eqHB!d=p|f!=hmOJfoT3#cPNM9_eHew$_UNBoA9ISO&g zv~n{*M=jL@(@z)HWc;(zrcF}eiaE+fcEktMziW!x+<5vD7QCQCW6`k74rf>qhiX`- zEQ7_SsWUuO+n1qRBtXP39kC@(hGYb-L9TZZ@U^#vxoC=iXklU=c4M}y!%HE?C7Swi z{YR74YaO{aFPF~{#Oe9zX7>hZ=~;#7!m?chd6bN3>NtVdZr~(gcZl^Y7L#J( zX;D7!mhOeTowrbfLd(dAe_df_-<{8$bwfG+o|)uSp3$xDJO49``{gK=ai>$!*RHj3V~s`r*!$_)YMg!_4*Kn?rwQO8-H@8 z+jjd8H}!#x<$@7$V-Zibl5mLYN4C=hN#&6;#}R&zAWw)E%7Po|-6(18%RWFJIUVu( z6sPlI@uSb&=Ijy|_rGWAXQ@A-Tc>|#8#t;xX_DqoQ89iZ`oYn6gFKJqZV}* z9C3_yyjDAR*R&du&C{#*MQX}Qn$UkvjZ5wJB7__E6j$L9i{k_>HWI% zek_1`I(n{~RhN1+Y|=_OmMvrZ#0!~rE;mqGQ@k1*1(o`0{AYs@(X9QeSwKL#)7vaP z>v%YI-@tjnUFyex8m(qevczN_z8E=lv7El4@oD@g9@X)2KeN7YjvHzm#@EbuCV(iN z=M95MQgut3w|t`U4a>l!-Gn1OZ`b?e3NfNzO}F|KsbeE65)(f<1-M;rmuJ-#ZNdU~ zlk8g^jT9)>RXwF8vuY_)ns>WS!@-ZL5n#@`54Mi%xYb99cW=>*3b(#k9|C`LwFo_T zZEklR;X5P|3^ok2J?{-ZDvb*tng<%LysIt}ooc z;40`dBJKNC+!r7zZ%D-$lmbwGbxFVHsHGp!LWNjr58|*mywE28y&`*EkR7)ue1^$~ zQ-4jVB58cn-)`lhNGijsh`r>jh4=0W84fA8(WKlib9t;sW(_fQXf1#n#RX}8EkMXl z^=@Y-f;pkX{+Znfv=9OeItgcS*e^z)W2W)j<;FcbJ-7Q57w! z5Y8gtXUS4R3@{N14kHlK@*&pia0pJv2g#dghjuvHHyU+ zOy|z5u0SfE#n4*}K4+0zU3d+3dhwtlLpgh-z_79$xq8auG~6`P&$Fh`$mCgO$FrN4 zPCJ$@b@e~taUKa1lCu<&rq)NdXeS&?lE7Gjitl~8J%~-KyR$%26Sr?YCQQm*+};pr zyDWH(5p?sXt$6xGyj7%vtobuUiV@t^T*_Yd=BqS(5@*15-mt<{s7`JnH*H4UYc}yb ztS8sl=UH$P2>U=vD{ya&H-Dy_2J8SMn-I%^&zT77FpTt6&motSAOD=mN$?WXk`Vy(c0fv(? zvVt`iyzAz9-RUDskxv@@NKkxj?*(-Bv1uo@H|~8hD8bluQ_v%z8){DqWx5glLRb2p zi>=qbZTBRU9zCAvKkW1<3f{Go+TfobxoFt2>@^Lgx5=gNj9LqDO`UxN=w=~{ygOZdr*Q}%Wjjrbo*f1_{R|K;$4DOGEvL_9C=v-ALhn_HN$Iw)XdLPYOK zgE?U))7bUa3Lb^kzJRm60)S=!>?q1kdec%5S2e%?QH*)jKL^RR{j}wsuU3-t>@>O1 zXY;9>RU)Rr_s0<;KB&%b=QQlHr&;ha&oQUEW7|nhE-6~8i%W0lr{+A+BZawsL*GCk zU$I?!0Ep1*cG+DUGTpX-&o@UYRN;dmVL7CCJKC1=5(Yr--zL$RxQ19x=vjSLq;Lvi zokrE+4Xmr_5_WRhy|IS9A5#VIvn|=f-f+Ey{%_gL|4MEuS+Mj&QG7}YaM-n7#^17` zL08W{GroiwDP)o$S=loF!h=MPym-f~(Y0;SVogimC%KMJ=z3i5jpd-uc{F=wT4!z> z6+OtUl3FR#_GjvT;okox-Cmhg(rBv~X~1u&-4$Lyqe0y#fxj30LSOh`9vP`pZrc}Y zmJ?8SF^K|3qt-3;!c(FcDd#giwD~H*Z=W9HaY(IgoE_Pmynbnqqxif8JBL~5d*9I> z_f$TQNt-Tj-2P&*?izVm)|vg%TQb_u(r0CD09&urfifrwISZw1!1So@ zVTzBYn*caXlWJF=b@Nr-3kTLo{ zLOFF^8v1)~U&WKjviGyq2gqOhMUY9#T>9NM5HY8=vv-Y2c_!26Osn?S>Fa0`H7t(= zN(ekJ%J|CnSu=+FwN+0QZkyAGgKazdqxTbm6a&weci7c!HBR65qg9uaU45wvoCZ$R z&sl}l;MFjX&89Q>j;s%_>vTE;u|l!tLs zHnq0jH%7AvgOOtLneY6N+tvxhO;h&Y!HKMYZ zzNY1|7%hPm6>KRo^<&?GY^By40o>?Xl-z#08G4>~VCJ^qB@fA^n4pqQ8tN_#f7cv( zLDUg_QVoojICDSDLh-ZcWa~@RPf}_dj-;(qY>R%GKJGcS>q(}dedX3vGA6oyWi}@97&jxokTeKd)7b9UjmpZ zxoY^)loZ!hZpxu&M#3@ZQxNd&lhCekszuCwrRw!KFXjvtPg&SlZWwLb$}Op}gCx)=>2ZM_cLxxis@1eR^uf?pHa5M2I^KU`pMx zHJ3*pO-wFYc@B>pd-uJ1G28S>I31v&Td*b|Z`k=mM6?|vv|ovhP(W3YuK~#dXQGH# zl<{B8Y#P8dSI|pk@S^?Q#?GDJbNq2TWn3Sx5JR(7lmE&1t;89*OdtU&0q-1Dq;9|Q zd`#M1D+_2j2@;gU*s8Z2jj~UNB(jyn@zE;UAd8YhQeb|X-;4K`QHzcv1*%0%3L+Af zCMC4(Az;OUSs|Z?Bm;Zi-f+#40yRH_$uilmPzo9O+DOJ(34lz52Dvgfw%RxyXo_8H z6%S48gzb_SVNjKn3(txB5Sp!I5mNu1JD}%#@TdZV**b-9Qd`(2P{Zl+kpQnBJNvU& zTAwge{AA>dz?K`w$Lv<*R!?0GtB3-C`YX8~-D0~_@JXog)hAocN+qto&f~8J0 zfUTF-asixp0jTCK2g#>d4cP^CF083lHEhZ!z6P73&&>)G6Vf~4Ec!~1;gatt!=u{K^$9+hx*av*=;A8KZ#Ti16MD|UD<>yA$1tq0v1tl#8S-54 zV;esKU6PqfV;=G)-0OiJ$r9?qL`5Zun!F+WsSjU*nERn!+)5NB*s-dp-)x$a!kK5r zLlV*X8gc#M!yRrul1`-^eyR8S3l!V=*=p|7=nATkh^$IQ}Tll*R&EUlqrRVD^cr2O+hS08hOTS@fCar(P7tlk#%40@#$pdQxLm z$43qdFE>?eOLP`?e_(c)1WQ=05(L7o*h2X7O(4>+Lgpq-rbxPQU;1LvS>a1uol$TR zay{C%IKQ7se!JXXJA>57PVmps}&`)5m7OHr5hALp487o5)i z8|~pa+=THH=cH zic)eim9l1LqdVy?v+iwh86yH4=sa%lXKTfmjZc%Nkd~3)fRFD*XDRv%8=})o_`+Sz zFewpdB{4@h!PjMMc#cExL95;4-dtMa7JiDmMad+k2u;CZ;Y=>(eh?J_8wlxPxvh@F z)JlfELAiuE=(+uuB>l?$!3UP;VmGoD(d2cG(K|;3`eei)`GU zrcr|P*Xw9CouYSDSki=(i={y}Kob-M7%^paY!k7)K4fI!_oL>O z^+-=IWx1@zliX4Vv*~(Y=`sOtqVOhvHagNMX6nIS@*PLo2LRrMp5vf3ZVFmiv?@u$ zX*l|rrCxISdwaB{4>`JM+Rr|fqHL^fE!n9>nE}|i-s>Zo; zf1^1{(x2G>gC|=J?@B44V;yBkM6aK+SNwW0B(XDIz@Pnt;Rh*RhkpN}?u|?RaE$g{ z0LMHpENy{K9>ztYc&1@fVv(+5k11h>+vA3)eQuR^cMG59l3;rK_}~wx<_D5&y4Il- z`IS7A!Rq^&a<#du%)iIbC%B>^G-U6L3U4-BsCg01Z^seM(UW;!6sh~=iXU<`h>w%4 zpBfV&+lOquFQW-7!^Ng3ohq~tCWltq?pnH-waxR$ZsH!3uhq}1rld#|7`WL<&h};e z-705-`T80ZT3h+B#H^#Ms3^#gqLkqg-*dE>Y0^o*crjDI$-*3Kzfa>c{k@b1`s_V) z+;3;aM*=vP043uZ-7$c#Q#>K0wX)J{Oj5-8m&d$p{366<6v!x!Uojf(Tc>PTpo!q6 zN%lhfemp01{|aFBLx9M_wxq;EgD-~r#ZclQl@*g48mIYH~b{!JUq z?R-bpFWVyi2|O*NTLd7f^qFf>)HLJVUW$L#DE@ej9!x}Rf`8S6{$<+EW}DX|kds7v zdb4_We2d6X6MCS4gsJw|&8n61Z1}1>O6CxAtFAu1z@rwy+;bha^b>oRB|kH_G4;pr z1KrOlQ;m=iIgppxuzCMtR~rZCInO{_yY3{hKA{ZehV|96BGMKDOQ!G5=rp$%jUZJc zc9V}(qP~vYCjsYfYeCxL;t0L(sCL&XY|%TJ{qA4Vsn?^QPJh#W5x~6p==2|YGk8?| zgKDsK<=sxnBtwBUJ^C{vWiF(u3Oe7_J{F71!k6q>i|tjX`xIedJEsK98~WYj&jEYU zROaDe!fXMZF|6>s_O#a4urU`4@iIuhQav=n?jqUlm1t?3+aNUyNg}RSMC&+6t|ka3 zqZ~lq>#?~ob~aJ8Vn&j(M73yBJg!&1&5OH#HhE*kNu;mFb^*4(dtNJ@wM9>{IGcS` z@zO9{c)lyKeAdr=Y3FS5l4my3sA4c(88V<`CTQ6W6LvyUE*BT1mZXaOq6Cty&wpRH z9M~6bD$A76ezQE7twpjMe?mUq{3`>&Km~|9qI(^mmRI)pwi^&l;tpQ#K0f<-BV*j! zT!uR7K9wGRS)$c8X@~a}eZa<#n*`T+O;F{)^EM5Fn?uf%k#nM#^w>P6YaH6(Yykia zB!VcU8DE#XXK!MN=G%D+$DWfRLS_~1DJ%*bO;oa8t6X`L z;IQPkcxz`dVF$=(ylptZeG`mg3>;+FZO0$y47}<`zt9$&CwX153Kyz?rg29?h$8cc1Xk`(JA+GrU+v##;DY{aN>CIZ~j3l4?}Ib`SQ^XV$+huMAn1D!XA z7FtZVS&d+xneldMkY4K~y{>I|U+?Ra*YH|3eIPq(!`hm6jt^KT)N6kTo#Fs{ULhuQ z><>*Q9pY)t*^6g?~yT0B2 z<#>HMe7eEUFUX3F<-FeHGJUx$NuZ~(PIRv0Nk&o;PyAUPwJyH$#kyIi{|0O%!6+XhVeyo6KDFoq8)I4(Ls}wp#6VZrRI}aR76*eo3yO zWSjWTpk#gQYwxI1qf<%US6kbthfqr5sks8()cIbEhWQIjGtiB%$JGiFT$62myi=v0 znr9k$Ru7&EWFt-DM6DJ`%cI#$Ku5DHOz42FUeNBCRo4B?*?K=a7$hgJoSD9#UE%3_ zsXoP0fSbxRheRFC%hp-**fF4t({cU+;Z{*4v&{g-IOcg@?y>3+Y`B+pKLm+O=j_SB z2ot>`(!8f!&|lJ-y?2*f?VMgr-C<-XO%)d}e-7kKGHmxE?Vw~-ckeS@OK8$KLQEHY z!=RAEfn}g-=aU*oMD-p3IdGG)(EeTllZw1Olw_(;Pa{U-$SQc5nSjsV;kdY0dedS* zf5hi~i&J_Op((QmuLrroL_X7Y|j*p^W_SWZt7W5)V;{rH2NMghGKF9?P% zLh&iC4LX`hwTTt3^9&N`0KNkHPB@U#*YjxM8JzGlw=0UgPH|ZQZ;f8ZYxhh*NbC*P zLphdf+nvxv=^J5lXYT7$9=4f6HJt*sSho;Ij6RRZmZT@e$;P%0VW0Wk4u@T*XF)hruP zu^#y$BX}Br2xnR&Q)-D8b_XCD*&7uakJU|jgjE25@@Zek5A|X;1=|3aS0Oj+?2mPJ zURl8@b9aXJB#)02p-YvyJ=KSju(~N6Vug^sz$LMgUnm_6Dx#PbmrhkUlOO1n;}CMj zv#w$)K0|p~21r9UPFq&q6iM~l@n&B3&cvxHlEVr9dW@t1+)g7YQ#bcF;^eQ79bD-e zXSdPvv7jksQT6hu-$SA~cffBg0~i>>*Fh6kkOjtf8VRHAyvKQM-q46y#>?v{NmmVSB;G8D= z{xSg|1&*b4Uo{nLuH#B}k~P1UtUMimhf(kfdA$Y&FqEDlY?F|WHH?xkqaT?dYR9Z! ze|$;}Qa@6pt62QH<0kqxK-Rtnz&_DYc6|vzk%8Gt(#`JVHII=3&dHyIpCk$mK6!Ru zpE6O^!(mq_nK-_>(W58d!U4BMjJQ*V^a|HD4T~Nr`{8TFraoglH%3v|v70j!#-BV< zUD_LDR!J@DlMoL6a!+|)E!;b-q2I!?VHx;kTARZVx;)7J(w@Ht%FAsbDL3WuR1Pnb zm(9RqH~IxXTyclwl1VVxZ+e_(Vr5W=>bLn+n8~{cad}w0X~-2Zee=$)O;i)Wzvf+9 zGiQ64oz%*bg5Jo51-e36TzSmvCTD2Z@K<;r5q=!UCIalDfk;L+8BOM-H7UjU^A5Hz z*^wpY0`7}}{G7eX*FawTE|@&ju|;g39B0|LqY>YSXfFsDYSSv*QgW@{w5=NnIWEs{ z89>PXX#EnmjVNzEdaY!i;?K5^?-Is1vp2X_2;x}iS1bUsSE~3-W8jrk0f2~pm6&t9 z=N=sV<03$PUoI0K8)}O5*+p6^f|_L@WE)%bNfsgJBe&r71#u0dmX{Qj8^xMF4e5a$ zKI)YrqpI|NG5E#RA8L^Vgb+!u*V-EuOICcc=|7lRzgz|QY1eKX$)ISZN}mXCoPc$p z(3@QV-8Yc0>>p2#yDz^n<}T@!qgrm1ErgrBq*hg^en#$wX;l%qco{2GU%e>k-zV2R zDP}5}*sN{4A>+Q7?2m0L3-Fy_)7Vy!N~bpb2t#cGB?4V3alEL-IA5GX9D|Xi0GYU* z09@YC)wEEoki268YO0p}*(!ugS?sBZOg?M$Aw6^v<{b$MT(ZC1D?KYNQ*2`r!s$}3 zAkt?@44>Bo7-Owd9X*2X7(uBHL{413LS~UgxvJl!Z=#%-t#xzU0e1o@*Q}>cTqlju|Jw_oEIxDpQ=e>dXyDS@n5}r<=5~h# zR)FfqTjn;;pCoSw5dFqkgRtUs) z%aYy$uUXo&I>0C{>z)~M>vs(|f{jaq-%5ig#*pc#IFdF>2jX2TBQ?}OkWC-I(-wYN zs9}BGD%Vb``iAxVai6<=16{K^_uP;vF1Gj!yj&WJfX}aiuuInPTph|(Ig;BPW($Ts zpDcG9kwAvhYB{x<_Q;lSLS-7C^Z0JZ1XVqFsVhYlUxc}YNJtxjMD0V4(I;B~F@F8V zPahH;JYeH1m9IHOAu0cbU?Qs_GX6eaWJ;aaSu!N*61jrh&`A9nk^$SuFs|c-%v~9} zF|)m4JUHobi*@UJ=3p+i!HfOU86bP75}Z)!s+;J8;_4YBjirZVVH=J(hlECHf5{2t zjt8nNcr(=)P9criRn$^#%7rgL1J%VTk# zCconQiC(^ydPl>RE})yX1#B z(1#UACchkCj}jMnGE@>)((razPrpyr< zw{S*HEhzeR`7JjDUF~4^qRF~cl7YmjXIWb_FG$WWl6w7@&NA&c1qK`G9O)9D&9hBL z9=Zq}P%`duB~RBqxO)V>>YuM$(*d(QFvt}lu(QydBpwWu4=yufri z$5Yl4bz`cg|8#n?FJ(S4E%Eki(O!d3%IYTg=|+h2?#PDAif3NXYfh-N*wcPb9|*PD zzblACi{LiDUp`2W0dMtkOwG3}wsq$7Iu)|g0|guYt;>S*JyI5-Njv6Z^}1=>Z|t8v z{qgO1NYNd&OX7KUAO?G8j6L#s?dvj;D`GD9P?Cx5SKTd4%>zE!Gh0FLN7XJ62Xs#g zH*9<)q+Zyxr8-PcqzA>Ah%ePrA&>@N3QdFLww%*=0}1N3Xx`wG1BRw{ufm}bLjZGmQ6}L0tBbhV>F> zbZ^D6xYdRmgR&kbWmQQ#I)^Y1?xaPlSVFFZvGgWphc(6aEd)LVWjj2pPoVCuent~E zqwZEJ6F#Tv%@G>0)Bag_bNOrlP09F*F8S`)IJ66%+sM5OVkU+O!Pɩ=4~A8C)0 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 z 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 z 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 z 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 Ef-nJqivR!s diff --git a/2.projects/NxD-inference/mistral-small-3-0-nxdi-guide.ipynb b/2.projects/NxD-inference/mistral-small-3-0-nxdi-guide.ipynb deleted file mode 100644 index e2a00e6..0000000 --- a/2.projects/NxD-inference/mistral-small-3-0-nxdi-guide.ipynb +++ /dev/null @@ -1,1173 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "5a972332", - "metadata": {}, - "source": [ - "# Guide to deploy, benchmark, and profile Mistral Small 2501 with NXDI and VLLM on Trn1\n", - "\n", - "This notebook provides a step-by-step guide for serving, profiling, and running benchmarks on Mistral Small 24B model on a **Trn1** instance. \n", - "\n", - "## Mistral Small 2501\n", - "\n", - "[Mistral Small 3.0](https://mistral.ai/news/mistral-small-3) is a 24B-parameter language model from Mistral AI optimized for low-latency performance across common AI tasks. Released under the Apache 2.0 license, it features both pre-trained and instruction-tuned versions designed for efficient local deployment. The model achieves 81% accuracy on the MMLU benchmark and performs competitively with larger models like Llama 3.3 70B and Qwen 32B, while operating at three times the speed on equivalent hardware.\n", - "\n", - "## Neuronx-Distributed-Inference (NxDI)\n", - "\n", - "[NxD Inference](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/nxdi-overview.html#nxdi-overview) (where NxD stands for NeuronX Distributed) is an open-source PyTorch-based inference library that simplifies deep learning model deployment on AWS Inferentia and Trainium instances. Introduced with Neuron SDK 2.21 release, it offers advanced inference capabilities, including features such as continuous batching and speculative decoding for high performance inference. Additionally, it supports inference engine for vLLM for seamless integration with the majority of customers’ production deployment systems. ML developers can use NxD Inference library at different levels of abstraction that fits their inference use case.\n", - "\n", - "## Overview\n", - "\n", - "1. **Check/Install Dependencies** for AWS Neuron (NXDI, vLLM fork, etc.).\n", - "2. **Optional**: Install additional utilities (`inference-benchmarking` (lm_eval), InfluxDB, `llmperf` for performance benchmarking, etc.).\n", - "3. **Download** Mistral Small 24B base model.\n", - "4. **Spin Up** a VLLM server, benchmark and pull a profile.\n", - " \n", - "### Prerequisites\n", - "\n", - "- **Amazon EC2 Trn1.32xlarge instance** with AWS Neuron drivers and recommended PyTorch environment.\n", - "- **NXDI virtual environment** (e.g., `aws_neuronx_venv_pytorch_2_5_nxd_inference`) is required.\n", - "\n", - "- To request a quota increase for `trn1.32xlarge` on EC2, follow these steps:\n", - "\n", - "1. Navigate to the [Service Quotas console](https://console.aws.amazon.com/servicequotas/).\n", - "2. Choose Amazon EC2.\n", - "3. Review your default quota for the following resources:\n", - " - `trn1.32xlarge` for ec2 on-demand use\n", - "4. If needed, request a quota increase for these resources.\n" - ] - }, - { - "cell_type": "markdown", - "id": "355c31c9-b15d-4879-84d4-92d62fd82d4d", - "metadata": {}, - "source": [ - "
\n", - "\n", - "NOTE: To make sure that you have enough quotas to support your usage requirements, it's a best practice to monitor and manage your service quotas. Requests for Amazon EC2 service quota increases are subject to review by AWS engineering teams. Also, service quota increase requests aren't immediately processed when you submit a request. After your request is processed, you receive an email notification.\n", - "
" - ] - }, - { - "cell_type": "markdown", - "id": "8934c846-b3f5-458a-b11b-77b813904e0c", - "metadata": {}, - "source": [ - "### Create Your EC2 instance\n", - "\n", - "Follow the steps here for a detailed set up of your EC2 instance setup:\n", - "\n", - "#### Steps:\n", - "- Navigate to the EC2 dashboard from the AWS mgmt console and launch your instance.\n", - "- Search for the Ubuntu 22.04 Neuron DLAMI.\n", - "- Choose the instance size as Trn1.32xlarge or any other Neuron based instance you're able to fit the model.\n", - "- Set the inbound rule for ssh to your local machine's ip address or anywhere (note that it is not in accordance to set this to allow trafic from any ipv4, please ensure you secure these ports once done testing.\n", - "- Create and specify your ssh key in the instance configuration step. You will need your .pem file\n", - "- Create your instance.\n", - "- Once you have launched your instance, navigate to either your terminal or VSCODE and follow the steps below:\n", - "\n", - "#### ssh for powershell:\n", - "\n", - "`$PUBLIC_DNS=\"paste your public ipv4 dns here\" # public ipv4 DNS, e.g. ec2-3-80-.... from ec2 console`\n", - "`$KEY_PATH=\"paste ssh key path here\" # local path to key, e.g. ssh/trn.pem`\n", - "\n", - "`ssh -i $KEY_PATH -L 8888:127.0.0.1:8888 -L 8000:127.0.0.1:8000 -L 8086:127.0.0.1:8086 -L 3001:127.0.0.1:3001 ec2-user@$PUBLIC_DNS`\n", - "\n", - "#### ssh for linux/macOS:\n", - "\n", - "`export PUBLIC_DNS=\"paste your public ipv4 dns here\" # public ipv4 DNS, e.g. ec2-3-80-.... from ec2 console`\n", - "`export KEY_PATH=\"paste ssh key path here\" # local path to key, e.g. ssh/trn.pem`\n", - "\n", - "`ssh -i $KEY_PATH -L 8888:127.0.0.1:8888 -L 8000:127.0.0.1:8000 -L 8086:127.0.0.1:8086 -L 3001:127.0.0.1:3001 ec2-user@$PUBLIC_DNS`\n", - "\n", - "You should have sshed into your EC2 instance. \n", - "\n", - "- Activate your NXDI venv:\n", - "\n", - "`source /opt/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate`\n", - "\n", - "- Activate jupyter server:\n", - "\n", - "`jupyter lab —no-browser —port 8888 —ip 0.0.0.0`\n", - "\n", - "You should see a familiar jupyter output with a URL to the notebook.\n", - "\n", - "`http://localhost:8888/....`\n", - "\n", - "We can click on it, and a jupyter environment opens in our local browser. Upload this notebook to your jupyter environment and run the steps in the cells below." - ] - }, - { - "cell_type": "markdown", - "id": "c8d12827-cdd6-49ad-a5b9-fae27f1e7cda", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "id": "511f6786-8ed7-4036-9070-3d6669fcb92b", - "metadata": {}, - "source": [ - "## Install and Set up Dependencies" - ] - }, - { - "cell_type": "markdown", - "id": "3652fc5a", - "metadata": {}, - "source": [ - "### 1. Validate / Activate Python Environment\n", - "\n", - "Inside a Jupyter notebook, using `source myenv/bin/activate` directly will not persist the environment in subsequent cells, because source runs in a subshell. Please run the command to actuvate the venv in the terminal or activate prior to spinning up the server" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1fa75aff", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "# (Optional) Uncomment or modify the following line to activate a custom environment.\n", - "#source /opt/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate\n", - "\n", - "echo 'Python environment check:'\n", - "which python\n", - "python --version" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e657dec1-61fc-4cf7-bec8-48ecd1213c75", - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile requirements.txt\n", - "torch==2.5.1\n", - "transformers==4.45.2\n", - "huggingface_hub\n", - "git-lfs" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3f4844ef-f16c-4bda-bb05-62ca83a7d65f", - "metadata": {}, - "outputs": [], - "source": [ - "!pip install -U -r requirements.txt --quiet" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "88dc63be-90d4-4145-b42b-ef3fcf4c1f6c", - "metadata": {}, - "outputs": [], - "source": [ - "! pip list | grep neuron" - ] - }, - { - "cell_type": "markdown", - "id": "e9200f12-356c-43f9-afad-68cb1b486e4b", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "id": "18ea6ed2", - "metadata": {}, - "source": [ - "### 2. Install Neuron vLLM Fork\n", - "\n", - "If you would like to serve your model via [vLLM](https://vllm.readthedocs.io/en/latest/) specialized for Neuron-based inference, you can install AWS Neuron's vLLM fork. NxD Inference integrates into vLLM by extending the model execution components responsible for loading and invoking models used in vLLM’s LLMEngine (see [link](https://docs.vllm.ai/en/latest/design/arch_overview.html#llm-engine) for more details on vLLM architecture). This means input processing, scheduling and output processing follow the default vLLM behavior.\n", - "\n", - "You enable the Neuron integration in vLLM by setting the device type used by `vLLM` to `neuron`.\n", - "\n", - "Currently, we support continuous batching and streaming generation in the NxD Inference vLLM integration. We are working with the vLLM community to enable support for other vLLM features like PagedAttention and Chunked Prefill on Neuron instances through NxD Inference in upcoming releases.\n", - "\n", - "\n", - "Skip this step if you do not need the vLLM server. Cloning and installing vLLM takes 8-10 minutes to complete\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "cb9c80f8", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "set -euxo pipefail\n", - "\n", - "if [ -d \"/home/ubuntu/upstreaming-to-vllm\" ]; then\n", - " echo \"Neuron vLLM fork already cloned. Skipping.\"\n", - "else\n", - " echo \"Cloning and installing AWS Neuron vLLM fork...\"\n", - " cd /home/ubuntu/\n", - " git clone -b neuron-2.22-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git #neuron 2.22 vllm version\n", - " cd upstreaming-to-vllm\n", - " pip install -r requirements-neuron.txt --quiet\n", - "\n", - " # Install in editable mode with device set to neuron\n", - " VLLM_TARGET_DEVICE=\"neuron\" pip install -e . --quiet\n", - "fi" - ] - }, - { - "cell_type": "markdown", - "id": "b2c245e5-21ee-4002-b85e-01127d3e4340", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "id": "adb91034", - "metadata": {}, - "source": [ - "### 3. (Optional) Install benchmarking and profiling tools\n", - "\n", - "#### 3.1 Install llmperf\n", - "\n", - "If you'd like to run benchmarks or load tests, you can install [llmperf](https://github.com/ray-project/llmperf). Skip if not needed.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "cba57d72", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "if pip show llmperf > /dev/null 2>&1; then\n", - " echo \"llmperf is already installed. Skipping.\"\n", - "else\n", - " echo \"Installing llmperf...\"\n", - " cd /home/ubuntu/\n", - " git clone https://github.com/ray-project/llmperf.git > /dev/null 2>&1 --quiet\n", - " cd llmperf\n", - " pip install -e . --quiet\n", - "fi" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e1b95852-a69f-4c6a-bdcd-915bdaf6d46a", - "metadata": {}, - "outputs": [], - "source": [ - "!pip list| grep neuron" - ] - }, - { - "cell_type": "markdown", - "id": "7ef8c80e-20dd-4d40-8d38-9973f03e08eb", - "metadata": {}, - "source": [ - "#### 3.2 Install AWS Neuron Tools (If Needed)\n", - "\n", - "This cell installs the Neuron packages for profiling and other tooling. If already installed, the script checks and skips. For more information, see [Installing Neuron Tools](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/index.html).\n", - "\n", - "> **Note**: If you have your apt sources already configured and have installed the Neuron packages, you can skip this step.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2855f8f0-7451-454d-a25f-2ac3574334de", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "set -euxo pipefail\n", - "\n", - "# Check if aws-neuronx-tools is installed\n", - "if dpkg -s aws-neuronx-tools > /dev/null 2>&1; then\n", - " echo \"aws-neuronx-tools is already installed. Skipping.\"\n", - "else\n", - " echo \"Installing aws-neuronx-tools...\"\n", - " . /etc/os-release\n", - "\n", - " sudo tee /etc/apt/sources.list.d/neuron.list > /dev/null < /dev/null 2>&1; then\n", - " echo \"InfluxDB2 is already installed, skipping.\"\n", - " if systemctl is-active --quiet influxdb; then\n", - " echo \"InfluxDB is already running.\"\n", - " else\n", - " sudo systemctl start influxdb\n", - " echo \"Setting up InfluxDB ...\"\n", - " # influx setup\n", - " fi\n", - "else\n", - " # Install InfluxDB\n", - " wget -q https://repos.influxdata.com/influxdata-archive_compat.key\n", - " echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && \\\n", - " cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null\n", - " echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list\n", - " \n", - " sudo apt-get update && sudo apt-get install influxdb2 influxdb2-cli -y\n", - " sudo systemctl start influxdb\n", - " \n", - " # Run non-interactive influx setup with all necessary flags\n", - " # replace the following flags below with the necessary credentials\n", - " influx setup \\\n", - " --username admin \\\n", - " --password testpassowrd \\\n", - " --org yourorg \\\n", - " --bucket yourbucket \\\n", - " --token yoursupersecrettoken \\\n", - " --force\n", - "\n", - "fi" - ] - }, - { - "cell_type": "markdown", - "id": "16eb98a5-dcc6-4d82-8283-949c6b3bf266", - "metadata": {}, - "source": [ - "#### 3.4 Accuracy-benchmarking with lm_eval\n" - ] - }, - { - "cell_type": "markdown", - "id": "d614ddb2-5284-488c-b377-77598508e001", - "metadata": {}, - "source": [ - "Copy the [inference-benchmarking](https://github.com/aws-neuron/aws-neuron-samples/tree/master/inference-benchmarking/) directory to some location on your instance. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8702b601-0a7e-4d87-8004-fa7bb7e0389a", - "metadata": {}, - "outputs": [], - "source": [ - "! git clone https://github.com/aws-neuron/aws-neuron-samples.git" - ] - }, - { - "cell_type": "markdown", - "id": "12f5e818-6488-4270-975a-81845b3d3cd4", - "metadata": {}, - "source": [ - "Change directory to the your copy of inference-benchmarking. Install other required dependencies in the same python env (e.g aws_neuron_venv_pytorch if you followed manual install NxD Inference ) by:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "07dddce8-101c-4d2d-b01c-fb93c6a07b72", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "cd /home/ubuntu/aws-neuron-samples/inference-benchmarking/\n", - "pip install -r requirements.txt --quiet" - ] - }, - { - "cell_type": "markdown", - "id": "4abe3940-45bb-4bae-a12f-d7d6959a2927", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "id": "0d1970fc", - "metadata": {}, - "source": [ - "## 4. Download or Provide Your Model\n", - "\n", - "Below is a template for downloading the model. You can skip or adjust if you already have a local model.\n", - "\n", - "For more information on model checkpoint usage, see the [NxDI inference with Hugging Face-based models](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/developer_guides/feature-guide.html)." - ] - }, - { - "cell_type": "markdown", - "id": "ccff01a8-94f7-4d10-bdf7-71229ec19cb9", - "metadata": {}, - "source": [ - "You will need to log in to huggingface from the commandline. You will need your token from https://huggingface.co/settings/tokens Paste it to replace the MY_HUGGINGFACE_TOKEN_HERE text below. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d7186278-332e-4e07-87b8-fdf1a30f3335", - "metadata": {}, - "outputs": [], - "source": [ - "!git config --global credential.helper store\n", - "from huggingface_hub import notebook_login\n", - "notebook_login()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "860b9863-fc7e-4752-ae55-8d4b89312d4b", - "metadata": {}, - "outputs": [], - "source": [ - "#run the following code in the terminal to install git-lfs" - ] - }, - { - "cell_type": "markdown", - "id": "2500bcdc-6f0a-4484-b64d-dc23ef94c445", - "metadata": {}, - "source": [ - "`sudo apt-get update`\n", - "\n", - "`sudo apt-get install git-lfs`\n", - "\n", - "`git lfs install`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "01d2bdbf-1af1-4a20-a255-7642b8da704d", - "metadata": {}, - "outputs": [], - "source": [ - "#check that git lfs is installed on path" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c72f91e7-89ee-4b90-99f4-91239197ed72", - "metadata": {}, - "outputs": [], - "source": [ - "!git lfs version" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a8774eaf-d975-49ab-a1dc-2f6062513aab", - "metadata": {}, - "outputs": [], - "source": [ - "#start a tmux session and run the following code in the terminal:" - ] - }, - { - "cell_type": "markdown", - "id": "5117214b-99fd-4ecf-92fa-e084ee4d95cc", - "metadata": {}, - "source": [ - "`sudo apt-get update`\n", - "\n", - "`sudo apt-get install tmux`\n", - "\n", - "`tmux new -s mysession`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bcae2706-cd59-4e38-9353-fe9d3b2283ff", - "metadata": {}, - "outputs": [], - "source": [ - "# run the following code to download the model in a tmux session since this may take a while - run in terminal" - ] - }, - { - "cell_type": "markdown", - "id": "fb753745-5fd9-4e17-984f-e1647be82dda", - "metadata": {}, - "source": [ - "`git clone https://huggingface.co/mistralai/Mistral-Small-24B-Instruct-2501`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "baae5abf-e4e8-4418-8747-d5bc05e7f3fe", - "metadata": {}, - "outputs": [], - "source": [ - "!du -sh /home/ubuntu/Mistral-Small-24B-Instruct-2501/ #check if the full model was copied in" - ] - }, - { - "cell_type": "markdown", - "id": "6f481bc0-8312-4d24-8dd3-ad834518d1dc", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "id": "083589fe-ee9b-4908-bbe0-b66fff1703a9", - "metadata": {}, - "source": [ - "## 5. Compile and save model and run generation with HuggingFaceGenerationAdapter- `inference_demo.py`\n", - "\n", - "NxD Inference supports running inference with the HuggingFace generate inference. To use HuggingFace-style generation, create a HuggingFaceGenerationAdapter that wraps a Neuron application model. Then, you can call generate on the adapted model. In the below cell, we use the `inference_demo` script that NXDI provides to compile, save, and run some prompts with our Mistral Small 24B model, for more information on the flags we set, refer to the [nxdi api reference guide](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/api-guides/api-guide.html)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a76a78e0-4ed2-4057-b702-d472d24f515f", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "# Replace this with the path where you downloaded and saved the model files.\n", - "# These should be the same paths used when compiling the model.\n", - "MODEL_PATH=\"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", - "COMPILED_MODEL_PATH=\"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", - "TP_DEGREE=32\n", - "\n", - "inference_demo \\\n", - " --model-type llama \\\n", - " --task-type causal-lm \\\n", - " run \\\n", - " --model-path $MODEL_PATH \\\n", - " --compiled-model-path $COMPILED_MODEL_PATH \\\n", - " --torch-dtype bfloat16 \\\n", - " --start_rank_id 0 \\\n", - " --tp-degree $TP_DEGREE \\\n", - " --batch-size 1 \\\n", - " --max-context-length 12288 \\\n", - " --seq-len 12800 \\\n", - " --on-device-sampling \\\n", - " --top-k 1 \\\n", - " --do-sample \\\n", - " --fused-qkv \\\n", - " --sequence-parallel-enabled \\\n", - " --pad-token-id 2 \\\n", - " --enable-bucketing \\\n", - " --context-encoding-buckets 2048 4096 8192 12288 \\\n", - " --token-generation-buckets 2048 4096 8192 12800 \\\n", - " --prompt \"What is annapurna labs?\" 2>&1 | tee log" - ] - }, - { - "cell_type": "markdown", - "id": "7df76059-45ba-4726-9bcc-7a545a6d1575", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "id": "9a8ba793-3901-4620-b4b0-5150325a005a", - "metadata": {}, - "source": [ - "## 6. vLLM demo and perf benchmarking - standalone model " - ] - }, - { - "cell_type": "markdown", - "id": "cc9425cb-9354-4f0a-8375-900961ff54af", - "metadata": {}, - "source": [ - "#### 6.1 Run Mistral Small 2501 on Trainium" - ] - }, - { - "cell_type": "markdown", - "id": "1d58b2a2-8475-4599-8750-24253c3c9c29", - "metadata": {}, - "source": [ - "Here is an example for running online inference with Mistral Small 2501 and let's get some perf results. We will first compile and run generation on a sample prompt using a command installed by neuronx-distributed-inference. The script compiles the model and runs generation on the given input prompt. Note the path we used to save the compiled model. This path should be used when launching vLLM server for inference so that the compiled model can be loaded without recompilation. Please refer to [NxD Inference API Reference](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/api-guides/api-guide.html) and [VLLM user guide for NxDI](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/developer_guides/vllm-user-guide.html)for more information on these `inference_demo` flags." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "71c866cb-9ace-4fae-a940-8776c4e41ad1", - "metadata": {}, - "outputs": [], - "source": [ - "!pip list | grep neuron" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8fd75bb0-6fb8-4f89-8203-73b8247fc879", - "metadata": {}, - "outputs": [], - "source": [ - "# RUN THE FOLLOWING CELL IN A TERMINAL - spin up the vllm server" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ca565569-45f9-4c0c-b81d-e0c7eaa98249", - "metadata": {}, - "outputs": [], - "source": [ - "# These should be the same paths used when compiling the model. - command for terminal\n", - "MODEL_PATH=\"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", - "COMPILED_MODEL_PATH=\"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", - "\n", - "export VLLM_NEURON_FRAMEWORK=\"neuronx-distributed-inference\"\n", - "export NEURON_COMPILED_ARTIFACTS=$COMPILED_MODEL_PATH\n", - "VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \\\n", - " --model $MODEL_PATH \\\n", - " --max-num-seqs 1 \\\n", - " --max-model-len 12800 \\\n", - " --tensor-parallel-size 32 \\\n", - " --device neuron \\\n", - " --use-v2-block-manager \\\n", - " --port 8000 &\n", - "PID=$!\n", - "echo \"vLLM server started with PID $PID\"" - ] - }, - { - "cell_type": "markdown", - "id": "2d24058f-67a6-4f94-9a39-0ce4ab64d801", - "metadata": {}, - "source": [ - "Let's send a quick request with a python client to the server:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "124db78f-f910-4bcd-b631-4a2fb4166a54", - "metadata": {}, - "outputs": [], - "source": [ - "from openai import OpenAI\n", - "\n", - "# Client Setup\n", - "openai_api_key = \"EMPTY\"\n", - "openai_api_base = \"http://localhost:8000/v1\"\n", - "\n", - "client = OpenAI(\n", - " api_key=openai_api_key,\n", - " base_url=openai_api_base,\n", - ")\n", - "\n", - "models = client.models.list()\n", - "model_name = models.data[0].id\n", - "\n", - "# Sampling Parameters\n", - "max_tokens = 1024\n", - "temperature = 1.0\n", - "top_p = 1.0\n", - "top_k = 50\n", - "stream = False\n", - "\n", - "# Chat Completion Request\n", - "response = client.chat.completions.create(\n", - " model=model_name,\n", - " messages=[\n", - " {\"role\": \"system\", \"content\": \"You are a helpful AI assistant.\"},\n", - " {\"role\": \"user\", \"content\": \"What is AWS Neuron?\"}\n", - " ],\n", - ")\n", - "\n", - "# Parse the response\n", - "generated_text = \"\"\n", - "generated_text = response.choices[0].message.content\n", - "\n", - "print(generated_text)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6d9c4bad-6cb2-43d6-86db-d2011f1bdaf3", - "metadata": {}, - "outputs": [], - "source": [ - "!neuron-ls # show running processes - vllm server is still running" - ] - }, - { - "cell_type": "markdown", - "id": "8d8f6afb-6f64-4387-ad65-a7fe705d9fe9", - "metadata": {}, - "source": [ - "----" - ] - }, - { - "cell_type": "markdown", - "id": "053e81d2-e2cf-4ef7-9a55-1fb495bc416f", - "metadata": {}, - "source": [ - "#### 6.2 llmperf- let's run some quick benchmarks " - ] - }, - { - "cell_type": "markdown", - "id": "c45478cd-64a5-4a9a-8622-294848e2f852", - "metadata": {}, - "source": [ - "After the above steps, the vllm server should be running. You can now measure the performance using LLMPerf. Before we can use the llmperf package, we need to make a few changes to its code. Follow benchmarking with LLMPerf guide to apply the code changes.\n", - "\n", - "Below is a sample shell script to run LLMPerf. To provide the model with 10000 tokens as input and generate 1500 tokens as output on average, we use the following parameters from LLMPerf:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "aa9ab418-c069-40cb-8041-5c0574c3377f", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "cd /home/ubuntu/llmperf/\n", - "\n", - "MODEL_PATH=\"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", - "COMPILED_MODEL_PATH=\"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", - "OUTPUT_PATH=llmperf-results-sonnets\n", - "\n", - "export OPENAI_API_BASE=\"http://localhost:8000/v1\"\n", - "export OPENAI_API_KEY=\"mock_key\"\n", - "\n", - "python token_benchmark_ray.py \\\n", - " --model $MODEL_PATH \\\n", - " --mean-input-tokens 10000 \\\n", - " --stddev-input-tokens 0 \\\n", - " --mean-output-tokens 1500 \\\n", - " --stddev-output-tokens 0 \\\n", - " --num-concurrent-requests 1\\\n", - " --timeout 3600 \\\n", - " --max-num-completed-requests 50 \\\n", - " --additional-sampling-params '{}' \\\n", - " --results-dir $OUTPUT_PATH \\\n", - " --llm-api \"openai\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c38d5e8d-0c16-4061-b22f-c558ba1d5050", - "metadata": {}, - "outputs": [], - "source": [ - "!sudo kill 55509 #stop the server" - ] - }, - { - "cell_type": "markdown", - "id": "dc00332e-d7e0-4607-b91e-e08503a2319a", - "metadata": {}, - "source": [ - "Summarized results:" - ] - }, - { - "cell_type": "markdown", - "id": "3943d616-6474-40a7-b9cd-61faac231c15", - "metadata": {}, - "source": [ - "| Scenario | TTFT (p50 ms) | TPOT (p50 ms) | Output-token Throughput (tokens/s, p50) |\n", - "|---------------------------------------------------------------------------|---------------|---------------|-----------------------------------------|\n", - "| Mistral-Small-24B-Instruct-2501 on Trainium (OpenAI-style API) | 347 | 10.55 | 107.35 |\n" - ] - }, - { - "cell_type": "markdown", - "id": "2c99fb0e-5712-43f1-be25-2892342bbce4", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "id": "f6ec3558-b527-44a2-b107-72a6c89d4722", - "metadata": {}, - "source": [ - "#### 6.3 Running Evaluations\n", - "\n", - "There are two methods that you can use the evaluation scirpts to run your evaluation. For more information, check out the [inference-demo](https://github.com/aws-neuron/aws-neuron-samples/tree/master/inference-benchmarking/)directory and [tutorials](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/tutorials/trn1-llama3.1-70b-instruct-accuracy-eval-tutorial.html) in NXDI.\n", - "\n", - "1. Using a `yaml` configuration file and `accuracy.py` script\n", - "\n", - "2. Writing your own python script that uses several components provided in `accuracy.py` and `server_config.py`\n", - "\n", - "In this notebook we only demonstrate running an eval with the `yaml` config file.\n", - "\n", - "In this method all you need is to create a yaml config file that specifies the server configuration and testing scenario you want to run. Create `config.yaml` with the following content." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2c81c85a-6e50-47f5-9baa-f22e465f7297", - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile mistral_config.yaml\n", - "\n", - "server:\n", - " name: \"Mistral-Small-24B-Instruct\"\n", - " model_path: \"/home/ubuntu/Mistral-Small-24B-Instruct-2501/\"\n", - " model_s3_path: null\n", - " compiled_model_path: \"/home/ubuntu/traced_model/Mistral-Small-24B-Instruct-2501/\"\n", - " max_seq_len: 12800\n", - " context_encoding_len: 12288\n", - " tp_degree: 32\n", - " n_vllm_threads: 32\n", - " server_port: 8888\n", - " continuous_batch_size: 1\n", - "\n", - "test:\n", - " accuracy:\n", - " mytest:\n", - " client: \"lm_eval\"\n", - " datasets: [\"gsm8k_cot\"]\n", - " max_concurrent_requests: 1\n", - " timeout: 3600\n", - " client_params:\n", - " limit: 200\n", - " use_chat: True" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b4c171e0-a6ef-4782-bb67-2927d393e4b7", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "if test -f \"/home/ubuntu/aws-neuron-samples/inference-benchmarking/mistral_config.yaml\"; then\n", - " echo \"config file exists.\"\n", - "else \n", - " echo \"Copying config file.\"\n", - " mv /home/ubuntu/mistral_config.yaml /home/ubuntu/aws-neuron-samples/inference-benchmarking/\n", - "fi" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1efea9af-ed19-476e-9841-764ea6f1b101", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "cd /home/ubuntu/aws-neuron-samples/inference-benchmarking/\n", - "python accuracy.py --config mistral_config.yaml" - ] - }, - { - "cell_type": "markdown", - "id": "6ee55692-a5f9-41f5-a955-ce36c52f5b96", - "metadata": {}, - "source": [ - "Results Summary:\n", - "\n", - "Accuracy_mytest_gsm8k_cot:\n", - " Saved at results/accuracy/mytest/gsm8k_cot/__home__ubuntu__Mistral-Small-24B-Instruct-2501__/results_2025-04-26T20-02-47.843052.json:\n", - " \n", - " Metrics: {'gsm8k_cot': {'AccuracyExactMatchStrictMatch': 39.5, 'AccuracyExactMatchStrictMatchStderr': 3.46537, 'AccuracyExactMatchFlexibleExtract': 78.5, 'AccuracyExactMatchFlexibleExtractStderr': 2.91224}}" - ] - }, - { - "cell_type": "markdown", - "id": "c0b0f6af-8bb3-4e62-b98e-a6bb779f85a4", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "id": "b7b7fa83-aa5c-44c1-986b-c472a1243ed4", - "metadata": {}, - "source": [ - "#### 6.4 Profiling with `neuron-profile`" - ] - }, - { - "cell_type": "markdown", - "id": "a3376804-9c21-4e68-ba32-e299ed75fb9d", - "metadata": {}, - "source": [ - "`neuron-profile` helps developers identify performance bottlenecks and optimize their workloads for NeuronDevices. `neuron-profile` provides insights into NeuronDevice activity including the instructions executed on each compute engine (ex. Tensor engine, Vector engine, etc.), DMA data movement activity, and performance metrics such as engine utilization, DMA throughput, memory usage, and more. NeuronDevice activity is collected by the `neuron-profile` capture command which runs the model with tracing enabled. Profiling typically has near zero overhead because NeuronDevices have dedicated on-chip hardware profiling." - ] - }, - { - "cell_type": "markdown", - "id": "c2be3b7c-a7e0-4295-b306-e31bbbac8da9", - "metadata": {}, - "source": [ - "Let's cd into `/tmp/nxd_model` for the compiler working dir with the `context_encoding` and `token_generation` directories that we set the context encoding and token generation buckets for, which hold the NEFFs for these. The neuron-profile tool can both capture and post-process profiling information. neuron-profile takes a compiled model (a NEFF), executes it, and saves the profile results to a NTFF (profile.ntff by default)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8d6ce0b5-f029-41a3-9971-a087341584fc", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash \n", - "cd /tmp/nxd_model/\n", - "ls #list directories\n", - "cd context_encoding_model\n", - "ls " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ea3c44a0-7c75-46f8-adb6-e413344e51bf", - "metadata": {}, - "outputs": [], - "source": [ - "#_tp0_bk0 _tp0_bk1 _tp0_bk2 _tp0_bk3 - are the context encoding buckets" - ] - }, - { - "cell_type": "markdown", - "id": "f9398648-ae6c-4069-baee-338e1205a1e0", - "metadata": {}, - "source": [ - "##### Capturing profiles for multi-worker jobs\n", - "`neuron-profile` can capture profiles for collectives-enabled NEFFs running across multiple NeuronCores, NeuronDevices, or even nodes. This is useful for understanding performance and communication overheads when deploying larger distributed models.\n", - "\n", - "The following example, performs a distributed run across all NeuronDevices and NeuronCores on our trn1.32xlarge instance, capturing profiles for all 32 workers (one for each NeuronCore)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c746ce34-fc4a-48bb-9558-c1babbcd7c91", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "# 1. Make sure the directory exists and is writable\n", - "mkdir -p /tmp/output/ \n", - "\n", - "cd /tmp/nxd_model/context_encoding_model/_tp0_bk1/\n", - "# 2. Run the capture, pointing -s at that directory\n", - "neuron-profile capture \\\n", - " -n graph.neff \\\n", - " --collectives-workers-per-node 32 \\\n", - " -s /tmp/output/profile.ntff \n" - ] - }, - { - "cell_type": "markdown", - "id": "1c5250d4-f3a7-494b-9c42-d14fbbb07a26", - "metadata": {}, - "source": [ - "Now if we check our output dir- A profile is saved for each worker in the output directory." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6b40fe3a-f01f-4f62-96f5-2df5db0d05dd", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash \n", - "cd /tmp/output/\n", - "ls" - ] - }, - { - "cell_type": "markdown", - "id": "ee5fbaba-ecfb-4f5e-8af8-31bd6df05162", - "metadata": {}, - "source": [ - "##### Viewing profiles for multi-worker jobs\n", - "Profiles from multi-worker jobs (i.e. more than one NeuronCore) can either be viewed individually or in a combined collectives view. Since profile data is often similar between workers and processing profile data for all workers can be time-consuming, it is recommended to first explore the profile for a single worker or small subset of workers. Viewing the profile for a specific worker is the same as for single-worker profiles." - ] - }, - { - "cell_type": "markdown", - "id": "a5b39974-8a7a-456b-b035-c841adecb8d1", - "metadata": {}, - "source": [ - "In the beginning, we forwarded port 3001 and 806. This is because `neuron-profile` view is running on a remote instance, we need to use port forwarding to access the profiles.\n" - ] - }, - { - "cell_type": "markdown", - "id": "898c5311-fc27-4dc3-b9e1-ec3da5654089", - "metadata": {}, - "source": [ - "Viewing the profile for a specific worker is as below." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "504f6ec8-ee60-49b2-912f-b2a9be8c1f03", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "cd /tmp/nxd_model/context_encoding_model/_tp0_bk1/\n", - "neuron-profile view -n graph.neff -s /tmp/output/profile_rank_2.ntff" - ] - }, - { - "cell_type": "markdown", - "id": "e3308394-08a3-413d-a38b-d3266ae2c58f", - "metadata": {}, - "source": [ - "You will see an output like- View profile at http://localhost:3001/profile/n_a1143c514431fb4c23b7aae9208fd1a89cad42f6" - ] - }, - { - "cell_type": "markdown", - "id": "f756c277-bc7b-462a-91ed-eaaf3fa6dd8d", - "metadata": {}, - "source": [ - "![image-profile](imgs/img-neff.png)" - ] - }, - { - "cell_type": "markdown", - "id": "3e323e2f-3980-4ac7-8c32-ed395c937f0e", - "metadata": {}, - "source": [ - "To view the profile for multiple workers, pass the directory containing all worker profiles to neuron-profile." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0b082bd6-ed2c-4d70-b092-1e97fe9df1ce", - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "cd /tmp/nxd_model/context_encoding_model/_tp0_bk1/\n", - "neuron-profile view -n graph.neff -d /tmp/output" - ] - }, - { - "cell_type": "markdown", - "id": "eb861db0-99e5-42ce-b9c9-bb7cc185af6a", - "metadata": {}, - "source": [ - "For more on profiling with neuron and understanding profiles,check out the [link](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-sys-tools/neuron-profile-user-guide.html) to `neuron-profile` user guide" - ] - }, - { - "cell_type": "markdown", - "id": "40aca927-7701-4f4e-9320-cc2faf9d05bd", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "id": "f071be6d-3a5c-4fa0-b02f-4cf3802ff7c2", - "metadata": {}, - "source": [ - "## Conclusion" - ] - }, - { - "cell_type": "markdown", - "id": "e70149be-ba89-4320-a17c-082ba6a72b6d", - "metadata": {}, - "source": [ - "In this notebook, we successfully walked through deploying, benchmarking, and generating profiles for NEFFs on TRN1 using Mistral Small 2501" - ] - }, - { - "cell_type": "markdown", - "id": "a281311e-0c58-41c1-9f61-93735c768f1f", - "metadata": {}, - "source": [ - "---" - ] - }, - { - "cell_type": "markdown", - "id": "d98b2877-bb28-4762-8ef2-9165ef505046", - "metadata": {}, - "source": [ - "#### Distributors\n", - "- AWS\n", - "- Mistral" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "conda_python3", - "language": "python", - "name": "conda_python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.16" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/2.projects/NxD-inference/nxdi.txt b/2.projects/NxD-inference/nxdi.txt deleted file mode 100644 index 8b13789..0000000 --- a/2.projects/NxD-inference/nxdi.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/.env b/2.projects/neuronx-distributed/nxd-inference-eks/.env index b81a5fd..bfc3d43 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/.env +++ b/2.projects/neuronx-distributed/nxd-inference-eks/.env @@ -1,11 +1,24 @@ # Hugging Face Configuration HF_TOKEN=your_huggingface_token_here -MODEL_ID=meta-llama/Meta-Llama-3-70B-Instruct +HF_MODEL_ID=deepseek-ai/DeepSeek-R1-Distill-Llama-70B +HF_DRAFT_MODEL_ID=meta-llama/Llama-3.2-1B-Instruct MODEL_NAME=llama-3-70B-inst # Inference Configuration -MAX_MODEL_LEN=8192 # used by vllm- ensure it is the same as seq len -SEQ_LEN=8192 #used by main.py +MAX_MODEL_LEN=12800 +SEQ_LEN=12800 +MAX_CONTEXT_LEN=12288 -MAX_NUM_SEQS=4 -TENSOR_PARALLEL_SIZE=8 \ No newline at end of file +# Neuron Configuration +TENSOR_PARALLEL_SIZE=32 +TP_DEGREE=32 # Add this - same as TENSOR_PARALLEL_SIZE +NAMESPACE=neuron-inference +BATCH_SIZE=1 +MAX_NUM_SEQS=1 +ENABLE_SPECULATIVE=false # Start with false +SPECULATION_LENGTH=7 # Add this + +# Paths +MODEL_PATH=/shared/models/Llama-3.3-70B-Instruct +COMPILED_MODEL_PATH=/shared/traced_model/Llama-3.3-70B-Instruct +DRAFT_MODEL_PATH=/shared/models/Llama-3.2-1B-Instruct \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml index 5185e81..435a451 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml @@ -9,26 +9,36 @@ data: set -e # Model paths - MODEL_PATH="/shared/models/Llama-3.3-70B-Instruct/" - COMPILED_MODEL_PATH="/shared/traced_model/Llama-3.3-70B-Instruct/" + MODEL_PATH="${MODEL_PATH}" + COMPILED_MODEL_PATH="${COMPILED_MODEL_PATH}" + + HF_TOKEN="${HF_TOKEN}" + HF_MODEL_ID="${HF_MODEL_ID}" + HF_DRAFT_MODEL_ID="${HF_DRAFT_MODEL_ID}" + + + # TP and batch config + ENABLE_SPECULATIVE="${ENABLE_SPECULATIVE}" + TP_DEGREE="${TP_DEGREE}" + BATCH_SIZE="${BATCH_SIZE}" + MAX_CONTEXT_LEN="${MAX_CONTEXT_LEN}" + SEQ_LEN="${SEQ_LEN}" + SPECULATION_LENGTH="${SPECULATION_LENGTH}" # Optional: For speculative decoding - DRAFT_MODEL_PATH="/shared/models/Llama-3.2-1B-Instruct/" + DRAFT_MODEL_PATH="${DRAFT_MODEL_PATH}" - # Neuron configuration - NUM_CORES=128 - TP_DEGREE=64 - LNC=2 + # Neuron configuration - ADD THESE + NUM_CORES="${NUM_CORES}" + LNC="${LNC}" + MAX_CONTEXT_LEN="${MAX_CONTEXT_LEN}" + SEQ_LEN="${SEQ_LEN}" + SPECULATION_LENGTH="${SPECULATION_LENGTH}" - export NEURON_RT_VIRTUAL_CORE_SIZE=$LNC - export NEURON_RT_NUM_CORES=$((NUM_CORES/NEURON_RT_VIRTUAL_CORE_SIZE)) - export NEURON_RT_EXEC_TIMEOUT=600 - export XLA_DENSE_GATHER_FACTOR=0 - export NEURON_RT_INSPECT_ENABLE=0 # Standard compilation (without speculative decoding) if [ "$ENABLE_SPECULATIVE" != "true" ]; then - echo "Compiling standard model..." + echo "Compiling standard neuron llama..." inference_demo \ --model-type llama \ --task-type causal-lm \ @@ -39,9 +49,9 @@ data: --start_rank_id 0 \ --local_ranks_size $TP_DEGREE \ --tp-degree $TP_DEGREE \ - --batch-size ${BATCH_SIZE} \ - --max-context-length 12288 \ - --seq-len 12800 \ + --batch-size $BATCH_SIZE \ + --max-context-length $MAX_CONTEXT_LEN \ + --seq-len $SEQ_LEN \ --on-device-sampling \ --top-k 1 \ --do-sample \ @@ -69,7 +79,7 @@ data: --start_rank_id 0 \ --local_ranks_size $TP_DEGREE \ --tp-degree $TP_DEGREE \ - --batch-size ${BATCH_SIZE} \ + --batch-size $BATCH_SIZE \ --max-context-length 12288 \ --seq-len 12800 \ --on-device-sampling \ @@ -82,7 +92,7 @@ data: --cc-pipeline-tiling-factor 1 \ --draft-model-path $DRAFT_MODEL_PATH \ --enable-fused-speculation \ - --speculation-length 7 \ + --speculation-length $SPECULATION_LENGTH \ --pad-token-id 2 \ --enable-bucketing \ --context-encoding-buckets 2048 4096 8192 12288 \ @@ -164,9 +174,30 @@ spec: mountPath: /scripts env: - name: BATCH_SIZE - value: "1" # Can be 1-4 + value: "${BATCH_SIZE}" - name: ENABLE_SPECULATIVE - value: "false" # Set to "true" for speculative decoding + value: "${ENABLE_SPECULATIVE}" + - name: MODEL_PATH + value: "${MODEL_PATH}" + - name: COMPILED_MODEL_PATH + value: "${COMPILED_MODEL_PATH}" + - name: DRAFT_MODEL_PATH + value: "${DRAFT_MODEL_PATH}" + - name: TP_DEGREE + value: "${TP_DEGREE}" + - name: MAX_CONTEXT_LEN + value: "${MAX_CONTEXT_LEN}" + - name: SEQ_LEN + value: "${SEQ_LEN}" + - name: SPECULATION_LENGTH + value: "${SPECULATION_LENGTH}" + - name: HF_TOKEN + value: "${HF_TOKEN}" # + # Set to "true" for speculative decoding + - name: HF_MODEL_ID + value: "${HF_MODEL_ID}" + - name: HF_DRAFT_MODEL_ID + value: "${HF_DRAFT_MODEL_ID}" # volumes: - name: shared-storage persistentVolumeClaim: @@ -181,7 +212,7 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: efs-models-pvc - namespace: neuron-inference + namespace: ${NAMESPACE} spec: accessModes: - ReadWriteMany diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml index 98d3b35..a44c2d1 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml @@ -7,10 +7,12 @@ data: start_vllm.sh: | #!/bin/bash set -e - - export NEURON_RT_INSPECT_ENABLE=0 - export NEURON_RT_VIRTUAL_CORE_SIZE=2 - + + # + export HF_TOKEN=your_huggingface_token_here + export HF_MODEL_ID=deepseek-ai/DeepSeek-R1-Distill-Llama-70B + HF_DRAFT_MODEL_ID=meta-llama/Llama-3.2-1B-Instruct + # Model paths MODEL_PATH="/shared/models/Llama-3.3-70B-Instruct/" COMPILED_MODEL_PATH="/shared/traced_model/Llama-3.3-70B-Instruct/" diff --git a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/.env b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/.env deleted file mode 100644 index e69de29..0000000 diff --git a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/Cluster-setup.md b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/Cluster-setup.md deleted file mode 100644 index daed665..0000000 --- a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/Cluster-setup.md +++ /dev/null @@ -1 +0,0 @@ -update ConfigMap to update all pods, or add to .env at start \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/1p1d-sts.yaml b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/1p1d-sts.yaml deleted file mode 100644 index 32b37f4..0000000 --- a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/1p1d-sts.yaml +++ /dev/null @@ -1,308 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: disaggregated-server-scripts - namespace: neuron-inference -data: - server.sh: | - #!/bin/bash - # Official tutorial server.sh with direct IP support - - # Parse command line arguments - while [[ $# -gt 0 ]]; do - case $1 in - --tp-degree) - TP_DEGREE="$2" - shift 2 - ;; - --batch-size) - BATCH_SIZE="$2" - shift 2 - ;; - --model-path) - MODEL_PATH="$2" - shift 2 - ;; - --compiled-model-path) - COMPILED_MODEL_PATH="$2" - shift 2 - ;; - --send-ip) - SEND_IP="$2" - shift 2 - ;; - --recv-ip) - RECV_IP="$2" - shift 2 - ;; - *) - echo "Unknown parameter: $1" - echo "Usage: $0 --tp-degree --batch-size --model-path \ - --compiled-model-path --send-ip --recv-ip " - exit 1 - ;; - esac - done - - export NEURON_RT_ASYNC_SENDRECV_BOOTSTRAP_PORT=45645 - export NEURON_RT_ASYNC_SENDRECV_EXPERIMENTAL_ENABLED=1 - export NEURON_COMPILED_ARTIFACTS="$COMPILED_MODEL_PATH" - export NEURON_SEND_IP="$SEND_IP" - export NEURON_RECV_IP="$RECV_IP" - export NEURON_RT_ASYNC_EXEC_MAX_INFLIGHT_REQUESTS=2 - - if [ "$SEND" = "1" ]; then - PORT=8100 - if [ "$SINGLE_INSTANCE" = "1" ]; then - export NEURON_RT_VISIBLE_CORES=0-31 - fi - TRANSFER_CONFIG='{ - "kv_connector":"NeuronConnector", - "kv_buffer_device":"cpu", - "kv_role":"kv_producer", - "kv_rank":0, - "kv_parallel_size":2, - "kv_buffer_size":2e11, - "kv_ip":"'"$NEURON_SEND_IP"'", - "neuron_core_offset": 0 - }' - else - PORT=8200 - if [ "$SINGLE_INSTANCE" = "1" ]; then - NC_OFFSET=32 - export NEURON_RT_VISIBLE_CORES=32-63 - else - NC_OFFSET=0 - fi - TRANSFER_CONFIG='{ - "kv_connector":"NeuronConnector", - "kv_buffer_device":"cpu", - "kv_role":"kv_consumer", - "kv_rank":1, - "kv_parallel_size":2, - "kv_buffer_size":2e11, - "kv_ip":"'"$NEURON_SEND_IP"'", - "neuron_core_offset": "'"$NC_OFFSET"'" - }' - fi - - python3 -m vllm.entrypoints.openai.api_server \ - --model "$MODEL_PATH" \ - --max-num-seqs "$BATCH_SIZE" \ - --max-model-len 8192 \ - --tensor-parallel-size "$TP_DEGREE" \ - --device neuron \ - --use-v2-block-manager \ - --override-neuron-config "{}" \ - --kv-transfer-config "$TRANSFER_CONFIG" \ - --port "$PORT" - - entrypoint.sh: | - #!/bin/bash - set -e - - # Determine role: pod-0 = prefill, pod-1 = decode - POD_ORDINAL=$(echo $POD_NAME | grep -o '[0-9]*$') - if [ "$POD_ORDINAL" = "0" ]; then - export SEND=1 - echo "Pod-0: Prefill + Router" - else - echo "Pod-1: Decode" - fi - - # Setup environment - source ~/aws_neuronx_venv_pytorch_2_7_nxd_inference/bin/activate - cd /shared - - # Install vLLM once - if [ ! -d "upstreaming-to-vllm" ]; then - git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git - cd upstreaming-to-vllm - pip install -r requirements-neuron.txt - VLLM_TARGET_DEVICE="neuron" pip install -e . - cd /shared - fi - - # Find peer pod IP - PEER_ORDINAL=$((1 - POD_ORDINAL)) - while true; do - PEER_IP=$(kubectl get pod neuron-disaggregated-${PEER_ORDINAL} -o jsonpath='{.status.podIP}' 2>/dev/null || echo "") - [ -n "$PEER_IP" ] && [ "$PEER_IP" != "null" ] && break - sleep 5 - done - echo "Peer IP: $PEER_IP" - - # Start inference server - /scripts/server.sh \ - --tp-degree $TP_DEGREE \ - --batch-size $BATCH_SIZE \ - --model-path $MODEL_PATH \ - --compiled-model-path $COMPILED_MODEL_PATH \ - --send-ip $POD_IP \ - --recv-ip $PEER_IP & - - # Start router (only on pod-0) - if [ "$POD_ORDINAL" = "0" ]; then - pip install quart - - # Wait for both servers - while ! curl -s http://localhost:8100/health; do sleep 5; done - while ! curl -s http://$PEER_IP:8200/health; do sleep 5; done - - echo "Starting router..." - neuron-proxy-server \ - --prefill-ip localhost \ - --decode-ip $PEER_IP \ - --prefill-port 8100 \ - --decode-port 8200 & - fi - - # Wait for all background processes - wait - ---- -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: neuron-disaggregated - namespace: neuron-inference -spec: - serviceName: neuron-disaggregated-headless - replicas: 2 # Exactly 1 prefill + 1 decode - selector: - matchLabels: - app: neuron-disaggregated - template: - metadata: - labels: - app: neuron-disaggregated - spec: - # Use separate nodes for better EFA performance - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchLabels: - app: neuron-disaggregated - topologyKey: kubernetes.io/hostname - - nodeSelector: - workload-type: "neuron-inference" - tolerations: - - key: aws.amazon.com/neuron - operator: Exists - effect: NoSchedule - - serviceAccountName: neuron-pod-reader # Need to read pod IPs - - containers: - - name: inference-server - image: public.ecr.aws/neuron/pytorch-inference-neuronx:2.1.2-neuronx-py310-sdk2.21.0-ubuntu20.04 - command: ["/bin/bash", "/scripts/entrypoint.sh"] - ports: - - containerPort: 8100 - name: prefill-port - - containerPort: 8200 - name: decode-port - - containerPort: 8000 - name: router-port # Router port (only used by pod-0) - resources: - limits: - aws.amazon.com/neuroncore: "32" - vpc.amazonaws.com/efa: "1" # Request EFA interface - memory: "64Gi" - cpu: "32" - requests: - aws.amazon.com/neuroncore: "32" - memory: "32Gi" - cpu: "16" - volumeMounts: - - name: shared-storage - mountPath: /shared - - name: server-scripts - mountPath: /scripts - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: TP_DEGREE - value: "32" - - name: BATCH_SIZE - value: "4" - - name: MODEL_PATH - value: "/shared/models/Llama-3.3-70B-Instruct" - - name: COMPILED_MODEL_PATH - value: "/shared/di_traced_model_tp64_b4/" - - name: FI_PROVIDER - value: "efa" # Force EFA provider - - name: FI_EFA_USE_DEVICE_RDMA - value: "1" # Enable RDMA over EFA - - # Health checks - livenessProbe: - exec: - command: - - /bin/bash - - -c - - | - # Check if the appropriate services are running based on pod ordinal - POD_ORDINAL=$(echo $POD_NAME | grep -o '[0-9]*$') - if [ "$POD_ORDINAL" = "0" ]; then - # Prefill pod: check both prefill server and router - curl -f http://localhost:8100/health && curl -f http://localhost:8000/ - else - # Decode pod: check decode server - curl -f http://localhost:8200/health - fi - initialDelaySeconds: 240 # Longer wait for router startup - periodSeconds: 30 - readinessProbe: - exec: - command: - - /bin/bash - - -c - - | - # Check if the appropriate port is responding based on pod ordinal - POD_ORDINAL=$(echo $POD_NAME | grep -o '[0-9]*$') - if [ "$POD_ORDINAL" = "0" ]; then - # Prefill pod: both server and router must be ready - curl -f http://localhost:8100/health && curl -f http://localhost:8000/ - else - # Decode pod: just the decode server - curl -f http://localhost:8200/health - fi - initialDelaySeconds: 180 # Wait for router startup - periodSeconds: 15 - - volumes: - - name: shared-storage - persistentVolumeClaim: - claimName: efs-models-pvc - - name: server-scripts - configMap: - name: disaggregated-server-scripts - defaultMode: 0755 - - podManagementPolicy: OrderedReady # Start pods in order - ---- -# Service to expose the router (running on pod-0) -apiVersion: v1 -kind: Service -metadata: - name: neuron-router-service - namespace: neuron-inference -spec: - selector: - app: neuron-disaggregated - statefulset.kubernetes.io/pod-name: neuron-disaggregated-0 # Only target prefill pod - ports: - - name: router-port - port: 8000 - targetPort: 8000 - type: LoadBalancer \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml deleted file mode 100644 index 59c6731..0000000 --- a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/1p1d/manifests/compile.yaml +++ /dev/null @@ -1,137 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: neuron-disaggregated-compilation - namespace: neuron-inference -spec: - template: - spec: - restartPolicy: OnFailure - nodeSelector: - workload-type: "neuron-inference" - tolerations: - - key: aws.amazon.com/neuron - operator: Exists - effect: NoSchedule - containers: - - name: model-compiler - image: public.ecr.aws/neuron/pytorch-inference-neuronx:2.1.2-neuronx-py310-sdk2.21.0-ubuntu20.04 - command: ["/bin/bash", "-c"] - args: - - | - set -e - echo "Setting up Neuron vLLM environment..." - - # Activate virtual environment - source ~/aws_neuronx_venv_pytorch_2_7_nxd_inference/bin/activate - - #source in env vars - - # Install Neuron vLLM fork - cd /shared - git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git - cd upstreaming-to-vllm - pip install -r requirements-neuron.txt - VLLM_TARGET_DEVICE="neuron" pip install -e . - cd /shared - - # Download model (if not already present) - if [ ! -d "/shared/models/Llama-3.3-70B-Instruct" ]; then - echo "Downloading Llama-3.3-70B-Instruct model..." - mkdir -p /shared/models - # Note: Requires HuggingFace token for gated model - huggingface-cli download meta-llama/Llama-3.3-70B-Instruct --local-dir /shared/models/Llama-3.3-70B-Instruct - fi - - # Create compilation script - cat > /shared/compile.sh << 'EOL' - #!/bin/bash - # Official tutorial compile.sh script - - - export COMPILED_MODEL_PATH="di_traced_model_tp${TP_DEGREE}_b${BATCH_SIZE}/" - - inference_demo \ - --model-type llama \ - --task-type causal-lm \ - run \ - --model-path $MODEL_PATH \ - --compiled-model-path $COMPILED_MODEL_PATH \ - --torch-dtype bfloat16 \ - --tp-degree $TP_DEGREE \ - --batch-size $BATCH_SIZE \ - --ctx-batch-size 1 \ - --tkg-batch-size $BATCH_SIZE \ - --is-continuous-batching \ - --max-context-length 8192 \ - --seq-len 8192 \ - --on-device-sampling \ - --fused-qkv \ - --global-topk 256 --dynamic \ - --top-k 50 --top-p 0.9 --temperature 0.7 \ - --do-sample \ - --sequence-parallel-enabled \ - --qkv-kernel-enabled \ - --attn-kernel-enabled \ - --mlp-kernel-enabled \ - --cc-pipeline-tiling-factor 1 \ - --pad-token-id 2 \ - --context-encoding-buckets 256 512 1024 2048 4096 8192 \ - --token-generation-buckets 512 1024 2048 4096 8192 \ - --apply-seq-ids-mask \ - --enable-bucketing \ - --prompt "test prompt" \ - --save-sharded-checkpoint \ - --attn-block-tkg-nki-kernel-enabled \ - --attn-block-tkg-nki-kernel-cache-update \ - --k-cache-transposed \ - --async-mode \ - --compile-only - EOL - - chmod +x /shared/compile.sh - - # Compile for multi-instance (TP=32) - echo "Compiling model for multi-instance deployment (TP=32)..." - cd /shared - ./compile.sh --tp-degree 32 --batch-size 4 --model-path /shared/models/Llama-3.3-70B-Instruct - - # Create metadata file - cat > /shared/compilation_metadata.json << EOL - { - "model_name": "meta-llama/Llama-3.3-70B-Instruct", - "compilation_date": "$(date -u +%Y-%m-%dT%H:%M:%SZ)", - "neuron_sdk_version": "2.24.0", - "vllm_version": "0.7.2", - "configurations": { - "multi_instance": { - "tp_degree": 32, - "batch_size": 4, - "compiled_path": "di_traced_model_tp32_b4/" - } - } - } - EOL - - echo "Model compilation completed successfully!" - - resources: - limits: - aws.amazon.com/neuroncore: "32" - memory: "64Gi" - cpu: "32" - requests: - aws.amazon.com/neuroncore: "32" - memory: "32Gi" - cpu: "16" - volumeMounts: - - name: shared-storage - mountPath: /shared - env: - - name: NEURON_RT_NUM_CORES - value: "32" - volumes: - - name: shared-storage - persistentVolumeClaim: - claimName: efs-models-pvc - diff --git a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/README.md b/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/README.md deleted file mode 100644 index c2d56c1..0000000 --- a/2.projects/neuronx-distributed/nxdi-disaggregated-inference-eks/README.md +++ /dev/null @@ -1,47 +0,0 @@ -default readme for example - -## 1. EFS Setup for Shared Model Storage - -### Create EFS Filesystem -```bash -# Create EFS filesystem -aws efs create-file-system \ - --creation-token neuron-models-$(date +%s) \ - --performance-mode generalPurpose \ - --throughput-mode provisioned \ - --provisioned-throughput-in-mibps 1000 \ - --tags Key=Name,Value=neuron-disaggregated-efs - -# Get the filesystem ID -EFS_ID=$(aws efs describe-file-systems \ - --query 'FileSystems[?Tags[?Key==`Name`&&Value==`neuron-disaggregated-efs`]].FileSystemId' \ - --output text) - -# Create mount targets in each subnet -for subnet in subnet-xxx subnet-yyy subnet-zzz; do - aws efs create-mount-target \ - --file-system-id $EFS_ID \ - --subnet-id $subnet \ - --security-groups sg-your-efs-security-group -done -``` - - -### EFS CSI Driver Installation -```bash -# Install EFS CSI Driver -kubectl apply -k "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.7" - -# Create StorageClass -cat < Date: Tue, 29 Jul 2025 15:56:53 +0000 Subject: [PATCH 09/28] feat- docs and md --- 2.projects/neuronx-distributed/README.md | 85 +++++++ .../nxd-inference-eks/README.md | 234 ++++++++++++++++++ .../fused-SD/manifests/compile.template.yaml | 222 +++++++++++++++++ .../manifests/fsd-deploy.template.yaml | 167 +++++++++++++ 4 files changed, 708 insertions(+) create mode 100644 2.projects/neuronx-distributed/README.md create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/README.md create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.template.yaml create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.template.yaml diff --git a/2.projects/neuronx-distributed/README.md b/2.projects/neuronx-distributed/README.md new file mode 100644 index 0000000..598db61 --- /dev/null +++ b/2.projects/neuronx-distributed/README.md @@ -0,0 +1,85 @@ +# NeuronX Distributed Inference on AWS + +This directory contains examples for deploying Large Language Models using **NeuronX Distributed Inference (NxDI)** on AWS Trainium instances. NxDI is an open-source PyTorch-based inference library that simplifies deep learning model deployment on AWS Inferentia and Trainium instances, offering advanced inference capabilities including continuous batching and speculative decoding. + +## What is NeuronX Distributed Inference? + +[NeuronX Distributed Inference](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/nxdi-overview.html) (NxDI) is introduced with Neuron SDK 2.21+ and provides high-performance inference on AWS Trainium and Inferentia instances with features like continuous batching, speculative decoding, and seamless vLLM integration for production deployments. + +## Examples + +This directory contains two deployment approaches for different use cases: + +### 1. EKS Deployment (`nxd-inference-eks/`) + +**Production-ready, scalable Kubernetes deployment** + +- **Use Case**: Enterprise production workloads requiring high availability, auto-scaling, and load balancing +- **Models**: Llama 3.3 70B, DeepSeek-R1-Distill-Llama-70B, and other large language models +- **Instance Types**: `trn1.32xlarge`, `trn2.48xlarge` +- **Key Features**: + - Kubernetes-native deployment with HPA/VPA scaling + - EFS shared storage for model artifacts + - Neuron monitoring and observability + - Support for standard and speculative decoding modes + - Load balancing with AWS Application Load Balancer + +**[→ See EKS Deployment Guide](nxd-inference-eks/README.md)** + +### 2. EC2 Deployment (`nxdi-ec2-vllm/`) + +**Direct EC2 deployment for development and testing** + +- **Use Case**: Development, experimentation, and simpler production setups +- **Models**: Mistral Small 24B (primary example) and other NxDI-compatible models +- **Instance Types**: `trn1.32xlarge` +- **Key Features**: + - Jupyter notebook-based setup and experimentation + - Direct vLLM integration + - Performance benchmarking tools (`llmperf`, `lm_eval`) + - Profiling and optimization capabilities + +**[→ See EC2 Deployment Guide](nxdi-ec2-vllm/README.md)** + +## Choosing the Right Deployment + +| Requirement | EKS Deployment | EC2 Deployment | +|-------------|----------------|----------------| +| **Production workloads** | ✅ Recommended | ⚠️ Limited scalability | +| **Development/Testing** | ⚠️ Complex setup | ✅ Recommended | +| **Auto-scaling** | ✅ HPA/VPA support | ❌ Manual scaling | +| **High availability** | ✅ Multi-AZ support | ❌ Single instance | +| **Setup complexity** | ⚠️ Moderate | ✅ Simple | +| **Cost optimization** | ✅ Scale to zero | ❌ Always running | + +## Prerequisites + +Before using either example, ensure you have: + +1. **AWS Account** with appropriate permissions for Trainium instances +2. **VPC Setup**: Use the provided template in [`1.infrastructure/0_setup_vpc/trn-vpc-example.yaml`](../../1.infrastructure/0_setup_vpc/trn-vpc-example.yaml) +3. **Instance Quotas**: Sufficient quota for Trainium instances in your target region +4. **HuggingFace Token**: For downloading gated models (Llama, etc.) + +## Getting Started + +1. **Choose your deployment approach** based on your use case +2. **Set up the prerequisite infrastructure** (VPC, quotas) +3. **Follow the specific README** for your chosen deployment method +4. **Configure your models and parameters** according to your requirements + +## Performance Characteristics + +Both examples demonstrate high-performance inference capabilities: + +- **Throughput**: Up to 100+ tokens/second for 70B models on `trn1.32xlarge` +- **Latency**: Sub-second time-to-first-token with speculative decoding +- **Efficiency**: Optimized memory usage with tensor parallelism +- **Scalability**: Horizontal scaling (EKS) or vertical optimization (EC2) + +## Support and Resources + +- [AWS Neuron Documentation](https://awsdocs-neuron.readthedocs-hosted.com/) +- [NeuronX Distributed Inference Guide](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/) +- [vLLM Documentation](https://docs.vllm.ai/) +- [AWS Trainium Developer Guide](https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-inferentia.html) \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/README.md b/2.projects/neuronx-distributed/nxd-inference-eks/README.md new file mode 100644 index 0000000..8cef3c8 --- /dev/null +++ b/2.projects/neuronx-distributed/nxd-inference-eks/README.md @@ -0,0 +1,234 @@ +# NeuronX Distributed Inference on EKS + +This example demonstrates deploying Large Language Models using **NeuronX Distributed Inference (NxDI)** on Amazon EKS with AWS Trainium instances. The deployment supports both standard inference and speculative decoding for improved performance. + +## Architecture Overview + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Amazon EKS Cluster │ +│ │ +│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │ +│ │ Compilation │ │ Inference │ │ Monitoring │ │ +│ │ Job │ │ Deployment │ │ DaemonSet │ │ +│ │ │ │ │ │ │ │ +│ │ • Model Download│ │ • vLLM Server │ │ • Neuron │ │ +│ │ • NxDI Compile │ │ • Load Balancer │ │ Monitor │ │ +│ │ • Optimization │ │ • Auto-scaling │ │ • Metrics │ │ +│ └─────────────────┘ └─────────────────┘ └──────────────┘ │ +│ │ +│ ┌─────────────────────────────────────────────────────────┐│ +│ │ Shared EFS Storage ││ +│ │ • Model artifacts • Compiled models • Logs ││ +│ └─────────────────────────────────────────────────────────┘│ +└─────────────────────────────────────────────────────────────┘ +``` + +## Features + +- **Kubernetes-native deployment** with auto-scaling capabilities +- **Speculative decoding support** for improved latency +- **Shared EFS storage** for model artifacts and compiled models +- **Load balancing** with Kubernetes services +- **Monitoring and observability** with Neuron Monitor +- **Easy configuration switching** between standard and speculative modes + +## Prerequisites + +### 1. Infrastructure Setup + +Before deploying the NXD inference service, ensure you have: + +1. **VPC Setup**: Deploy the VPC using the provided CloudFormation template: + ```bash + aws cloudformation create-stack \ + --stack-name neuron-vpc \ + --template-body file://awsome-inference/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml + ``` + +2. **EKS Cluster**: Create the EKS cluster with Trainium nodes: + ```bash + eksctl create cluster -f awsome-inference/1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml + ``` + +3. **EFS Setup**: Follow the EFS setup instructions in the cluster creation guide. + +### 2. Required Tools + +- `kubectl` configured for your EKS cluster +- `envsubst` for template substitution +- `aws` CLI configured with appropriate permissions + +### 3. Access Requirements + +- **HuggingFace Token**: Required for downloading gated models like Llama +- **Container Registry Access**: Ensure nodes can pull from public ECR + +## Configuration + +### Environment Variables + +The deployment is configured through the `.env` file. Copy and customize it: + +```bash +cp .env.example .env +``` + +Key configuration options: + +```bash +# Hugging Face Configuration +HF_TOKEN=your_huggingface_token_here +HF_MODEL_ID=meta-llama/Llama-3.3-70B-Instruct +HF_DRAFT_MODEL_ID=meta-llama/Llama-3.2-1B-Instruct +MODEL_NAME=llama-3-70B-inst + +# Inference Configuration +MAX_MODEL_LEN=12800 +SEQ_LEN=12800 +MAX_CONTEXT_LEN=12288 + +# Neuron Configuration +TENSOR_PARALLEL_SIZE=32 +TP_DEGREE=32 +NAMESPACE=neuron-inference +BATCH_SIZE=1 +MAX_NUM_SEQS=1 + +# Speculative Decoding Configuration +ENABLE_SPECULATIVE=false # Set to true to enable speculative decoding +SPECULATION_LENGTH=7 + +# Storage Paths +MODEL_PATH=/shared/models/Llama-3.3-70B-Instruct +COMPILED_MODEL_PATH=/shared/traced_model/Llama-3.3-70B-Instruct +DRAFT_MODEL_PATH=/shared/models/Llama-3.2-1B-Instruct +``` + +## Deployment Guide + +### Step 1: Create Namespace and Storage + +```bash +# Create namespace +kubectl create namespace $NAMESPACE + +# Apply EFS storage configuration +kubectl apply -f - <&1 | tee /shared/compile.log + else + # Compilation with speculative decoding + echo "Compiling with speculative decoding..." + inference_demo \ + --model-type llama \ + --task-type causal-lm \ + run \ + --model-path $MODEL_PATH \ + --compiled-model-path $COMPILED_MODEL_PATH \ + --torch-dtype bfloat16 \ + --start_rank_id 0 \ + --local_ranks_size $TP_DEGREE \ + --tp-degree $TP_DEGREE \ + --batch-size $BATCH_SIZE \ + --max-context-length 12288 \ + --seq-len 12800 \ + --on-device-sampling \ + --top-k 1 \ + --fused-qkv \ + --sequence-parallel-enabled \ + --qkv-kernel-enabled \ + --attn-kernel-enabled \ + --mlp-kernel-enabled \ + --cc-pipeline-tiling-factor 1 \ + --draft-model-path $DRAFT_MODEL_PATH \ + --enable-fused-speculation \ + --speculation-length $SPECULATION_LENGTH \ + --pad-token-id 2 \ + --enable-bucketing \ + --context-encoding-buckets 2048 4096 8192 12288 \ + --token-generation-buckets 2048 4096 8192 12800 \ + --prompt "What is annapurna labs?" 2>&1 | tee /shared/compile_speculative.log + fi + + echo "Compilation completed successfully!" + +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: neuron-model-compilation + namespace: neuron-inference +spec: + template: + spec: + restartPolicy: OnFailure + nodeSelector: + workload-type: "neuron-inference" + tolerations: + - key: aws.amazon.com/neuron + operator: Exists + effect: NoSchedule + containers: + - name: model-compiler + image: public.ecr.aws/neuron/pytorch-inference-vllm-neuronx:0.7.2-neuronx-py310-sdk2.24.0-ubuntu22.04 + command: ["/bin/bash", "-c"] + args: + - | + set -e + echo "Setting up Neuron environment..." + + # Activate virtual environment + source ~/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate + + # Install vLLM Neuron fork + cd /shared + if [ ! -d "upstreaming-to-vllm" ]; then + git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git + cd upstreaming-to-vllm + pip install -r requirements-neuron.txt + VLLM_TARGET_DEVICE="neuron" pip install -e . + cd /shared + fi + + # Download models (if not already present) + if [ ! -d "/shared/models/Llama-3.3-70B-Instruct" ]; then + echo "Downloading Llama-3.3-70B-Instruct model..." + mkdir -p /shared/models + # Note: Requires HuggingFace token for gated model + huggingface-cli download meta-llama/Llama-3.3-70B-Instruct --local-dir /shared/models/Llama-3.3-70B-Instruct + fi + + # Optional: Download draft model for speculative decoding + if [ "$ENABLE_SPECULATIVE" = "true" ] && [ ! -d "/shared/models/Llama-3.2-1B-Instruct" ]; then + echo "Downloading draft model..." + huggingface-cli download meta-llama/Llama-3.2-1B-Instruct --local-dir /shared/models/Llama-3.2-1B-Instruct + fi + + # Run compilation + chmod +x /scripts/compile_model.sh + /scripts/compile_model.sh + + resources: + limits: + aws.amazon.com/neuroncore: "128" + memory: "128Gi" + cpu: "64" + requests: + aws.amazon.com/neuroncore: "128" + memory: "64Gi" + cpu: "32" + volumeMounts: + - name: shared-storage + mountPath: /shared + - name: compile-scripts + mountPath: /scripts + env: + - name: BATCH_SIZE + value: "${BATCH_SIZE}" + - name: ENABLE_SPECULATIVE + value: "${ENABLE_SPECULATIVE}" + - name: MODEL_PATH + value: "${MODEL_PATH}" + - name: COMPILED_MODEL_PATH + value: "${COMPILED_MODEL_PATH}" + - name: DRAFT_MODEL_PATH + value: "${DRAFT_MODEL_PATH}" + - name: TP_DEGREE + value: "${TP_DEGREE}" + - name: MAX_CONTEXT_LEN + value: "${MAX_CONTEXT_LEN}" + - name: SEQ_LEN + value: "${SEQ_LEN}" + - name: SPECULATION_LENGTH + value: "${SPECULATION_LENGTH}" + - name: HF_TOKEN + value: "${HF_TOKEN}" # + # Set to "true" for speculative decoding + - name: HF_MODEL_ID + value: "${HF_MODEL_ID}" + - name: HF_DRAFT_MODEL_ID + value: "${HF_DRAFT_MODEL_ID}" # + volumes: + - name: shared-storage + persistentVolumeClaim: + claimName: efs-models-pvc + - name: compile-scripts + configMap: + name: neuron-compile-scripts + defaultMode: 0755 + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: efs-models-pvc + namespace: ${NAMESPACE} +spec: + accessModes: + - ReadWriteMany + storageClassName: efs-sc + resources: + requests: + storage: 500Gi \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.template.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.template.yaml new file mode 100644 index 0000000..a44c2d1 --- /dev/null +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.template.yaml @@ -0,0 +1,167 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: neuron-vllm-scripts + namespace: neuron-inference +data: + start_vllm.sh: | + #!/bin/bash + set -e + + # + export HF_TOKEN=your_huggingface_token_here + export HF_MODEL_ID=deepseek-ai/DeepSeek-R1-Distill-Llama-70B + HF_DRAFT_MODEL_ID=meta-llama/Llama-3.2-1B-Instruct + + # Model paths + MODEL_PATH="/shared/models/Llama-3.3-70B-Instruct/" + COMPILED_MODEL_PATH="/shared/traced_model/Llama-3.3-70B-Instruct/" + + export VLLM_NEURON_FRAMEWORK="neuronx-distributed-inference" + export NEURON_COMPILED_ARTIFACTS=$COMPILED_MODEL_PATH + + # Standard deployment (without speculative decoding) + if [ "$ENABLE_SPECULATIVE" != "true" ]; then + echo "Starting vLLM server (standard mode)..." + VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ + --model $MODEL_PATH \ + --max-num-seqs ${MAX_NUM_SEQS:-1} \ + --max-model-len 12800 \ + --tensor-parallel-size 64 \ + --device neuron \ + --use-v2-block-manager \ + --override-neuron-config "{\"on_device_sampling_config\": {\"do_sample\": true}, \"skip_warmup\": true}" \ + --port 8000 + else + # With speculative decoding + echo "Starting vLLM server (speculative decoding mode)..." + DRAFT_MODEL_PATH="/shared/models/Llama-3.2-1B-Instruct/" + + VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ + --model $MODEL_PATH \ + --max-num-seqs ${MAX_NUM_SEQS:-1} \ + --max-model-len 12800 \ + --tensor-parallel-size 64 \ + --device neuron \ + --speculative-max-model-len 12800 \ + --speculative-model $DRAFT_MODEL_PATH \ + --num-speculative-tokens 7 \ + --use-v2-block-manager \ + --override-neuron-config "{\"enable_fused_speculation\":true}" \ + --port 8000 + fi + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: neuron-llama-inference + namespace: neuron-inference +spec: + replicas: 1 + selector: + matchLabels: + app: neuron-llama-inference + template: + metadata: + labels: + app: neuron-llama-inference + spec: + nodeSelector: + workload-type: "neuron-inference" + # Optional: pin to specific instance type + node.kubernetes.io/instance-type: "trn2.48xlarge" + tolerations: + - key: aws.amazon.com/neuron + operator: Exists + effect: NoSchedule + + containers: + - name: vllm-server + image: public.ecr.aws/neuron/pytorch-inference-neuronx:2.1.2-neuronx-py310-sdk2.21.0-ubuntu20.04 + command: ["/bin/bash", "-c"] + args: + - | + set -e + + # Setup environment + source ~/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate + cd /shared + + # Install vLLM if not already installed + if [ ! -d "upstreaming-to-vllm" ]; then + git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git + cd upstreaming-to-vllm + pip install -r requirements-neuron.txt + VLLM_TARGET_DEVICE="neuron" pip install -e . + cd /shared + fi + + # Start vLLM server + exec /scripts/start_vllm.sh + + ports: + - containerPort: 8000 + name: http + resources: + limits: + aws.amazon.com/neuroncore: "128" + memory: "256Gi" + cpu: "128" + requests: + aws.amazon.com/neuroncore: "128" + memory: "128Gi" + cpu: "64" + volumeMounts: + - name: shared-storage + mountPath: /shared + - name: vllm-scripts + mountPath: /scripts + env: + - name: MAX_NUM_SEQS + value: "1" # Batch size (1-4 supported) + - name: ENABLE_SPECULATIVE + value: "false" # Set to "true" for speculative decoding + - name: NEURON_RT_NUM_CORES + value: "128" + + # Liveness and readiness probes + livenessProbe: + httpGet: + path: /health + port: 8000 + initialDelaySeconds: 300 + periodSeconds: 30 + timeoutSeconds: 10 + readinessProbe: + httpGet: + path: /health + port: 8000 + initialDelaySeconds: 240 + periodSeconds: 10 + timeoutSeconds: 5 + + volumes: + - name: shared-storage + persistentVolumeClaim: + claimName: efs-models-pvc + - name: vllm-scripts + configMap: + name: neuron-vllm-scripts + defaultMode: 0755 + +--- +# Service to expose the vLLM server +apiVersion: v1 +kind: Service +metadata: + name: neuron-llama-service + namespace: neuron-inference +spec: + selector: + app: neuron-llama-inference + ports: + - name: http + port: 8000 + targetPort: 8000 + type: LoadBalancer \ No newline at end of file From 54670bdc45e0c300afb8b7483d8ebb6cde7c0aef Mon Sep 17 00:00:00 2001 From: nithiyn Date: Sun, 10 Aug 2025 00:32:42 +0000 Subject: [PATCH 10/28] commit chnages cfn --- .../0_setup_vpc/trn-vpc-example.yaml | 238 ++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100644 1.infrastructure/0_setup_vpc/trn-vpc-example.yaml diff --git a/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml b/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml new file mode 100644 index 0000000..e8935a9 --- /dev/null +++ b/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml @@ -0,0 +1,238 @@ +Description: This template deploys a VPC, with a pair of public and private subnets spread + across two Availability Zones. It deploys an internet gateway, with a default + route on the public subnets. It deploys a pair of NAT gateways (one in each AZ), + and default routes for them in the private subnets. This template format was borrowed from + https://docs.aws.amazon.com/codebuild/latest/userguide/cloudformation-vpc-template.html + +Parameters: + EnvironmentName: + Description: An environment name that is prefixed to resource names + Type: String + + VpcCIDR: + Description: Please enter the IP range (CIDR notation) for this VPC + Type: String + Default: 10.0.0.0/16 + + PublicSubnet1CIDR: + Description: Please enter the IP range (CIDR notation) for the public subnet in the first Availability Zone + Type: String + Default: 10.0.128.0/18 + + PublicSubnet2CIDR: + Description: Please enter the IP range (CIDR notation) for the public subnet in the second Availability Zone + Type: String + Default: 10.0.192.0/18 + + PrivateSubnet1CIDR: + Description: Please enter the IP range (CIDR notation) for the private subnet in the first Availability Zone + Type: String + Default: 10.0.0.0/18 + + PrivateSubnet2CIDR: + Description: Please enter the IP range (CIDR notation) for the private subnet in the second Availability Zone + Type: String + Default: 10.0.64.0/18 + +Resources: + VPC: + Type: AWS::EC2::VPC + Properties: + CidrBlock: !Ref VpcCIDR + EnableDnsSupport: true + EnableDnsHostnames: true + Tags: + - Key: Name + Value: awsome-inference-inference-vpc + + InternetGateway: + Type: AWS::EC2::InternetGateway + Properties: + Tags: + - Key: Name + Value: awsome-inference-igw + + InternetGatewayAttachment: + Type: AWS::EC2::VPCGatewayAttachment + Properties: + InternetGatewayId: !Ref InternetGateway + VpcId: !Ref VPC + + PrivateSubnet1: + Type: AWS::EC2::Subnet + Properties: + VpcId: !Ref VPC + AvailabilityZone: us-west-2d + CidrBlock: !Ref PrivateSubnet1CIDR + MapPublicIpOnLaunch: false + Tags: + - Key: Name + Value: private-awsome-inference-inference-az-d + + PrivateSubnet2: + Type: AWS::EC2::Subnet + Properties: + VpcId: !Ref VPC + AvailabilityZone: us-west-2d + CidrBlock: !Ref PrivateSubnet2CIDR + MapPublicIpOnLaunch: false + Tags: + - Key: Name + Value: private-awsome-inference-inference-az-d-2 + + # Public subnets - can be in different AZs for redundancy + PublicSubnet1: + Type: AWS::EC2::Subnet + Properties: + VpcId: !Ref VPC + AvailabilityZone: us-west-2a # Different AZ + CidrBlock: !Ref PublicSubnet1CIDR + MapPublicIpOnLaunch: true + Tags: + - Key: Name + Value: public-awsome-inference-inference-az-a + + PublicSubnet2: + Type: AWS::EC2::Subnet + Properties: + VpcId: !Ref VPC + AvailabilityZone: us-west-2b # Different AZ + CidrBlock: !Ref PublicSubnet2CIDR + MapPublicIpOnLaunch: true + Tags: + - Key: Name + Value: public-awsome-inference-inference-az-b + + NatGateway1EIP: + Type: AWS::EC2::EIP + DependsOn: InternetGatewayAttachment + Properties: + Domain: vpc + + NatGateway2EIP: + Type: AWS::EC2::EIP + DependsOn: InternetGatewayAttachment + Properties: + Domain: vpc + + NatGateway1: + Type: AWS::EC2::NatGateway + Properties: + AllocationId: !GetAtt NatGateway1EIP.AllocationId + SubnetId: !Ref PublicSubnet1 + + NatGateway2: + Type: AWS::EC2::NatGateway + Properties: + AllocationId: !GetAtt NatGateway2EIP.AllocationId + SubnetId: !Ref PublicSubnet2 + + PublicRouteTable: + Type: AWS::EC2::RouteTable + Properties: + VpcId: !Ref VPC + Tags: + - Key: Name + Value: awsome-inference-public-subnet-rt + + DefaultPublicRoute: + Type: AWS::EC2::Route + DependsOn: InternetGatewayAttachment + Properties: + RouteTableId: !Ref PublicRouteTable + DestinationCidrBlock: 0.0.0.0/0 + GatewayId: !Ref InternetGateway + + PublicSubnet1RouteTableAssociation: + Type: AWS::EC2::SubnetRouteTableAssociation + Properties: + RouteTableId: !Ref PublicRouteTable + SubnetId: !Ref PublicSubnet1 + + PublicSubnet2RouteTableAssociation: + Type: AWS::EC2::SubnetRouteTableAssociation + Properties: + RouteTableId: !Ref PublicRouteTable + SubnetId: !Ref PublicSubnet2 + + PrivateRouteTable1: + Type: AWS::EC2::RouteTable + Properties: + VpcId: !Ref VPC + Tags: + - Key: Name + Value: awsome-inference-private-subnet-rt-1 + + DefaultPrivateRoute1: + Type: AWS::EC2::Route + Properties: + RouteTableId: !Ref PrivateRouteTable1 + DestinationCidrBlock: 0.0.0.0/0 + NatGatewayId: !Ref NatGateway1 + + PrivateSubnet1RouteTableAssociation: + Type: AWS::EC2::SubnetRouteTableAssociation + Properties: + RouteTableId: !Ref PrivateRouteTable1 + SubnetId: !Ref PrivateSubnet1 + + PrivateRouteTable2: + Type: AWS::EC2::RouteTable + Properties: + VpcId: !Ref VPC + Tags: + - Key: Name + Value: awsome-inference-private-subnet-rt-2 + + DefaultPrivateRoute2: + Type: AWS::EC2::Route + Properties: + RouteTableId: !Ref PrivateRouteTable2 + DestinationCidrBlock: 0.0.0.0/0 + NatGatewayId: !Ref NatGateway2 + + PrivateSubnet2RouteTableAssociation: + Type: AWS::EC2::SubnetRouteTableAssociation + Properties: + RouteTableId: !Ref PrivateRouteTable2 + SubnetId: !Ref PrivateSubnet2 + + NoIngressSecurityGroup: + Type: AWS::EC2::SecurityGroup + Properties: + GroupName: "no-ingress-sg" + GroupDescription: "Security group with no ingress rule" + VpcId: !Ref VPC + +Outputs: + VPC: + Description: A reference to the created VPC + Value: !Ref VPC + + PublicSubnets: + Description: A list of the public subnets + Value: !Join [ ",", [ !Ref PublicSubnet1, !Ref PublicSubnet2 ]] + + PrivateSubnets: + Description: A list of the private subnets + Value: !Join [ ",", [ !Ref PrivateSubnet1, !Ref PrivateSubnet2 ]] + + PublicSubnet1: + Description: A reference to the public subnet in the 1st Availability Zone + Value: !Ref PublicSubnet1 + + PublicSubnet2: + Description: A reference to the public subnet in the 2nd Availability Zone + Value: !Ref PublicSubnet2 + + PrivateSubnet1: + Description: A reference to the private subnet in the 1st Availability Zone + Value: !Ref PrivateSubnet1 + + PrivateSubnet2: + Description: A reference to the private subnet in the 2nd Availability Zone + Value: !Ref PrivateSubnet2 + + NoIngressSecurityGroup: + Description: Security group with no ingress rule + Value: !Ref NoIngressSecurityGroup \ No newline at end of file From 709a2b1ef9897e096a992cb871da40e876a54ae1 Mon Sep 17 00:00:00 2001 From: nithiyn Date: Sun, 10 Aug 2025 00:33:38 +0000 Subject: [PATCH 11/28] commit deletions --- .../fused-SD/manifests/compile.yaml | 222 ------------------ .../fused-SD/manifests/fsd-deploy.yaml | 167 ------------- 2 files changed, 389 deletions(-) delete mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml delete mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml deleted file mode 100644 index 435a451..0000000 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml +++ /dev/null @@ -1,222 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: neuron-compile-scripts - namespace: nxd-inference -data: - compile_model.sh: | - #!/bin/bash - set -e - - # Model paths - MODEL_PATH="${MODEL_PATH}" - COMPILED_MODEL_PATH="${COMPILED_MODEL_PATH}" - - HF_TOKEN="${HF_TOKEN}" - HF_MODEL_ID="${HF_MODEL_ID}" - HF_DRAFT_MODEL_ID="${HF_DRAFT_MODEL_ID}" - - - # TP and batch config - ENABLE_SPECULATIVE="${ENABLE_SPECULATIVE}" - TP_DEGREE="${TP_DEGREE}" - BATCH_SIZE="${BATCH_SIZE}" - MAX_CONTEXT_LEN="${MAX_CONTEXT_LEN}" - SEQ_LEN="${SEQ_LEN}" - SPECULATION_LENGTH="${SPECULATION_LENGTH}" - - # Optional: For speculative decoding - DRAFT_MODEL_PATH="${DRAFT_MODEL_PATH}" - - # Neuron configuration - ADD THESE - NUM_CORES="${NUM_CORES}" - LNC="${LNC}" - MAX_CONTEXT_LEN="${MAX_CONTEXT_LEN}" - SEQ_LEN="${SEQ_LEN}" - SPECULATION_LENGTH="${SPECULATION_LENGTH}" - - - # Standard compilation (without speculative decoding) - if [ "$ENABLE_SPECULATIVE" != "true" ]; then - echo "Compiling standard neuron llama..." - inference_demo \ - --model-type llama \ - --task-type causal-lm \ - run \ - --model-path $MODEL_PATH \ - --compiled-model-path $COMPILED_MODEL_PATH \ - --torch-dtype bfloat16 \ - --start_rank_id 0 \ - --local_ranks_size $TP_DEGREE \ - --tp-degree $TP_DEGREE \ - --batch-size $BATCH_SIZE \ - --max-context-length $MAX_CONTEXT_LEN \ - --seq-len $SEQ_LEN \ - --on-device-sampling \ - --top-k 1 \ - --do-sample \ - --fused-qkv \ - --sequence-parallel-enabled \ - --qkv-kernel-enabled \ - --attn-kernel-enabled \ - --mlp-kernel-enabled \ - --cc-pipeline-tiling-factor 1 \ - --pad-token-id 2 \ - --enable-bucketing \ - --context-encoding-buckets 2048 4096 8192 12288 \ - --token-generation-buckets 2048 4096 8192 12800 \ - --prompt "What is annapurna labs?" 2>&1 | tee /shared/compile.log - else - # Compilation with speculative decoding - echo "Compiling with speculative decoding..." - inference_demo \ - --model-type llama \ - --task-type causal-lm \ - run \ - --model-path $MODEL_PATH \ - --compiled-model-path $COMPILED_MODEL_PATH \ - --torch-dtype bfloat16 \ - --start_rank_id 0 \ - --local_ranks_size $TP_DEGREE \ - --tp-degree $TP_DEGREE \ - --batch-size $BATCH_SIZE \ - --max-context-length 12288 \ - --seq-len 12800 \ - --on-device-sampling \ - --top-k 1 \ - --fused-qkv \ - --sequence-parallel-enabled \ - --qkv-kernel-enabled \ - --attn-kernel-enabled \ - --mlp-kernel-enabled \ - --cc-pipeline-tiling-factor 1 \ - --draft-model-path $DRAFT_MODEL_PATH \ - --enable-fused-speculation \ - --speculation-length $SPECULATION_LENGTH \ - --pad-token-id 2 \ - --enable-bucketing \ - --context-encoding-buckets 2048 4096 8192 12288 \ - --token-generation-buckets 2048 4096 8192 12800 \ - --prompt "What is annapurna labs?" 2>&1 | tee /shared/compile_speculative.log - fi - - echo "Compilation completed successfully!" - ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: neuron-model-compilation - namespace: neuron-inference -spec: - template: - spec: - restartPolicy: OnFailure - nodeSelector: - workload-type: "neuron-inference" - tolerations: - - key: aws.amazon.com/neuron - operator: Exists - effect: NoSchedule - containers: - - name: model-compiler - image: public.ecr.aws/neuron/pytorch-inference-vllm-neuronx:0.7.2-neuronx-py310-sdk2.24.0-ubuntu22.04 - command: ["/bin/bash", "-c"] - args: - - | - set -e - echo "Setting up Neuron environment..." - - # Activate virtual environment - source ~/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate - - # Install vLLM Neuron fork - cd /shared - if [ ! -d "upstreaming-to-vllm" ]; then - git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git - cd upstreaming-to-vllm - pip install -r requirements-neuron.txt - VLLM_TARGET_DEVICE="neuron" pip install -e . - cd /shared - fi - - # Download models (if not already present) - if [ ! -d "/shared/models/Llama-3.3-70B-Instruct" ]; then - echo "Downloading Llama-3.3-70B-Instruct model..." - mkdir -p /shared/models - # Note: Requires HuggingFace token for gated model - huggingface-cli download meta-llama/Llama-3.3-70B-Instruct --local-dir /shared/models/Llama-3.3-70B-Instruct - fi - - # Optional: Download draft model for speculative decoding - if [ "$ENABLE_SPECULATIVE" = "true" ] && [ ! -d "/shared/models/Llama-3.2-1B-Instruct" ]; then - echo "Downloading draft model..." - huggingface-cli download meta-llama/Llama-3.2-1B-Instruct --local-dir /shared/models/Llama-3.2-1B-Instruct - fi - - # Run compilation - chmod +x /scripts/compile_model.sh - /scripts/compile_model.sh - - resources: - limits: - aws.amazon.com/neuroncore: "128" - memory: "128Gi" - cpu: "64" - requests: - aws.amazon.com/neuroncore: "128" - memory: "64Gi" - cpu: "32" - volumeMounts: - - name: shared-storage - mountPath: /shared - - name: compile-scripts - mountPath: /scripts - env: - - name: BATCH_SIZE - value: "${BATCH_SIZE}" - - name: ENABLE_SPECULATIVE - value: "${ENABLE_SPECULATIVE}" - - name: MODEL_PATH - value: "${MODEL_PATH}" - - name: COMPILED_MODEL_PATH - value: "${COMPILED_MODEL_PATH}" - - name: DRAFT_MODEL_PATH - value: "${DRAFT_MODEL_PATH}" - - name: TP_DEGREE - value: "${TP_DEGREE}" - - name: MAX_CONTEXT_LEN - value: "${MAX_CONTEXT_LEN}" - - name: SEQ_LEN - value: "${SEQ_LEN}" - - name: SPECULATION_LENGTH - value: "${SPECULATION_LENGTH}" - - name: HF_TOKEN - value: "${HF_TOKEN}" # - # Set to "true" for speculative decoding - - name: HF_MODEL_ID - value: "${HF_MODEL_ID}" - - name: HF_DRAFT_MODEL_ID - value: "${HF_DRAFT_MODEL_ID}" # - volumes: - - name: shared-storage - persistentVolumeClaim: - claimName: efs-models-pvc - - name: compile-scripts - configMap: - name: neuron-compile-scripts - defaultMode: 0755 - ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: efs-models-pvc - namespace: ${NAMESPACE} -spec: - accessModes: - - ReadWriteMany - storageClassName: efs-sc - resources: - requests: - storage: 500Gi \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml deleted file mode 100644 index a44c2d1..0000000 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml +++ /dev/null @@ -1,167 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: neuron-vllm-scripts - namespace: neuron-inference -data: - start_vllm.sh: | - #!/bin/bash - set -e - - # - export HF_TOKEN=your_huggingface_token_here - export HF_MODEL_ID=deepseek-ai/DeepSeek-R1-Distill-Llama-70B - HF_DRAFT_MODEL_ID=meta-llama/Llama-3.2-1B-Instruct - - # Model paths - MODEL_PATH="/shared/models/Llama-3.3-70B-Instruct/" - COMPILED_MODEL_PATH="/shared/traced_model/Llama-3.3-70B-Instruct/" - - export VLLM_NEURON_FRAMEWORK="neuronx-distributed-inference" - export NEURON_COMPILED_ARTIFACTS=$COMPILED_MODEL_PATH - - # Standard deployment (without speculative decoding) - if [ "$ENABLE_SPECULATIVE" != "true" ]; then - echo "Starting vLLM server (standard mode)..." - VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ - --model $MODEL_PATH \ - --max-num-seqs ${MAX_NUM_SEQS:-1} \ - --max-model-len 12800 \ - --tensor-parallel-size 64 \ - --device neuron \ - --use-v2-block-manager \ - --override-neuron-config "{\"on_device_sampling_config\": {\"do_sample\": true}, \"skip_warmup\": true}" \ - --port 8000 - else - # With speculative decoding - echo "Starting vLLM server (speculative decoding mode)..." - DRAFT_MODEL_PATH="/shared/models/Llama-3.2-1B-Instruct/" - - VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ - --model $MODEL_PATH \ - --max-num-seqs ${MAX_NUM_SEQS:-1} \ - --max-model-len 12800 \ - --tensor-parallel-size 64 \ - --device neuron \ - --speculative-max-model-len 12800 \ - --speculative-model $DRAFT_MODEL_PATH \ - --num-speculative-tokens 7 \ - --use-v2-block-manager \ - --override-neuron-config "{\"enable_fused_speculation\":true}" \ - --port 8000 - fi - ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: neuron-llama-inference - namespace: neuron-inference -spec: - replicas: 1 - selector: - matchLabels: - app: neuron-llama-inference - template: - metadata: - labels: - app: neuron-llama-inference - spec: - nodeSelector: - workload-type: "neuron-inference" - # Optional: pin to specific instance type - node.kubernetes.io/instance-type: "trn2.48xlarge" - tolerations: - - key: aws.amazon.com/neuron - operator: Exists - effect: NoSchedule - - containers: - - name: vllm-server - image: public.ecr.aws/neuron/pytorch-inference-neuronx:2.1.2-neuronx-py310-sdk2.21.0-ubuntu20.04 - command: ["/bin/bash", "-c"] - args: - - | - set -e - - # Setup environment - source ~/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate - cd /shared - - # Install vLLM if not already installed - if [ ! -d "upstreaming-to-vllm" ]; then - git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git - cd upstreaming-to-vllm - pip install -r requirements-neuron.txt - VLLM_TARGET_DEVICE="neuron" pip install -e . - cd /shared - fi - - # Start vLLM server - exec /scripts/start_vllm.sh - - ports: - - containerPort: 8000 - name: http - resources: - limits: - aws.amazon.com/neuroncore: "128" - memory: "256Gi" - cpu: "128" - requests: - aws.amazon.com/neuroncore: "128" - memory: "128Gi" - cpu: "64" - volumeMounts: - - name: shared-storage - mountPath: /shared - - name: vllm-scripts - mountPath: /scripts - env: - - name: MAX_NUM_SEQS - value: "1" # Batch size (1-4 supported) - - name: ENABLE_SPECULATIVE - value: "false" # Set to "true" for speculative decoding - - name: NEURON_RT_NUM_CORES - value: "128" - - # Liveness and readiness probes - livenessProbe: - httpGet: - path: /health - port: 8000 - initialDelaySeconds: 300 - periodSeconds: 30 - timeoutSeconds: 10 - readinessProbe: - httpGet: - path: /health - port: 8000 - initialDelaySeconds: 240 - periodSeconds: 10 - timeoutSeconds: 5 - - volumes: - - name: shared-storage - persistentVolumeClaim: - claimName: efs-models-pvc - - name: vllm-scripts - configMap: - name: neuron-vllm-scripts - defaultMode: 0755 - ---- -# Service to expose the vLLM server -apiVersion: v1 -kind: Service -metadata: - name: neuron-llama-service - namespace: neuron-inference -spec: - selector: - app: neuron-llama-inference - ports: - - name: http - port: 8000 - targetPort: 8000 - type: LoadBalancer \ No newline at end of file From f5227aca6549bb3864591f6328db17d68bc20350 Mon Sep 17 00:00:00 2001 From: nithiyn Date: Thu, 28 Aug 2025 13:04:38 +0000 Subject: [PATCH 12/28] Add NXD cluster configuration --- .../trn1-nxd-cluster-config.yaml | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml diff --git a/1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml b/1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml new file mode 100644 index 0000000..f81555f --- /dev/null +++ b/1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml @@ -0,0 +1,87 @@ +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig + +metadata: + name: nxdi-inference-cluster + region: $REGION + version: "1.30" + +vpc: + id: $PLACEHOLDER_VPC_ID + subnets: + private: + $AVAILABILITY_ZONE_1: + id: $PLACEHOLDER_SUBNET_PRIVATE_1 + $AVAILABILITY_ZONE_2: + id: $PLACEHOLDER_SUBNET_PRIVATE_2 + public: + $AVAILABILITY_ZONE_1: + id: $PLACEHOLDER_SUBNET_PUBLIC_1 + $AVAILABILITY_ZONE_2: + id: $PLACEHOLDER_SUBNET_PUBLIC_2 + + clusterEndpoints: + privateAccess: true + publicAccess: true + +cloudwatch: + clusterLogging: + enableTypes: ["*"] + +iam: + withOIDC: true + +# Adding additional section to Cluster (eksctl) for any controllers you may want to install. Uncomment as required. +wellKnownPolicies: +# ebsCSIController: true # Adds policies for using the ebs-csi-controller + efsCSIController: true # Adds policies for using the efs-csi-controller + +addons: + - name: vpc-cni + version: 1.18.1-eksbuild.1 + configurationValues: '{"env":{"ENABLE_PREFIX_DELEGATION":"true", "ENABLE_POD_ENI":"true", "POD_SECURITY_GROUP_ENFORCING_MODE":"standard"},"enableNetworkPolicy": "true"}' + resolveConflicts: overwrite + - name: amazon-cloudwatch-observability + version: v1.16.4-eksbuild.1 + # - name: aws-ebs-csi-driver + # version: v1.26.0-eksbuild.1 + - name: aws-efs-csi-driver + version: v2.1.9-eksbuild.1 + +managedNodeGroups: + - name: trn-compute-node-group + instanceType: trn1.32xlarge + instancePrefix: trtllm-compute-node + subnets: + - $PLACEHOLDER_SUBNET_PRIVATE_1 + privateNetworking: true + efaEnabled: true + minSize: 0 + desiredCapacity: 1 + maxSize: 2 + volumeSize: 500 + # comment out capacityReservation if you do not need ODCR + #capacityReservation: + #capacityReservationTarget: + #capacityReservationID: "$CR_ID" + ami: ami-052f325f7962a1734 + amiFamily: AmazonLinux2023 + ssh: + publicKeyName: $PUBLIC_KEYPAIR_NAME + sourceSecurityGroupIds: [$SECURITY_GROUP_IDS] + updateConfig: + maxUnavailablePercentage: 50 + iam: + withAddonPolicies: + externalDNS: true + certManager: true + autoScaler: true + cloudWatch: true + ebs: true + efs: true + fsx: true + imageBuilder: true + xRay: true + awsLoadBalancerController: true + albIngress: true + \ No newline at end of file From 2d0a0f88f3a19795eeebb275d9a5cee088b3928f Mon Sep 17 00:00:00 2001 From: nithiyn Date: Fri, 5 Sep 2025 19:43:06 +0000 Subject: [PATCH 13/28] Add NXD inference manifests and documentation (clean) --- .../0_setup_vpc/trn-vpc-example.yaml | 6 +- .../nxd-inference/Create_EKS_Cluster.md | 59 ++-- .../trn1-nxd-cluster-config.yaml | 72 ++-- .../nxd-inference-eks/.gitignore | 28 ++ .../nxd-inference-eks/README.md | 307 +++++++++--------- .../nxd-inference-eks/fused-SD/.env.example | 24 ++ .../fused-SD/manifests/compile.yaml | 152 +++++++++ .../fused-SD/manifests/fsd-deploy.yaml | 108 ++++++ .../fused-SD/manifests/model_download.yaml | 96 ++++++ .../fused-SD/manifests/storage.yaml | 31 ++ README.md | 9 + 11 files changed, 669 insertions(+), 223 deletions(-) create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/.gitignore create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/.env.example create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/model_download.yaml create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/storage.yaml diff --git a/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml b/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml index e8935a9..b5b5b5d 100644 --- a/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml +++ b/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml @@ -43,7 +43,7 @@ Resources: EnableDnsHostnames: true Tags: - Key: Name - Value: awsome-inference-inference-vpc + Value: awsome-inference-vpc InternetGateway: Type: AWS::EC2::InternetGateway @@ -73,12 +73,12 @@ Resources: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC - AvailabilityZone: us-west-2d + AvailabilityZone: us-west-2c CidrBlock: !Ref PrivateSubnet2CIDR MapPublicIpOnLaunch: false Tags: - Key: Name - Value: private-awsome-inference-inference-az-d-2 + Value: private-awsome-inference-inference-az-c # Public subnets - can be in different AZs for redundancy PublicSubnet1: diff --git a/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md index 80d7117..e6a19e6 100644 --- a/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md +++ b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md @@ -117,6 +117,7 @@ If you have Capacity Blocks for P5 or P4 instances, you can follow the [steps he To enable multiple pods deployed to multiple nodes to load shards of the same model so that they can used in coordination to serve inference request too large to loaded by a single GPU, we'll need a common, shared storage location. In Kubernetes, these common, shared storage locations are referred to as persistent volumes. Persistent volumes can be volume mapped in to any number of pods and then accessed by processes running inside of said pods as if they were part of the pod's file system. We will be using EFS as persistent volume. Additionally, we will need to create a persistent-volume claim which can use to assign the persistent volume to a pod. + ### a. Create an IAM role Follow the steps to create an IAM role for your EFS file system: https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html#efs-create-iam-resources. This role will be used later when you install the EFS CSI Driver. @@ -129,34 +130,38 @@ Install the EFS CSI Driver through the Amazon EKS add-on in AWS console: https:/ ### Create EFS Filesystem ```bash -# Create EFS filesystem -aws efs create-file-system \ - --creation-token neuron-models-$(date +%s) \ - --performance-mode generalPurpose \ - --throughput-mode provisioned \ - --provisioned-throughput-in-mibps 1000 \ - --tags Key=Name,Value=neuron-disaggregated-efs - -# Get the filesystem ID -EFS_ID=$(aws efs describe-file-systems \ - --query 'FileSystems[?Tags[?Key==`Name`&&Value==`neuron-disaggregated-efs`]].FileSystemId' \ - --output text) - -# Create mount targets in each subnet -for subnet in subnet-xxx subnet-yyy subnet-zzz; do - aws efs create-mount-target \ - --file-system-id $EFS_ID \ - --subnet-id $subnet \ - --security-groups sg-your-efs-security-group +# Create EFS filesystem (Elastic, encrypted) +EFS_JSON=$(aws efs create-file-system \ + --region us-west-2 \ + --creation-token "neuron-models-$(date +%s)" \ + --performance-mode generalPurpose \ + --throughput-mode elastic \ + --encrypted \ + --tags Key=Name,Value=neuron-inference) + +EFS_ID=$(echo "$EFS_JSON" | jq -r '.FileSystemId') + +# Wait until available (avoids race) +until [ "$(aws efs describe-file-systems \ + --region us-west-2 \ + --file-system-id "$EFS_ID" \ + --query 'FileSystems[0].LifeCycleState' \ + --output text)" = "available" ]; do + echo "waiting for EFS $EFS_ID ..." + sleep 3 done -``` +echo "EFS is available." +# Create mount targets (one per AZ your nodes use) +for subnet in subnet-xxx subnet-yyy subnet-zzz; do + aws efs create-mount-target \ + --region us-west-2 \ + --file-system-id "$EFS_ID" \ + --subnet-id "$subnet" \ + --security-groups sg-your-efs-security-group +done -### EFS CSI Driver Installation -```bash -# Install EFS CSI Driver -kubectl apply -k "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.7" - +``` # Create StorageClass cat <>>>>>> nxdi-benchmarking-profiling vpc: - id: $PLACEHOLDER_VPC_ID + id: $VPC_ID subnets: private: $AVAILABILITY_ZONE_1: - id: $PLACEHOLDER_SUBNET_PRIVATE_1 + id: $PRIVATE_SUBNET_1 $AVAILABILITY_ZONE_2: - id: $PLACEHOLDER_SUBNET_PRIVATE_2 + id: $PRIVATE_SUBNET_2 public: $AVAILABILITY_ZONE_1: - id: $PLACEHOLDER_SUBNET_PUBLIC_1 + id: $PUBLIC_SUBNET_1 $AVAILABILITY_ZONE_2: - id: $PLACEHOLDER_SUBNET_PUBLIC_2 - + id: $PUBLIC_SUBNET_2 clusterEndpoints: privateAccess: true publicAccess: true - + cloudwatch: clusterLogging: - enableTypes: ["*"] + enableTypes: ["*"] iam: withOIDC: true - -# Adding additional section to Cluster (eksctl) for any controllers you may want to install. Uncomment as required. -wellKnownPolicies: -# ebsCSIController: true # Adds policies for using the ebs-csi-controller - efsCSIController: true # Adds policies for using the efs-csi-controller + serviceAccounts: + - metadata: + name: efs-csi-controller-sa + namespace: kube-system + wellKnownPolicies: + efsCSIController: true addons: - name: vpc-cni - version: 1.18.1-eksbuild.1 - configurationValues: '{"env":{"ENABLE_PREFIX_DELEGATION":"true", "ENABLE_POD_ENI":"true", "POD_SECURITY_GROUP_ENFORCING_MODE":"standard"},"enableNetworkPolicy": "true"}' - resolveConflicts: overwrite + version: v1.18.1-eksbuild.1 + resolveConflicts: overwrite + configurationValues: | + env: + ENABLE_PREFIX_DELEGATION: "true" + ENABLE_POD_ENI: "true" + POD_SECURITY_GROUP_ENFORCING_MODE: "standard" + enableNetworkPolicy: "true" + - name: amazon-cloudwatch-observability version: v1.16.4-eksbuild.1 - # - name: aws-ebs-csi-driver - # version: v1.26.0-eksbuild.1 - - name: aws-efs-csi-driver - version: v2.1.9-eksbuild.1 + + - name: aws-efs-csi-driver + version: v2.1.9-eksbuild.1 managedNodeGroups: - name: trn-compute-node-group instanceType: trn1.32xlarge - instancePrefix: trtllm-compute-node + amiFamily: AmazonLinux2023 subnets: - - $PLACEHOLDER_SUBNET_PRIVATE_1 + - $PRIVATE_SUBNET_1 privateNetworking: true efaEnabled: true minSize: 0 -<<<<<<< HEAD desiredCapacity: 1 -======= - desiredCapacity: 2 ->>>>>>> nxdi-benchmarking-profiling maxSize: 2 volumeSize: 500 - # comment out capacityReservation if you do not need ODCR - #capacityReservation: - #capacityReservationTarget: - #capacityReservationID: "$CR_ID" - ami: ami-052f325f7962a1734 - amiFamily: AmazonLinux2023 - ssh: - publicKeyName: $PUBLIC_KEYPAIR_NAME - sourceSecurityGroupIds: [$SECURITY_GROUP_IDS] + capacityReservation: + capacityReservationTarget: + capacityReservationId: $CAPACITY_RESERVATION_ID updateConfig: maxUnavailablePercentage: 50 iam: @@ -92,4 +83,3 @@ managedNodeGroups: xRay: true awsLoadBalancerController: true albIngress: true - \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/.gitignore b/2.projects/neuronx-distributed/nxd-inference-eks/.gitignore new file mode 100644 index 0000000..a7741a7 --- /dev/null +++ b/2.projects/neuronx-distributed/nxd-inference-eks/.gitignore @@ -0,0 +1,28 @@ +# Environment variables +.env +.env.local +.env.*.local + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# IDE files +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Logs +*.log +logs/ + +# Temporary files +*.tmp +*.temp \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/README.md b/2.projects/neuronx-distributed/nxd-inference-eks/README.md index 8cef3c8..07d0a99 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/README.md +++ b/2.projects/neuronx-distributed/nxd-inference-eks/README.md @@ -1,6 +1,6 @@ # NeuronX Distributed Inference on EKS -This example demonstrates deploying Large Language Models using **NeuronX Distributed Inference (NxDI)** on Amazon EKS with AWS Trainium instances. The deployment supports both standard inference and speculative decoding for improved performance. +This example demonstrates deploying Large Language Models using **NeuronX Distributed Inference (NxDI)** on Amazon EKS with AWS Trainium instances. The deployment supports both standard inference and speculative decoding with prefix caching across both ## Architecture Overview @@ -9,226 +9,225 @@ This example demonstrates deploying Large Language Models using **NeuronX Distri │ Amazon EKS Cluster │ │ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │ -│ │ Compilation │ │ Inference │ │ Monitoring │ │ -│ │ Job │ │ Deployment │ │ DaemonSet │ │ -│ │ │ │ │ │ │ │ -│ │ • Model Download│ │ • vLLM Server │ │ • Neuron │ │ -│ │ • NxDI Compile │ │ • Load Balancer │ │ Monitor │ │ -│ │ • Optimization │ │ • Auto-scaling │ │ • Metrics │ │ +│ │ Download Job │ │ Compilation │ │ Monitoring │ │ +│ │ (HF → EFS) │ │ Job │ │ DaemonSet │ │ +│ │ • Target model │ │ • NxDI compile │ │ • Neuron │ │ +│ │ • Draft model │ │ • Spec / NoSpec│ │ Monitor │ │ │ └─────────────────┘ └─────────────────┘ └──────────────┘ │ │ │ +│ ┌─────────────────┐ │ +│ │ Inference │ │ +│ │ Deployment │ │ +│ │ • vLLM Server │ │ +│ │ • LoadBalancer │ │ +│ └─────────────────┘ │ +│ │ │ ┌─────────────────────────────────────────────────────────┐│ │ │ Shared EFS Storage ││ -│ │ • Model artifacts • Compiled models • Logs ││ +│ │ • /shared/model_hub/* (downloads) ││ +│ │ • /shared/compiled_models/Llama-3.3-70B/* (neffs) ││ +│ │ • Logs ││ │ └─────────────────────────────────────────────────────────┘│ └─────────────────────────────────────────────────────────────┘ ``` ## Features -- **Kubernetes-native deployment** with auto-scaling capabilities -- **Speculative decoding support** for improved latency -- **Shared EFS storage** for model artifacts and compiled models -- **Load balancing** with Kubernetes services -- **Monitoring and observability** with Neuron Monitor -- **Easy configuration switching** between standard and speculative modes +- **Kubernetes-native** jobs for **download** and **compile** +- **Speculative decoding** toggle via `ENABLE_SPECULATIVE` +- **Separate compiled outputs** for spec / non-spec (no overwrites) +- **Shared EFS storage** for models, artifacts, and logs +- **Load balancing** and **monitoring** with Neuron Monitor ## Prerequisites -### 1. Infrastructure Setup +- `kubectl`, `aws` CLI, and `helm` +- EKS cluster with Trainium nodes and EFS PVC +- A Hugging Face token with access to the target repos -Before deploying the NXD inference service, ensure you have: +Install Neuron device plugin and (optionally) the scheduler extension: -1. **VPC Setup**: Deploy the VPC using the provided CloudFormation template: - ```bash - aws cloudformation create-stack \ - --stack-name neuron-vpc \ - --template-body file://awsome-inference/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml - ``` +```bash +helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart --set "npd.enabled=false" +kubectl get ds neuron-device-plugin -n kube-system -2. **EKS Cluster**: Create the EKS cluster with Trainium nodes: - ```bash - eksctl create cluster -f awsome-inference/1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml - ``` +helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ + --set "scheduler.enabled=true" \ + --set "npd.enabled=false" +``` -3. **EFS Setup**: Follow the EFS setup instructions in the cluster creation guide. +## Setup -### 2. Required Tools +### 1) Clone & Navigate -- `kubectl` configured for your EKS cluster -- `envsubst` for template substitution -- `aws` CLI configured with appropriate permissions +```bash +git clone https://github.com/aws-samples/awsome-inference.git +cd awsome-inference/2.projects/neuronx-distributed/nxd-inference-eks/ +``` -### 3. Access Requirements +### 2) Label Trainium Nodes -- **HuggingFace Token**: Required for downloading gated models like Llama -- **Container Registry Access**: Ensure nodes can pull from public ECR +```bash +kubectl label nodes -l node.kubernetes.io/instance-type=trn1.32xlarge workload-type=neuron-inference +kubectl taint nodes -l node.kubernetes.io/instance-type=trn1.32xlarge aws.amazon.com/neuron=:NoSchedule +kubectl get nodes -L workload-type,node.kubernetes.io/instance-type +``` -## Configuration +### 3) Namespace, Storage, and Secrets -### Environment Variables +```bash +kubectl create namespace neuron-inference -The deployment is configured through the `.env` file. Copy and customize it: +# Apply EFS storage configuration +kubectl apply -f fused-SD/manifests/storage.yaml -n neuron-inference + +# Create HF token secret once +# replace YOUR_HF_TOKEN with your actual token (starts with hf_) +kubectl -n neuron-inference create secret generic hf-token \ + --from-literal=HF_TOKEN='YOUR_HF_TOKEN' \ + --dry-run=client -o yaml | kubectl apply -f - -```bash -cp .env.example .env ``` -Key configuration options: +## Configuration + +Use an env file to keep things tidy (example shows Llama-3.3 target + Llama-3.2 draft): ```bash -# Hugging Face Configuration -HF_TOKEN=your_huggingface_token_here +cat > fused-SD/.env <<'EOF' +# HF HF_MODEL_ID=meta-llama/Llama-3.3-70B-Instruct HF_DRAFT_MODEL_ID=meta-llama/Llama-3.2-1B-Instruct -MODEL_NAME=llama-3-70B-inst -# Inference Configuration -MAX_MODEL_LEN=12800 -SEQ_LEN=12800 -MAX_CONTEXT_LEN=12288 +# Paths (EFS) +MODEL_ROOT=/shared/model_hub +MODEL_DIRNAME=Llama-3.3-70B-Instruct +DRAFT_DIRNAME=Llama-3.2-1B-Instruct +COMPILED_ROOT=/shared/compiled_models/Llama-3.3-70B -# Neuron Configuration -TENSOR_PARALLEL_SIZE=32 +# NxDI compile +ENABLE_SPECULATIVE=false +SPECULATION_LENGTH=7 TP_DEGREE=32 -NAMESPACE=neuron-inference BATCH_SIZE=1 -MAX_NUM_SEQS=1 - -# Speculative Decoding Configuration -ENABLE_SPECULATIVE=false # Set to true to enable speculative decoding -SPECULATION_LENGTH=7 +SEQ_LEN=8192 +MAX_CONTEXT_LEN=8192 +EOF -# Storage Paths -MODEL_PATH=/shared/models/Llama-3.3-70B-Instruct -COMPILED_MODEL_PATH=/shared/traced_model/Llama-3.3-70B-Instruct -DRAFT_MODEL_PATH=/shared/models/Llama-3.2-1B-Instruct +source fused-SD/.env ``` -## Deployment Guide +## Workflow -### Step 1: Create Namespace and Storage +> **Two steps:** (1) **Download** both models to EFS, (2) **Compile** with or without speculation. +> Compiles write to **separate directories** so you can keep both. -```bash -# Create namespace -kubectl create namespace $NAMESPACE +### Create a secret once for your HF token: -# Apply EFS storage configuration -kubectl apply -f - < -- ls -l /shared/model_hub/${MODEL_DIRNAME} | head +``` -# 4. Recompile with speculation enabled -envsubst < compile.template.yaml | kubectl apply -f - -kubectl wait --for=condition=complete job/neuron-model-compilation -n $NAMESPACE --timeout=3600s +### Step 2 — Compile (separate outputs for spec vs non-spec) -# 5. Update deployment -envsubst < deployment.template.yaml | kubectl apply -f - +Apply the **compile job** manifest. Control speculation by editing the `ENABLE_SPECULATIVE` environment variable in the manifest: -# 6. Restart deployment to pick up changes -kubectl rollout restart deployment/neuron-llama-inference -n $NAMESPACE -kubectl wait --for=condition=available deployment/neuron-llama-inference -n $NAMESPACE --timeout=600s +```bash +# Non-spec compile (kept in /shared/compiled_models/Llama-3.3-70B/nospec_tp32) +kubectl apply -n neuron-inference -f fused-SD/manifests/compile.yaml +kubectl -n neuron-inference wait --for=condition=complete job/neuron-model-compilation --timeout=3600s +kubectl -n neuron-inference logs job/neuron-model-compilation --tail=200 + +# For speculative compile, edit the manifest to set ENABLE_SPECULATIVE=true, then: +kubectl -n neuron-inference delete job neuron-model-compilation --ignore-not-found +kubectl apply -n neuron-inference -f fused-SD/manifests/compile.yaml +kubectl -n neuron-inference wait --for=condition=complete job/neuron-model-compilation --timeout=3600s +kubectl -n neuron-inference logs job/neuron-model-compilation --tail=200 ``` -### Switch back to standard - +**Output layout (no overwrites):** ``` -# 1. Update .env -vim .env # Change ENABLE_SPECULATIVE=false - -# 2. Reload and recompile -source .env -kubectl delete job neuron-model-compilation -n $NAMESPACE -envsubst < compile.template.yaml | kubectl apply -f - -kubectl wait --for=condition=complete job/neuron-model-compilation -n $NAMESPACE --timeout=3600s - -# 3. Update deployment -envsubst < deployment.template.yaml | kubectl apply -f - -kubectl rollout restart deployment/neuron-llama-inference -n $NAMESPACE +/shared/compiled_models/Llama-3.3-70B/ + ├─ nospec_tp32/ + └─ spec_slen7_tp32/ ``` -### Example Usage +### Step 3 — Deploy Inference -``` -# Check compilation logs -kubectl logs -l job-name=neuron-model-compilation -n $NAMESPACE --tail=100 +Point your inference deployment at the compiled directory you want: -# Check deployment logs -kubectl logs deployment/neuron-llama-inference -n $NAMESPACE --tail=100 +- Non-spec: `/shared/compiled_models/Llama-3.3-70B/nospec_tp32` +- Spec: `/shared/compiled_models/Llama-3.3-70B/spec_slen7_tp32` -# Port forward for testing -kubectl port-forward service/neuron-llama-service 8000:8000 -n $NAMESPACE +Apply your inference deployment/service manifests and wait for readiness, then test via port-forward or load balancer as usual. -# Test inference -curl -X POST http://localhost:8000/v1/completions \ - -H 'Content-Type: application/json' \ - -d '{"model": "'$MODEL_PATH'", "prompt": "Hello", "max_tokens": 50}' -``` +## Troubleshooting -## Cleanup +**Downloads didn’t happen** +- Check the download job logs: + ```bash + kubectl -n neuron-inference logs job/neuron-model-download --tail=200 + ``` +- Ensure the HF token secret exists and is referenced: + ```bash + kubectl -n neuron-inference get secret hf-token + ``` +- Verify the EFS PVC is bound and writable: + ```bash + kubectl -n neuron-inference get pvc + ``` -```bash -# Delete the deployment -kubectl delete -f fused-SD/manifests/fsd-deploy.yaml -kubectl delete -f fused-SD/manifests/compile.yaml +**Compile fails immediately saying “Unrecognized model … config.json”** +- The download likely didn’t complete or the path is wrong. Verify: + ```bash + kubectl -n neuron-inference exec -it -- test -f /shared/model_hub/${MODEL_DIRNAME}/config.json && echo OK + ``` -# Delete the namespace -kubectl delete namespace $NAMESPACE +**Spec compile overwrote non-spec?** +- With the provided manifests, outputs are separated per mode (`nospec_*` vs `spec_*`). If you see overwrites, confirm your `COMPILED_ROOT` and job env vars. -# Delete monitoring -kubectl delete namespace neuron-monitor +**Neuron compiler errors** +- These are model/hardware/SDK specific. Re-run with smaller `TP_DEGREE`, confirm SDK image version, or inspect `/shared/compile*.log`. Consider filing an issue with logs. + +## Cleanup + +```bash +kubectl -n neuron-inference delete job neuron-model-download --ignore-not-found +kubectl -n neuron-inference delete job neuron-model-compilation --ignore-not-found +kubectl -n neuron-inference delete deployment neuron-llama-inference service neuron-llama-service --ignore-not-found +kubectl -n neuron-inference delete pvc efs-models-pvc --ignore-not-found +kubectl delete namespace neuron-inference ``` -## Support and Resources +## References -- [AWS Neuron Documentation](https://awsdocs-neuron.readthedocs-hosted.com/) -- [NeuronX Distributed Inference Guide](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/) -- [vLLM Documentation](https://docs.vllm.ai/) -- [Kubernetes Documentation](https://kubernetes.io/docs/) \ No newline at end of file +- [AWS Neuron Documentation](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/) – NxDI & compiler guidance +- [NeuronX Distributed Inference Guide](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/neuronx-distributed/index.html) +- [vLLM Documentation](https://docs.vllm.ai/) – Server flags and deployment considerations +- [Kubernetes Jobs Documentation](https://kubernetes.io/docs/concepts/workloads/controllers/job/) +- [Kubernetes Persistent Volumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) +- [AWS Neuron Helm Charts](https://github.com/aws-neuron/aws-neuron-helm-charts) +- [AWS Trainium Instance Types](https://aws.amazon.com/ec2/instance-types/trn1/) diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/.env.example b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/.env.example new file mode 100644 index 0000000..bfc3d43 --- /dev/null +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/.env.example @@ -0,0 +1,24 @@ +# Hugging Face Configuration +HF_TOKEN=your_huggingface_token_here +HF_MODEL_ID=deepseek-ai/DeepSeek-R1-Distill-Llama-70B +HF_DRAFT_MODEL_ID=meta-llama/Llama-3.2-1B-Instruct +MODEL_NAME=llama-3-70B-inst + +# Inference Configuration +MAX_MODEL_LEN=12800 +SEQ_LEN=12800 +MAX_CONTEXT_LEN=12288 + +# Neuron Configuration +TENSOR_PARALLEL_SIZE=32 +TP_DEGREE=32 # Add this - same as TENSOR_PARALLEL_SIZE +NAMESPACE=neuron-inference +BATCH_SIZE=1 +MAX_NUM_SEQS=1 +ENABLE_SPECULATIVE=false # Start with false +SPECULATION_LENGTH=7 # Add this + +# Paths +MODEL_PATH=/shared/models/Llama-3.3-70B-Instruct +COMPILED_MODEL_PATH=/shared/traced_model/Llama-3.3-70B-Instruct +DRAFT_MODEL_PATH=/shared/models/Llama-3.2-1B-Instruct \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml new file mode 100644 index 0000000..563cd32 --- /dev/null +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml @@ -0,0 +1,152 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: neuron-compile-scripts + namespace: neuron-inference +data: + compile_model.sh: | + #!/usr/bin/env bash + set -euo pipefail + + # ---- Inputs / defaults ---- + : "${ENABLE_SPECULATIVE:=false}" + : "${SPECULATION_LENGTH:=7}" + : "${TP_DEGREE:=32}" + : "${BATCH_SIZE:=1}" + : "${MAX_CONTEXT_LEN:=8192}" + : "${SEQ_LEN:=8192}" + + # Where the downloader put things + : "${MODEL_DIRNAME:=Llama-3.3-70B-Instruct}" + : "${DRAFT_DIRNAME:=Llama-3.2-1B-Instruct}" + : "${MODEL_ROOT:=/shared/model_hub}" + + MODEL_PATH="${MODEL_ROOT}/${MODEL_DIRNAME}" + DRAFT_MODEL_PATH="${MODEL_ROOT}/${DRAFT_DIRNAME}" + + # Option 1: separate compiled outputs per configuration + : "${COMPILED_ROOT:=/shared/compiled_models/Llama-3.3-70B}" + if [[ "${ENABLE_SPECULATIVE}" == "true" ]]; then + COMPILED_MODEL_PATH="${COMPILED_ROOT}/spec_slen${SPECULATION_LENGTH}_tp${TP_DEGREE}" + else + COMPILED_MODEL_PATH="${COMPILED_ROOT}/nospec_tp${TP_DEGREE}" + fi + mkdir -p "${COMPILED_MODEL_PATH}" + + # Sanity checks (fail fast if downloads missing) + [[ -f "${MODEL_PATH}/config.json" ]] || { echo "Missing target model at ${MODEL_PATH}"; exit 2; } + if [[ "${ENABLE_SPECULATIVE}" == "true" ]]; then + [[ -f "${DRAFT_MODEL_PATH}/config.json" ]] || { echo "Missing draft model at ${DRAFT_MODEL_PATH}"; exit 2; } + fi + + echo "Speculative=${ENABLE_SPECULATIVE} SLEN=${SPECULATION_LENGTH} TP=${TP_DEGREE} BS=${BATCH_SIZE} SEQ=${SEQ_LEN}" + echo "MODEL_PATH=${MODEL_PATH}" + echo "DRAFT_MODEL_PATH=${DRAFT_MODEL_PATH}" + echo "COMPILED_MODEL_PATH=${COMPILED_MODEL_PATH}" + + BASE_ARGS=( + --model-type llama + --task-type causal-lm + run + --model-path "${MODEL_PATH}" + --compiled-model-path "${COMPILED_MODEL_PATH}" + --torch-dtype bfloat16 + --start_rank_id 0 + --local_ranks_size "${TP_DEGREE}" + --tp-degree "${TP_DEGREE}" + --batch-size "${BATCH_SIZE}" + --max-context-length "${MAX_CONTEXT_LEN}" + --seq-len "${SEQ_LEN}" + --on-device-sampling + --top-k 1 + --do-sample + --fused-qkv + --sequence-parallel-enabled + --qkv-kernel-enabled + --attn-kernel-enabled + --mlp-kernel-enabled + --cc-pipeline-tiling-factor 1 + --enable-bucketing + --enable-block-kv-layout + --pa-num-blocks 2048 + --pa-block-size 32 + --enable-prefix-caching + --context-encoding-buckets 512 1024 2048 4096 8192 + --token-generation-buckets 512 1024 2048 4096 8192 + --prefix-buckets 512 1024 2048 + --compile-only + --prompt "What is annapurna labs?" + ) + + LOG=/shared/compile.log + if [[ "${ENABLE_SPECULATIVE}" == "true" ]]; then + BASE_ARGS+=( --draft-model-path "${DRAFT_MODEL_PATH}" --enable-fused-speculation --speculation-length "${SPECULATION_LENGTH}" ) + LOG=/shared/compile_speculative.log + fi + + echo "inference_demo ${BASE_ARGS[*]}" + inference_demo "${BASE_ARGS[@]}" 2>&1 | tee "${LOG}" +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: neuron-model-compilation + namespace: neuron-inference +spec: + template: + spec: + restartPolicy: OnFailure + nodeSelector: + workload-type: "neuron-inference" + tolerations: + - key: aws.amazon.com/neuron + operator: Exists + effect: NoSchedule + containers: + - name: model-compiler + image: public.ecr.aws/neuron/pytorch-inference-vllm-neuronx:0.9.1-neuronx-py310-sdk2.25.0-ubuntu22.04 + command: ["/bin/bash","-lc"] + args: + - | + set -euxo pipefail + df -h /shared || true + # flip this to true when you want SD compile: + : "${ENABLE_SPECULATIVE:=false}" + export ENABLE_SPECULATIVE + bash /scripts/compile_model.sh + env: + # tune/override as needed: + - name: ENABLE_SPECULATIVE + value: "false" # set "true" for SD compile + - name: SPECULATION_LENGTH + value: "7" + - name: TP_DEGREE + value: "32" + - name: MODEL_DIRNAME + value: "Llama-3.3-70B-Instruct" + - name: DRAFT_DIRNAME + value: "Llama-3.2-1B-Instruct" + - name: COMPILED_ROOT + value: "/shared/compiled_models/Llama-3.3-70B" + resources: + limits: + aws.amazon.com/neuroncore: "32" + memory: "300Gi" + cpu: "64" + requests: + aws.amazon.com/neuroncore: "32" + memory: "300Gi" + cpu: "64" + volumeMounts: + - name: shared-storage + mountPath: /shared + - name: scripts + mountPath: /scripts + volumes: + - name: shared-storage + persistentVolumeClaim: + claimName: efs-models-pvc + - name: scripts + configMap: + name: neuron-compile-scripts + defaultMode: 0755 diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml new file mode 100644 index 0000000..0dd992a --- /dev/null +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml @@ -0,0 +1,108 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: neuron-vllm-scripts + namespace: neuron-inference +data: + start_vllm.sh: | + #!/bin/bash + set -euo pipefail + + # ---- Set defaults ---- + + : "${ENABLE_SPECULATIVE:=false}" + : "${TP_DEGREE:=32}" + : "${BATCH_SIZE:=1}" + : "${MAX_CONTEXT_LEN:=8192}" + : "${SEQ_LEN:=8192}" + : "${SPECULATION_LENGTH:=7}" + : "${MODEL_PATH:=/shared/models/Llama-3.3-70B-Instruct}" + : "${COMPILED_MODEL_PATH:=/shared/compiled/Llama-3.3-70B}" + : "${DRAFT_MODEL_PATH:=/shared/models/Llama-3.2-1B-Instruct}" + : "${HF_MODEL_ID:=meta-llama/Llama-3.3-70B-Instruct}" + : "${HF_DRAFT_MODEL_ID:=meta-llama/Llama-3.2-1B-Instruct}" + + echo "Speculative: ${ENABLE_SPECULATIVE} | TP=${TP_DEGREE} | BS=${BATCH_SIZE} | SEQ=${SEQ_LEN}" + + export VLLM_NEURON_FRAMEWORK="neuronx-distributed-inference" + export NEURON_COMPILED_ARTIFACTS="$COMPILED_MODEL_PATH" + + if [ "$ENABLE_SPECULATIVE" = "false" ]; then + echo "Starting vLLM server (standard mode)..." + VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ + --model "$MODEL_PATH" \ + --max-num-seqs "${MAX_NUM_SEQS:-1}" \ + --max-model-len "$SEQ_LEN" \ + --tensor-parallel-size "$TP_DEGREE" \ + --device neuron \ + --use-v2-block-manager \ + --num-gpu-blocks-override 2048 \ + --enable-prefix-caching \ + --block-size 32 \ + --override-neuron-config '{"is_block_kv_layout": true, "is_prefix_caching": true}' \ + --port 8000 + else + echo "Starting vLLM server (speculative decoding mode)..." + VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ + --model "$MODEL_PATH" \ + --max-num-seqs "${MAX_NUM_SEQS:-1}" \ + --max-model-len "$SEQ_LEN" \ + --tensor-parallel-size "$TP_DEGREE" \ + --device neuron \ + --speculative-max-model-len "$SEQ_LEN" \ + --speculative-model "$DRAFT_MODEL_PATH" \ + --num-speculative-tokens "$SPECULATION_LENGTH" \ + --use-v2-block-manager \ + --num-gpu-blocks-override 2048 \ + --enable-prefix-caching \ + --block-size 32 \ + --override-neuron-config '{"enable_fused_speculation": true, "is_block_kv_layout": true, "is_prefix_caching": true}' \ + --port 8000 + fi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: neuron-llama-inference + namespace: neuron-inference +spec: + replicas: 1 + selector: + matchLabels: + app: neuron-llama-inference + template: + metadata: + labels: + app: neuron-llama-inference + spec: + nodeSelector: + workload-type: "neuron-inference" + node.kubernetes.io/instance-type: "trn1.32xlarge" + tolerations: + - key: aws.amazon.com/neuron + operator: Exists + effect: NoSchedule + containers: + - name: vllm-server + image: public.ecr.aws/neuron/pytorch-inference-vllm-neuronx:0.9.1-neuronx-py310-sdk2.25.0-ubuntu22.04 + command: ["/bin/bash", "-lc"] + args: + - | + set -euo pipefail + cd /shared + exec /scripts/start_vllm.sh + ports: + - containerPort: 8000 + name: http + resources: + limits: + aws.amazon.com/neuroncore: "32" # trn1.32xlarge has 64 NeuronCores total + memory: "500Gi" + cpu: "128" + requests: + aws.amazon.com/neuroncore: "32" + memory: "500Gi" + cpu: "64" + env: + - name: MAX_NUM_SEQS + value: "1" diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/model_download.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/model_download.yaml new file mode 100644 index 0000000..75b760b --- /dev/null +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/model_download.yaml @@ -0,0 +1,96 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: neuron-download-scripts + namespace: neuron-inference +data: + download_models.sh: | + #!/usr/bin/env bash + set -euo pipefail + + : "${HF_MODEL_ID:=meta-llama/Llama-3.3-70B-Instruct}" + : "${HF_DRAFT_MODEL_ID:=meta-llama/Llama-3.2-1B-Instruct}" + + : "${MODEL_DIRNAME:=Llama-3.3-70B-Instruct}" + : "${DRAFT_DIRNAME:=Llama-3.2-1B-Instruct}" + + : "${MODEL_ROOT:=/shared/model_hub}" + MODEL_PATH="${MODEL_ROOT}/${MODEL_DIRNAME}" + DRAFT_MODEL_PATH="${MODEL_ROOT}/${DRAFT_DIRNAME}" + + mkdir -p "$MODEL_PATH" "$DRAFT_MODEL_PATH" + + if ! command -v hf >/dev/null 2>&1; then + python -m pip install -q --no-cache-dir 'huggingface_hub[cli]' + fi + + if [[ -z "${HF_TOKEN:-}" ]]; then + echo "HF_TOKEN not set; cannot access gated repos." >&2 + exit 1 + fi + export HUGGINGFACE_HUB_TOKEN="$HF_TOKEN" + + echo "Downloading target: ${HF_MODEL_ID} -> ${MODEL_PATH}" + hf download "${HF_MODEL_ID}" --local-dir "${MODEL_PATH}" --exclude "*/.git/*" + echo "OK: ${MODEL_PATH}" + + echo "Downloading draft: ${HF_DRAFT_MODEL_ID} -> ${DRAFT_MODEL_PATH}" + hf download "${HF_DRAFT_MODEL_ID}" --local-dir "${DRAFT_MODEL_PATH}" --exclude "*/.git/*" + echo "OK: ${DRAFT_MODEL_PATH}" + + echo "Listing:" + find "${MODEL_PATH}" -maxdepth 1 -type f | head -n 20 + find "${DRAFT_MODEL_PATH}" -maxdepth 1 -type f | head -n 20 +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: neuron-model-download + namespace: neuron-inference +spec: + template: + spec: + restartPolicy: OnFailure + nodeSelector: + workload-type: "neuron-inference" + tolerations: + - key: aws.amazon.com/neuron + operator: Exists + effect: NoSchedule + containers: + - name: downloader + image: public.ecr.aws/neuron/pytorch-inference-vllm-neuronx:0.9.1-neuronx-py310-sdk2.25.0-ubuntu22.04 + command: ["/bin/bash","-lc"] + args: + - | + set -euxo pipefail + df -h /shared || true + bash /scripts/download_models.sh 2>&1 | tee /shared/download.log + env: + # Set/override these as needed: + - name: HF_MODEL_ID + value: "meta-llama/Llama-3.3-70B-Instruct" + - name: HF_DRAFT_MODEL_ID + value: "meta-llama/Llama-3.2-1B-Instruct" + - name: MODEL_DIRNAME + value: "Llama-3.3-70B-Instruct" + - name: DRAFT_DIRNAME + value: "Llama-3.2-1B-Instruct" + - name: HF_TOKEN + valueFrom: + secretKeyRef: + name: hf-token + key: HF_TOKEN + volumeMounts: + - name: shared-storage + mountPath: /shared + - name: scripts + mountPath: /scripts + volumes: + - name: shared-storage + persistentVolumeClaim: + claimName: efs-models-pvc + - name: scripts + configMap: + name: neuron-download-scripts + defaultMode: 0755 diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/storage.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/storage.yaml new file mode 100644 index 0000000..7876509 --- /dev/null +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/storage.yaml @@ -0,0 +1,31 @@ + + +--- +apiVersion: v1 +kind: PersistentVolume +metadata: + name: efs-pv +spec: + capacity: + storage: 500Gi + volumeMode: Filesystem + accessModes: + - ReadWriteMany + persistentVolumeReclaimPolicy: Retain + storageClassName: efs-sc + csi: + driver: efs.csi.aws.com + volumeHandle: fs-0f239c95d507d9517 # Change to your own ID +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: efs-models-pvc # aligned + namespace: neuron-inference +spec: + accessModes: + - ReadWriteMany + storageClassName: efs-sc + resources: + requests: + storage: 500Gi \ No newline at end of file diff --git a/README.md b/README.md index a27e950..646c86a 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ README # Project Summaries |-- ray-service/ |-- multinode-triton-trtllm-inference/ |-- mixture-of-agents/ +|-- neuronx-distributed/ |-- mig/ 3.use-cases/ |-- nims-inference/ @@ -64,6 +65,14 @@ Recent advances in large language models (LLMs) have shown substantial capabilit These examples shows how to deploy LLMs like T5, Mistral using NVIDIA Triton TRT-LLM on Amazon SageMaker. See [triton-trtllm-sagemaker](2.projects/triton-trtllm-sagemaker) for more information. +### NEURONX DISTRIBUTED INFERENCE - FUSED SD on EKS + +This project demonstrates deploying Large Language Models using NeuronX Distributed Inference (NxDI) and vllm-neuronx on Amazon EKS with trn1.32xlarge instances. It features a Kubernetes-native deployment with prefix-caching and fused draft speculative decoding support for optimized inference on Neuron, shared EFS storage for compiled model artifacts, and comprehensive monitoring with Neuron Monitor. The solution supports both standard inference and speculative decoding modes with easy configuration switching. See [neuronx-distributed/nxd-inference-eks](2.projects/neuronx-distributed/nxd-inference-eks) for more information. + +### NEURONX DISTRIBUTED INFERENCE - Profiling and Benchmarking Guide + +This example on EC2 walks through deploying, profiling, and benchmarking LLMs on EC2 with NxDI. See [neuronx-distributed/nxd-inference-ec2](2.projects/neuronx-distributed/nxdi-ec2-vllm) for more information. + ### MIG This directory contains a README on how you can leverage Multi-Instance GPUs (MIGs) to partition your GPUs based on your workload. For more detailed documentation, check out the [MIG user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/). From 6fbfd8f7c3e40550c17a7e9a3de457c3bc2a8fe0 Mon Sep 17 00:00:00 2001 From: nithiyn Date: Sat, 6 Sep 2025 20:37:42 +0000 Subject: [PATCH 14/28] cleanup template files --- .../fused-SD/Cluster-setup.md | 15 -- .../fused-SD/manifests/compile.template.yaml | 222 ------------------ .../manifests/fsd-deploy.template.yaml | 167 ------------- 3 files changed, 404 deletions(-) delete mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/Cluster-setup.md delete mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.template.yaml delete mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.template.yaml diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/Cluster-setup.md b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/Cluster-setup.md deleted file mode 100644 index 036b3c0..0000000 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/Cluster-setup.md +++ /dev/null @@ -1,15 +0,0 @@ -source in env vars with envsubst before applying manifests - -HF_ID -MODEL_ID -MODEL_NAME -TP_DEGREE -BATCH_SIZE - -prereqs: set up vpc, use vpc-cf-example -create eks cluster, refer to awsome-inference/1.infrastructure/1_setup_cluster/multinode-triton-trtllm-inference/Create_EKS_Cluster.md - -on mgmt instance, - -1. clone repo- edit env vars, scripts if needed - diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.template.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.template.yaml deleted file mode 100644 index 435a451..0000000 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.template.yaml +++ /dev/null @@ -1,222 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: neuron-compile-scripts - namespace: nxd-inference -data: - compile_model.sh: | - #!/bin/bash - set -e - - # Model paths - MODEL_PATH="${MODEL_PATH}" - COMPILED_MODEL_PATH="${COMPILED_MODEL_PATH}" - - HF_TOKEN="${HF_TOKEN}" - HF_MODEL_ID="${HF_MODEL_ID}" - HF_DRAFT_MODEL_ID="${HF_DRAFT_MODEL_ID}" - - - # TP and batch config - ENABLE_SPECULATIVE="${ENABLE_SPECULATIVE}" - TP_DEGREE="${TP_DEGREE}" - BATCH_SIZE="${BATCH_SIZE}" - MAX_CONTEXT_LEN="${MAX_CONTEXT_LEN}" - SEQ_LEN="${SEQ_LEN}" - SPECULATION_LENGTH="${SPECULATION_LENGTH}" - - # Optional: For speculative decoding - DRAFT_MODEL_PATH="${DRAFT_MODEL_PATH}" - - # Neuron configuration - ADD THESE - NUM_CORES="${NUM_CORES}" - LNC="${LNC}" - MAX_CONTEXT_LEN="${MAX_CONTEXT_LEN}" - SEQ_LEN="${SEQ_LEN}" - SPECULATION_LENGTH="${SPECULATION_LENGTH}" - - - # Standard compilation (without speculative decoding) - if [ "$ENABLE_SPECULATIVE" != "true" ]; then - echo "Compiling standard neuron llama..." - inference_demo \ - --model-type llama \ - --task-type causal-lm \ - run \ - --model-path $MODEL_PATH \ - --compiled-model-path $COMPILED_MODEL_PATH \ - --torch-dtype bfloat16 \ - --start_rank_id 0 \ - --local_ranks_size $TP_DEGREE \ - --tp-degree $TP_DEGREE \ - --batch-size $BATCH_SIZE \ - --max-context-length $MAX_CONTEXT_LEN \ - --seq-len $SEQ_LEN \ - --on-device-sampling \ - --top-k 1 \ - --do-sample \ - --fused-qkv \ - --sequence-parallel-enabled \ - --qkv-kernel-enabled \ - --attn-kernel-enabled \ - --mlp-kernel-enabled \ - --cc-pipeline-tiling-factor 1 \ - --pad-token-id 2 \ - --enable-bucketing \ - --context-encoding-buckets 2048 4096 8192 12288 \ - --token-generation-buckets 2048 4096 8192 12800 \ - --prompt "What is annapurna labs?" 2>&1 | tee /shared/compile.log - else - # Compilation with speculative decoding - echo "Compiling with speculative decoding..." - inference_demo \ - --model-type llama \ - --task-type causal-lm \ - run \ - --model-path $MODEL_PATH \ - --compiled-model-path $COMPILED_MODEL_PATH \ - --torch-dtype bfloat16 \ - --start_rank_id 0 \ - --local_ranks_size $TP_DEGREE \ - --tp-degree $TP_DEGREE \ - --batch-size $BATCH_SIZE \ - --max-context-length 12288 \ - --seq-len 12800 \ - --on-device-sampling \ - --top-k 1 \ - --fused-qkv \ - --sequence-parallel-enabled \ - --qkv-kernel-enabled \ - --attn-kernel-enabled \ - --mlp-kernel-enabled \ - --cc-pipeline-tiling-factor 1 \ - --draft-model-path $DRAFT_MODEL_PATH \ - --enable-fused-speculation \ - --speculation-length $SPECULATION_LENGTH \ - --pad-token-id 2 \ - --enable-bucketing \ - --context-encoding-buckets 2048 4096 8192 12288 \ - --token-generation-buckets 2048 4096 8192 12800 \ - --prompt "What is annapurna labs?" 2>&1 | tee /shared/compile_speculative.log - fi - - echo "Compilation completed successfully!" - ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: neuron-model-compilation - namespace: neuron-inference -spec: - template: - spec: - restartPolicy: OnFailure - nodeSelector: - workload-type: "neuron-inference" - tolerations: - - key: aws.amazon.com/neuron - operator: Exists - effect: NoSchedule - containers: - - name: model-compiler - image: public.ecr.aws/neuron/pytorch-inference-vllm-neuronx:0.7.2-neuronx-py310-sdk2.24.0-ubuntu22.04 - command: ["/bin/bash", "-c"] - args: - - | - set -e - echo "Setting up Neuron environment..." - - # Activate virtual environment - source ~/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate - - # Install vLLM Neuron fork - cd /shared - if [ ! -d "upstreaming-to-vllm" ]; then - git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git - cd upstreaming-to-vllm - pip install -r requirements-neuron.txt - VLLM_TARGET_DEVICE="neuron" pip install -e . - cd /shared - fi - - # Download models (if not already present) - if [ ! -d "/shared/models/Llama-3.3-70B-Instruct" ]; then - echo "Downloading Llama-3.3-70B-Instruct model..." - mkdir -p /shared/models - # Note: Requires HuggingFace token for gated model - huggingface-cli download meta-llama/Llama-3.3-70B-Instruct --local-dir /shared/models/Llama-3.3-70B-Instruct - fi - - # Optional: Download draft model for speculative decoding - if [ "$ENABLE_SPECULATIVE" = "true" ] && [ ! -d "/shared/models/Llama-3.2-1B-Instruct" ]; then - echo "Downloading draft model..." - huggingface-cli download meta-llama/Llama-3.2-1B-Instruct --local-dir /shared/models/Llama-3.2-1B-Instruct - fi - - # Run compilation - chmod +x /scripts/compile_model.sh - /scripts/compile_model.sh - - resources: - limits: - aws.amazon.com/neuroncore: "128" - memory: "128Gi" - cpu: "64" - requests: - aws.amazon.com/neuroncore: "128" - memory: "64Gi" - cpu: "32" - volumeMounts: - - name: shared-storage - mountPath: /shared - - name: compile-scripts - mountPath: /scripts - env: - - name: BATCH_SIZE - value: "${BATCH_SIZE}" - - name: ENABLE_SPECULATIVE - value: "${ENABLE_SPECULATIVE}" - - name: MODEL_PATH - value: "${MODEL_PATH}" - - name: COMPILED_MODEL_PATH - value: "${COMPILED_MODEL_PATH}" - - name: DRAFT_MODEL_PATH - value: "${DRAFT_MODEL_PATH}" - - name: TP_DEGREE - value: "${TP_DEGREE}" - - name: MAX_CONTEXT_LEN - value: "${MAX_CONTEXT_LEN}" - - name: SEQ_LEN - value: "${SEQ_LEN}" - - name: SPECULATION_LENGTH - value: "${SPECULATION_LENGTH}" - - name: HF_TOKEN - value: "${HF_TOKEN}" # - # Set to "true" for speculative decoding - - name: HF_MODEL_ID - value: "${HF_MODEL_ID}" - - name: HF_DRAFT_MODEL_ID - value: "${HF_DRAFT_MODEL_ID}" # - volumes: - - name: shared-storage - persistentVolumeClaim: - claimName: efs-models-pvc - - name: compile-scripts - configMap: - name: neuron-compile-scripts - defaultMode: 0755 - ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: efs-models-pvc - namespace: ${NAMESPACE} -spec: - accessModes: - - ReadWriteMany - storageClassName: efs-sc - resources: - requests: - storage: 500Gi \ No newline at end of file diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.template.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.template.yaml deleted file mode 100644 index a44c2d1..0000000 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.template.yaml +++ /dev/null @@ -1,167 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: neuron-vllm-scripts - namespace: neuron-inference -data: - start_vllm.sh: | - #!/bin/bash - set -e - - # - export HF_TOKEN=your_huggingface_token_here - export HF_MODEL_ID=deepseek-ai/DeepSeek-R1-Distill-Llama-70B - HF_DRAFT_MODEL_ID=meta-llama/Llama-3.2-1B-Instruct - - # Model paths - MODEL_PATH="/shared/models/Llama-3.3-70B-Instruct/" - COMPILED_MODEL_PATH="/shared/traced_model/Llama-3.3-70B-Instruct/" - - export VLLM_NEURON_FRAMEWORK="neuronx-distributed-inference" - export NEURON_COMPILED_ARTIFACTS=$COMPILED_MODEL_PATH - - # Standard deployment (without speculative decoding) - if [ "$ENABLE_SPECULATIVE" != "true" ]; then - echo "Starting vLLM server (standard mode)..." - VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ - --model $MODEL_PATH \ - --max-num-seqs ${MAX_NUM_SEQS:-1} \ - --max-model-len 12800 \ - --tensor-parallel-size 64 \ - --device neuron \ - --use-v2-block-manager \ - --override-neuron-config "{\"on_device_sampling_config\": {\"do_sample\": true}, \"skip_warmup\": true}" \ - --port 8000 - else - # With speculative decoding - echo "Starting vLLM server (speculative decoding mode)..." - DRAFT_MODEL_PATH="/shared/models/Llama-3.2-1B-Instruct/" - - VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ - --model $MODEL_PATH \ - --max-num-seqs ${MAX_NUM_SEQS:-1} \ - --max-model-len 12800 \ - --tensor-parallel-size 64 \ - --device neuron \ - --speculative-max-model-len 12800 \ - --speculative-model $DRAFT_MODEL_PATH \ - --num-speculative-tokens 7 \ - --use-v2-block-manager \ - --override-neuron-config "{\"enable_fused_speculation\":true}" \ - --port 8000 - fi - ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: neuron-llama-inference - namespace: neuron-inference -spec: - replicas: 1 - selector: - matchLabels: - app: neuron-llama-inference - template: - metadata: - labels: - app: neuron-llama-inference - spec: - nodeSelector: - workload-type: "neuron-inference" - # Optional: pin to specific instance type - node.kubernetes.io/instance-type: "trn2.48xlarge" - tolerations: - - key: aws.amazon.com/neuron - operator: Exists - effect: NoSchedule - - containers: - - name: vllm-server - image: public.ecr.aws/neuron/pytorch-inference-neuronx:2.1.2-neuronx-py310-sdk2.21.0-ubuntu20.04 - command: ["/bin/bash", "-c"] - args: - - | - set -e - - # Setup environment - source ~/aws_neuronx_venv_pytorch_2_5_nxd_inference/bin/activate - cd /shared - - # Install vLLM if not already installed - if [ ! -d "upstreaming-to-vllm" ]; then - git clone -b neuron-2.24-vllm-v0.7.2 https://github.com/aws-neuron/upstreaming-to-vllm.git - cd upstreaming-to-vllm - pip install -r requirements-neuron.txt - VLLM_TARGET_DEVICE="neuron" pip install -e . - cd /shared - fi - - # Start vLLM server - exec /scripts/start_vllm.sh - - ports: - - containerPort: 8000 - name: http - resources: - limits: - aws.amazon.com/neuroncore: "128" - memory: "256Gi" - cpu: "128" - requests: - aws.amazon.com/neuroncore: "128" - memory: "128Gi" - cpu: "64" - volumeMounts: - - name: shared-storage - mountPath: /shared - - name: vllm-scripts - mountPath: /scripts - env: - - name: MAX_NUM_SEQS - value: "1" # Batch size (1-4 supported) - - name: ENABLE_SPECULATIVE - value: "false" # Set to "true" for speculative decoding - - name: NEURON_RT_NUM_CORES - value: "128" - - # Liveness and readiness probes - livenessProbe: - httpGet: - path: /health - port: 8000 - initialDelaySeconds: 300 - periodSeconds: 30 - timeoutSeconds: 10 - readinessProbe: - httpGet: - path: /health - port: 8000 - initialDelaySeconds: 240 - periodSeconds: 10 - timeoutSeconds: 5 - - volumes: - - name: shared-storage - persistentVolumeClaim: - claimName: efs-models-pvc - - name: vllm-scripts - configMap: - name: neuron-vllm-scripts - defaultMode: 0755 - ---- -# Service to expose the vLLM server -apiVersion: v1 -kind: Service -metadata: - name: neuron-llama-service - namespace: neuron-inference -spec: - selector: - app: neuron-llama-inference - ports: - - name: http - port: 8000 - targetPort: 8000 - type: LoadBalancer \ No newline at end of file From 5d819a048a1047377c360b3c06d89db27b5117ec Mon Sep 17 00:00:00 2001 From: nithiyn Date: Tue, 9 Sep 2025 20:00:23 +0000 Subject: [PATCH 15/28] fix: remove prefix caching, compiling working, revert to qwen, remove kernels --- .../nxd-inference-eks/README.md | 20 +-- .../fused-SD/manifests/compile.yaml | 32 ++--- .../fused-SD/manifests/fsd-deploy.yaml | 117 +++++++++++++----- .../fused-SD/manifests/model_download.yaml | 16 +-- 4 files changed, 113 insertions(+), 72 deletions(-) diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/README.md b/2.projects/neuronx-distributed/nxd-inference-eks/README.md index 07d0a99..3bddc3f 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/README.md +++ b/2.projects/neuronx-distributed/nxd-inference-eks/README.md @@ -25,7 +25,7 @@ This example demonstrates deploying Large Language Models using **NeuronX Distri │ ┌─────────────────────────────────────────────────────────┐│ │ │ Shared EFS Storage ││ │ │ • /shared/model_hub/* (downloads) ││ -│ │ • /shared/compiled_models/Llama-3.3-70B/* (neffs) ││ +│ │ • /shared/compiled_models/Qwen3-32B/* (neffs) ││ │ │ • Logs ││ │ └─────────────────────────────────────────────────────────┘│ └─────────────────────────────────────────────────────────────┘ @@ -91,19 +91,19 @@ kubectl -n neuron-inference create secret generic hf-token \ ## Configuration -Use an env file to keep things tidy (example shows Llama-3.3 target + Llama-3.2 draft): +Use an env file to keep things tidy (example shows Qwen3-32B target + Qwen3-0.6B draft): ```bash cat > fused-SD/.env <<'EOF' # HF -HF_MODEL_ID=meta-llama/Llama-3.3-70B-Instruct -HF_DRAFT_MODEL_ID=meta-llama/Llama-3.2-1B-Instruct +HF_MODEL_ID=Qwen/Qwen2.5-32B-Instruct +HF_DRAFT_MODEL_ID=Qwen/Qwen2.5-0.5B-Instruct # Paths (EFS) MODEL_ROOT=/shared/model_hub -MODEL_DIRNAME=Llama-3.3-70B-Instruct -DRAFT_DIRNAME=Llama-3.2-1B-Instruct -COMPILED_ROOT=/shared/compiled_models/Llama-3.3-70B +MODEL_DIRNAME=Qwen3-32B +DRAFT_DIRNAME=Qwen3-0.6B +COMPILED_ROOT=/shared/compiled_models/Qwen3-32B # NxDI compile ENABLE_SPECULATIVE=false @@ -170,7 +170,7 @@ kubectl -n neuron-inference logs job/neuron-model-compilation --tail=200 **Output layout (no overwrites):** ``` -/shared/compiled_models/Llama-3.3-70B/ +/shared/compiled_models/Qwen3-32B/ ├─ nospec_tp32/ └─ spec_slen7_tp32/ ``` @@ -179,8 +179,8 @@ kubectl -n neuron-inference logs job/neuron-model-compilation --tail=200 Point your inference deployment at the compiled directory you want: -- Non-spec: `/shared/compiled_models/Llama-3.3-70B/nospec_tp32` -- Spec: `/shared/compiled_models/Llama-3.3-70B/spec_slen7_tp32` +- Non-spec: `/shared/compiled_models/Qwen3-32B/nospec_tp32` +- Spec: `/shared/compiled_models/Qwen3-32B/spec_slen7_tp32` Apply your inference deployment/service manifests and wait for readiness, then test via port-forward or load balancer as usual. diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml index 563cd32..d4b94b4 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml @@ -17,15 +17,15 @@ data: : "${SEQ_LEN:=8192}" # Where the downloader put things - : "${MODEL_DIRNAME:=Llama-3.3-70B-Instruct}" - : "${DRAFT_DIRNAME:=Llama-3.2-1B-Instruct}" + : "${MODEL_DIRNAME:=Qwen3-32B}" + : "${DRAFT_DIRNAME:=Qwen3-0.6B}" : "${MODEL_ROOT:=/shared/model_hub}" MODEL_PATH="${MODEL_ROOT}/${MODEL_DIRNAME}" DRAFT_MODEL_PATH="${MODEL_ROOT}/${DRAFT_DIRNAME}" # Option 1: separate compiled outputs per configuration - : "${COMPILED_ROOT:=/shared/compiled_models/Llama-3.3-70B}" + : "${COMPILED_ROOT:=/shared/compiled_models/Qwen3-32B}" if [[ "${ENABLE_SPECULATIVE}" == "true" ]]; then COMPILED_MODEL_PATH="${COMPILED_ROOT}/spec_slen${SPECULATION_LENGTH}_tp${TP_DEGREE}" else @@ -45,7 +45,7 @@ data: echo "COMPILED_MODEL_PATH=${COMPILED_MODEL_PATH}" BASE_ARGS=( - --model-type llama + --model-type qwen3 --task-type causal-lm run --model-path "${MODEL_PATH}" @@ -56,24 +56,15 @@ data: --tp-degree "${TP_DEGREE}" --batch-size "${BATCH_SIZE}" --max-context-length "${MAX_CONTEXT_LEN}" - --seq-len "${SEQ_LEN}" + --seq-len "${SEQ_LEN}" --on-device-sampling --top-k 1 --do-sample - --fused-qkv --sequence-parallel-enabled - --qkv-kernel-enabled - --attn-kernel-enabled - --mlp-kernel-enabled --cc-pipeline-tiling-factor 1 --enable-bucketing - --enable-block-kv-layout - --pa-num-blocks 2048 - --pa-block-size 32 - --enable-prefix-caching - --context-encoding-buckets 512 1024 2048 4096 8192 - --token-generation-buckets 512 1024 2048 4096 8192 - --prefix-buckets 512 1024 2048 + --context-encoding-buckets 512 1024 2048 4096 8192 + --token-generation-buckets 512 1024 2048 4096 8192 --compile-only --prompt "What is annapurna labs?" ) @@ -110,9 +101,6 @@ spec: - | set -euxo pipefail df -h /shared || true - # flip this to true when you want SD compile: - : "${ENABLE_SPECULATIVE:=false}" - export ENABLE_SPECULATIVE bash /scripts/compile_model.sh env: # tune/override as needed: @@ -123,11 +111,11 @@ spec: - name: TP_DEGREE value: "32" - name: MODEL_DIRNAME - value: "Llama-3.3-70B-Instruct" + value: "Qwen3-0.6B" - name: DRAFT_DIRNAME - value: "Llama-3.2-1B-Instruct" + value: "Qwen3-0.6B" - name: COMPILED_ROOT - value: "/shared/compiled_models/Llama-3.3-70B" + value: "/shared/compiled_models/Qwen3-32B" resources: limits: aws.amazon.com/neuroncore: "32" diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml index 0dd992a..57cf8b7 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml @@ -8,55 +8,73 @@ data: #!/bin/bash set -euo pipefail - # ---- Set defaults ---- - + # ---- Inputs / defaults ---- : "${ENABLE_SPECULATIVE:=false}" + : "${SPECULATION_LENGTH:=7}" : "${TP_DEGREE:=32}" : "${BATCH_SIZE:=1}" : "${MAX_CONTEXT_LEN:=8192}" : "${SEQ_LEN:=8192}" + + # Where the downloader put things + : "${MODEL_DIRNAME:=Qwen3-32B}" + : "${DRAFT_DIRNAME:=Qwen3-0.6B}" + : "${MODEL_ROOT:=/shared/model_hub}" + + MODEL_PATH="${MODEL_ROOT}/${MODEL_DIRNAME}" + DRAFT_MODEL_PATH="${MODEL_ROOT}/${DRAFT_DIRNAME}" + + # Separate compiled artifact roots (produced by your two compile jobs) + : "${COMPILED_MODEL_PATH_STD:=/shared/compiled_models/Qwen3-32B/spec_slen7_tp32}" + : "${COMPILED_MODEL_PATH_SPEC:=/shared/compiled_models/Qwen3-32B/nospec_tp32}" + : "${SPECULATION_LENGTH:=7}" - : "${MODEL_PATH:=/shared/models/Llama-3.3-70B-Instruct}" - : "${COMPILED_MODEL_PATH:=/shared/compiled/Llama-3.3-70B}" - : "${DRAFT_MODEL_PATH:=/shared/models/Llama-3.2-1B-Instruct}" - : "${HF_MODEL_ID:=meta-llama/Llama-3.3-70B-Instruct}" - : "${HF_DRAFT_MODEL_ID:=meta-llama/Llama-3.2-1B-Instruct}" - echo "Speculative: ${ENABLE_SPECULATIVE} | TP=${TP_DEGREE} | BS=${BATCH_SIZE} | SEQ=${SEQ_LEN}" + # -------- Select compiled dir based on mode -------- + if [[ "${ENABLE_SPECULATIVE}" == "true" ]]; then + export NEURON_COMPILED_ARTIFACTS="${COMPILED_MODEL_PATH_SPEC}" + else + export NEURON_COMPILED_ARTIFACTS="${COMPILED_MODEL_PATH_STD}" + fi + + # Sanity checks so we fail early if users forgot to compile + if [[ ! -d "${NEURON_COMPILED_ARTIFACTS}" ]] || ! compgen -G "${NEURON_COMPILED_ARTIFACTS}/**/*.neff" > /dev/null; then + echo "ERROR: No compiled artifacts found in ${NEURON_COMPILED_ARTIFACTS}. Compile first (matching SD mode)." >&2 + ls -R "${NEURON_COMPILED_ARTIFACTS}" || true + exit 2 + fi + + echo "Mode: ${ENABLE_SPECULATIVE} | TP=${TP_DEGREE} | MAX_NUM_SEQS=${MAX_NUM_SEQS} | MAX_LEN=${SEQ_LEN}" + echo "Using NEURON_COMPILED_ARTIFACTS=${NEURON_COMPILED_ARTIFACTS}" export VLLM_NEURON_FRAMEWORK="neuronx-distributed-inference" - export NEURON_COMPILED_ARTIFACTS="$COMPILED_MODEL_PATH" - if [ "$ENABLE_SPECULATIVE" = "false" ]; then - echo "Starting vLLM server (standard mode)..." + if [[ "${ENABLE_SPECULATIVE}" == "true" ]]; then + echo "Starting vLLM (speculative decoding)…" VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ - --model "$MODEL_PATH" \ - --max-num-seqs "${MAX_NUM_SEQS:-1}" \ - --max-model-len "$SEQ_LEN" \ - --tensor-parallel-size "$TP_DEGREE" \ - --device neuron \ + --model "${MODEL_PATH}" \ + --speculative-model "${DRAFT_MODEL_PATH}" \ + --num-speculative-tokens "${SPECULATION_LENGTH}" \ + --max-model-len "${SEQ_LEN}" \ --use-v2-block-manager \ - --num-gpu-blocks-override 2048 \ - --enable-prefix-caching \ - --block-size 32 \ - --override-neuron-config '{"is_block_kv_layout": true, "is_prefix_caching": true}' \ + --max-num-seqs "${MAX_NUM_SEQS}" \ + --tensor-parallel-size "${TP_DEGREE}" \ + --device neuron \ + --override-neuron-config '{"enable_fused_speculation": true, "is_block_kv_layout": true, "is_prefix_caching": true}' \ --port 8000 else - echo "Starting vLLM server (speculative decoding mode)..." + echo "Starting vLLM (standard)…" VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ - --model "$MODEL_PATH" \ - --max-num-seqs "${MAX_NUM_SEQS:-1}" \ - --max-model-len "$SEQ_LEN" \ - --tensor-parallel-size "$TP_DEGREE" \ + --model "${MODEL_PATH}" \ + --max-model-len "${SEQ_LEN}" \ + --max-num-seqs "${MAX_NUM_SEQS}" \ + --tensor-parallel-size "${TP_DEGREE}" \ --device neuron \ - --speculative-max-model-len "$SEQ_LEN" \ - --speculative-model "$DRAFT_MODEL_PATH" \ - --num-speculative-tokens "$SPECULATION_LENGTH" \ --use-v2-block-manager \ --num-gpu-blocks-override 2048 \ --enable-prefix-caching \ --block-size 32 \ - --override-neuron-config '{"enable_fused_speculation": true, "is_block_kv_layout": true, "is_prefix_caching": true}' \ + --override-neuron-config '{"is_block_kv_layout": true, "is_prefix_caching": true}' \ --port 8000 fi --- @@ -85,18 +103,17 @@ spec: containers: - name: vllm-server image: public.ecr.aws/neuron/pytorch-inference-vllm-neuronx:0.9.1-neuronx-py310-sdk2.25.0-ubuntu22.04 - command: ["/bin/bash", "-lc"] + command: ["/bin/bash","-lc"] args: - | set -euo pipefail - cd /shared exec /scripts/start_vllm.sh ports: - containerPort: 8000 name: http resources: limits: - aws.amazon.com/neuroncore: "32" # trn1.32xlarge has 64 NeuronCores total + aws.amazon.com/neuroncore: "32" memory: "500Gi" cpu: "128" requests: @@ -104,5 +121,41 @@ spec: memory: "500Gi" cpu: "64" env: + # Toggle SD on/off here (must match which compiled dir you built) + - name: ENABLE_SPECULATIVE + value: "false" # set "true" to use /spec artifacts + draft model + - name: TP_DEGREE + value: "32" - name: MAX_NUM_SEQS value: "1" + - name: SEQ_LEN + value: "8192" + + # Base & draft model locations (download job writes these) + - name: MODEL_PATH + value: "/shared/models/Llama-3.3-70B-Instruct" + - name: DRAFT_MODEL_PATH + value: "/shared/models/Llama-3.2-1B-Instruct" + + # Compiled artifact roots for each mode (compile jobs write these) + - name: COMPILED_MODEL_PATH_STD + value: "/shared/compiled/Llama-3.3-70B/std" + - name: COMPILED_MODEL_PATH_SPEC + value: "/shared/compiled/Llama-3.3-70B/spec" + + - name: SPECULATION_LENGTH + value: "7" + + volumeMounts: + - name: shared-storage + mountPath: /shared + - name: vllm-scripts + mountPath: /scripts + volumes: + - name: shared-storage + persistentVolumeClaim: + claimName: efs-models-pvc + - name: vllm-scripts + configMap: + name: neuron-vllm-scripts + defaultMode: 0755 diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/model_download.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/model_download.yaml index 75b760b..5a44c92 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/model_download.yaml +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/model_download.yaml @@ -8,11 +8,11 @@ data: #!/usr/bin/env bash set -euo pipefail - : "${HF_MODEL_ID:=meta-llama/Llama-3.3-70B-Instruct}" - : "${HF_DRAFT_MODEL_ID:=meta-llama/Llama-3.2-1B-Instruct}" + : "${HF_MODEL_ID:=Qwen/Qwen3-32B}" + : "${HF_DRAFT_MODEL_ID:=Qwen/Qwen3-0.6B}" - : "${MODEL_DIRNAME:=Llama-3.3-70B-Instruct}" - : "${DRAFT_DIRNAME:=Llama-3.2-1B-Instruct}" + : "${MODEL_DIRNAME:=Qwen3-32B}" + : "${DRAFT_DIRNAME:=Qwen3-0.6B}" : "${MODEL_ROOT:=/shared/model_hub}" MODEL_PATH="${MODEL_ROOT}/${MODEL_DIRNAME}" @@ -69,13 +69,13 @@ spec: env: # Set/override these as needed: - name: HF_MODEL_ID - value: "meta-llama/Llama-3.3-70B-Instruct" + value: "Qwen/Qwen3-32B" - name: HF_DRAFT_MODEL_ID - value: "meta-llama/Llama-3.2-1B-Instruct" + value: "Qwen/Qwen3-0.6B" - name: MODEL_DIRNAME - value: "Llama-3.3-70B-Instruct" + value: "Qwen3-32B" - name: DRAFT_DIRNAME - value: "Llama-3.2-1B-Instruct" + value: "Qwen3-0.6B" - name: HF_TOKEN valueFrom: secretKeyRef: From 6d952b675510539491aa7f6b58b21d6883c8a2ed Mon Sep 17 00:00:00 2001 From: nithiyn Date: Fri, 12 Sep 2025 23:20:32 +0000 Subject: [PATCH 16/28] commit final updates --- .../0_setup_vpc/trn-vpc-example.yaml | 238 --------- .../trn1-nxd-cluster-config.yaml | 8 +- 2.projects/README.md | 35 ++ .../nxd-inference-eks/README.md | 457 +++++++++++++++++- .../fused-SD/manifests/fsd-deploy.yaml | 103 ++-- .../fused-SD/manifests/neuron-ingress.yaml | 29 ++ .../fused-SD/manifests/storage.yaml | 3 - README.md | 16 +- 8 files changed, 585 insertions(+), 304 deletions(-) delete mode 100644 1.infrastructure/0_setup_vpc/trn-vpc-example.yaml create mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/neuron-ingress.yaml diff --git a/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml b/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml deleted file mode 100644 index b5b5b5d..0000000 --- a/1.infrastructure/0_setup_vpc/trn-vpc-example.yaml +++ /dev/null @@ -1,238 +0,0 @@ -Description: This template deploys a VPC, with a pair of public and private subnets spread - across two Availability Zones. It deploys an internet gateway, with a default - route on the public subnets. It deploys a pair of NAT gateways (one in each AZ), - and default routes for them in the private subnets. This template format was borrowed from - https://docs.aws.amazon.com/codebuild/latest/userguide/cloudformation-vpc-template.html - -Parameters: - EnvironmentName: - Description: An environment name that is prefixed to resource names - Type: String - - VpcCIDR: - Description: Please enter the IP range (CIDR notation) for this VPC - Type: String - Default: 10.0.0.0/16 - - PublicSubnet1CIDR: - Description: Please enter the IP range (CIDR notation) for the public subnet in the first Availability Zone - Type: String - Default: 10.0.128.0/18 - - PublicSubnet2CIDR: - Description: Please enter the IP range (CIDR notation) for the public subnet in the second Availability Zone - Type: String - Default: 10.0.192.0/18 - - PrivateSubnet1CIDR: - Description: Please enter the IP range (CIDR notation) for the private subnet in the first Availability Zone - Type: String - Default: 10.0.0.0/18 - - PrivateSubnet2CIDR: - Description: Please enter the IP range (CIDR notation) for the private subnet in the second Availability Zone - Type: String - Default: 10.0.64.0/18 - -Resources: - VPC: - Type: AWS::EC2::VPC - Properties: - CidrBlock: !Ref VpcCIDR - EnableDnsSupport: true - EnableDnsHostnames: true - Tags: - - Key: Name - Value: awsome-inference-vpc - - InternetGateway: - Type: AWS::EC2::InternetGateway - Properties: - Tags: - - Key: Name - Value: awsome-inference-igw - - InternetGatewayAttachment: - Type: AWS::EC2::VPCGatewayAttachment - Properties: - InternetGatewayId: !Ref InternetGateway - VpcId: !Ref VPC - - PrivateSubnet1: - Type: AWS::EC2::Subnet - Properties: - VpcId: !Ref VPC - AvailabilityZone: us-west-2d - CidrBlock: !Ref PrivateSubnet1CIDR - MapPublicIpOnLaunch: false - Tags: - - Key: Name - Value: private-awsome-inference-inference-az-d - - PrivateSubnet2: - Type: AWS::EC2::Subnet - Properties: - VpcId: !Ref VPC - AvailabilityZone: us-west-2c - CidrBlock: !Ref PrivateSubnet2CIDR - MapPublicIpOnLaunch: false - Tags: - - Key: Name - Value: private-awsome-inference-inference-az-c - - # Public subnets - can be in different AZs for redundancy - PublicSubnet1: - Type: AWS::EC2::Subnet - Properties: - VpcId: !Ref VPC - AvailabilityZone: us-west-2a # Different AZ - CidrBlock: !Ref PublicSubnet1CIDR - MapPublicIpOnLaunch: true - Tags: - - Key: Name - Value: public-awsome-inference-inference-az-a - - PublicSubnet2: - Type: AWS::EC2::Subnet - Properties: - VpcId: !Ref VPC - AvailabilityZone: us-west-2b # Different AZ - CidrBlock: !Ref PublicSubnet2CIDR - MapPublicIpOnLaunch: true - Tags: - - Key: Name - Value: public-awsome-inference-inference-az-b - - NatGateway1EIP: - Type: AWS::EC2::EIP - DependsOn: InternetGatewayAttachment - Properties: - Domain: vpc - - NatGateway2EIP: - Type: AWS::EC2::EIP - DependsOn: InternetGatewayAttachment - Properties: - Domain: vpc - - NatGateway1: - Type: AWS::EC2::NatGateway - Properties: - AllocationId: !GetAtt NatGateway1EIP.AllocationId - SubnetId: !Ref PublicSubnet1 - - NatGateway2: - Type: AWS::EC2::NatGateway - Properties: - AllocationId: !GetAtt NatGateway2EIP.AllocationId - SubnetId: !Ref PublicSubnet2 - - PublicRouteTable: - Type: AWS::EC2::RouteTable - Properties: - VpcId: !Ref VPC - Tags: - - Key: Name - Value: awsome-inference-public-subnet-rt - - DefaultPublicRoute: - Type: AWS::EC2::Route - DependsOn: InternetGatewayAttachment - Properties: - RouteTableId: !Ref PublicRouteTable - DestinationCidrBlock: 0.0.0.0/0 - GatewayId: !Ref InternetGateway - - PublicSubnet1RouteTableAssociation: - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - RouteTableId: !Ref PublicRouteTable - SubnetId: !Ref PublicSubnet1 - - PublicSubnet2RouteTableAssociation: - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - RouteTableId: !Ref PublicRouteTable - SubnetId: !Ref PublicSubnet2 - - PrivateRouteTable1: - Type: AWS::EC2::RouteTable - Properties: - VpcId: !Ref VPC - Tags: - - Key: Name - Value: awsome-inference-private-subnet-rt-1 - - DefaultPrivateRoute1: - Type: AWS::EC2::Route - Properties: - RouteTableId: !Ref PrivateRouteTable1 - DestinationCidrBlock: 0.0.0.0/0 - NatGatewayId: !Ref NatGateway1 - - PrivateSubnet1RouteTableAssociation: - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - RouteTableId: !Ref PrivateRouteTable1 - SubnetId: !Ref PrivateSubnet1 - - PrivateRouteTable2: - Type: AWS::EC2::RouteTable - Properties: - VpcId: !Ref VPC - Tags: - - Key: Name - Value: awsome-inference-private-subnet-rt-2 - - DefaultPrivateRoute2: - Type: AWS::EC2::Route - Properties: - RouteTableId: !Ref PrivateRouteTable2 - DestinationCidrBlock: 0.0.0.0/0 - NatGatewayId: !Ref NatGateway2 - - PrivateSubnet2RouteTableAssociation: - Type: AWS::EC2::SubnetRouteTableAssociation - Properties: - RouteTableId: !Ref PrivateRouteTable2 - SubnetId: !Ref PrivateSubnet2 - - NoIngressSecurityGroup: - Type: AWS::EC2::SecurityGroup - Properties: - GroupName: "no-ingress-sg" - GroupDescription: "Security group with no ingress rule" - VpcId: !Ref VPC - -Outputs: - VPC: - Description: A reference to the created VPC - Value: !Ref VPC - - PublicSubnets: - Description: A list of the public subnets - Value: !Join [ ",", [ !Ref PublicSubnet1, !Ref PublicSubnet2 ]] - - PrivateSubnets: - Description: A list of the private subnets - Value: !Join [ ",", [ !Ref PrivateSubnet1, !Ref PrivateSubnet2 ]] - - PublicSubnet1: - Description: A reference to the public subnet in the 1st Availability Zone - Value: !Ref PublicSubnet1 - - PublicSubnet2: - Description: A reference to the public subnet in the 2nd Availability Zone - Value: !Ref PublicSubnet2 - - PrivateSubnet1: - Description: A reference to the private subnet in the 1st Availability Zone - Value: !Ref PrivateSubnet1 - - PrivateSubnet2: - Description: A reference to the private subnet in the 2nd Availability Zone - Value: !Ref PrivateSubnet2 - - NoIngressSecurityGroup: - Description: Security group with no ingress rule - Value: !Ref NoIngressSecurityGroup \ No newline at end of file diff --git a/1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml b/1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml index d977575..2552a20 100644 --- a/1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml +++ b/1.infrastructure/1_setup_cluster/nxd-inference/trn1-nxd-cluster-config.yaml @@ -10,14 +10,14 @@ vpc: id: $VPC_ID subnets: private: - $AVAILABILITY_ZONE_1: + us-west-2c: id: $PRIVATE_SUBNET_1 - $AVAILABILITY_ZONE_2: + us-west-2d: id: $PRIVATE_SUBNET_2 public: - $AVAILABILITY_ZONE_1: + us-west-2c: id: $PUBLIC_SUBNET_1 - $AVAILABILITY_ZONE_2: + us-west-2d: id: $PUBLIC_SUBNET_2 clusterEndpoints: privateAccess: true diff --git a/2.projects/README.md b/2.projects/README.md index 15a5e41..f975064 100644 --- a/2.projects/README.md +++ b/2.projects/README.md @@ -10,6 +10,8 @@ The major components of this directory are: |-- ray-service/ |-- multinode-triton-trtllm-inference/ |-- mixture-of-agents/ +|-- neuronx-distributed/ +|-- mig-gpu-partitioning/ `-- ... // Other directories ``` @@ -80,6 +82,39 @@ Recent advances in large language models (LLMs) have shown substantial capabilit 2. [2.projects/mixture-of-agents/outputs/](/2.projects/mixture-of-agents/outputs/): This directory consists of output of 2-layers MoA. 3. [2.projects/mixture-of-agents/alpaca_eval](/2.projects/mixture-of-agents/alpaca_eval/): This directory is from AlpacaEval GitHub repository and consists of results of Anthropic Claude 3.5 Sonnet. These results are used during evaluation. +## NEURONX DISTRIBUTED INFERENCE - FUSED SPECULATIVE DECODING on EKS + +This project demonstrates deploying Large Language Models using **NeuronX Distributed Inference (NxDI)** with **vLLM-Neuron** on Amazon EKS with AWS Trainium instances (trn1.32xlarge). The solution showcases advanced inference optimization techniques including **fused draft speculative decoding** for enhanced performance. + +### Key Features & Technical Highlights + +**Inference Optimization:** +- **Fused Speculative Decoding**: Combines target model (e.g., Qwen3-32B) with draft model (e.g., Qwen3-0.6B) for accelerated token generation + +**Kubernetes-Native Architecture:** +- **Separate Compilation Jobs**: Independent jobs for downloading models and compiling with/without speculation +- **Isolated Artifact Storage**: Separate directories for spec vs non-spec compiled models (no overwrites) +- **Shared EFS Storage**: Persistent storage for models, compiled artifacts, and logs +- **Load Balancing**: Application Load Balancer with health checks and auto-scaling support + +**Comprehensive Monitoring & Observability:** +- **Neuron Monitor DaemonSet**: Hardware utilization, inference latency, and throughput metrics +- **Multi-Platform Integration**: Prometheus, Grafana, and CloudWatch support +- **Production-Ready Metrics**: NeuronCore utilization, memory usage, error rates, and performance indicators + +**Flexible Configuration:** +- **Toggle Speculation**: Easy switching between speculative and standard inference modes +- **Configurable Parameters**: Speculation length, batch size, sequence length, and context window +- **Model Agnostic**: Supports various model architectures with proper configuration + +### Files & Directories +1. `nxd-inference-eks/`: Complete EKS deployment guide with Kubernetes manifests +2. `fused-SD/manifests/`: Kubernetes YAML files for download, compilation, deployment, and monitoring +3. `fused-SD/.env`: Environment configuration for model paths, compilation parameters, and speculation settings +4. Infrastructure setup guides for EKS cluster creation with Trainium node groups and EFS storage + +See [neuronx-distributed/nxd-inference-eks](https://github.com/aws-samples/awsome-inference/tree/main/2.projects/neuronx-distributed/nxd-inference-eks) for detailed implementation guide. + ## MIG These days, the challenge with ML Inference workloads, is that not all workloads require the same amount of compute resources. With accelerated instances like the Amazon EC2 P5 (p5.48xlarge / p5e.48xlarge), or the Amazon EC2 P4 (p4d.24xlarge / p4de.24xlarge), customers would need to pay for the full instance of 8 GPUs. Additionally, some workloads may be too small to even run on a single GPU! To learn more about the specifics of GPU EC2 instances, check out this developer guide. diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/README.md b/2.projects/neuronx-distributed/nxd-inference-eks/README.md index 3bddc3f..dc0e282 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/README.md +++ b/2.projects/neuronx-distributed/nxd-inference-eks/README.md @@ -25,7 +25,7 @@ This example demonstrates deploying Large Language Models using **NeuronX Distri │ ┌─────────────────────────────────────────────────────────┐│ │ │ Shared EFS Storage ││ │ │ • /shared/model_hub/* (downloads) ││ -│ │ • /shared/compiled_models/Qwen3-32B/* (neffs) ││ +│ │ • /shared/compiled_models/Qwen3/* (neffs) ││ │ │ • Logs ││ │ └─────────────────────────────────────────────────────────┘│ └─────────────────────────────────────────────────────────────┘ @@ -48,12 +48,14 @@ This example demonstrates deploying Large Language Models using **NeuronX Distri Install Neuron device plugin and (optionally) the scheduler extension: ```bash + helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart --set "npd.enabled=false" kubectl get ds neuron-device-plugin -n kube-system helm upgrade --install neuron-helm-chart oci://public.ecr.aws/neuron/neuron-helm-chart \ --set "scheduler.enabled=true" \ --set "npd.enabled=false" + ``` ## Setup @@ -177,18 +179,450 @@ kubectl -n neuron-inference logs job/neuron-model-compilation --tail=200 ### Step 3 — Deploy Inference -Point your inference deployment at the compiled directory you want: +**Important:** Before deploying, you must update the compiled model paths in `fused-SD/manifests/fsd-deploy.yaml` to match your compilation parameters. + +The deployment manifest has hardcoded paths that need to match your compile job settings: -- Non-spec: `/shared/compiled_models/Qwen3-32B/nospec_tp32` -- Spec: `/shared/compiled_models/Qwen3-32B/spec_slen7_tp32` +```yaml +# In fsd-deploy.yaml, update these env vars to match your compilation: +- name: COMPILED_MODEL_PATH_STD + value: "/shared/compiled_models/Qwen3-32B/spec_slen7_tp32" # for speculative +- name: COMPILED_MODEL_PATH_SPEC + value: "/shared/compiled_models/Qwen3-32B/nospec_tp32" # for non-speculative +``` -Apply your inference deployment/service manifests and wait for readiness, then test via port-forward or load balancer as usual. +**Path format:** `/shared/compiled_models/{MODEL_NAME}/{mode}_{params}` -## Troubleshooting +Where: +- `{MODEL_NAME}` = your `COMPILED_ROOT` basename (e.g., `Qwen3-32B`) +- `{mode}` = `spec` or `nospec` +- `{params}` = `slen{SPECULATION_LENGTH}_tp{TP_DEGREE}` for spec, or just `tp{TP_DEGREE}` for nospec + +**Examples:** +- TP=32, no speculation: `nospec_tp32` +- TP=32, speculation length 7: `spec_slen7_tp32` +- TP=16, speculation length 5: `spec_slen5_tp16` + +**Quick update command:** +```bash +# For TP=32, SPECULATION_LENGTH=7 (adjust as needed) +sed -i 's|/shared/compiled_models/Qwen3-32B/spec_slen7_tp32|/shared/compiled_models/Qwen3-32B/spec_slen7_tp32|g' fused-SD/manifests/fsd-deploy.yaml +sed -i 's|/shared/compiled_models/Qwen3-32B/nospec_tp32|/shared/compiled_models/Qwen3-32B/nospec_tp32|g' fused-SD/manifests/fsd-deploy.yaml +``` + +Then apply your inference deployment: + +```bash +kubectl apply -n neuron-inference -f fused-SD/manifests/fsd-deploy.yaml +kubectl -n neuron-inference wait --for=condition=available deployment/neuron-llama-inference --timeout=600s +``` + +### Step 4 — Load Balancing with Application Load Balancer + +To expose your inference service externally and distribute traffic across multiple pods, you'll set up an Application Load Balancer (ALB) using the AWS Load Balancer Controller. + +#### 4.1 Install AWS Load Balancer Controller + +**Prerequisites:** +- Your EKS cluster must have an IAM OIDC identity provider +- The AWS Load Balancer Controller requires specific IAM permissions + +**Option A: Using Kubernetes Manifests (Recommended)** + +1. Create the IAM policy and service account: +```bash +# Download the IAM policy document +curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy.json + +# Create the IAM policy +aws iam create-policy \ + --policy-name AWSLoadBalancerControllerIAMPolicy \ + --policy-document file://iam_policy.json + +# Create service account with IAM role +eksctl create iamserviceaccount \ + --cluster=your-cluster-name \ + --namespace=kube-system \ + --name=aws-load-balancer-controller \ + --role-name AmazonEKSLoadBalancerControllerRole \ + --attach-policy-arn=arn:aws:iam::ACCOUNT-ID:policy/AWSLoadBalancerControllerIAMPolicy \ + --approve +``` + +2. Install the controller: +```bash +# Add the EKS chart repo +helm repo add eks https://aws.github.io/eks-charts +helm repo update + +# Install AWS Load Balancer Controller +helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ + -n kube-system \ + --set clusterName=your-cluster-name \ + --set serviceAccount.create=false \ + --set serviceAccount.name=aws-load-balancer-controller +``` + +3. Verify installation: +```bash +kubectl get deployment -n kube-system aws-load-balancer-controller +kubectl logs -n kube-system deployment/aws-load-balancer-controller +``` + +**Option B: Using Helm (Alternative)** +Follow the [AWS documentation for Helm installation](https://docs.aws.amazon.com/eks/latest/userguide/lbc-helm.html). + +#### 4.2 Deploy the Ingress + +Once the AWS Load Balancer Controller is installed and running: + +```bash +# Apply the ingress configuration +kubectl -n neuron-inference apply -f fused-SD/manifests/neuron-ingress.yaml + +# Monitor ingress creation (wait for ADDRESS to appear) +kubectl -n neuron-inference get ingress neuron-qwen-ingress -w +``` + +The ingress will create an Application Load Balancer that: +- Routes traffic to your inference service pods +- Provides health checks on the `/health` endpoint +- Supports both HTTP and HTTPS traffic +- Automatically scales with your deployment + +#### 4.3 Test Your Deployment + +Once the ALB is provisioned (this can take 2-3 minutes): + +```bash +# Get the ALB hostname +ALB=$(kubectl -n neuron-inference get ing neuron-qwen-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') +echo "ALB Endpoint: http://$ALB" + +# Test the health endpoint +curl -i "http://$ALB/health" + +# List available models +curl -i "http://$ALB/v1/models" + +# Test inference with a simple completion +curl -s "http://$ALB/v1/completions" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "/shared/model_hub/Qwen3-32B", + "prompt": "Say hi from vLLM on Neuron.", + "max_tokens": 64, + "temperature": 0.7 + }' + +# Test with chat completions API +curl -s "http://$ALB/v1/chat/completions" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "/shared/model_hub/Qwen3-32B", + "messages": [{"role": "user", "content": "Hello! How are you?"}], + "max_tokens": 100 + }' +``` +Congratulation! + +#### 4.4 Production Considerations + +For production deployments, consider: + +- **HTTPS/TLS**: Configure SSL certificates using AWS Certificate Manager +- **Custom Domain**: Set up Route 53 records pointing to your ALB +- **WAF Integration**: Add AWS WAF for additional security +- **Access Logging**: Enable ALB access logs for monitoring and debugging +- **Target Group Settings**: Tune health check intervals and thresholds based on your model's startup time + +Example ingress with HTTPS: +```yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: neuron-qwen-ingress-https + annotations: + kubernetes.io/ingress.class: alb + alb.ingress.kubernetes.io/scheme: internet-facing + alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:region:account:certificate/cert-id + alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]' + alb.ingress.kubernetes.io/ssl-redirect: '443' +spec: + rules: + - host: your-domain.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: neuron-llama-service + port: + number: 8000 +``` + +### Step 5 — Deploy Neuron Monitor for Observability + +AWS Neuron Monitor provides comprehensive monitoring and observability for your Neuron workloads, including hardware utilization, model performance metrics, and system health indicators. + +#### 5.1 Understanding Neuron Monitor + +Neuron Monitor offers: +- **Hardware Metrics**: NeuronCore utilization, memory usage, temperature +- **Model Performance**: Inference latency, throughput, queue depth +- **System Health**: Device status, error rates, compilation metrics +- **Integration**: Works with Prometheus, Grafana, CloudWatch, and other monitoring systems +#### 5.2 Deploy Neuron Monitor DaemonSet + +The Neuron Monitor runs as a DaemonSet to collect metrics from all Neuron devices across your cluster: + +```bash +# Create the Neuron Monitor DaemonSet +cat < neuron-monitor-policy.json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "cloudwatch:PutMetricData", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents", + "logs:DescribeLogStreams" + ], + "Resource": "*" + } + ] +} +EOF + +# Create the policy +aws iam create-policy \ + --policy-name NeuronMonitorCloudWatchPolicy \ + --policy-document file://neuron-monitor-policy.json + +# Create service account with IAM role (replace ACCOUNT-ID and CLUSTER-NAME) +eksctl create iamserviceaccount \ + --cluster=CLUSTER-NAME \ + --namespace=neuron-inference \ + --name=neuron-monitor \ + --role-name=NeuronMonitorRole \ + --attach-policy-arn=arn:aws:iam::ACCOUNT-ID:policy/NeuronMonito +--approve +``` **Downloads didn’t happen** -- Check the download job logs: - ```bash +- Che5.4 Verify Neuron Monitor Deployment + +```bash +# Check DaemonSet status +kubectl -n neuron-inference get daemonset neuron-monitor +kubectl -n neuron-inference get pods -l app=neuron-monitor + +# View logs +kubectl -n neuron-inference logs -l app=neuron-monitor --tail=50 +``` + +#### 5.5 Configure Prometheus Integration (Optional) + +To scrape metrics with Prometheus, add the following ServiceMonitor: + +```bash +cat < -- ls -la /shared/compiled_models/Qwen3-32B/ + ``` +- Update the `COMPILED_MODEL_PATH_STD` and `COMPILED_MODEL_PATH_SPEC` env vars to match your TP degree and speculation length. + **Neuron compiler errors** - These are model/hardware/SDK specific. Re-run with smaller `TP_DEGREE`, confirm SDK image version, or inspect `/shared/compile*.log`. Consider filing an issue with logs. diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml index 57cf8b7..e2ad23d 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/fsd-deploy.yaml @@ -8,27 +8,23 @@ data: #!/bin/bash set -euo pipefail - # ---- Inputs / defaults ---- : "${ENABLE_SPECULATIVE:=false}" : "${SPECULATION_LENGTH:=7}" : "${TP_DEGREE:=32}" : "${BATCH_SIZE:=1}" : "${MAX_CONTEXT_LEN:=8192}" : "${SEQ_LEN:=8192}" + : "${MAX_NUM_SEQS:=1}" - # Where the downloader put things : "${MODEL_DIRNAME:=Qwen3-32B}" : "${DRAFT_DIRNAME:=Qwen3-0.6B}" : "${MODEL_ROOT:=/shared/model_hub}" - + MODEL_PATH="${MODEL_ROOT}/${MODEL_DIRNAME}" DRAFT_MODEL_PATH="${MODEL_ROOT}/${DRAFT_DIRNAME}" - # Separate compiled artifact roots (produced by your two compile jobs) - : "${COMPILED_MODEL_PATH_STD:=/shared/compiled_models/Qwen3-32B/spec_slen7_tp32}" - : "${COMPILED_MODEL_PATH_SPEC:=/shared/compiled_models/Qwen3-32B/nospec_tp32}" - - : "${SPECULATION_LENGTH:=7}" + : "${COMPILED_MODEL_PATH_STD:=/shared/compiled_models/Qwen3-32B/nospec_tp32}" + : "${COMPILED_MODEL_PATH_SPEC:=/shared/compiled_models/Qwen3-32B/spec_slen7_tp32}" # -------- Select compiled dir based on mode -------- if [[ "${ENABLE_SPECULATIVE}" == "true" ]]; then @@ -37,16 +33,8 @@ data: export NEURON_COMPILED_ARTIFACTS="${COMPILED_MODEL_PATH_STD}" fi - # Sanity checks so we fail early if users forgot to compile - if [[ ! -d "${NEURON_COMPILED_ARTIFACTS}" ]] || ! compgen -G "${NEURON_COMPILED_ARTIFACTS}/**/*.neff" > /dev/null; then - echo "ERROR: No compiled artifacts found in ${NEURON_COMPILED_ARTIFACTS}. Compile first (matching SD mode)." >&2 - ls -R "${NEURON_COMPILED_ARTIFACTS}" || true - exit 2 - fi - echo "Mode: ${ENABLE_SPECULATIVE} | TP=${TP_DEGREE} | MAX_NUM_SEQS=${MAX_NUM_SEQS} | MAX_LEN=${SEQ_LEN}" echo "Using NEURON_COMPILED_ARTIFACTS=${NEURON_COMPILED_ARTIFACTS}" - export VLLM_NEURON_FRAMEWORK="neuronx-distributed-inference" if [[ "${ENABLE_SPECULATIVE}" == "true" ]]; then @@ -60,8 +48,8 @@ data: --max-num-seqs "${MAX_NUM_SEQS}" \ --tensor-parallel-size "${TP_DEGREE}" \ --device neuron \ - --override-neuron-config '{"enable_fused_speculation": true, "is_block_kv_layout": true, "is_prefix_caching": true}' \ - --port 8000 + --override-neuron-config "{\"enable_fused_speculation\": true}" \ + --host 0.0.0.0 --port 8000 else echo "Starting vLLM (standard)…" VLLM_RPC_TIMEOUT=100000 python -m vllm.entrypoints.openai.api_server \ @@ -71,27 +59,23 @@ data: --tensor-parallel-size "${TP_DEGREE}" \ --device neuron \ --use-v2-block-manager \ - --num-gpu-blocks-override 2048 \ - --enable-prefix-caching \ - --block-size 32 \ - --override-neuron-config '{"is_block_kv_layout": true, "is_prefix_caching": true}' \ - --port 8000 + --host 0.0.0.0 --port 8000 fi --- apiVersion: apps/v1 kind: Deployment metadata: - name: neuron-llama-inference + name: neuron-qwen-inference namespace: neuron-inference spec: replicas: 1 selector: matchLabels: - app: neuron-llama-inference + app: neuron-qwen-inference template: metadata: labels: - app: neuron-llama-inference + app: neuron-qwen-inference spec: nodeSelector: workload-type: "neuron-inference" @@ -114,43 +98,54 @@ spec: resources: limits: aws.amazon.com/neuroncore: "32" - memory: "500Gi" - cpu: "128" + memory: "400Gi" + cpu: "120" requests: aws.amazon.com/neuroncore: "32" - memory: "500Gi" - cpu: "64" + memory: "400Gi" + cpu: "120" env: - # Toggle SD on/off here (must match which compiled dir you built) - name: ENABLE_SPECULATIVE - value: "false" # set "true" to use /spec artifacts + draft model + value: "false" + - name: SPECULATION_LENGTH + value: "7" - name: TP_DEGREE value: "32" - - name: MAX_NUM_SEQS + - name: BATCH_SIZE value: "1" + - name: MAX_CONTEXT_LEN + value: "8192" - name: SEQ_LEN value: "8192" - - # Base & draft model locations (download job writes these) - - name: MODEL_PATH - value: "/shared/models/Llama-3.3-70B-Instruct" - - name: DRAFT_MODEL_PATH - value: "/shared/models/Llama-3.2-1B-Instruct" - - # Compiled artifact roots for each mode (compile jobs write these) + - name: MAX_NUM_SEQS + value: "1" + - name: MODEL_DIRNAME + value: "Qwen3-32B" + - name: DRAFT_DIRNAME + value: "Qwen3-0.6B" + - name: MODEL_ROOT + value: "/shared/model_hub" - name: COMPILED_MODEL_PATH_STD - value: "/shared/compiled/Llama-3.3-70B/std" + value: "/shared/compiled_models/Qwen3-32B/nospec_tp32" - name: COMPILED_MODEL_PATH_SPEC - value: "/shared/compiled/Llama-3.3-70B/spec" - - - name: SPECULATION_LENGTH - value: "7" - + value: "/shared/compiled_models/Qwen3-32B/spec_slen7_tp32" volumeMounts: - name: shared-storage mountPath: /shared - name: vllm-scripts mountPath: /scripts + readinessProbe: + httpGet: + path: /health + port: 8000 + initialDelaySeconds: 30 + periodSeconds: 5 + livenessProbe: + httpGet: + path: /health + port: 8000 + initialDelaySeconds: 60 + periodSeconds: 10 volumes: - name: shared-storage persistentVolumeClaim: @@ -159,3 +154,17 @@ spec: configMap: name: neuron-vllm-scripts defaultMode: 0755 +--- +apiVersion: v1 +kind: Service +metadata: + name: neuron-qwen-svc + namespace: neuron-inference +spec: + type: ClusterIP + selector: + app: neuron-qwen-inference + ports: + - name: http + port: 8000 + targetPort: 8000 diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/neuron-ingress.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/neuron-ingress.yaml new file mode 100644 index 0000000..76a2c0c --- /dev/null +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/neuron-ingress.yaml @@ -0,0 +1,29 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: neuron-qwen-ingress + namespace: neuron-inference + annotations: + kubernetes.io/ingress.class: alb + alb.ingress.kubernetes.io/scheme: internet-facing + alb.ingress.kubernetes.io/target-type: ip + # Health checks + alb.ingress.kubernetes.io/healthcheck-path: /health + alb.ingress.kubernetes.io/healthcheck-port: "8000" + alb.ingress.kubernetes.io/success-codes: "200" + # Ensure ALB is created in the AZs with your pods + alb.ingress.kubernetes.io/subnets: subnet-0186a8f2614f8c522, subnet-0ad9fdda1d6f7dc98 #replace with yours- min 2 + # (Optional) Cross-zone LB + alb.ingress.kubernetes.io/load-balancer-attributes: load_balancing.cross_zone.enabled=true +spec: + ingressClassName: alb + rules: + - http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: neuron-qwen-svc + port: + number: 8000 diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/storage.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/storage.yaml index 7876509..8881a9e 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/storage.yaml +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/storage.yaml @@ -1,6 +1,3 @@ - - ---- apiVersion: v1 kind: PersistentVolume metadata: diff --git a/README.md b/README.md index 646c86a..2f4b43b 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ README # Project Summaries |-- README # Setup for infrastructure (VPC, EKS cluster etc) |-- 0_setup_vpc/ # CloudFormation templates for reference VPC |-- 1_setup_cluster/ # Scripts to create your cluster using EKS -2.project/ +2.projects/ |-- nims-inference/ |-- trtllm-inference/ |-- sglang-inference/ @@ -21,7 +21,7 @@ README # Project Summaries |-- multinode-triton-trtllm-inference/ |-- mixture-of-agents/ |-- neuronx-distributed/ -|-- mig/ +|-- mig-gpu-partitioning/ 3.use-cases/ |-- nims-inference/ `-- ... @@ -65,9 +65,17 @@ Recent advances in large language models (LLMs) have shown substantial capabilit These examples shows how to deploy LLMs like T5, Mistral using NVIDIA Triton TRT-LLM on Amazon SageMaker. See [triton-trtllm-sagemaker](2.projects/triton-trtllm-sagemaker) for more information. -### NEURONX DISTRIBUTED INFERENCE - FUSED SD on EKS +### NEURONX DISTRIBUTED INFERENCE - FUSED SPECULATIVE DECODING on EKS -This project demonstrates deploying Large Language Models using NeuronX Distributed Inference (NxDI) and vllm-neuronx on Amazon EKS with trn1.32xlarge instances. It features a Kubernetes-native deployment with prefix-caching and fused draft speculative decoding support for optimized inference on Neuron, shared EFS storage for compiled model artifacts, and comprehensive monitoring with Neuron Monitor. The solution supports both standard inference and speculative decoding modes with easy configuration switching. See [neuronx-distributed/nxd-inference-eks](2.projects/neuronx-distributed/nxd-inference-eks) for more information. +This project demonstrates deploying Large Language Models using **NeuronX Distributed Inference (NxDI)** with **vLLM-Neuron** on Amazon EKS with AWS Trainium instances (trn1.32xlarge). The solution showcases advanced inference optimization techniques including **fused draft speculative decoding**. + +**Key Technical Features:** +- **Fused Speculative Decoding**: Combines target model (e.g., Qwen3-32B) with draft model (e.g., Qwen3-0.6B) for accelerated token generation with maintained quality +- **Kubernetes-Native Architecture**: Separate jobs for model download, compilation (spec/non-spec), and inference deployment with shared EFS storage +- **Advanced Monitoring**: Neuron Monitor DaemonSet with Prometheus, Grafana, and CloudWatch integration for comprehensive observability +- **Flexible Configuration**: Easy toggling between speculative and standard inference modes with configurable parameters + +The architecture features isolated artifact storage (no overwrites between spec/non-spec modes), tensor parallelism optimization (TP=32), and comprehensive performance monitoring including NeuronCore utilization, inference latency, and throughput metrics. See [neuronx-distributed/nxd-inference-eks](2.projects/neuronx-distributed/nxd-inference-eks) for more information. ### NEURONX DISTRIBUTED INFERENCE - Profiling and Benchmarking Guide From f79b745907ad7d2cde3fa13bf9698437d11b4018 Mon Sep 17 00:00:00 2001 From: nithiyn Date: Fri, 12 Sep 2025 19:24:02 -0400 Subject: [PATCH 17/28] Update README.md --- 2.projects/README.md | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/2.projects/README.md b/2.projects/README.md index f975064..54702cc 100644 --- a/2.projects/README.md +++ b/2.projects/README.md @@ -86,23 +86,12 @@ Recent advances in large language models (LLMs) have shown substantial capabilit This project demonstrates deploying Large Language Models using **NeuronX Distributed Inference (NxDI)** with **vLLM-Neuron** on Amazon EKS with AWS Trainium instances (trn1.32xlarge). The solution showcases advanced inference optimization techniques including **fused draft speculative decoding** for enhanced performance. -### Key Features & Technical Highlights +### Key Features **Inference Optimization:** - **Fused Speculative Decoding**: Combines target model (e.g., Qwen3-32B) with draft model (e.g., Qwen3-0.6B) for accelerated token generation -**Kubernetes-Native Architecture:** -- **Separate Compilation Jobs**: Independent jobs for downloading models and compiling with/without speculation -- **Isolated Artifact Storage**: Separate directories for spec vs non-spec compiled models (no overwrites) -- **Shared EFS Storage**: Persistent storage for models, compiled artifacts, and logs -- **Load Balancing**: Application Load Balancer with health checks and auto-scaling support - -**Comprehensive Monitoring & Observability:** -- **Neuron Monitor DaemonSet**: Hardware utilization, inference latency, and throughput metrics -- **Multi-Platform Integration**: Prometheus, Grafana, and CloudWatch support -- **Production-Ready Metrics**: NeuronCore utilization, memory usage, error rates, and performance indicators - -**Flexible Configuration:** +**Configuration:** - **Toggle Speculation**: Easy switching between speculative and standard inference modes - **Configurable Parameters**: Speculation length, batch size, sequence length, and context window - **Model Agnostic**: Supports various model architectures with proper configuration @@ -110,8 +99,7 @@ This project demonstrates deploying Large Language Models using **NeuronX Distri ### Files & Directories 1. `nxd-inference-eks/`: Complete EKS deployment guide with Kubernetes manifests 2. `fused-SD/manifests/`: Kubernetes YAML files for download, compilation, deployment, and monitoring -3. `fused-SD/.env`: Environment configuration for model paths, compilation parameters, and speculation settings -4. Infrastructure setup guides for EKS cluster creation with Trainium node groups and EFS storage +3. Infrastructure setup guides for EKS cluster creation with Trainium node groups and EFS storage See [neuronx-distributed/nxd-inference-eks](https://github.com/aws-samples/awsome-inference/tree/main/2.projects/neuronx-distributed/nxd-inference-eks) for detailed implementation guide. From 9f2e03b52f47694d5147b0a7c762b43950d1a92d Mon Sep 17 00:00:00 2001 From: nithiyn Date: Fri, 12 Sep 2025 19:26:56 -0400 Subject: [PATCH 18/28] Update README.md verbiage fixes --- 2.projects/neuronx-distributed/README.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/2.projects/neuronx-distributed/README.md b/2.projects/neuronx-distributed/README.md index 598db61..ab15c64 100644 --- a/2.projects/neuronx-distributed/README.md +++ b/2.projects/neuronx-distributed/README.md @@ -12,17 +12,16 @@ This directory contains two deployment approaches for different use cases: ### 1. EKS Deployment (`nxd-inference-eks/`) -**Production-ready, scalable Kubernetes deployment** +**Kubernetes deployment** -- **Use Case**: Enterprise production workloads requiring high availability, auto-scaling, and load balancing -- **Models**: Llama 3.3 70B, DeepSeek-R1-Distill-Llama-70B, and other large language models +- **Models**: Qwen3, Llama3, and other large language models - **Instance Types**: `trn1.32xlarge`, `trn2.48xlarge` - **Key Features**: - - Kubernetes-native deployment with HPA/VPA scaling + - Kubernetes-native deployment - EFS shared storage for model artifacts - Neuron monitoring and observability - Support for standard and speculative decoding modes - - Load balancing with AWS Application Load Balancer + - Load balancing with Application Load Balancer **[→ See EKS Deployment Guide](nxd-inference-eks/README.md)** @@ -47,7 +46,6 @@ This directory contains two deployment approaches for different use cases: |-------------|----------------|----------------| | **Production workloads** | ✅ Recommended | ⚠️ Limited scalability | | **Development/Testing** | ⚠️ Complex setup | ✅ Recommended | -| **Auto-scaling** | ✅ HPA/VPA support | ❌ Manual scaling | | **High availability** | ✅ Multi-AZ support | ❌ Single instance | | **Setup complexity** | ⚠️ Moderate | ✅ Simple | | **Cost optimization** | ✅ Scale to zero | ❌ Always running | @@ -82,4 +80,4 @@ Both examples demonstrate high-performance inference capabilities: - [AWS Neuron Documentation](https://awsdocs-neuron.readthedocs-hosted.com/) - [NeuronX Distributed Inference Guide](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/libraries/nxd-inference/) - [vLLM Documentation](https://docs.vllm.ai/) -- [AWS Trainium Developer Guide](https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-inferentia.html) \ No newline at end of file +- [AWS Trainium Developer Guide](https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-inferentia.html) From 81b4863a5bcabda88ece220f5ba1f2f399edb07a Mon Sep 17 00:00:00 2001 From: nithiyn Date: Fri, 12 Sep 2025 19:35:00 -0400 Subject: [PATCH 19/28] Update README.md --- .../nxd-inference-eks/README.md | 37 ++----------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/README.md b/2.projects/neuronx-distributed/nxd-inference-eks/README.md index dc0e282..9ea5ac8 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/README.md +++ b/2.projects/neuronx-distributed/nxd-inference-eks/README.md @@ -1,6 +1,6 @@ # NeuronX Distributed Inference on EKS -This example demonstrates deploying Large Language Models using **NeuronX Distributed Inference (NxDI)** on Amazon EKS with AWS Trainium instances. The deployment supports both standard inference and speculative decoding with prefix caching across both +This example demonstrates deploying Large Language Models using **NeuronX Distributed Inference (NxDI)** on Amazon EKS with AWS Trainium instances. The deployment supports both standard inference and speculative decoding. For the purpose of this example, we use the Qwen3 family of models but other popular model architectures are also supported with Neuron and can be used with this example and with supported kernels. ## Architecture Overview @@ -91,34 +91,6 @@ kubectl -n neuron-inference create secret generic hf-token \ ``` -## Configuration - -Use an env file to keep things tidy (example shows Qwen3-32B target + Qwen3-0.6B draft): - -```bash -cat > fused-SD/.env <<'EOF' -# HF -HF_MODEL_ID=Qwen/Qwen2.5-32B-Instruct -HF_DRAFT_MODEL_ID=Qwen/Qwen2.5-0.5B-Instruct - -# Paths (EFS) -MODEL_ROOT=/shared/model_hub -MODEL_DIRNAME=Qwen3-32B -DRAFT_DIRNAME=Qwen3-0.6B -COMPILED_ROOT=/shared/compiled_models/Qwen3-32B - -# NxDI compile -ENABLE_SPECULATIVE=false -SPECULATION_LENGTH=7 -TP_DEGREE=32 -BATCH_SIZE=1 -SEQ_LEN=8192 -MAX_CONTEXT_LEN=8192 -EOF - -source fused-SD/.env -``` - ## Workflow > **Two steps:** (1) **Download** both models to EFS, (2) **Compile** with or without speculation. @@ -155,7 +127,7 @@ kubectl -n neuron-inference exec -it -- ls -l /shared/model_hu ### Step 2 — Compile (separate outputs for spec vs non-spec) -Apply the **compile job** manifest. Control speculation by editing the `ENABLE_SPECULATIVE` environment variable in the manifest: +Apply the **compile job** manifest. Control speculation by editing the `ENABLE_SPECULATIVE` environment variable in the manifest as well as other env vars you would like to set or toggle. The script sets a number of defaults in the ConfigMap: ```bash # Non-spec compile (kept in /shared/compiled_models/Llama-3.3-70B/nospec_tp32) @@ -179,7 +151,7 @@ kubectl -n neuron-inference logs job/neuron-model-compilation --tail=200 ### Step 3 — Deploy Inference -**Important:** Before deploying, you must update the compiled model paths in `fused-SD/manifests/fsd-deploy.yaml` to match your compilation parameters. +**Important:** Before deploying, you must update the compiled model paths in `fused-SD/manifests/fsd-deploy.yaml` to match your compilation parameters. Please make sure that the env vars being set and used by vLLM are consistent with your compile-time input shapes and configs. The deployment manifest has hardcoded paths that need to match your compile job settings: @@ -533,8 +505,7 @@ eksctl create iamserviceaccount \ --attach-policy-arn=arn:aws:iam::ACCOUNT-ID:policy/NeuronMonito --approve ``` -**Downloads didn’t happen** -- Che5.4 Verify Neuron Monitor Deployment +**Verify Neuron Monitor Deployment** ```bash # Check DaemonSet status From 3c286e146ca26d5e07eb6880cbd270fecdcf3a99 Mon Sep 17 00:00:00 2001 From: nithiyn Date: Fri, 12 Sep 2025 19:36:11 -0400 Subject: [PATCH 20/28] Update README.md --- 2.projects/neuronx-distributed/nxd-inference-eks/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/README.md b/2.projects/neuronx-distributed/nxd-inference-eks/README.md index 9ea5ac8..89570ed 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/README.md +++ b/2.projects/neuronx-distributed/nxd-inference-eks/README.md @@ -374,7 +374,7 @@ spec: hostPID: true containers: - name: neuron-monitor - image: public.ecr.aws/neuron/neuron-monitor:2.20.0.0 + image: #set latest image securityContext: privileged: true env: From 6798235147d4250faaab312bdb094925e685445f Mon Sep 17 00:00:00 2001 From: nithiyn Date: Fri, 12 Sep 2025 19:40:14 -0400 Subject: [PATCH 21/28] Update README.md --- README.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 2f4b43b..43ba121 100644 --- a/README.md +++ b/README.md @@ -65,19 +65,11 @@ Recent advances in large language models (LLMs) have shown substantial capabilit These examples shows how to deploy LLMs like T5, Mistral using NVIDIA Triton TRT-LLM on Amazon SageMaker. See [triton-trtllm-sagemaker](2.projects/triton-trtllm-sagemaker) for more information. -### NEURONX DISTRIBUTED INFERENCE - FUSED SPECULATIVE DECODING on EKS +### NEURONX-DISTRIBUTED-INFERENCE EKS -This project demonstrates deploying Large Language Models using **NeuronX Distributed Inference (NxDI)** with **vLLM-Neuron** on Amazon EKS with AWS Trainium instances (trn1.32xlarge). The solution showcases advanced inference optimization techniques including **fused draft speculative decoding**. +This project demonstrates deploying Large Language Models using **NeuronX Distributed Inference (NxDI)** with **vLLM-Neuron** on Amazon EKS with AWS Trainium instances (trn1.32xlarge). The solution showcases advanced inference optimization techniques including **fused draft speculative decoding** and comprehensive performance monitoring including NeuronCore utilization, inference latency, and throughput metrics. See [neuronx-distributed/nxd-inference-eks](2.projects/neuronx-distributed/nxd-inference-eks) for more information. -**Key Technical Features:** -- **Fused Speculative Decoding**: Combines target model (e.g., Qwen3-32B) with draft model (e.g., Qwen3-0.6B) for accelerated token generation with maintained quality -- **Kubernetes-Native Architecture**: Separate jobs for model download, compilation (spec/non-spec), and inference deployment with shared EFS storage -- **Advanced Monitoring**: Neuron Monitor DaemonSet with Prometheus, Grafana, and CloudWatch integration for comprehensive observability -- **Flexible Configuration**: Easy toggling between speculative and standard inference modes with configurable parameters - -The architecture features isolated artifact storage (no overwrites between spec/non-spec modes), tensor parallelism optimization (TP=32), and comprehensive performance monitoring including NeuronCore utilization, inference latency, and throughput metrics. See [neuronx-distributed/nxd-inference-eks](2.projects/neuronx-distributed/nxd-inference-eks) for more information. - -### NEURONX DISTRIBUTED INFERENCE - Profiling and Benchmarking Guide +### NEURONX DISTRIBUTED INFERENCE - Profiling and Benchmarking Guide on EC2 This example on EC2 walks through deploying, profiling, and benchmarking LLMs on EC2 with NxDI. See [neuronx-distributed/nxd-inference-ec2](2.projects/neuronx-distributed/nxdi-ec2-vllm) for more information. From 84533b6004cc83c8a54b843b806faa730fc3f96d Mon Sep 17 00:00:00 2001 From: nithiyn Date: Sat, 13 Sep 2025 18:06:53 -0400 Subject: [PATCH 22/28] Delete 2.projects/neuronx-distributed/nxd-inference-eks/.env --- .../nxd-inference-eks/.env | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 2.projects/neuronx-distributed/nxd-inference-eks/.env diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/.env b/2.projects/neuronx-distributed/nxd-inference-eks/.env deleted file mode 100644 index bfc3d43..0000000 --- a/2.projects/neuronx-distributed/nxd-inference-eks/.env +++ /dev/null @@ -1,24 +0,0 @@ -# Hugging Face Configuration -HF_TOKEN=your_huggingface_token_here -HF_MODEL_ID=deepseek-ai/DeepSeek-R1-Distill-Llama-70B -HF_DRAFT_MODEL_ID=meta-llama/Llama-3.2-1B-Instruct -MODEL_NAME=llama-3-70B-inst - -# Inference Configuration -MAX_MODEL_LEN=12800 -SEQ_LEN=12800 -MAX_CONTEXT_LEN=12288 - -# Neuron Configuration -TENSOR_PARALLEL_SIZE=32 -TP_DEGREE=32 # Add this - same as TENSOR_PARALLEL_SIZE -NAMESPACE=neuron-inference -BATCH_SIZE=1 -MAX_NUM_SEQS=1 -ENABLE_SPECULATIVE=false # Start with false -SPECULATION_LENGTH=7 # Add this - -# Paths -MODEL_PATH=/shared/models/Llama-3.3-70B-Instruct -COMPILED_MODEL_PATH=/shared/traced_model/Llama-3.3-70B-Instruct -DRAFT_MODEL_PATH=/shared/models/Llama-3.2-1B-Instruct \ No newline at end of file From c3e0f061c51e96f9eb6dc216f09eb29e1514c523 Mon Sep 17 00:00:00 2001 From: nithiyn Date: Sat, 13 Sep 2025 18:08:12 -0400 Subject: [PATCH 23/28] Update Create_EKS_Cluster.md --- .../1_setup_cluster/nxd-inference/Create_EKS_Cluster.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md index e6a19e6..3ccd35e 100644 --- a/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md +++ b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md @@ -1,7 +1,6 @@ # Steps to create EKS cluster with EFS -In this example we create an EKS cluster consisting of two `trn1.32xlarge` compute nodes. We also setup EFA between the compute nodes. - +In this example we create an EKS cluster consisting of one `trn1.32xlarge` compute node. ### a. Configure AWS CLI ``` @@ -178,4 +177,4 @@ volumeBindingMode: Immediate allowVolumeExpansion: true EOF -``` \ No newline at end of file +``` From dad22331a9cf1a43caf21ddd9ba8a42eae2aa860 Mon Sep 17 00:00:00 2001 From: nithiyn Date: Sat, 13 Sep 2025 18:08:34 -0400 Subject: [PATCH 24/28] Update Create_EKS_Cluster.md --- .../1_setup_cluster/nxd-inference/Create_EKS_Cluster.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md index 3ccd35e..1920525 100644 --- a/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md +++ b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md @@ -160,7 +160,7 @@ for subnet in subnet-xxx subnet-yyy subnet-zzz; do --security-groups sg-your-efs-security-group done -``` +```bash # Create StorageClass cat < Date: Sat, 13 Sep 2025 18:09:24 -0400 Subject: [PATCH 25/28] Update Create_EKS_Cluster.md --- .../1_setup_cluster/nxd-inference/Create_EKS_Cluster.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md index 1920525..0e679aa 100644 --- a/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md +++ b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md @@ -160,8 +160,9 @@ for subnet in subnet-xxx subnet-yyy subnet-zzz; do --security-groups sg-your-efs-security-group done -```bash + # Create StorageClass +```bash cat < Date: Sat, 13 Sep 2025 18:10:10 -0400 Subject: [PATCH 26/28] Update Create_EKS_Cluster.md --- .../1_setup_cluster/nxd-inference/Create_EKS_Cluster.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md index 0e679aa..9de121b 100644 --- a/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md +++ b/1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md @@ -150,8 +150,9 @@ until [ "$(aws efs describe-file-systems \ sleep 3 done echo "EFS is available." - +``` # Create mount targets (one per AZ your nodes use) +``` for subnet in subnet-xxx subnet-yyy subnet-zzz; do aws efs create-mount-target \ --region us-west-2 \ @@ -159,8 +160,7 @@ for subnet in subnet-xxx subnet-yyy subnet-zzz; do --subnet-id "$subnet" \ --security-groups sg-your-efs-security-group done - - +``` # Create StorageClass ```bash cat < Date: Sat, 13 Sep 2025 18:15:35 -0400 Subject: [PATCH 27/28] Update README.md --- 2.projects/neuronx-distributed/nxd-inference-eks/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/README.md b/2.projects/neuronx-distributed/nxd-inference-eks/README.md index 89570ed..0a2f1b8 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/README.md +++ b/2.projects/neuronx-distributed/nxd-inference-eks/README.md @@ -41,6 +41,7 @@ This example demonstrates deploying Large Language Models using **NeuronX Distri ## Prerequisites +- Follow the steps in `1.infrastructure/0_setup_vpc/vpc-cf-example.yaml` and `1.infrastructure/1_setup_cluster/nxd-inference/Create_EKS_Cluster.md` first to setup your infrastructure. - `kubectl`, `aws` CLI, and `helm` - EKS cluster with Trainium nodes and EFS PVC - A Hugging Face token with access to the target repos @@ -81,7 +82,7 @@ kubectl get nodes -L workload-type,node.kubernetes.io/instance-type kubectl create namespace neuron-inference # Apply EFS storage configuration -kubectl apply -f fused-SD/manifests/storage.yaml -n neuron-inference +kubectl apply -f fused-SD/manifests/storage.yaml -n neuron-inference #this uses the efs filesystem and the storage class you created previously # Create HF token secret once # replace YOUR_HF_TOKEN with your actual token (starts with hf_) From 9e8b1be3378a78ab9f4681b03d18bd487d5764ac Mon Sep 17 00:00:00 2001 From: nithiyn Date: Mon, 15 Sep 2025 10:36:56 -0400 Subject: [PATCH 28/28] fix: env var mismatch on target dir name --- .../nxd-inference-eks/fused-SD/manifests/compile.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml index d4b94b4..2081e41 100644 --- a/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml +++ b/2.projects/neuronx-distributed/nxd-inference-eks/fused-SD/manifests/compile.yaml @@ -111,7 +111,7 @@ spec: - name: TP_DEGREE value: "32" - name: MODEL_DIRNAME - value: "Qwen3-0.6B" + value: "Qwen3-32B" - name: DRAFT_DIRNAME value: "Qwen3-0.6B" - name: COMPILED_ROOT