diff --git "a/notebooks/02-model-evals.ipynb" "b/notebooks/02-model-evals.ipynb" --- "a/notebooks/02-model-evals.ipynb" +++ "b/notebooks/02-model-evals.ipynb" @@ -2,29 +2,50 @@ "cells": [ { "cell_type": "code", - "execution_count": null, "id": "0", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T05:19:33.542703Z", + "start_time": "2025-10-07T05:19:32.517273Z" + } + }, "source": [ "from src.modules.vlm_inference import analyze_product_image\n", "from src.modules.data_processing import load_test_data, image_to_base64\n", + "from src.modules.evals import run_inference_on_dataframe_async, evaluate_all_categories, extract_metrics\n", "from dotenv import load_dotenv\n", "import os\n", "from PIL import Image\n", "import matplotlib.pyplot as plt\n", "import io\n", "import ast\n", + "import pandas as pd\n", + "import altair as alt\n", + "\n", "%load_ext autoreload\n", - "%autoreload 2\n" - ] + "%autoreload 2" + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], + "execution_count": 61 }, { "cell_type": "code", - "execution_count": null, "id": "1", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-06T23:41:05.025580Z", + "start_time": "2025-10-06T23:41:04.999878Z" + } + }, "source": [ "load_dotenv()\n", "FIREWORKS_API_KEY = os.getenv(\"FIREWORKS_API_KEY\")\n", @@ -32,18 +53,39 @@ "\n", "assert FIREWORKS_API_KEY is not None, \"FIREWORKS_API_KEY not found in environment variables\"\n", "assert OPENAI_API_KEY is not None, \"OPENAI_API_KEY not found in environment variables\"" - ] + ], + "outputs": [], + "execution_count": 2 }, { "cell_type": "code", - "execution_count": null, "id": "2", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-06T23:43:55.745006Z", + "start_time": "2025-10-06T23:43:54.932746Z" + } + }, "source": [ "df_test = load_test_data()\n", - "df_test.loc[:, \"image_base64\"] = df_test.loc[:, \"image\"].apply(lambda x: image_to_base64(x))" - ] + "df_test.loc[:, \"image_base64\"] = df_test.loc[:, \"image\"].apply(lambda x: image_to_base64(x))\n", + "\n", + "# Sample to 1000 images\n", + "df_test = df_test.sample(1000).reset_index()\n", + "print(f\"Shape of final eval set {df_test.shape}\")" + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loaded 1496 test examples from ../data/test.csv\n", + "Columns: ['filename', 'link', 'id', 'masterCategory', 'gender', 'subCategory', 'image']\n", + "Shape of final eval set (1000, 9)\n" + ] + } + ], + "execution_count": 13 }, { "cell_type": "markdown", @@ -55,56 +97,1398 @@ }, { "cell_type": "code", - "execution_count": null, "id": "4", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-06T23:44:02.185435Z", + "start_time": "2025-10-06T23:44:02.140944Z" + } + }, "source": [ - "img_bytes = df_test.loc[:, \"image\"][0]\n", + "img_bytes = df_test.loc[:, \"image\"][1]\n", "img_dict = ast.literal_eval(img_bytes)\n", "img_bytes = img_dict[\"bytes\"]\n", "img = Image.open(io.BytesIO(img_bytes))\n", "plt.imshow(img)\n", "plt.axis('off')\n", "plt.show()" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data", + "jetTransient": { + "display_id": null + } + } + ], + "execution_count": 15 }, { "cell_type": "code", - "execution_count": null, "id": "5", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-06T23:44:15.037909Z", + "start_time": "2025-10-06T23:44:11.787431Z" + } + }, "source": [ - "model_id = \"gpt-4.1-mini\"\n", + "model_id = \"accounts/fireworks/models/qwen2p5-vl-32b-instruct\"\n", "result = analyze_product_image(\n", " model=model_id,\n", - " image_url=df_test.loc[:, \"image_base64\"][0],\n", - " api_key=OPENAI_API_KEY,\n", - " provider=\"openai\"\n", + " image_url=df_test.loc[:, \"image_base64\"][1],\n", + " api_key=FIREWORKS_API_KEY,\n", + " provider=\"Fireworks\"\n", ")" - ] + ], + "outputs": [], + "execution_count": 18 }, { "cell_type": "code", - "execution_count": null, "id": "6", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-06T23:44:15.076636Z", + "start_time": "2025-10-06T23:44:15.052637Z" + } + }, "source": [ "result" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "ProductClassification(master_category='Apparel', gender='Women', sub_category='Topwear', description=\"The image showcases a women's mustard yellow long-sleeve V-neck top. The top features a classic, simple design with a relaxed fit, accentuating a casual yet stylish look. The fabric appears soft and comfortable, likely made from a blend of materials that offer a smooth texture. The V-neckline adds a touch of elegance and flatters the neckline, while the long sleeves provide coverage and warmth. The mustard yellow color is vibrant and versatile, suitable for both casual outings and layered looks. The top is paired with dark-colored pants, creating a balanced and cohesive outfit. The overall design is minimalistic, focusing on comfort and timeless style.\")" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 19 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "*Important*: If you are following through this notebook make sure to replace \"pyroworks\" with your account name", + "id": "fcfe40fd0ec7dc34" + }, + { + "cell_type": "markdown", + "id": "7", + "metadata": {}, + "source": [ + "#### Run test set through base OSS model\n", + "1. Create a deployment for accounts/fireworks/models/qwen2-vl-72b-instruct\n", + "2. Check deployment status\n", + "3. Run test set through deployment for base model and save results" ] }, { "cell_type": "code", - "execution_count": null, - "id": "7", + "id": "8", + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-06T23:46:04.809476Z", + "start_time": "2025-10-06T23:45:40.564951Z" + } + }, + "source": "! firectl create deployment accounts/fireworks/models/qwen2-vl-72b-instruct --min-replica-count 1 --max-replica-count 1 --accelerator-type NVIDIA_H100_80GB", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name: accounts/pyroworks/deployments/rou70025\r\n", + "Create Time: 2025-10-06 16:46:04\r\n", + "Expire Time: 2025-10-13 16:46:04\r\n", + "Created By: barrosoluque.roberto@fireworks.ai\r\n", + "State: CREATING\r\n", + "Status: OK\r\n", + "Min Replica Count: 1\r\n", + "Max Replica Count: 1\r\n", + "Desired Replica Count: 0\r\n", + "Replica Count: 0\r\n", + "Autoscaling Policy: disabled\r\n", + "Base Model: accounts/fireworks/models/qwen2-vl-72b-instruct\r\n", + "Accelerator Count: 4\r\n", + "Accelerator Type: NVIDIA_H100_80GB\r\n", + "Precision: BF16\r\n", + "World Size: 4\r\n", + "Generator Count: 1\r\n", + "Max Batch Size: 128\r\n", + "Enable Addons: false\r\n", + "Max Peft Batch Size: 16\r\n", + "Kv Cache Memory Pct: 80\r\n", + "Direct Route Type: DIRECT_ROUTE_TYPE_UNSPECIFIED\r\n", + "Auto Tune:\r\n", + "Placement:\r\n", + " Region: REGION_UNSPECIFIED\r\n", + " Multi Region: GLOBAL\r\n", + "Region: US_WASHINGTON_2\r\n", + "Engine: FIREATTENTION\r\n", + "Update Time: 2025-10-06 16:46:04\r\n", + "Cleanup Delay: 0s\r\n", + "Log Level: INFO\r\n", + "Hot Load Bucket Type: BUCKET_TYPE_UNSPECIFIED\r\n", + "Model Extra Args: []\r\n", + "Model Image Tag inherited: 4.0.313\r\n" + ] + } + ], + "execution_count": 20 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T00:09:49.638757Z", + "start_time": "2025-10-07T00:09:48.551195Z" + } + }, + "cell_type": "code", + "source": "! firectl-admin get deployment rou70025", + "id": "8a87fe6d37b109df", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name: accounts/pyroworks/deployments/rou70025\r\n", + "Create Time: 2025-10-06 16:46:04\r\n", + "Expire Time: 2025-10-13 16:46:04\r\n", + "Created By: barrosoluque.roberto@fireworks.ai\r\n", + "State: READY\r\n", + "Status: OK\r\n", + "Annotations:\r\n", + " image-tag-reason=Persisted by deployment watcher\r\n", + "Min Replica Count: 1\r\n", + "Max Replica Count: 1\r\n", + "Desired Replica Count: 1\r\n", + "Replica Count: 1\r\n", + "Autoscaling Policy: disabled\r\n", + "Base Model: accounts/fireworks/models/qwen2-vl-72b-instruct\r\n", + "Accelerator Count: 4\r\n", + "Accelerator Type: NVIDIA_H100_80GB\r\n", + "Precision: BF16\r\n", + "World Size: 4\r\n", + "Generator Count: 1\r\n", + "Max Batch Size: 128\r\n", + "Enable Addons: false\r\n", + "Max Peft Batch Size: 16\r\n", + "Kv Cache Memory Pct: 80\r\n", + "Image Tag: 4.0.313\r\n", + "Direct Route Type: DIRECT_ROUTE_TYPE_UNSPECIFIED\r\n", + "Auto Tune:\r\n", + "Placement:\r\n", + " Region: REGION_UNSPECIFIED\r\n", + " Multi Region: GLOBAL\r\n", + "Region: US_WASHINGTON_2\r\n", + "Engine: FIREATTENTION\r\n", + "Update Time: 2025-10-06 17:04:43\r\n", + "Cleanup Delay: 0s\r\n", + "Log Level: INFO\r\n", + "Hot Load Bucket Type: BUCKET_TYPE_UNSPECIFIED\r\n", + "Model Extra Args: []\r\n" + ] + } + ], + "execution_count": 24 + }, + { + "cell_type": "code", + "id": "9", + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T00:22:49.954737Z", + "start_time": "2025-10-07T00:19:25.134907Z" + } + }, + "source": [ + "# Run with concurrent requests using await directly in Jupyter\n", + "df_predictions_qwen_base = await run_inference_on_dataframe_async(\n", + " df_test,\n", + " model=\"accounts/pyroworks/deployedModels/qwen2-vl-72b-instruct-yaxztv7t\",\n", + " provider=\"FireworksAI\",\n", + " api_key=FIREWORKS_API_KEY,\n", + " max_concurrent_requests=20, # Adjust based on rate limits\n", + ")\n", + "\n", + "results_qwen_base = evaluate_all_categories(\n", + " df_ground_truth=df_test,\n", + " df_predictions=df_predictions_qwen_base,\n", + " categories=[\"masterCategory\", \"gender\", \"subCategory\"]\n", + ")" + ], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 1000/1000 [03:24<00:00, 4.88it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Prediction successful, dataset saved to /Users/robertobarroso/Desktop/repos/catalog-extract/data/df_pred_FireworksAI_qwen2-vl-72b-instruct-yaxztv7t.csv\n", + "\n", + "============================================================\n", + "Evaluating: masterCategory\n", + "============================================================\n", + "Accuracy: 0.9690\n", + "Precision: 0.9711\n", + "Recall: 0.9690\n", + "Samples: 999\n", + "\n", + "Classification Report:\n", + " precision recall f1-score support\n", + "\n", + " Accessories 0.99 0.99 0.99 268\n", + " Apparel 0.99 1.00 0.99 473\n", + " Footwear 0.90 0.99 0.94 208\n", + "Personal Care 1.00 0.50 0.67 50\n", + "\n", + " accuracy 0.97 999\n", + " macro avg 0.97 0.87 0.90 999\n", + " weighted avg 0.97 0.97 0.97 999\n", + "\n", + "\n", + "============================================================\n", + "Evaluating: gender\n", + "============================================================\n", + "Accuracy: 0.7608\n", + "Precision: 0.9354\n", + "Recall: 0.7608\n", + "Samples: 999\n", + "\n", + "Classification Report:\n", + " precision recall f1-score support\n", + "\n", + " Boys 0.67 0.14 0.24 14\n", + " Girls 1.00 0.53 0.70 15\n", + " Men 0.99 0.70 0.82 492\n", + " Unisex 0.18 0.96 0.30 50\n", + " Women 0.97 0.83 0.90 428\n", + "\n", + " accuracy 0.76 999\n", + " macro avg 0.76 0.63 0.59 999\n", + "weighted avg 0.94 0.76 0.82 999\n", + "\n", + "\n", + "============================================================\n", + "Evaluating: subCategory\n", + "============================================================\n", + "Accuracy: 0.3413\n", + "Precision: 0.6785\n", + "Recall: 0.3413\n", + "Samples: 999\n", + "\n", + "Classification Report:\n", + " precision recall f1-score support\n", + "\n", + " Accessories 0.00 0.00 0.00 3\n", + " Apparel Set 0.00 0.00 0.00 3\n", + " Bags 1.00 0.33 0.49 67\n", + " Beauty Accessories 0.00 0.00 0.00 0\n", + " Belts 1.00 1.00 1.00 19\n", + " Bottomwear 0.58 0.16 0.26 67\n", + " Cufflinks 0.75 1.00 0.86 3\n", + " Dress 0.27 0.93 0.42 14\n", + " Eyes 0.00 0.00 0.00 0\n", + " Eyewear 0.00 0.00 0.00 23\n", + " Flip Flops 0.58 0.90 0.70 21\n", + " Fragrance 1.00 0.21 0.34 29\n", + " Gloves 0.00 0.00 0.00 0\n", + " Hair 0.06 1.00 0.12 1\n", + " Headwear 0.07 0.11 0.08 9\n", + " Innerwear 1.00 0.37 0.54 49\n", + " Jewellery 0.27 0.38 0.32 26\n", + " Lips 1.00 1.00 1.00 4\n", + "Loungewear and Nightwear 0.02 0.14 0.04 7\n", + " Makeup 0.83 1.00 0.91 5\n", + " Nails 1.00 1.00 1.00 8\n", + " Perfumes 0.00 0.00 0.00 0\n", + " Sandal 0.18 0.74 0.29 23\n", + " Saree 0.71 1.00 0.83 12\n", + " Scarves 0.67 1.00 0.80 4\n", + " Shoes 0.00 0.00 0.00 164\n", + " Skin 0.00 0.00 0.00 3\n", + " Skin Care 0.00 0.00 0.00 0\n", + " Socks 0.65 1.00 0.79 15\n", + " Sports Accessories 0.00 0.00 0.00 0\n", + " Stoles 0.00 0.00 0.00 3\n", + " Ties 0.03 1.00 0.06 5\n", + " Topwear 1.00 0.18 0.30 321\n", + " Wallets 0.96 0.96 0.96 23\n", + " Watches 0.96 1.00 0.98 67\n", + " Water Bottle 0.50 1.00 0.67 1\n", + "\n", + " accuracy 0.34 999\n", + " macro avg 0.42 0.48 0.38 999\n", + " weighted avg 0.68 0.34 0.37 999\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "execution_count": 31 + }, + { "metadata": {}, - "outputs": [], + "cell_type": "markdown", "source": [ - "t = df_test.iloc[0,:]\n", - "print(f\"master_category: {t.masterCategory}\\ngender: {t.gender}\\nsub_category: {t.subCategory}\")" + "#### Run test set through fine tuned FW Qwen model\n", + "1. Create a Lora deployment of our fine tuned model\n", + "2. Check deployment status\n", + "3. Run test set through deployment for base model and save results" + ], + "id": "79ba3ece81cbd063" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T04:32:56.524322Z", + "start_time": "2025-10-07T04:32:42.236596Z" + } + }, + "cell_type": "code", + "source": "! firectl -a pyroworks create deployment accounts/pyroworks/models/qwen-72b-fashion-catalog --min-replica-count 1 --max-replica-count 1 --accelerator-type NVIDIA_H100_80GB", + "id": "d1d854ffa98e896a", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name: accounts/pyroworks/deployments/bedocpar\r\n", + "Create Time: 2025-10-06 21:32:56\r\n", + "Expire Time: 2025-10-13 21:32:56\r\n", + "Created By: barrosoluque.roberto@fireworks.ai\r\n", + "State: CREATING\r\n", + "Status: OK\r\n", + "Min Replica Count: 1\r\n", + "Max Replica Count: 1\r\n", + "Desired Replica Count: 0\r\n", + "Replica Count: 0\r\n", + "Autoscaling Policy: disabled\r\n", + "Base Model: accounts/pyroworks/models/qwen-72b-fashion-catalog\r\n", + "Accelerator Count: 4\r\n", + "Accelerator Type: NVIDIA_H100_80GB\r\n", + "Precision: BF16\r\n", + "World Size: 4\r\n", + "Generator Count: 1\r\n", + "Max Batch Size: 128\r\n", + "Enable Addons: false\r\n", + "Max Peft Batch Size: 16\r\n", + "Kv Cache Memory Pct: 80\r\n", + "Direct Route Type: DIRECT_ROUTE_TYPE_UNSPECIFIED\r\n", + "Auto Tune:\r\n", + "Placement:\r\n", + " Region: REGION_UNSPECIFIED\r\n", + " Multi Region: GLOBAL\r\n", + "Region: US_WASHINGTON_2\r\n", + "Engine: FIREATTENTION\r\n", + "Update Time: 2025-10-06 21:32:56\r\n", + "Cleanup Delay: 0s\r\n", + "Log Level: INFO\r\n", + "Hot Load Bucket Type: BUCKET_TYPE_UNSPECIFIED\r\n" + ] + } + ], + "execution_count": 38 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T04:42:47.364785Z", + "start_time": "2025-10-07T04:42:46.326342Z" + } + }, + "cell_type": "code", + "source": "!firectl-admin get deployment bedocpar", + "id": "e31a215a93f4a8c5", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name: accounts/pyroworks/deployments/bedocpar\r\n", + "Create Time: 2025-10-06 21:32:56\r\n", + "Expire Time: 2025-10-13 21:32:56\r\n", + "Created By: barrosoluque.roberto@fireworks.ai\r\n", + "State: CREATING\r\n", + "Message: initializing model server (1 replicas)\r\n", + "Min Replica Count: 1\r\n", + "Max Replica Count: 1\r\n", + "Desired Replica Count: 1\r\n", + "Replica Count: 0\r\n", + "Autoscaling Policy: disabled\r\n", + "Base Model: accounts/pyroworks/models/qwen-72b-fashion-catalog\r\n", + "Accelerator Count: 4\r\n", + "Accelerator Type: NVIDIA_H100_80GB\r\n", + "Precision: BF16\r\n", + "World Size: 4\r\n", + "Generator Count: 1\r\n", + "Max Batch Size: 128\r\n", + "Enable Addons: false\r\n", + "Max Peft Batch Size: 16\r\n", + "Kv Cache Memory Pct: 80\r\n", + "Direct Route Type: DIRECT_ROUTE_TYPE_UNSPECIFIED\r\n", + "Auto Tune:\r\n", + "Placement:\r\n", + " Region: REGION_UNSPECIFIED\r\n", + " Multi Region: GLOBAL\r\n", + "Region: US_WASHINGTON_2\r\n", + "Engine: FIREATTENTION\r\n", + "Update Time: 2025-10-06 21:36:13\r\n", + "Cleanup Delay: 0s\r\n", + "Log Level: INFO\r\n", + "Hot Load Bucket Type: BUCKET_TYPE_UNSPECIFIED\r\n" + ] + } + ], + "execution_count": 42 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T04:51:35.500997Z", + "start_time": "2025-10-07T04:47:43.583207Z" + } + }, + "cell_type": "code", + "source": [ + "# Run with concurrent requests using await directly in Jupyter\n", + "df_predictions_qwen_fine_tuned = await run_inference_on_dataframe_async(\n", + " df_test,\n", + " model=\"accounts/pyroworks/deployedModels/qwen-72b-fashion-catalog-oueqouqs\",\n", + " provider=\"FireworksAI\",\n", + " api_key=FIREWORKS_API_KEY,\n", + " max_concurrent_requests=20, # Adjust based on rate limits\n", + ")\n", + "\n", + "results_qwen_fine_tuned = evaluate_all_categories(\n", + " df_ground_truth=df_test,\n", + " df_predictions=df_predictions_qwen_fine_tuned,\n", + " categories=[\"masterCategory\", \"gender\", \"subCategory\"]\n", + ")" + ], + "id": "12d76f744c869508", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 1000/1000 [03:51<00:00, 4.31it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Prediction successful, dataset saved to /Users/robertobarroso/Desktop/repos/catalog-extract/data/df_pred_FireworksAI_qwen-72b-fashion-catalog-oueqouqs.csv\n", + "\n", + "============================================================\n", + "Evaluating: masterCategory\n", + "============================================================\n", + "Accuracy: 0.9940\n", + "Precision: 0.9940\n", + "Recall: 0.9940\n", + "Samples: 999\n", + "\n", + "Classification Report:\n", + " precision recall f1-score support\n", + "\n", + " Accessories 0.99 0.99 0.99 268\n", + " Apparel 0.99 1.00 0.99 473\n", + " Footwear 1.00 0.99 1.00 208\n", + "Personal Care 1.00 1.00 1.00 50\n", + "\n", + " accuracy 0.99 999\n", + " macro avg 1.00 0.99 1.00 999\n", + " weighted avg 0.99 0.99 0.99 999\n", + "\n", + "\n", + "============================================================\n", + "Evaluating: gender\n", + "============================================================\n", + "Accuracy: 0.9169\n", + "Precision: 0.9145\n", + "Recall: 0.9169\n", + "Samples: 999\n", + "\n", + "Classification Report:\n", + " precision recall f1-score support\n", + "\n", + " Boys 0.79 0.79 0.79 14\n", + " Girls 0.89 0.53 0.67 15\n", + " Men 0.90 0.97 0.94 491\n", + " Unisex 0.69 0.48 0.56 50\n", + " Women 0.96 0.92 0.94 429\n", + "\n", + " accuracy 0.92 999\n", + " macro avg 0.84 0.74 0.78 999\n", + "weighted avg 0.91 0.92 0.91 999\n", + "\n", + "\n", + "============================================================\n", + "Evaluating: subCategory\n", + "============================================================\n", + "Accuracy: 0.9419\n", + "Precision: 0.9513\n", + "Recall: 0.9419\n", + "Samples: 999\n", + "\n", + "Classification Report:\n", + " precision recall f1-score support\n", + "\n", + " Accessories 0.00 0.00 0.00 3\n", + " Apparel Set 0.00 0.00 0.00 3\n", + " Bags 0.99 1.00 0.99 67\n", + " Belts 1.00 1.00 1.00 19\n", + " Bottomwear 0.94 0.94 0.94 67\n", + " Cufflinks 1.00 1.00 1.00 3\n", + " Dress 0.68 0.93 0.79 14\n", + " Eyes 0.00 0.00 0.00 0\n", + " Eyewear 1.00 1.00 1.00 23\n", + " Flip Flops 0.74 0.95 0.83 21\n", + " Fragrance 1.00 1.00 1.00 29\n", + " Hair 1.00 1.00 1.00 1\n", + " Headwear 0.90 1.00 0.95 9\n", + " Innerwear 0.98 1.00 0.99 49\n", + " Jewellery 1.00 1.00 1.00 26\n", + " Lips 1.00 0.75 0.86 4\n", + "Loungewear and Nightwear 1.00 0.43 0.60 7\n", + " Makeup 1.00 0.60 0.75 5\n", + " Mufflers 0.00 0.00 0.00 0\n", + " Nails 1.00 1.00 1.00 8\n", + " Sandal 0.51 0.83 0.63 23\n", + " Saree 1.00 1.00 1.00 12\n", + " Scarves 1.00 0.25 0.40 4\n", + " Shoes 1.00 0.86 0.92 164\n", + " Skin 0.00 0.00 0.00 3\n", + " Skin Care 0.00 0.00 0.00 0\n", + " Socks 0.94 1.00 0.97 15\n", + " Stoles 0.00 0.00 0.00 3\n", + " Ties 0.62 1.00 0.77 5\n", + " Topwear 0.98 0.99 0.99 321\n", + " Wallets 1.00 1.00 1.00 23\n", + " Watches 1.00 1.00 1.00 67\n", + " Water Bottle 1.00 1.00 1.00 1\n", + "\n", + " accuracy 0.94 999\n", + " macro avg 0.74 0.71 0.71 999\n", + " weighted avg 0.95 0.94 0.94 999\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "execution_count": 45 + }, + { + "cell_type": "markdown", + "id": "10", + "metadata": {}, + "source": [ + "#### Run test set through closed source model" ] + }, + { + "cell_type": "code", + "id": "11", + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T02:26:11.238708Z", + "start_time": "2025-10-07T02:00:49.939863Z" + } + }, + "source": [ + "# Run with concurrent requests using await directly in Jupyter\n", + "df_predictions_openai = await run_inference_on_dataframe_async(\n", + " df_test,\n", + " model=\"gpt-5-mini-2025-08-07\",\n", + " provider=\"OpenAI\",\n", + " api_key=OPENAI_API_KEY,\n", + " max_concurrent_requests=5, # Lower for OpenAI to avoid rate limits\n", + ")\n", + "\n", + "# Evaluate\n", + "results_openai = evaluate_all_categories(\n", + " df_ground_truth=df_test,\n", + " df_predictions=df_predictions_openai,\n", + " categories=[\"masterCategory\", \"gender\", \"subCategory\"]\n", + ")" + ], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 1000/1000 [25:21<00:00, 1.52s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Prediction successful, dataset saved to /Users/robertobarroso/Desktop/repos/catalog-extract/data/df_pred_OpenAI_gpt-5-mini-2025-08-07.csv\n", + "\n", + "============================================================\n", + "Evaluating: masterCategory\n", + "============================================================\n", + "Accuracy: 0.9810\n", + "Precision: 0.9810\n", + "Recall: 0.9810\n", + "Samples: 1000\n", + "\n", + "Classification Report:\n", + " precision recall f1-score support\n", + "\n", + " Accessories 0.98 0.96 0.97 268\n", + " Apparel 0.99 0.99 0.99 474\n", + " Footwear 0.97 0.99 0.98 208\n", + "Personal Care 1.00 1.00 1.00 50\n", + "\n", + " accuracy 0.98 1000\n", + " macro avg 0.98 0.98 0.98 1000\n", + " weighted avg 0.98 0.98 0.98 1000\n", + "\n", + "\n", + "============================================================\n", + "Evaluating: gender\n", + "============================================================\n", + "Accuracy: 0.9070\n", + "Precision: 0.9261\n", + "Recall: 0.9070\n", + "Samples: 1000\n", + "\n", + "Classification Report:\n", + " precision recall f1-score support\n", + "\n", + " Boys 0.71 0.86 0.77 14\n", + " Girls 0.70 0.93 0.80 15\n", + " Men 0.95 0.92 0.93 492\n", + " Unisex 0.42 0.68 0.52 50\n", + " Women 0.98 0.92 0.95 429\n", + "\n", + " accuracy 0.91 1000\n", + " macro avg 0.75 0.86 0.79 1000\n", + "weighted avg 0.93 0.91 0.91 1000\n", + "\n", + "\n", + "============================================================\n", + "Evaluating: subCategory\n", + "============================================================\n", + "Accuracy: 0.8970\n", + "Precision: 0.9444\n", + "Recall: 0.8970\n", + "Samples: 1000\n", + "\n", + "Classification Report:\n", + " precision recall f1-score support\n", + "\n", + " Accessories 0.00 0.00 0.00 3\n", + " Apparel Set 0.40 0.67 0.50 3\n", + " Bags 0.97 0.99 0.98 67\n", + " Belts 1.00 1.00 1.00 19\n", + " Bottomwear 0.97 0.94 0.95 67\n", + " Cufflinks 1.00 1.00 1.00 3\n", + " Dress 0.62 0.93 0.74 14\n", + " Eyewear 1.00 1.00 1.00 23\n", + " Flip Flops 0.66 0.90 0.76 21\n", + " Fragrance 1.00 0.34 0.51 29\n", + " Hair 1.00 1.00 1.00 1\n", + " Headwear 0.90 1.00 0.95 9\n", + " Innerwear 1.00 0.96 0.98 49\n", + " Jewellery 1.00 1.00 1.00 26\n", + " Lips 1.00 1.00 1.00 4\n", + "Loungewear and Nightwear 0.71 0.71 0.71 7\n", + " Makeup 1.00 1.00 1.00 5\n", + " Nails 1.00 1.00 1.00 8\n", + " Perfumes 0.00 0.00 0.00 0\n", + " Sandal 0.30 0.74 0.43 23\n", + " Saree 1.00 1.00 1.00 12\n", + " Scarves 0.80 1.00 0.89 4\n", + " Shoes 1.00 0.74 0.85 164\n", + " Skin 0.00 0.00 0.00 3\n", + " Skin Care 0.00 0.00 0.00 0\n", + " Socks 1.00 1.00 1.00 15\n", + " Stoles 0.00 0.00 0.00 3\n", + " Ties 0.71 1.00 0.83 5\n", + " Topwear 0.98 0.96 0.97 322\n", + " Wallets 0.96 1.00 0.98 23\n", + " Watches 1.00 1.00 1.00 67\n", + " Water Bottle 1.00 1.00 1.00 1\n", + "\n", + " accuracy 0.90 1000\n", + " macro avg 0.75 0.78 0.75 1000\n", + " weighted avg 0.94 0.90 0.91 1000\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "execution_count": 32 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "### Compare eval metrics across models", + "id": "ae73ef2aa5c1cc79" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T05:18:40.011648Z", + "start_time": "2025-10-07T05:18:39.952830Z" + } + }, + "cell_type": "code", + "source": [ + "\n", + "# Combine all models into a single dataframe\n", + "all_metrics = []\n", + "all_metrics.extend(extract_metrics(results_openai, 'GPT-5-Mini'))\n", + "all_metrics.extend(extract_metrics(results_qwen_fine_tuned, 'Qwen-72B-SFT'))\n", + "all_metrics.extend(extract_metrics(results_qwen_base, 'Qwen-72B-Base'))\n", + "\n", + "df_comparison = pd.DataFrame(all_metrics)\n", + "\n", + "# Display the dataframe\n", + "print(\"Model Comparison Dataframe:\")\n", + "print(df_comparison)" + ], + "id": "8ff204da972d1084", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model Comparison Dataframe:\n", + " model category accuracy precision recall num_samples\n", + "0 GPT-5-Mini masterCategory 0.981000 0.981014 0.981000 1000\n", + "1 GPT-5-Mini gender 0.907000 0.926052 0.907000 1000\n", + "2 GPT-5-Mini subCategory 0.897000 0.944355 0.897000 1000\n", + "3 Qwen-72B-SFT masterCategory 0.993994 0.994011 0.993994 999\n", + "4 Qwen-72B-SFT gender 0.916917 0.914496 0.916917 999\n", + "5 Qwen-72B-SFT subCategory 0.941942 0.951274 0.941942 999\n", + "6 Qwen-72B-Base masterCategory 0.968969 0.971127 0.968969 999\n", + "7 Qwen-72B-Base gender 0.760761 0.935434 0.760761 999\n", + "8 Qwen-72B-Base subCategory 0.341341 0.678483 0.341341 999\n" + ] + } + ], + "execution_count": 58 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T05:02:01.701326Z", + "start_time": "2025-10-07T05:02:01.680220Z" + } + }, + "cell_type": "code", + "source": [ + "df_melted = df_comparison.melt(\n", + " id_vars=['model', 'category', 'num_samples'],\n", + " value_vars=['accuracy', 'precision', 'recall'],\n", + " var_name='metric',\n", + " value_name='score'\n", + ")" + ], + "id": "c49b29891dd20d35", + "outputs": [ + { + "data": { + "text/plain": [ + "{'accuracy': 0.993993993993994,\n", + " 'precision': 0.9940108529582213,\n", + " 'recall': 0.993993993993994,\n", + " 'classification_report': ' precision recall f1-score support\\n\\n Accessories 0.99 0.99 0.99 268\\n Apparel 0.99 1.00 0.99 473\\n Footwear 1.00 0.99 1.00 208\\nPersonal Care 1.00 1.00 1.00 50\\n\\n accuracy 0.99 999\\n macro avg 1.00 0.99 1.00 999\\n weighted avg 0.99 0.99 0.99 999\\n',\n", + " 'num_samples': 999}" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 55 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T05:23:20.111022Z", + "start_time": "2025-10-07T05:23:20.062636Z" + } + }, + "cell_type": "code", + "source": [ + "# Define custom color scheme\n", + "color_scale = alt.Scale(\n", + " domain=['GPT-5-Mini', 'Qwen-72B-Base', 'Qwen-72B-SFT'],\n", + " range=['#1f77b4', '#d4a5d4', '#6a1b6a'] # Blue, Light Purple, Dark Purple\n", + ")\n", + "\n", + "chart = alt.Chart(df_melted).mark_bar().encode(\n", + " x=alt.X('category:N', title='Category'),\n", + " y=alt.Y('score:Q', title='Score', scale=alt.Scale(domain=[0, 1])),\n", + " color=alt.Color('model:N', title='Model', scale=color_scale),\n", + " column=alt.Column('metric:N', title='Metric'),\n", + " xOffset='model:N',\n", + " tooltip=[\n", + " alt.Tooltip('model:N', title='Model'),\n", + " alt.Tooltip('category:N', title='Category'),\n", + " alt.Tooltip('metric:N', title='Metric'),\n", + " alt.Tooltip('score:Q', title='Score', format='.4f'),\n", + " alt.Tooltip('num_samples:Q', title='Samples')\n", + " ]\n", + ").properties(\n", + " width=200,\n", + " height=300,\n", + " title='Model Performance Comparison by Category and Metric'\n", + ").configure_axis(\n", + " labelAngle=-45\n", + ")\n", + "\n", + "chart" + ], + "id": "3b27c2a060f1ce5b", + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "
\n", + "" + ], + "text/plain": [ + "alt.Chart(...)" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 64 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T05:26:32.816810Z", + "start_time": "2025-10-07T05:26:32.761693Z" + } + }, + "cell_type": "code", + "source": "df_melted", + "id": "6c23681d88df4d7d", + "outputs": [ + { + "data": { + "text/plain": [ + " model category num_samples metric score\n", + "0 GPT-5-Mini masterCategory 1000 accuracy 0.981000\n", + "1 GPT-5-Mini gender 1000 accuracy 0.907000\n", + "2 GPT-5-Mini subCategory 1000 accuracy 0.897000\n", + "3 Qwen-72B-SFT masterCategory 999 accuracy 0.993994\n", + "4 Qwen-72B-SFT gender 999 accuracy 0.916917\n", + "5 Qwen-72B-SFT subCategory 999 accuracy 0.941942\n", + "6 Qwen-72B-Base masterCategory 999 accuracy 0.968969\n", + "7 Qwen-72B-Base gender 999 accuracy 0.760761\n", + "8 Qwen-72B-Base subCategory 999 accuracy 0.341341\n", + "9 GPT-5-Mini masterCategory 1000 precision 0.981014\n", + "10 GPT-5-Mini gender 1000 precision 0.926052\n", + "11 GPT-5-Mini subCategory 1000 precision 0.944355\n", + "12 Qwen-72B-SFT masterCategory 999 precision 0.994011\n", + "13 Qwen-72B-SFT gender 999 precision 0.914496\n", + "14 Qwen-72B-SFT subCategory 999 precision 0.951274\n", + "15 Qwen-72B-Base masterCategory 999 precision 0.971127\n", + "16 Qwen-72B-Base gender 999 precision 0.935434\n", + "17 Qwen-72B-Base subCategory 999 precision 0.678483\n", + "18 GPT-5-Mini masterCategory 1000 recall 0.981000\n", + "19 GPT-5-Mini gender 1000 recall 0.907000\n", + "20 GPT-5-Mini subCategory 1000 recall 0.897000\n", + "21 Qwen-72B-SFT masterCategory 999 recall 0.993994\n", + "22 Qwen-72B-SFT gender 999 recall 0.916917\n", + "23 Qwen-72B-SFT subCategory 999 recall 0.941942\n", + "24 Qwen-72B-Base masterCategory 999 recall 0.968969\n", + "25 Qwen-72B-Base gender 999 recall 0.760761\n", + "26 Qwen-72B-Base subCategory 999 recall 0.341341" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
modelcategorynum_samplesmetricscore
0GPT-5-MinimasterCategory1000accuracy0.981000
1GPT-5-Minigender1000accuracy0.907000
2GPT-5-MinisubCategory1000accuracy0.897000
3Qwen-72B-SFTmasterCategory999accuracy0.993994
4Qwen-72B-SFTgender999accuracy0.916917
5Qwen-72B-SFTsubCategory999accuracy0.941942
6Qwen-72B-BasemasterCategory999accuracy0.968969
7Qwen-72B-Basegender999accuracy0.760761
8Qwen-72B-BasesubCategory999accuracy0.341341
9GPT-5-MinimasterCategory1000precision0.981014
10GPT-5-Minigender1000precision0.926052
11GPT-5-MinisubCategory1000precision0.944355
12Qwen-72B-SFTmasterCategory999precision0.994011
13Qwen-72B-SFTgender999precision0.914496
14Qwen-72B-SFTsubCategory999precision0.951274
15Qwen-72B-BasemasterCategory999precision0.971127
16Qwen-72B-Basegender999precision0.935434
17Qwen-72B-BasesubCategory999precision0.678483
18GPT-5-MinimasterCategory1000recall0.981000
19GPT-5-Minigender1000recall0.907000
20GPT-5-MinisubCategory1000recall0.897000
21Qwen-72B-SFTmasterCategory999recall0.993994
22Qwen-72B-SFTgender999recall0.916917
23Qwen-72B-SFTsubCategory999recall0.941942
24Qwen-72B-BasemasterCategory999recall0.968969
25Qwen-72B-Basegender999recall0.760761
26Qwen-72B-BasesubCategory999recall0.341341
\n", + "
" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 65 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-07T05:28:11.164238Z", + "start_time": "2025-10-07T05:28:11.098394Z" + } + }, + "cell_type": "code", + "source": [ + "# Define custom color scheme\n", + "color_scale = alt.Scale(\n", + " domain=['GPT-5-Mini', 'Qwen-72B-Base', 'Qwen-72B-SFT'],\n", + " range=['#1f77b4', '#d4a5d4', '#6a1b6a'] # Blue, Light Purple, Dark Purple\n", + ")\n", + "\n", + "chart = alt.Chart(df_melted.loc[df_melted.metric == \"accuracy\", :]).mark_bar().encode(\n", + " x=alt.X('category:N', title='Category'),\n", + " y=alt.Y('score:Q', title='Score', scale=alt.Scale(domain=[0, 1])),\n", + " color=alt.Color('model:N', title='Model', scale=color_scale),\n", + " xOffset='model:N',\n", + " tooltip=[\n", + " alt.Tooltip('model:N', title='Model'),\n", + " alt.Tooltip('category:N', title='Category'),\n", + " alt.Tooltip('metric:N', title='Metric'),\n", + " alt.Tooltip('score:Q', title='Score', format='.4f'),\n", + " alt.Tooltip('num_samples:Q', title='Samples')\n", + " ]\n", + ").properties(\n", + " width=400,\n", + " height=300,\n", + " title='Accuracy by Category and Model'\n", + ").configure_axis(\n", + " labelAngle=-45\n", + ")\n", + "\n", + "chart" + ], + "id": "cbeb313665d1a7a", + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "
\n", + "" + ], + "text/plain": [ + "alt.Chart(...)" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 68 } ], "metadata": {