Created
December 30, 2023 07:03
-
-
Save toilaluan/c6fe0f4881065c836706515d5980afe8 to your computer and use it in GitHub Desktop.
nichenet_benchmark.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"colab_type": "text", | |
"id": "view-in-github" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/toilaluan/84fcab02ca5243fced7dfb43863ffd97/untitled8.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"id": "XmjZBB2iquNf" | |
}, | |
"outputs": [], | |
"source": [ | |
"import requests\n", | |
"from tqdm import tqdm\n", | |
"\n", | |
"dummy_base64_image = \"iVBORw0KGgoAAAANSUhEUgAAAyEAAAKlCAYAAADcuOOJAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAtdEVYdENyZWF0aW9uIFRpbWUAV2VkIDI3IERlYyAyMDIzIDA2OjE0OjQ4IEFNICswN19Hbc8AACAASURBVHic7N17XFRl/gfwzwzDDDe5iwgaKqaZZsq2UiqVmquiJKaotbbWgpa1lmlupv4wW8g7efmZl/BSZFraZY1CFy+bgqmprOhPNzANQQVkhEEZQGbm/P5gmWWAOTPgMIMzn/frtbvOea6H893nzDPnOedIFAoXwdnZGcHBQXBycoJEIgEREREREZEpNTU1uHbtGjQaLWQyGby8fCCVSgEJ8J//gqTev+tI2rcPEPz9/WozExERERERNYNOp0NhURHUFRVwcpLBy9sXUqnUYPLRcCIi5QSEiIiIiIhaSiqVIrBDB/j6+kKr1aBcVQpBECAIACAAgMG//1OGExAiIiIiImo5qVQKb29vuLm5Q6OpQcWd2wBgdCLCGQgREREREd0zqVSKDh0CIHN2RlWVGnerqwA0NREBZIIgNF0LERERERFRM0ilUnQMDMTV/HxUVNyBs1wBiUQCQQAkEgGABIIg8EoIERERERFZjrOzM9zd3KHRalBdXfXfyx/1rn1wEkJERERERBYjkUjQvn17AEBVpbpuIZb+fwFOQoiIiIiIyMKcnKSQO8tRo6mBVqv578WQ//wvJyFERERERGRREokE/v5+gADU3L1bu1F/LzrvCSEiIiIiolYgl8sB1L5V/b/LsWrnIpyEEBERERGRxdW9j/C/y7EE/dUQTkKIiIiIiMjiJBIJAECn0wEGt6VzEkJERERERK1APwkRdLUb9I/o5T0hRERERETUmoTa/+ivhfCeECIiIiIiam1Cg//mJISIiIiIiFqJYPi/fE8IERERERFZTb0lWZyEEBERERFR6xLq3ZcOXgkhIiIiIiKrqZ2KyARBMJGRiIiIiIiopWrfli75z38DvBJCREREREStRGjiXwAnIUREREREZE18TwgREREREVkT3xNCRERERETWw/eEEBERERGRLchs3QEiIiIiIjJPZuZRAEBxcTFWrUpCRkamaP7f/S4M77zzDoKDgwAAgwZFtHofzcErIURERERE95mAgAB88EEi/vCH4UbzhIeHY+XKFfoJSFvCSQgRERER0X1CpVLp/+3k5ISFCxfg6aefbpRv8OBBWLp0CeRyuX7bnTt3rNFFQ0ZeSchJCBERERHRfWLjxk0Gn52cnPD+++8ZTESefDICCQl/g1zubJB3+/ZPrNFFUXVzEqf27du/Z8uOEBERERGReX75JQcVFRUYMGAAJJL/vH1cKsXTTz+Fa9euoXPnB/D++4vh7Gw4Adm6dRs+/TTF6v29dasUEgng6uoGCSSARAKJRAJJr169jFwkISIiIiKitmjSpIl4442ZBtu0Wi0EQYBMZvjsqS1btmLr1m3W7J7epUu/QiIBfHz9DSYhfDoWEREREdF95osvvgQAzJz5F/0VEScnp0b5tm7dZrMJiBjeE0JEREREdB/64osvsW7d/0IQml7YtHXrNmzZstXKvTKPzFiniYiIiIiobbt5swQ6na7RVRBBEFBYWGR0gmJrvBJCRERERHQfGjZsGN57L77JZVgSiQTvvvsOxo2LtkHPTOMkhIiIiIjoPjNixB8aTUB0Oh10Op3+s0QiwZw5szFmzBhbdFEUJyFERERERPeR4cOfwcKFCwwmIIIgYNWqJCxdusxgIiKVStvkFRE+HYuIiIiI6D7xzDPDsGhRPKTS/15L0Ol0WLp0OVJTU/+zRYJ58/6qz1N3ReTOnTtITz9gg143xishRERERET3iTfemGliAgKkpqZi6dLlja6IzJz5F6v2VQwnIURERERE9wl/f3/9v+uWYNWfgNSpnYgYLs2qX9bWuByLiIiIiOg+U1JSgnXr/ld0eVVq6veorq7GzJl/aVMTEACQPPTQQ23z4cFERERERHRf+/XXy5BIAB9ff0ggASQSSCQSLsciIiIiIiLr4iSEiIiIiIisipMQIiIiIiKyKt6YTkRERERErUPScEPt7ei8EkJERERERFYlEwQ+HIuIiIiIiKyHV0KIiIiIiMiqOAkhIiIiIiKr4iSEiIiIiIisipMQIiIiIiKyKk5CiIiIiIjIqjgJISIiIiIiq+IkhIiIiIiIrIqTECIiIiIisipOQoiIiIiIyKo4CSEiIiIiIqviJISIiIiIiKyKkxAiIiIiIrIqTkKIiIiIiMiqOAkhIiIiIiKrkgmCYOs+EBERERGRA+GVECIiIiIisipOQoiIiIiIyKo4CSEiIiIiIquS2boDRERERETkGKQuv8erw0fzSggREREREVkXJyFERERERGRVsry8PFv3gYiIiIiIHAivhBARERERkVXJbty4Yes+EFEbszJ5t627QERERPe5t+Ni0CEwsMk0Ph2LiJr05PAxtu4CEVnQkfRUzPjzFIvUtWHrZwBgsfqIyP7UjRPGcBJCREYNCHG1dReIyAJO5lUCAJydLLsK29L1EZHj4CSEiIjIQcicJG26PiJyHJyEEBEROQiZha9cWLo+InIcnIQQERE5CF4JIaK2gpMQIiIiB8F7QoioreAkhIiIyEHwSggRtRVW/wkjJSUFFy5csHazRERERGRjyR9/jHPnztm6G9QGGFwJqampwUsvvYSKigps27YNPj4+91R5YWEhtFotgoOD9ds+++wzuLi44OGHH76nuonIun799VcsWbIEffr0waxZs2zdHSJqAY1WaNP1UdsR+/JLyM+/ColEAg+PdgjpEoIXX5yK/mFh91RvcnIyXN3c0evhPhbqKd2vDCYhJ06cQHFxscUq37x5M4KCghAXF2exOonI+vbt24e1a9dCEAR0797d1t0hohaq0eradH3UdtypuINuod0RNXYsKu5UIO2HVLw16w18+90PcPfwuKe6tTqBsePAdFU/Y0PqKchqamrg7OwMAEhPT0fnzp2Rn5+vz1haWopNmzbh3LlzcHNzw6hRozBu3DhIJLXrQF9//XUMGzYMhw8fxq1bt9CzZ0+88cYb2Lt3L44fPw4PDw+cOnUKU6ZMweDBgwEAFy9exJtvvoni4mL06tULM2fOvOerLkTUes6fP4+4uDgcPXrU1l0honvQ8MrFsCefMKvcwSM/mVUf2REBCOwYhKHPjAQAtO8QiAXvvI3rNwrRtVsojmUcxVe7v8C1a/nw9fXDS7HTMCD8v/GkVJbg4w3rcfZsFhRyBaLGjsP4iZMBADqdAI1WQObRI/hkWzJejpuOJwYOtsluku3Ifv75ZwwcOBDl5eX4+eef8fzzz+PTTz8FAOh0Orz77rtQq9V4/vnnUVRUhA0bNkAikWDcuHEAgEuXLiEvLw8vvPACPDw8sH37dmzfvh2PPfYYXFxc0L17d0RERKBLly76RjMyMhAXFwcXFxds374dW7Zswdtvv22L/SciM9T9//PIkSM27gkR3QtNg1+f9x/OxIghg0TL7D+c2aicsfrIfggA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5BSqpkaym6Pi0YbkEEsNhJunxrt+U38IJaWoqEhFRUWaPn16oo8FScDr9aqurk433XSTKisrdejQITU0NATba2tr1dfXp+rqan377bfauXNnxH4nTpzQxx9/rLvuuktVVVVqbW1VfX192GMIN4Yktbe3a/ny5dq7d686OzttzyXctgMDA1q2bJmmTZumJ598Ul1dXVqzZs24fl6YWLHWiiTt3r1b+/fvV3t7e8R9RHrtY6kvTF5ja2osuzkqHm1IDtHWQLh5arzrdyxjI8lYgAHrN78Z8vmWlharsrLSsizLam9vtxYvXmwNDg5almVZPp/PWrhwoXXp0iXbfmMdPXrUqqioCNkWaYyXX37ZOnLkiFVTU2N98803tucUblufz2eVlZVZgUDAsizLOn36tLVo0SLbfSG+wtWfXa1YlmV9//331rJly6wXXnjB2rdvX8R9RHrtY6kvTA5jay9STdnNUfFow+Q2XH+x1EC081S06zf1l5zWb34zWH9TXC7L5XJZvysotAoKPFbBDR7rhsIZVkpra6t6e3sTnYWQpH7++WfNmDFDktTW1qbi4uLgW7S5ubnKycnRiRMnbPuNdOnSJe3Zs0cLFy4MOV6kMWpra1VaWirLivzN1eG2zc3N1S233KLXX39dPT09euONN1RZWRlxfzArUq1cvHhR9fX12rhxY9T7iPTax1JfmHyiqSm7OSoebUgOsdRAtPNUtOs39YdwUt59911VVlbqww8/TPSxIMn09PTorbfe0tNPPy1p6JrRzMzMUdtkZmaqp6fHtp8kdXR0aMmSJSorK5PP59OqVatCjhntGFerrq5On376qe6991798ssvo44ViRVtrTQ0NOihhx7SrFmzYtoHrz3CsaupYXZzVDzakBwmugZiWb+pP4ST0tDQoN27d2v79u28IwJj/H6/Vq9erZqaGt16662SJJfLpf7+/lHbDQwMKCMjw7afJHk8Hn3yySf6xz/+od///vdasWKFBgcHdfDgQa1bt07r1q3T4cOHoxojlLH7sdPX16dnnnlGTz31lP7nf/5H+fn5evbZZxUIBKL62SC+wtXKSM3NzfJ6vaquro5pH7z2CCdSTQ2zm6Pi0YbkMJE1EOv6Tf0hHKck3XjjjXK73eru7lZWVlaijwmT3PAEVl5ePupSFY/Ho7NnzwYfBwIBdXZ26vrrr7ftJw3d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\"" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"id": "LZb-7Ewlq6Lw" | |
}, | |
"outputs": [], | |
"source": [ | |
"prompting_payload = {\n", | |
" \"prompt\": \"an image of\",\n", | |
" \"seed\": 0,\n", | |
" \"max_length\": 42,\n", | |
" \"additional_params\": {},\n", | |
"}\n", | |
"\n", | |
"sd_reward_payload = {\n", | |
" \"prompt\": \"string\",\n", | |
" \"seed\": 0,\n", | |
" \"images\": [dummy_base64_image] * 20,\n", | |
" \"model_name\": \"string\",\n", | |
" \"additional_params\": {\"num_inference_steps\": 30},\n", | |
"}\n", | |
"sd_turbo_reward_payload = {\n", | |
" \"prompt\": \"string\",\n", | |
" \"seed\": 0,\n", | |
" \"images\": [dummy_base64_image] * 20,\n", | |
" \"model_name\": \"string\",\n", | |
" \"additional_params\": {\"num_inference_steps\": 4},\n", | |
"}\n", | |
"\n", | |
"prompt_url = \"http://generate_prompt_nicheimage.nichetensor.com:15010/prompt_generate\"\n", | |
"sd_reward_url = \"http://check_realistic_vision_nicheimage.nichetensor.com:15011/verify\"\n", | |
"sd_turbo_reward_url = \"http://sdxl_turbo_nicheimage.nichetensor.com:15012/verify\"" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"id": "qGezyTIiuMnJ" | |
}, | |
"outputs": [], | |
"source": [ | |
"import time\n", | |
"\n", | |
"# Decorator function to measure execution time\n", | |
"def measure_time(func):\n", | |
" def wrapper(*args, **kwargs):\n", | |
" start_time = time.time()\n", | |
" result = func(*args, **kwargs)\n", | |
" end_time = time.time()\n", | |
" execution_time = end_time - start_time\n", | |
" return result, execution_time\n", | |
" return wrapper\n", | |
"\n", | |
"@measure_time\n", | |
"def send_a_request(id, payload, url):\n", | |
" headers = {\n", | |
" 'accept': 'application/json',\n", | |
" 'Content-Type': 'application/json',\n", | |
" }\n", | |
" response = requests.post(url, headers=headers, json=payload)\n", | |
" # Check the response\n", | |
" if response.status_code == 200:\n", | |
" return response.json()\n", | |
" else:\n", | |
" return False" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 543 | |
}, | |
"id": "r70AL9i7vCQC", | |
"outputId": "ebc11ba7-5023-4340-b09e-d03766f2445b" | |
}, | |
"outputs": [], | |
"source": [ | |
"# prompt: send concurrent 60 request to each pair url and payload, plot the count of success/fail request, plot the average time of success request in each pair\n", | |
"\n", | |
"import concurrent.futures\n", | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"def benchmark(num_concurrents = 1):\n", | |
" print(f\"NUM CONCURRENTS : {num_concurrents}\")\n", | |
" benchmark_records = {}\n", | |
" # Create a list of url and payload pairs\n", | |
" url_payload_pairs = [\n", | |
" (prompt_url, prompting_payload),\n", | |
" (sd_reward_url, sd_reward_payload),\n", | |
" (sd_turbo_reward_url, sd_turbo_reward_payload)\n", | |
" ]\n", | |
" for url_payload_pair in url_payload_pairs:\n", | |
" # Create a pool of workers\n", | |
" with concurrent.futures.ThreadPoolExecutor() as executor:\n", | |
" # Send requests concurrently\n", | |
" futures = [\n", | |
" executor.submit(send_a_request, i, url_payload_pair[1], url_payload_pair[0])\n", | |
" for i in range(num_concurrents)\n", | |
" ]\n", | |
"\n", | |
" # Get the results\n", | |
" results = [future.result() for future in futures]\n", | |
" latencys = [result[1] for result in results]\n", | |
" results = [result[0] for result in results]\n", | |
"\n", | |
" # Count the number of successful and failed requests\n", | |
" num_successes = 0\n", | |
" num_failures = 0\n", | |
" for result in results:\n", | |
" if result:\n", | |
" num_successes += 1\n", | |
" else:\n", | |
" num_failures += 1\n", | |
"\n", | |
" # Calculate the average time of successful requests\n", | |
" pipe_time = 0\n", | |
" hashing_time = 0\n", | |
" latency_time = 0\n", | |
" for result, latency in zip(results, latencys):\n", | |
" if result and \"component_time\" in result:\n", | |
" total_time = result[\"component_time\"]\n", | |
" pipe_time += total_time[\"pipe_time\"]\n", | |
" hashing_time += total_time[\"hash_time\"]\n", | |
" latency_time += latency\n", | |
" if \"component_time\" in result:\n", | |
" avg_pipe_time = pipe_time / num_successes\n", | |
" avg_hash_time = hashing_time / num_successes\n", | |
" print(f\"AVG PIPE TIME : {avg_pipe_time}\")\n", | |
" print(f\"AVG TIME : {avg_hash_time}\")\n", | |
" avg_latency_time = latency_time / num_successes\n", | |
" print(url_payload_pair[0])\n", | |
" print(f\"AVG LATENCY : {avg_latency_time}\")\n", | |
" print(f\"NUM SUCCESSES : {num_successes}\")\n", | |
" print(f\"NUM FAILURES : {num_failures}\")\n", | |
"\n", | |
" benchmark_records[url_payload_pair[0]] = avg_latency_time\n", | |
" return benchmark_records" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"NUM CONCURRENTS : 1\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"http://generate_prompt_nicheimage.nichetensor.com:15010/prompt_generate\n", | |
"AVG LATENCY : 0.8848152160644531\n", | |
"NUM SUCCESSES : 1\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.9685964584350586\n", | |
"AVG TIME : 0.11398768424987793\n", | |
"http://check_realistic_vision_nicheimage.nichetensor.com:15011/verify\n", | |
"AVG LATENCY : 3.3894383907318115\n", | |
"NUM SUCCESSES : 1\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.8430297374725342\n", | |
"AVG TIME : 0.36380577087402344\n", | |
"http://sdxl_turbo_nicheimage.nichetensor.com:15012/verify\n", | |
"AVG LATENCY : 3.3113999366760254\n", | |
"NUM SUCCESSES : 1\n", | |
"NUM FAILURES : 0\n", | |
"NUM CONCURRENTS : 2\n", | |
"http://generate_prompt_nicheimage.nichetensor.com:15010/prompt_generate\n", | |
"AVG LATENCY : 0.9802323579788208\n", | |
"NUM SUCCESSES : 2\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.9747494459152222\n", | |
"AVG TIME : 0.19875693321228027\n", | |
"http://check_realistic_vision_nicheimage.nichetensor.com:15011/verify\n", | |
"AVG LATENCY : 3.251213550567627\n", | |
"NUM SUCCESSES : 2\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.8357831239700317\n", | |
"AVG TIME : 0.367342472076416\n", | |
"http://sdxl_turbo_nicheimage.nichetensor.com:15012/verify\n", | |
"AVG LATENCY : 4.381767392158508\n", | |
"NUM SUCCESSES : 2\n", | |
"NUM FAILURES : 0\n", | |
"NUM CONCURRENTS : 4\n", | |
"http://generate_prompt_nicheimage.nichetensor.com:15010/prompt_generate\n", | |
"AVG LATENCY : 1.0412580370903015\n", | |
"NUM SUCCESSES : 4\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.9674128293991089\n", | |
"AVG TIME : 0.19855982065200806\n", | |
"http://check_realistic_vision_nicheimage.nichetensor.com:15011/verify\n", | |
"AVG LATENCY : 4.313895881175995\n", | |
"NUM SUCCESSES : 4\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.8415230512619019\n", | |
"AVG TIME : 0.3635284900665283\n", | |
"http://sdxl_turbo_nicheimage.nichetensor.com:15012/verify\n", | |
"AVG LATENCY : 7.118847966194153\n", | |
"NUM SUCCESSES : 4\n", | |
"NUM FAILURES : 0\n", | |
"NUM CONCURRENTS : 8\n", | |
"http://generate_prompt_nicheimage.nichetensor.com:15010/prompt_generate\n", | |
"AVG LATENCY : 1.4233187139034271\n", | |
"NUM SUCCESSES : 8\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.9689516723155975\n", | |
"AVG TIME : 0.19936001300811768\n", | |
"http://check_realistic_vision_nicheimage.nichetensor.com:15011/verify\n", | |
"AVG LATENCY : 7.54877632856369\n", | |
"NUM SUCCESSES : 8\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.84491428732872\n", | |
"AVG TIME : 0.36435267329216003\n", | |
"http://sdxl_turbo_nicheimage.nichetensor.com:15012/verify\n", | |
"AVG LATENCY : 13.485821813344955\n", | |
"NUM SUCCESSES : 8\n", | |
"NUM FAILURES : 0\n", | |
"NUM CONCURRENTS : 16\n", | |
"http://generate_prompt_nicheimage.nichetensor.com:15010/prompt_generate\n", | |
"AVG LATENCY : 2.2615447491407394\n", | |
"NUM SUCCESSES : 16\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.9656549394130707\n", | |
"AVG TIME : 0.1987328678369522\n", | |
"http://check_realistic_vision_nicheimage.nichetensor.com:15011/verify\n", | |
"AVG LATENCY : 15.513625338673592\n", | |
"NUM SUCCESSES : 16\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.8494255095720291\n", | |
"AVG TIME : 0.36856304109096527\n", | |
"http://sdxl_turbo_nicheimage.nichetensor.com:15012/verify\n", | |
"AVG LATENCY : 30.896057784557343\n", | |
"NUM SUCCESSES : 16\n", | |
"NUM FAILURES : 0\n", | |
"NUM CONCURRENTS : 32\n", | |
"http://generate_prompt_nicheimage.nichetensor.com:15010/prompt_generate\n", | |
"AVG LATENCY : 4.545166440308094\n", | |
"NUM SUCCESSES : 32\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.9722986444830894\n", | |
"AVG TIME : 0.20272977650165558\n", | |
"http://check_realistic_vision_nicheimage.nichetensor.com:15011/verify\n", | |
"AVG LATENCY : 33.82783532887697\n", | |
"NUM SUCCESSES : 32\n", | |
"NUM FAILURES : 0\n", | |
"AVG PIPE TIME : 1.8502846360206604\n", | |
"AVG TIME : 0.367223359644413\n", | |
"http://sdxl_turbo_nicheimage.nichetensor.com:15012/verify\n", | |
"AVG LATENCY : 60.842635594308376\n", | |
"NUM SUCCESSES : 32\n", | |
"NUM FAILURES : 0\n" | |
] | |
} | |
], | |
"source": [ | |
"num_concurrents = [1, 2, 4, 8, 16, 32]\n", | |
"all_benchmark_records = {}\n", | |
"for num_concurrent in num_concurrents:\n", | |
" all_benchmark_records[num_concurrent] = benchmark(num_concurrent)\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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", | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# Plotting the results\n", | |
"urls = [\n", | |
" prompt_url,\n", | |
" sd_reward_url,\n", | |
" sd_turbo_reward_url\n", | |
"]\n", | |
"for url in urls:\n", | |
" avg_latencies = [\n", | |
" all_benchmark_records[num_concurrent][url] for num_concurrent in num_concurrents\n", | |
" ]\n", | |
" plt.plot(num_concurrents, avg_latencies, label=url)\n", | |
"\n", | |
"plt.xlabel(\"Number of Concurrent Requests\")\n", | |
"plt.ylabel(\"Average Latency\")\n", | |
"plt.title(\"Benchmarking Results\")\n", | |
"plt.legend()\n", | |
"plt.show()" | |
] | |
} | |
], | |
"metadata": { | |
"colab": { | |
"authorship_tag": "ABX9TyO8qlMhZ3E1ENHOCsGMHozl", | |
"include_colab_link": true, | |
"provenance": [] | |
}, | |
"kernelspec": { | |
"display_name": "Python 3", | |
"name": "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.11.5" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment