← back to Exo
run integration test for each inference engine
08e8cacf01be3b261e53705fb90494623ca631be · 2024-08-02 13:47:06 +0100 · Alex Cheema
Files touched
Diff
commit 08e8cacf01be3b261e53705fb90494623ca631be
Author: Alex Cheema <alexcheema123@gmail.com>
Date: Fri Aug 2 13:47:06 2024 +0100
run integration test for each inference engine
---
.circleci/config.yml | 159 +++++++++++++++++++++++++++------------------------
1 file changed, 85 insertions(+), 74 deletions(-)
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 083094cc..d607a1de 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -3,6 +3,87 @@ version: 2.1
orbs:
python: circleci/python@2
+commands:
+ run_chatgpt_api_test:
+ parameters:
+ inference_engine:
+ type: string
+ steps:
+ - run:
+ name: Run chatgpt api integration test (<<parameters.inference_engine>>)
+ command: |
+ source env/bin/activate
+
+ # Start first instance
+ DEBUG_DISCOVERY=9 DEBUG=9 python3 main.py --inference-engine <<parameters.inference_engine>> --node-id "node1" --listen-port 5678 --broadcast-port 5679 --chatgpt-api-port 8000 --chatgpt-api-response-timeout-secs 900 > output1.log 2>&1 &
+ PID1=$!
+
+ # Start second instance
+ DEBUG_DISCOVERY=9 DEBUG=9 python3 main.py --inference-engine <<parameters.inference_engine>> --node-id "node2" --listen-port 5679 --broadcast-port 5678 --chatgpt-api-port 8001 --chatgpt-api-response-timeout-secs 900 > output2.log 2>&1 &
+ PID2=$!
+
+ # Wait for discovery
+ sleep 10
+
+ # Function to check if processes are still running
+ check_processes() {
+ if ! kill -0 $PID1 2>/dev/null; then
+ echo "First instance (PID $PID1) died unexpectedly. Log output:"
+ cat output1.log
+ exit 1
+ fi
+ if ! kill -0 $PID2 2>/dev/null; then
+ echo "Second instance (PID $PID2) died unexpectedly. Log output:"
+ cat output2.log
+ exit 1
+ fi
+ }
+
+ # Check processes before proceeding
+ check_processes
+
+ response_1=$(curl -s http://localhost:8000/v1/chat/completions \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "llama-3.1-8b",
+ "messages": [{"role": "user", "content": "Keep responses concise. Who was the king of pop?"}],
+ "temperature": 0.7
+ }')
+ echo "Response 1: $response_1"
+
+ # Check processes after first response
+ check_processes
+
+ response_2=$(curl -s http://localhost:8001/v1/chat/completions \
+ -H "Content-Type: application/json" \
+ -d '{
+ "model": "llama-3.1-8b",
+ "messages": [{"role": "user", "content": "Keep responses concise. Who was the king of pop?"}],
+ "temperature": 0.7
+ }')
+ echo "Response 2: $response_2"
+
+ # Check processes after second response
+ check_processes
+
+ # Stop both instances
+ kill $PID1 $PID2
+
+ echo ""
+ if ! echo "$response_1" | grep -q "Michael Jackson" || ! echo "$response_2" | grep -q "Michael Jackson"; then
+ echo "Test failed: Response does not contain 'Michael Jackson'"
+ echo "Response 1: $response_1"
+ echo ""
+ echo "Response 2: $response_2"
+ echo "Output of first instance:"
+ cat output1.log
+ echo "Output of second instance:"
+ cat output2.log
+ exit 1
+ else
+ echo "Test passed: Response from both nodes contains 'Michael Jackson'"
+ fi
+
jobs:
unit_test:
macos:
@@ -84,80 +165,10 @@ jobs:
source env/bin/activate
pip install --upgrade pip
pip install .
- - run:
- name: Run chatgpt api integration test
- command: |
- source env/bin/activate
-
- # Start first instance
- DEBUG_DISCOVERY=9 DEBUG=9 python3 main.py --inference-engine mlx --node-id "node1" --listen-port 5678 --broadcast-port 5679 --chatgpt-api-port 8000 --chatgpt-api-response-timeout-secs 900 > output1.log 2>&1 &
- PID1=$!
-
- # Start second instance
- DEBUG_DISCOVERY=9 DEBUG=9 python3 main.py --inference-engine mlx --node-id "node2" --listen-port 5679 --broadcast-port 5678 --chatgpt-api-port 8001 --chatgpt-api-response-timeout-secs 900 > output2.log 2>&1 &
- PID2=$!
-
- # Wait for discovery
- sleep 10
-
- # Function to check if processes are still running
- check_processes() {
- if ! kill -0 $PID1 2>/dev/null; then
- echo "First instance (PID $PID1) died unexpectedly. Log output:"
- cat output1.log
- exit 1
- fi
- if ! kill -0 $PID2 2>/dev/null; then
- echo "Second instance (PID $PID2) died unexpectedly. Log output:"
- cat output2.log
- exit 1
- fi
- }
-
- # Check processes before proceeding
- check_processes
-
- response_1=$(curl -s http://localhost:8000/v1/chat/completions \
- -H "Content-Type: application/json" \
- -d '{
- "model": "llama-3.1-8b",
- "messages": [{"role": "user", "content": "Keep responses concise. Who was the king of pop?"}],
- "temperature": 0.7
- }')
- echo "Response 1: $response_1"
-
- # Check processes after first response
- check_processes
-
- response_2=$(curl -s http://localhost:8001/v1/chat/completions \
- -H "Content-Type: application/json" \
- -d '{
- "model": "llama-3.1-8b",
- "messages": [{"role": "user", "content": "Keep responses concise. Who was the king of pop?"}],
- "temperature": 0.7
- }')
- echo "Response 2: $response_2"
-
- # Check processes after second response
- check_processes
-
- # Stop both instances
- kill $PID1 $PID2
-
- echo ""
- if ! echo "$response_1" | grep -q "Michael Jackson" || ! echo "$response_2" | grep -q "Michael Jackson"; then
- echo "Test failed: Response does not contain 'Michael Jackson'"
- echo "Response 1: $response_1"
- echo ""
- echo "Response 2: $response_2"
- echo "Output of first instance:"
- cat output1.log
- echo "Output of second instance:"
- cat output2.log
- exit 1
- else
- echo "Test passed: Response from both nodes contains 'Michael Jackson'"
- fi
+ - run_chatgpt_api_test:
+ inference_engine: mlx
+ - run_chatgpt_api_test:
+ inference_engine: tinygrad
workflows:
version: 2
← 32bb44b3 request to both nodes in integration test, dont preload the
·
back to Exo
·
fix legacy model loading eafed8e1 →