{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "a6f9d7f6", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/rameyjm7/workspace/TML/lpu/llm-preference-unlearning/lpu-env/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n", "`torch_dtype` is deprecated! Use `dtype` instead!\n", "Loading checkpoint shards: 100%|██████████| 2/2 [00:01<00:00, 1.07it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[INFO] Loaded Qwen/Qwen2.5-3B-Instruct on cuda\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Prompts: 20%|██ | 1/5 [00:00<00:03, 1.25it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[INFO] Saved saliency for prompt 1\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Prompts: 40%|████ | 2/5 [00:01<00:01, 1.74it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[INFO] Saved saliency for prompt 2\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Prompts: 60%|██████ | 3/5 [00:01<00:01, 2.00it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[INFO] Saved saliency for prompt 3\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Prompts: 80%|████████ | 4/5 [00:01<00:00, 2.28it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[INFO] Saved saliency for prompt 4\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Prompts: 100%|██████████| 5/5 [00:02<00:00, 2.15it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[INFO] Saved saliency for prompt 5\n", "[INFO] Saliency extraction complete → saliency/\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA70AAAHqCAYAAADIySnKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAhcNJREFUeJzs3Wd4VNX69/HfTDolCTVFgdCkCBoOJQSRKESDoIhypAhSBURBkCb4FxDliA1FBM0RpaggRTmoqFEMICChBeyANMFCKMYECKSQWc8LHsaMCZAJOyYM34/XvjB7r7nnnj73rLXXshljjAAAAAAA8ED2kk4AAAAAAIDiQtELAAAAAPBYFL0AAAAAAI9F0QsAAAAA8FgUvQAAAAAAj0XRCwAAAADwWBS9AAAAAACPRdELAAAAAPBYFL0AAAAAAI9F0QsAFpk3b55sNpt+/vnnkk4FKvjxuOmmm3TTTTeVWE4AAOCfR9ELoNicKzq2bt1a0ql4rCeeeEI2m012u12//PJLvuPHjx9XQECAbDabhg4dWgIZFt7Jkyc1adIkNWrUSGXLllWlSpUUGRmp4cOH6/fffy/p9EqNn3/+WTabTS+88EKBx889J44dO1ZsOfz444964okn+IEHAHBZoOgFAIvcd999On36tGrUqPGPX7efn5/efffdfPuXLVv2j+dSFDk5OWrTpo2ef/553XjjjXrxxRf12GOP6V//+pcWLlyon376yZLr+fzzz/X5559bEutK9uOPP2ry5MkUvQCAy4J3SScAAKWFw+FQdna2/P39i3R5Ly8veXl5WZxV4XTo0EHvvvuuxo4d67J/4cKF6tixo95///0Syauwli9fru3bt2vBggW69957XY5lZmYqOzvbkuvx9fW1JA4AALh80NMLoERlZ2dr4sSJatq0qYKCglS2bFndeOONWr16tbONMUYRERG68847810+MzNTQUFBGjx4sHNfVlaWJk2apDp16sjPz0/VqlXT2LFjlZWV5XLZc0N+FyxYoGuvvVZ+fn5KSEjQv/71L919990ubRs3biybzaZvv/3WuW/x4sWy2WzasWOHpILPId26davi4uJUuXJlBQQEqGbNmurfv79LbIfDoenTp+vaa6+Vv7+/QkJCNHjwYP3555+Fvh/vvfdeff3119q5c6dzX0pKilatWpWviHT3fpo7d67atm2rqlWrys/PTw0bNtRrr72WL15ERIRuv/12rV+/Xi1atJC/v79q1aqlt95666L57927V5J0ww035Dvm7++vwMBA59/ffvut+vbtq1q1asnf31+hoaHq37+//vjjj4teT0Hn9Lr7fFm+fLkaNWokPz8/XXvttUpISMh3Pb/99psGDBig8PBw+fn5qWbNmhoyZIiys7O1b98+2Ww2vfTSS/kut2HDBtlstgJ77S/Vpk2b1L59ewUFBalMmTKKiYnRV1995dLmwIEDevDBB1WvXj0FBASoUqVKuueee1ye0/PmzdM999wjSbr55ptls9lks9m0Zs0aSX89D9asWaNmzZopICBAjRs3dh5ftmyZGjduLH9/fzVt2lTbt293yaGwj++5Ydw7d+5U165dFRgYqEqVKmn48OHKzMy09s4DAFzW6OkFUKKOHz+uN954Qz169NDAgQN14sQJvfnmm4qLi9PmzZsVGRkpm82mXr166bnnnlNqaqoqVqzovPxHH32k48ePq1evXpLOFpCdOnXS+vXrNWjQIDVo0EDfffedXnrpJf30009avny5y/WvWrVKS5Ys0dChQ1W5cmVFREToxhtvdCk6UlNT9cMPP8hut2vdunW67rrrJEnr1q1TlSpV1KBBgwJv25EjR3TrrbeqSpUqGjdunIKDg/Xzzz/nG3I8ePBgzZs3T/369dPDDz+s/fv3a+bMmdq+fbu++uor+fj4XPR+bNOmja6++motXLhQTz75pKSzRXm5cuXUsWPHfO3duZ9ee+01XXvtterUqZO8vb310Ucf6cEHH5TD4dBDDz3kEnfPnj3697//rQEDBqhPnz6aM2eO+vbtq6ZNm+raa689b/7nhoS/9dZbevzxx2Wz2c7bduXKldq3b5/69eun0NBQ/fDDD3r99df1ww8/aOPGjRe87KXcD5K0fv16LVu2TA8++KDKly+vGTNmqEuXLjp48KAqVaokSfr999/VokULpaWladCgQapfv75+++03vffeezp16pRq1aqlG264QQsWLNAjjzziEn/BggUqX758gT/w/N2pU6cKPG/31KlT+fatWrVKt912m5o2bapJkybJbrc7f8xYt26dWrRoIUnasmWLNmzYoO7du+vqq6/Wzz//rNdee0033XSTfvzxR5UpU0Zt2rTRww8/rBkzZuixxx5zPv/zvg727Nmje++9V4MHD1avXr30wgsv6I477lB8fLwee+wxPfjgg5KkqVOnqmvXrtq1a5fs9rO/w7v7+Hbt2lURERGaOnWqNm7cqBkzZujPP/8s1I8tAIArhAGAYjJ37lwjyWzZsuW8bc6cOWOysrJc9v35558mJCTE9O/f37lv165dRpJ57bXXXNp26tTJREREGIfDYYwx5u233zZ2u92sW7fOpV18fLyRZL766ivnPknGbrebH374waXt0qVLjSTz448/GmOM+fDDD42fn5/p1KmT6datm7PdddddZ+666658t3f//v3GGGP+97//XfT2r1u3zkgyCxYscNmfkJBQ4P6/mzRpkpFkjh49akaPHm3q1KnjPNa8eXPTr18/52196KGHnMfcuZ9OnTqV73rj4uJMrVq1XPbVqFHDSDJr16517jty5Ijx8/Mzo0aNuuDtOHXqlKlXr56RZGrUqGH69u1r3nzzTXP48OEC2/7du+++m++6//54GGNMTEyMiYmJcf7t7vPF19fX7Nmzx7nvm2++MZLMK6+84tzXu3dvY7fbC3zczz1P//vf/xpJZseOHc5j2dnZpnLlyqZPnz4F3EN/2b9/v5F00e3o0aPO66xbt66Ji4tzXr8xZ+/HmjVrmltuucVl398lJSUZSeatt95y7jv3Glm9enW+9ueeBxs2bHDu++yzz4wkExAQYA4cOODcf+5+yBunsI/vued+p06dXNo++OCDRpL55ptvCrr7AABXIIY3AyhRXl5ezvMsHQ6HUlNTdebMGTVr1kzbtm1ztrvmmmsUFRWlBQsWOPelpqbq008/Vc+ePZ29P0uXLlWDBg1Uv359HTt2zLm1bdtWklyGTUtSTEyMGjZs6LLvxhtvlCStXbtW0tke3ebNm+uWW27RunXrJElpaWn6/vvvnW0LEhwcLElasWKFcnJyCmyzdOlSBQUF6ZZbbnHJt2nTpipXrly+fC/k3nvv1Z49e7Rlyxbnv+cb2uzO/RQQEOD8//T0dB07dkwxMTHat2+f0tPTXeI2bNjQ5T6pUqWK6tWrp3379l0w94CAAG3atEljxoyRdHYI7YABAxQWFqZhw4a5DDXOm09mZqaOHTumli1bSpLLc6Yw3H2+xMbGqnbt2s6/r7vuOgUGBjpvn8Ph0PLly3XHHXeoWbNm+a7v3PO0a9eu8vf3d3k+f/bZZzp27Jhz1MLFDBo0SCtXrsy33XfffS7tvv76a+3evVv33nuv/vjjD+dtzMjIULt27bR27Vo5HA5JrvdtTk6O/vjjD9WpU0fBwcFu3bcNGzZUdHS08++oqChJUtu2bVW9evV8+/M+P9x9fP8+2mDYsGGSpE8++aTQ+QIAPBvDmwGUuPnz52vatGnauXOnS3FYs2ZNl3a9e/fW0KFDdeDAAdWoUUNLly5VTk6Oy5f83bt3a8eOHapSpUqB13XkyBGXv/9+HZIUEhKiunXrat26dRo8eLDWrVunm2++WW3atNGwYcO0b98+7dixQw6H44JFb0xMjLp06aLJkyfrpZde0k033aTOnTvr3nvvlZ+fnzPf9PR0Va1atVD5XkiTJk1Uv359LVy4UMHBwQoNDXUWb3/nzv301VdfadKkSUpKSso3dDY9PV1BQUHOv/MWNOdUqFChUOcnBwUF6bnnntNzzz2nAwcOKDExUS+88IJmzpypoKAgTZkyRdLZHzsmT56sRYsW5bt//l6EX4y7z5eL3b6jR4/q+PHjatSo0QWvNzg4WHfccYcWLlyop556StLZoc1XXXXVeR+zv6tbt65iY2Pz7V+/fr3L37t375Yk9enT57yx0tPTVaFCBZ0+fVpTp07V3Llz9dtvv8kY49KmsP5+P517jlSrVq3A/XmfH+4+vnXr1nX5u3bt2rLb7cwsDQBwougFUKLeeecd9e3bV507d9aYMWNUtWpVeXl5aerUqc7Jjc7p3r27HnnkES1YsECPPfaY3nnnHTVr1kz16tVztnE4HGrcuLFefPHFAq/v71+68/Yq5dW6dWslJibq9OnTSk5O1sSJE9WoUSMFBwdr3bp12rFjh8qVK6cmTZqc97bZbDa999572rhxoz766CN99tln6t+/v6ZNm6aNGzeqXLlycjgcqlq1qkuPX17nK8bO595779Vrr72m8uXLq1u3bs7zJP+usPfT3r171a5dO9WvX18vvviiqlWrJl9fX33yySd66aWXnD2E55xv9uq8xVNh1KhRQ/3799ddd92lWrVqacGCBc6it2vXrtqwYYPGjBmjyMhI5/3Yvn37fPlcjLvPF6tun3T2R5ylS5dqw4YNaty4sT788EM9+OCD533MiurcffL8888rMjKywDblypWTdLaXdO7cuRoxYoSio6MVFBQkm82m7t27u3Xfnu9+Ksz9d6mPrzvndAMArgwUvQBK1HvvvadatWpp2bJlLl9WJ02alK9txYoV1bFjRy1YsEA9e/bUV199penTp7u0qV27tr755hu1a9fukr783njjjZo7d64WLVqk3NxctWrVSna7Xa1bt3YWva1atSrUEkUtW7ZUy5Yt9Z///EcLFy5Uz549tWjRIt1///2qXbu2vvjiC91www3nLcDdce+992rixIk6dOiQ3n777fO2K+z99NFHHykrK0sffvihS++dO8OuL0WFChVUu3Ztff/995LO9ggmJiZq8uTJmjhxorPdud5Md1n1fDmnSpUqCgwMdOZ7Ie3bt1eVKlW0YMECRUVF6dSpU/mGJlvh3HDswMDAAnuG83rvvffUp08fTZs2zbkvMzNTaWlpLu2Kq7AsyuO7e/dulxEbe/bskcPhUERERLHkCAC4/HBOL4ASda5ozNvTs2nTJiUlJRXY/r777tOPP/6oMWPGyMvLS927d3c53rVrV/3222+aPXt2vsuePn1aGRkZhcrr3LDlZ599Vtddd51zGOaNN96oxMREbd269YJDm6WzX+D/3gN4rqft3DmqXbt2VW5urnOIa15nzpzJV2xcTO3atTV9+nRNnTrVOSNvQQp7PxX0+KSnp2vu3Llu5XUx33zzTYEzER84cEA//vijsze/oHwk5fvxo7Cser6cY7fb1blzZ3300UfaunVrvuN58/b29laPHj20ZMkSzZs3T40bN3bODG6lpk2bqnbt2nrhhRd08uTJfMePHj3q/H8vL6989+0rr7yi3Nxcl31ly5aVJLefnxdTlMd31qxZLn+/8sorkqTbbrvN0twAAJcvenoBFLs5c+YUuJbp8OHDdfvtt2vZsmW666671LFjR+3fv1/x8fFq2LBhgV/QO3bsqEqVKmnp0qW67bbb8p0Le99992nJkiV64IEHtHr1at1www3Kzc3Vzp07tWTJEn322WcFTjD0d3Xq1FFoaKh27drlnBhHOrs00KOPPipJFy1658+fr1dffVV33XWXateurRMnTmj27NkKDAxUhw4dJJ0973fw4MGaOnWqvv76a916663y8fHR7t27tXTpUr388sv697//fdF88xo+fPhF2xT2frr11lvl6+urO+64Q4MHD9bJkyc1e/ZsVa1aVYcOHXIrrwtZuXKlJk2apE6dOqlly5YqV66c9u3bpzlz5igrK0tPPPGEpLO9lW3atNFzzz2nnJwcXXXVVfr888+1f//+Il2vVc+XvJ5++ml9/vnniomJcS6DdOjQIS1dulTr1693TnAmnR3iPGPGDK1evVrPPvtskW7Dxdjtdr3xxhu67bbbdO2116pfv3666qqr9Ntvv2n16tUKDAzURx99JEm6/fbb9fbbbysoKEgNGzZUUlKSvvjiC+dyTOdERkbKy8tLzz77rNLT0+Xn5+dcy/lSFOXx3b9/vzp16qT27dsrKSlJ77zzju69915df/31l5QLAMBzUPQCKHavvfZagfv79u2rvn37KiUlRf/973/12WefqWHDhnrnnXe0dOlSrVmzJt9lfH191a1bN7366qsFDgW12+1avny5XnrpJb311lv63//+pzJlyqhWrVoaPny4rrnmmkLnfeONN2rp0qVq3bq1c1/Tpk1VpkwZnTlzxjnz7PnExMRo8+bNWrRokQ4fPqygoCC1aNFCCxYscBmOGR8fr6ZNm+q///2vHnvsMXl7eysiIkK9evXSDTfcUOh83VHY+6levXp677339Pjjj2v06NEKDQ3VkCFDVKVKFfXv39+yfLp06aITJ07o888/16pVq5SamqoKFSqoRYsWGjVqlG6++WZn24ULF2rYsGGaNWuWjDG69dZb9emnnyo8PLzY7gd3XHXVVdq0aZMmTJigBQsW6Pjx47rqqqt02223qUyZMi5tz61fvGPHDvXs2dPt6yqsm266SUlJSXrqqac0c+ZMnTx5UqGhoYqKitLgwYOd7V5++WV5eXlpwYIFyszM1A033KAvvvhCcXFxLvFCQ0MVHx+vqVOnasCAAcrNzdXq1asvueiV3H98Fy9erIkTJ2rcuHHy9vbW0KFD9fzzz19yHgAAz2EzRZl9AwBK0COPPKI333xTKSkp+YoI4HLTpEkTVaxYUYmJiSWdymXliSee0OTJk3X06FFVrly5pNMBAJRinNML4LKSmZmpd955R126dKHgxWVv69at+vrrr9W7d++STgUAAI/F8GYAl4UjR47oiy++0Hvvvac//vijUOetAqXV999/r+TkZE2bNk1hYWHq1q1bSacEAIDHoqcXwGXhxx9/dC5TNGPGjPOuNwpcDt577z3169dPOTk5evfdd+Xv71/SKQEA4LE4pxcAAAAA4LHo6QUAAAAAeCyKXgAAAACAx6LoBQAAAAB4LI+cvTmi/G2WxwzJ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ghQVFeVsk5SUpODgYGfBK0mxsbGy2+3atGnTefNNT09XxYoVXfadPHlSNWrUULVq1XTnnXfqhx9+KOStl0JDQ509utWrV9fGjRudt6Go/bUUvQAAAACQhzE2S7esrCwdP37cZcvKyirwuo8dO6bc3FyFhIS47A8JCVFKSkqBl0lJSblg+3P/XqzN34dOe3t7q2LFiue93iVLlmjLli3q16+fc1+9evU0Z84cffDBB3rnnXfkcDjUqlUr/fpr4Xr927Ztqw8//FCS1K9fPz3yyCO65ZZb1K1bN911112FivF31o8dAwAAAAA4TZ06VZMnT3bZN2nSJD3xxBMlk5AFVq9erX79+mn27Nm69tprnfujo6MVHR3t/LtVq1Zq0KCB/vvf/+qpp566aNzXX39dDsfZk1QeeughVapUSRs2bFCnTp00ePDgIuXqdk9v//79deLEiXz7MzIy1L9//yIlAQAAAAClhcPYLN3Gjx+v9PR0l238+PEFXnflypXl5eWlw4cPu+w/fPiwQkNDC7xMaGjoBduf+/dibY4cOeJy/MyZM0pNTc13vV9++aXuuOMOvfTSS+rdu/eF7kr5+PioSZMm2rNnzwXbnbu+KVOmuPQsd+/eXTNmzNCwYcPk6+t70RgFcbvonT9/vk6fzj8BwenTp/XWW2+5ncDp06e1fv16/fjjj/mOZWZmFikmAAAAABSV1cOb/fz8FBgY6LL5+fkVeN2+vr5q2rSpEhMTnfscDocSExNdelDzio6OdmkvSStXrnS2r1mzpkJDQ13aHD9+XJs2bXK2iY6OVlpampKTk51tVq1aJYfDoaioKOe+NWvWqGPHjnr22Wc1aNCgi96Xubm5+u677xQWFnbRtt7e3nruued05syZi7Z1R6GHNx8/flzGGBljdOLECZe1lnJzc/XJJ58UOH32hfz000+69dZbdfDgQdlsNrVu3VqLFi1y3iHp6enq16/fBX89yMrKyjce3hjj1rTYAAAAAFBajBw5Un369FGzZs3UokULTZ8+XRkZGc5zZ3v37q2rrrpKU6dOlSQNHz5cMTExmjZtmjp27KhFixZp69atev311yWdXTJoxIgRmjJliurWretcsig8PFydO3eWJDVo0EDt27fXwIEDFR8fr5ycHA0dOlTdu3d3zty8evVq3X777Ro+fLi6dOni7JH19fV1Tmb15JNPqmXLlqpTp47S0tL0/PPP68CBA7r//vsLddvbtWunL7/8UhEREVbdnYUveoODg52LC19zzTX5jttstnzj1C/m0UcfVaNGjbR161alpaVpxIgRuuGGG7RmzRpVr169UDEKGh8vecumonV9AwAAALiylfQ6vd26ddPRo0c1ceJEpaSkKDIyUgkJCc6JqA4ePCi7/a9Bu61atdLChQv1+OOP67HHHlPdunW1fPly5xq9kjR27FhlZGRo0KBBSktLU+vWrZWQkODSmblgwQINHTpU7dq1k91uV5cuXTRjxgzn8fnz5+vUqVOaOnWqs+CWpJiYGK1Zs0aS9Oeff2rgwIFKSUlRhQoV1LRpU23YsEENGzYs1G2/7bbbNG7cOH333Xdq2rSpypZ1XZKsU6dOhb8j/79Cr9P75Zdfyhijtm3b6v3333eZltrX11c1atQ479pN5xMSEqIvvvhCjRs3lnS2h/bBBx/UJ598otWrV6ts2bIKDw9Xbm7ueWMU1NMbHBRqeU8v6/Rag3V6rcM6vdZgnV5rsE6vdVin1xqs02sN1um1Duv0Xl4+b2Htd/VbNy+2NJ4ny1vM/53NZrtgbXg+hf5GERMTI+ns+kjVqlW7YDKFdfr0aXl7/5WCzWbTa6+9pqFDhyomJkYLFy68aAw/P7984+EZ2gwAAAAAl59zMzdbye2f0WvUqKE///xTb775pnbs2CFJatiwofr165dvUeKLqV+/vrZu3aoGDRq47J85c6akonVdAwAAAMClcIhONE/idtG7du1a3XHHHQoKClKzZs0kSTNmzNCTTz6pjz76SG3atCl0rLvuukvvvvuu7rvvvnzHZs6cKYfDofj4eHdTBAAAAIAiu1xODfFEec8hzstms8nf31916tRRmzZt5OVV+FOMCn1O7zmNGzdWdHS0XnvtNecV5ebm6sEHH9SGDRv03XffuROuWHjZrT2vQ+KcXqtwTq91OKfXGpzTaw3O6bUO5/Rag3N6rcE5vdbhnN7Ly6fNe1ga77Yt71oaz5PVrFlTR48e1alTp1ShQgVJZyfHKlOmjMqVK6cjR46oVq1aWr16tapVq1aomG6/2+7Zs0ejRo1yqay9vLw0cuTIQi04DAAAAAClmcPYLN1QeE8//bSaN2+u3bt3648//tAff/yhn376SVFRUXr55Zd18OBBhYaG6pFHHil0TLd/Rv/Xv/6lHTt2qF69ei77d+zYoeuvv97dcAAAAABQqlwuo2Q80eOPP673339ftWvXdu6rU6eOXnjhBXXp0kX79u3Tc889py5duhQ6pttF78MPP6zhw4drz549atmypSRp48aNmjVrlp555hl9++23zrbXXXedu+EBAAAAAFeoQ4cO6cyZM/n2nzlzRikpKZKk8PBwnThxotAx3S56e/Q4O7597NixBR6z2WwyxhR5DSUAAAAAKEnFMS8ACufmm2/W4MGD9cYbb6hJkyaSpO3bt2vIkCFq27atJOm7775TzZo1Cx3T7aJ3//797l4EAAAAAICLevPNN3XfffepadOm8vHxkXS2l7ddu3Z68803JUnlypXTtGnTCh2zSOv0AgAAAICn4pzekhMaGqqVK1dq165d2rVrlySpXr16LnNK3XzzzW7FLNJ6EL///rvWr1+vI0eOyOFw7fx/+OGHixISAAAAAEoFZlwueX8vdC+F20XvvHnzNHjwYPn6+qpSpUqy2f56QthsNopeAAAAAEChHTx4sEiXCw4OVmBg4EXbuV30TpgwQRMnTtT48eNlt1u/qDoAAAAAlCQjenr/SREREc4JkQvLZrNp0qRJmjhx4kXbul30njp1St27d6fgBQAAAOCRGN78z/r7KbNWc7tyHTBggJYuXVocuQAAAAAAYCm3e3qnTp2q22+/XQkJCWrcuLFzGulzXnzxRcuSAwAAAIB/mqPwo2xxGShS0fvZZ585Z9L6+0RWAAAAAHA545xez+J20Ttt2jTNmTNHffv2LYZ0AAAAAACwjttFr5+fn2644YbiyAUAAAAAShwTWXkWtyeyGj58uF555ZXiyAUAAAAAAEu53dO7efNmrVq1SitWrNC1116bbyKrZcuWWZYcAAAAAPzT3FguFhbLzc3VvHnzlJiYqCNHjuRbzmjVqlVux3S76A0ODtbdd9/t9hUBAAAAwOXAwURWJWb48OGaN2+eOnbsqEaNGlkyWbLbRe/cuXMv+UoBAAAAAPi7RYsWacmSJerQoYNlMd0ues85evSodu3aJUmqV6+eqlSpYllSAAAAAFBSDBNZlRhfX1/VqVPH0phuT2SVkZGh/v37KywsTG3atFGbNm0UHh6uAQMG6NSpU5YmBwAAAAD/NIexWbqh8EaNGqWXX35ZxsITq93u6R05cqS+/PJLffTRR86li9avX6+HH35Yo0aN0muvvWZZcgAAAACAK8f69eu1evVqffrpp5ZNnOx20fv+++/rvffe00033eTc16FDBwUEBKhr164UvQAAAAAua0zeXHKCg4N11113WRrT7aL31KlTCgkJybe/atWqDG8GAAAAcNljSHLJKY6Jk90+pzc6OlqTJk1SZmamc9/p06c1efJkRUdHW5ocAAAAAACXwu2e3unTp6t9+/a6+uqrdf3110uSvvnmG/n7++uzzz6zPEEAAAAA+Cc5SjqBK9x7772nJUuW6ODBg8rOznY5tm3bNrfjud3T27hxY+3evVtTp05VZGSkIiMj9cwzz2j37t269tpr3U4AAAAAAABJmjFjhvr166eQkBBt375dLVq0UKVKlbRv3z7ddtttRYrpVk9vTk6O6tevrxUrVmjgwIFFukIAAAAAKM1Yp7fkvPrqq3r99dfVo0cPzZs3T2PHjlWtWrU0ceJEpaamFimmWz29Pj4+LufyAgAAAICnYZ3eknPw4EG1atVKkhQQEKATJ05Iku677z69++67RYrp9vDmhx56SM8++6zOnDlTpCsEAAAAAKAgoaGhzh7d6tWra+PGjZKk/fv3y5iiLSbl9kRWW7ZsUWJioj7//HM1btxYZcuWdTlelMWCAQAAAKC0YJ3ektO2bVt9+OGHatKkifr166dHHnlE7733nrZu3aq77767SDHdLnqDg4PVpUuXIl0ZAAAAAJR2DEkuOa+//rocjrPzZz/00EOqVKmSNmzYoE6dOmnw4MFFiul20VsciwUDAAAAAGC322W3/3UWbvfu3dW9e/dLi1nYhg6HQ88++6xuuOEGNW/eXOPGjdPp06cv6coBAAAAoLRxWLzBPevWrVOvXr0UHR2t3377TZL09ttva/369UWKV+ie3v/85z964oknFBsbq4CAAL388ss6cuSI5syZU6QrLlY2tzuwL8rL5mtpvMxcS8MVmzJuT3V2YdkO64eK+NitPevC1+J4kuTrZf3bnbfN2jyLYxBPkE+OpfHKeFsbT5LKWpyjJJXzs3aWe3+f7Is3cpPd4udPcTiT62V5zNM51r6Xn8r2szSeZP2Xo+JYdiPHYf1jk2nx430yx8fSeJKUccbaHE/lWvwhKynX4pe2TzF8ONxYsZzlMbMtfuFU8LX+c9vP4u8XwT7Wv4/71z1qeczLFUsWlZz3339f9913n3r2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4Obl5WXGjx/v/Nsdt912m/N18scff5ioqChjs9lMlSpVjN1uN/Xr1zdHjhxxK2aLFi3MRx99ZIwxZvny5cZut5tOnTqZRx991Nx1113Gx8fHebwwbDab8fLyMrGxsWbRokWW/EgSHx9vvL29TdOmTU1gYKB5++23Tfny5c39999vBg8ebAICAsz06dMLHW/37t2mRo0apmrVqqZatWrGZrOZjh07mqioKOPl5WXuuecet36A6tKli4mOjjY7d+7Md2znzp2mVatW5t///neh4xlztkC90LZu3Tq3n+MPP/ywueaaa8zSpUvN7NmzTY0aNUzHjh2dj1FKSoqx2WyFjnfnnXeaTp06mW+//daMGDHCNGjQwNx5550mOzvbZGZmmjvuuMP06tXLrRzPFaM2m+28mzu32263Oz9rxo8fb66++mqzatUqk5GRYdavX29q165txo0b51aOgYGBzmI+JibGPPLIIy7HH3/8cXPDDTe4FdNms5knn3zSNGnSxNhsNnPttdeal156yRw7dsytOOf861//MlOmTDHGnP0uEBwcbJ588knn8RdeeMFERka6FbNbt26mc+fOJj093WRmZpqhQ4ea3r17G2PO/ghVqVIlt16H/Fh0Zf1YBJSEK6LojYiIuOCvefPnzzc1atRwO+753ljObS+99JJbb35Vq1Y13377rfNvh8NhHnjgAVO9enWzd+9et99MAwMDnQVJbm6u8fb2Ntu2bXMe/+6770xISEih452zefNmc80115hRo0Y5e5OsKnpr1aplPv/8c5fjX331lalWrVqh4wUEBDh/zWzSpIl5/fXXXY4vWLDANGzYsMg5Zmdnm8WLFzt/IQ8PDzePPfaYW8Vf7dq1zfvvv2+MOfvB6+XlZd555x3n8WXLlpk6deq4lWNAQIDZu3ev8+/c3Fzj4+NjUlJSjDHGfP755yY8PNytmLGxsebOO+806enp+Y6lp6ebO++809x6661uxfzmm28uuC1evNit53nv3r1NVFSU2bJli1m5cqVp2rSpadasmUlNTTXGuP/l3Zizt/v+++83x48fN88//7y5+uqrzf333+883q9fP9O5c+dCx7PZbObqq682ERERLpvNZjNXXXWViYiIMDVr1nQrx7zPySFDhpiGDRs6Rzj88ssvpmnTpuaBBx5wK2bZsmWdMaKioswzzzzjcvyVV14xTZo0cSvHuXPnmjvvvNP4+PiYSpUqmeHDh19S70DDhg2dr+lVq1YZf39/M2vWLOfxuXPnmgYNGhQ63m233WYGDx7sHAn0zDPPmNtuu80YY8xPP/1kIiIizKRJkwodr1y5ci7vs3+3detWU65cuULHM+av4u98m7vFnzHGVK9e3axevdr599GjR02LFi3MrbfeajIzM93+vKlSpYrZvn27McaYkydPGpvNZtatW+c8/tVXX5nq1au7lWP79u1Nx44d8xU7Rf28yfuaadSokVm4cKHL8Q8++MBcc801bsUsW7as80f1kJAQ8/XXX7sc37NnT5Ee73N5bt261QwZMsQEBwcbPz8/c8899+T7jCxMjvv37zfGnP1e4ePj4/JdY+/evW7nGBgYaL7//nvn3ydPnjQ+Pj7Oz4q3337b1KtXr9Dx+LHoyvqxCCgJV0TRO3PmTOPn52cefvhh88EHH5iNGzeajRs3mg8++MA8/PDDJiAgwOVLU2FZ/cZSvnz5AodNPvTQQ+bqq682a9eudbvo3bNnj/PvcuXKuRRFP//8c5F7uE+cOGF69+5trrvuOvPdd98ZHx+fSyp6z/VIhYeH5/tC7G6elSpVMlu3bjXGnP0hoaAvIQEBAW7nWNCvzAcOHDCTJk1y/lJbWAEBAS5DoHx8fFy+QPz888+mTJkybuVYo0YN53BPY872gNpsNnPq1CljjDH79+93+/EOCAi4YIHy7bffFum+PN/rpihf4MPDw12Gv537ohAZGWn++OOPIvX0VqhQwflazM7ONna73eU6kpOTzVVXXVXoeIMHDzaRkZH5Xt9W/VhUr169fL/cf/HFF24X0kFBQeabb74xxpx97Zz7/3P27Nnj1vMyb46HDx82zz77rKlfv76x2+2mefPm5vXXX3d7yH1Br528z9H9+/e7lWOZMmVcelKysrKMj4+Ps1dt+fLlJiIiotDxKlWqZNasWXPe46tXrzaVKlUqdDxjzr6XP/vss2bNmjUFbrNnz3b7OR4QEJDvtJHjx4+b6Oho07ZtW7Nv375Lek8rV66cy+fPwYMHjZ+fn1s5GmPMiy++aKpVq+YywuBSit5znzWVK1d2ec815uz7rrvvZ23btjXPPfecMcaYVq1a5fuB/b333nO72C/o8+b06dPmrbfeMjfddJOx2+1uPSdDQ0Odn4mpqanGZrO5/OCxefNmExoa6laOVapUcXkMTp06Zex2u/N0kL1797r1ePNj0ZX1YxFQEq6IotcYYxYtWmSioqKMt7e38wu2t7e3iYqKMosXLy5SzPDwcLN8+fLzHt++fbtbb37Nmzc3b731VoHHHnroIRMcHOxWvOuuu858+umnzr+/++47l2F6a9eudftL8d+9++67JiQkxNjt9kv68t64cWPTpEkTU65cOfPee++5HP/yyy/dKjB69eplBgwYYIwx5p577jGPP/64y/Gnn37aNG7c2O0cLzS0yuFwuPXre82aNZ2PzU8//WTsdrtZsmSJ8/jHH3/s1pcaY4wZPny4adSokfn000/NqlWrzM0332xuuukm5/GEhARTu3Ztt2KGhYVdcDjrhx9+aMLCwtyKWalSJfPmm2+an3/+ucDt448/dut5XrZs2XzDv3Jyckznzp3NddddZ7799lu3v9jk7RkxJv8PRgcOHHD7B4Rly5aZatWqmVdeecW571KL3nNf4KtWrVrgF3h3i4xOnTo5f7GPi4vLN+R69uzZpm7dum7lWNDrZu3ataZPnz6mbNmypmzZsm7leO4HQGOM+e2334zNZjMff/yx8/iaNWvM1VdfXeh44eHhLkPV//zzT2Oz2ZzF+L59+9y6Hx988EFTo0YNs2zZMpcREunp6WbZsmUmIiLCDB06tNDxjDHmpptuMs8+++x5j3/99dduj2aoV6+ey/12zokTJ0x0dLS5/vrr3Xrd1K5d2+XL+quvvuryg0ZycrLbhdU527dvNw0bNjSDBg0yGRkZl/TlffDgweaRRx4xVatWzfeenZycbCpXruxWzA0bNpigoCAzadIk88orr5jKlSubxx9/3CxYsMBMnDjRBAcHX/CxK0jenrWC7N692+VUpYvp1auXiYqKMu+884654447TFxcnGnZsqXZsWOH2blzp4mJiXG7F/Wuu+4yXbp0MSdPnjTZ2dlmxIgRLqOTNm7c6NbjzY9FZ10pPxYBJeGKKXrPyc7ONr///rv5/fffizTRS1533HGHmTBhwnmPu/tF5Omnn3YOqyvIkCFD3Ir32muvmRUrVpz3+Pjx453F4aX45ZdfzPLly83JkyeLdPknnnjCZUtISHA5Pnr0aNO9e/dCx/vtt99MRESEadOmjRk5cqQJCAgwrVu3NgMHDjRt2rQxvr6+BX7Zu5CIiIgin09VkMcff9xU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vrwk6b777lNiYqL+85//6OTJk3rzzTf1zjvvqF27dpKk+fPn6+qrr3Ze/uDBg5o7d64OHjyo8PBwSdLo0aOVkJCguXPn6umnn1ZkZKSmTJmi+++/X927d9eBAwfcKswBAEDJo+gFABToiy++0NSpU7Vz504dP35cZ86cUWZmpk6dOqUyZcqoRYsWuvbaazV//nyNGzdO77zzjmrUqKE2bdpIkr755hvt2bPHWZSek5mZqb179zr/bty4sdsFr3S2EM8b+1zhLZ3tBc7OzlZUVJTzeMWKFV2GT3/33XfKzc3VNddc4xI3KytLlSpVcv49atQoLV++XDNnztSnn37qcgwAAJR+FL0AgHx+/vln3X777RoyZIj+85//qGLFilq/fr0GDBig7OxslSlTRtLZ3t5Zs2Zp3Lhxmjt3rvr16+fs1T158qSaNm2qBQsW5ItfpUoV5/+XLVu2SDn6+Pi4/G2z2eRwOAp9+ZMnT8rLy0vJycny8vJyOVauXDnn/x85ckQ//fSTvLy8tHv3brVv375I+QIAgJLBOb0AgHySk5PlcDg0bdo0tWzZUtdcc41+//33fO169eqlAwcOaMaMGfrxxx/Vp08f57F//etf2r17t6pWrao6deq4bEFBQcWaf+3ateXj46NNmzY59/3555/66aefnH83adJEubm5OnLkSL78QkNDne369++vxo0ba/78+Xr00Ue1Y8eOYs0dAABYi55eALiCpaen6+uvv3bZV6lSJdWpU0c5OTl65ZVXdMcdd+irr75SfHx8vstXqFBBd999t8aMGaNbb73V5ZzZnj176vnnn9edd96pJ598UldffbUOHDigZcuWaezYsS5trVauXDkNGDBAY8aMUaVKlVS1alX93//9n+z2v37rveaaa9SzZ0/17t1b06ZNU5MmTXT06FElJibquuuuU8eOHTVr1iwlJSXp22+/VbVq1fTxxx+rZ8+e2rhxY5GGZAMAgH8ePb0AcAVbs2aNmjRp4rJNnjxZ119/vV588UU9++yzatSokRYsWKCpU6cWGOPckOe/z2hcpkwZrV27VtWrV9fdd9+tBg0aaMCAAcrMzFRgYGCx37bnn39eN954o+644w7FxsaqdevWatq0qUubuXPnqnfv3ho1apTq1aunzp07a8uWLapevbp27typMWPG6NVXX1W1atUkSa+++qr+X7t2bMMgEERRcN0FJdDZxYQEl6Nrg94gISY9N+AI2QKvZir46dPucRxRa/35fgDgO1699373CAD+17quMU1TbNvm+gkAPI73ZgAuOc8z9n2PZVmilCJ4AYBH8t4MwCWttRjHMYZhiHme754DAPCR92YAAADScukFAAAgLdELAABAWqIXAACAtEQvAAAAaYleAAAA0hK9AAAApCV6AQAASEv0AgAAkJboBQAAIK03JX32P9TwIBkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#!/usr/bin/env python3\n", "\"\"\"\n", "Phase 4.1 — Saliency Maps via Gradient × Activation\n", "Computes per-layer saliency scores (gradient × activation) for each prompt,\n", "averages across sequence dimension, and visualizes them as heatmaps.\n", "\"\"\"\n", "\n", "import os, json, torch, numpy as np, seaborn as sns, matplotlib.pyplot as plt\n", "from transformers import AutoTokenizer, AutoModelForCausalLM\n", "from tqdm import tqdm\n", "\n", "# ---------------------------------------------------------------------\n", "# 1 — Model loader\n", "# ---------------------------------------------------------------------\n", "def load_model(model_name=\"Qwen/Qwen2.5-3B-Instruct\"):\n", " device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", " tokenizer = AutoTokenizer.from_pretrained(model_name)\n", " model = AutoModelForCausalLM.from_pretrained(\n", " model_name,\n", " torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,\n", " device_map=\"auto\"\n", " )\n", " model.eval()\n", " print(f\"[INFO] Loaded {model_name} on {device}\")\n", " return model, tokenizer, device\n", "\n", "# ---------------------------------------------------------------------\n", "# 2 — Hook registration (store activations + gradients)\n", "# ---------------------------------------------------------------------\n", "def register_saliency_hooks(model, store):\n", " handles = []\n", " for idx, layer in enumerate(model.model.layers):\n", " def forward_hook(module, inp, out, layer_idx=idx):\n", " store[layer_idx] = {\"act\": out[0].detach().cpu(), \"grad\": None}\n", " def backward_hook(module, grad_input, grad_output, layer_idx=idx):\n", " if layer_idx in store:\n", " store[layer_idx][\"grad\"] = grad_output[0].detach().cpu()\n", " handles.append(layer.register_forward_hook(forward_hook))\n", " handles.append(layer.register_full_backward_hook(backward_hook))\n", " return handles\n", "\n", "# ---------------------------------------------------------------------\n", "# 3 — Compute saliency maps\n", "# ---------------------------------------------------------------------\n", "def compute_saliency(model, tokenizer, device, prompts, save_dir=\"saliency\"):\n", " os.makedirs(save_dir, exist_ok=True)\n", "\n", " for p_idx, prompt in enumerate(tqdm(prompts, desc=\"Prompts\")):\n", " store = {}\n", " hooks = register_saliency_hooks(model, store)\n", "\n", " inputs = tokenizer(prompt, return_tensors=\"pt\").to(device)\n", " model.zero_grad(set_to_none=True)\n", " outputs = model(**inputs)\n", " scalar = outputs.logits.mean()\n", " scalar.backward()\n", "\n", " # gradient × activation → saliency\n", " for layer_idx, tensors in store.items():\n", " act, grad = tensors[\"act\"], tensors[\"grad\"]\n", " if grad is None: # skip if backward hook missed\n", " continue\n", " saliency = (grad * act).mean(dim=1).squeeze(0).numpy() # (hidden_dim,)\n", " np.save(f\"{save_dir}/prompt{p_idx+1:02d}_layer{layer_idx:02d}_saliency.npy\", saliency)\n", "\n", " for h in hooks:\n", " h.remove()\n", "\n", " print(f\"[INFO] Saved saliency for prompt {p_idx+1}\")\n", "\n", " print(f\"[INFO] Saliency extraction complete → {save_dir}/\")\n", "\n", "# ---------------------------------------------------------------------\n", "# 4 — Visualization\n", "# ---------------------------------------------------------------------\n", "def visualize_saliency(base_dir=\"saliency\"):\n", " files = sorted([f for f in os.listdir(base_dir) if \"_layer\" in f and f.endswith(\".npy\")])\n", " prompts = sorted({int(f.split(\"prompt\")[1].split(\"_\")[0]) for f in files})\n", " layers = sorted({int(f.split(\"_layer\")[1].split(\"_\")[0]) for f in files})\n", "\n", " plt.figure(figsize=(10, 5))\n", " data = np.zeros((len(prompts), len(layers)))\n", " for i, p in enumerate(prompts):\n", " for j, l in enumerate(layers):\n", " path = f\"{base_dir}/prompt{p:02d}_layer{l:02d}_saliency.npy\"\n", " if os.path.exists(path):\n", " data[i, j] = np.abs(np.load(path)).mean() # mean absolute saliency\n", " sns.heatmap(data, cmap=\"inferno\", cbar_kws={'label': 'Mean |grad×act|'})\n", " plt.xlabel(\"Layer Index\")\n", " plt.ylabel(\"Prompt Index\")\n", " plt.title(\"Layerwise Mean Saliency Heatmap\")\n", " plt.tight_layout()\n", " plt.show()\n", "\n", "# ---------------------------------------------------------------------\n", "# 5 — Main\n", "# ---------------------------------------------------------------------\n", "def main():\n", " # Load latest recommender prompts\n", " log_dir = \"logs\"\n", " log_files = sorted([f for f in os.listdir(log_dir) if f.startswith(\"recommender_\") and f.endswith(\".json\")])\n", " latest_log = os.path.join(log_dir, log_files[-1])\n", " with open(latest_log, \"r\", encoding=\"utf-8\") as f:\n", " data = json.load(f)\n", " prompts = [r[\"question\"] for r in data[\"records\"]]\n", "\n", " model, tokenizer, device = load_model()\n", " compute_saliency(model, tokenizer, device, prompts)\n", " visualize_saliency()\n", "\n", "if __name__ == \"__main__\":\n", " main()\n" ] }, { "cell_type": "code", "execution_count": null, "id": "7f3b45c1", "metadata": {}, "outputs": [ { "data": { "image/png": "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hp+fn1GxYkWja9euxoYNGxzK5PZ3yi32gwcPNipVqmR/fuX98OqrrxqRkZGGj4+P0bFjR4cppA3DnK72kUceMYKDgw2LxWJ/P128eLFxyy23GCEhIYa3t7dRs2ZN46GHHjJOnTrlcPw777xjVKxY0T7Nr4irWAyjmEcSiYgU0o4dO2jZsiX/93//x6BBg9xdnVydPXuW8PBwpkyZwtNPP+3u6oibtGzZkqCgIPsMbPKXYcOGsW/fPvsMZpLdb7/9Rp06dXj55ZftLaCu0rJlS7p06ZLjqvEixUljLETELf78889s22bMmIHVanVqQLI7zZ07l8zMzGsyYFdKpi1btrBjx45sqyiLaerUqfbVwMW9li9fzv79+5k8ebK7qyLlgMZYiIhbvPTSS2zdupWuXbvi6elpnypxxIgRxT7rSnFZtWoVu3bt4l//+hd9+vRxmLVFyodff/2VrVu38uqrrxIeHp5tEgQx1axZkwsXLri7GoI5i1lOE0mIuIISCxFxi/bt27NixQr++c9/kpqaSs2aNXnmmWeyTYNbkjz77LNs2LCBm266KdsMVlI+LF68mGeffZYGDRowf/58fH193V0lEZESQ2MsRERERESkyDTGQkREREREikyJhYiIiIiIFJnGWLiZzWbj5MmTVK5c2WFRMBERERERdzMMg5SUFCIiIrBa826TUGLhZidPniyxM+CIiIiIiAAcO3aMGjVq5FmmRCQWb731Fi+//DLx8fFcf/31vPHGG7Rp0ybX8osWLeLpp5/mt99+IyoqihdffJHbbrvNvt8wDKZOncp7771HYmIiN910E++88w5RUVH2MufOneORRx7h888/x2q10q9fP15//XX8/PwA2Lt3Lw8//DC7du0iKSmJiIgI7rvvPqZOnYqXlxdgzmU/dOhQh7r5+PgUaIq9ypUrA+Yfy9/f3+njioPNZuPMmTMEBwfnm4FK4SjGrqX4up5i7HqKsWspvq6nGLueO2OcnJxMZGSk/TNrXtyeWHz88cdMmDCBWbNmER0dzYwZM+jRowd79+4lJCQkW/kNGzYwcOBApk+fzu233868efPo06cP27Zto2nTpoA5P/7MmTP58MMPqVOnDk8//TQ9evRg165d9qkBBw0axKlTp1ixYgUXL15k6NChjBgxgnnz5gHg5eVFbGwsN9xwA4GBgfz0008MHz4cm83G888/b6+Pv78/e/futT8vaHemrPL+/v5uSSwuXLiAv7+/3ghcRDF2LcXX9RRj11OMXUvxdT3F2PVKQoyd+oxruFmbNm2M0aNH259nZmYaERERxvTp03Msf++99xq9evVy2BYdHW089NBDhmEYhs1mM8LCwoyXX37Zvj8xMdHw8fEx5s+fbxiGYezatcsAjM2bN9vLfPXVV4bFYjFOnDiRa13Hjx9vdOjQwf58zpw5RkBAgPMvNgdJSUkGYCQlJRXpPIWRmZlpnDp1ysjMzLzm1y4vFGPXUnxdTzF2PcXYtRRf11OMXc+dMS7IZ1W3tlhkZGSwdetWh2XmrVYrMTExbNy4McdjNm7cyIQJExy29ejRg6VLlwJw+PBh4uPjiYmJse8PCAggOjqajRs3MmDAADZu3EhgYCCtW7e2l4mJicFqtbJp0ybuuuuubNc9cOAAy5cvp2/fvg7bU1NTqVWrFjabjRtuuIHnn3+eJk2a5Pqa09PTSU9Ptz9PTk4GzEzUZrPlepwr2Gw2DMO45tctTxRj11J8XU8xdj3F2LUUX9dTjF3PnTEuyDXdmlicPXuWzMxMQkNDHbaHhoayZ8+eHI+Jj4/PsXx8fLx9f9a2vMpc3c3K09OToKAge5ks7du3Z9u2baSnpzNixAieffZZ+74GDRrwwQcf0Lx5c5KSknjllVdo3749O3fuzHVwy/Tp05k2bVq27WfOnCnQ2IziYLPZSEpKwjAMNV26iGLsWoqv6ynGrqcYu5bi63qKseu5M8YpKSlOl3X7GIuS7uOPPyYlJYWffvqJiRMn8sorrzBp0iQA2rVrR7t27exl27dvT6NGjXj33Xf55z//meP5Jk+e7NDikjUgJjg42C1jLCwWiwZbuZBi7FqKr+spxq6nGLuW4ut6irHruTPGWeOTneHWxKJatWp4eHiQkJDgsD0hIYGwsLAcjwkLC8uzfNbPhIQEwsPDHcq0aNHCXub06dMO57h06RLnzp3Ldt2sqWAbN25MZmYmI0aM4LHHHsPDwyNb3by8vGjZsiUHDhzI9TX7+Pjg4+OTbbvVanXLP0aLxeK2a5cXirFrKb6upxi7nmLsWoqv6ynGrueuGBfkem7963t7e9OqVStWrlxp32az2Vi5cqVDS8CV2rVr51AeYMWKFfbyderUISwszKFMcnIymzZtspdp164diYmJbN261V5m1apV2Gw2oqOjc62vzWbj4sWLufY1y8zM5JdffnFIaEREREREygO3d4WaMGECgwcPpnXr1rRp04YZM2aQlpZmXx8iNjaW6tWrM336dADGjh1L586defXVV+nVqxcLFixgy5YtzJ49GzCzuXHjxvHcc88RFRVln242IiKCPn36ANCoUSN69uzJ8OHDmTVrFhcvXmTMmDEMGDCAiIgIAOLi4vDy8qJZs2b4+PiwZcsWJk+eTP/+/e3rWDz77LO0bduW+vXrk5iYyMsvv8yRI0d48MEHr3EURURERKRMsmXCsbX4ntoL6Q0gsjNYs/ecKQncnlj079+fM2fOMGXKFOLj42nRogXLly+3D74+evSoQxNM+/btmTdvHk899RR///vfiYqKYunSpfY1LAAmTZpEWloaI0aMIDExkQ4dOrB8+XKHPmJxcXGMGTOG7t272xfImzlzpn2/p6cnL774Ivv27cMwDGrVqsWYMWMYP368vcwff/zB8OHDiY+Pp0qVKrRq1YoNGzbQuHFjV4ZMRERERMqD/Utg1VisqccJzNrmVwO6vQ5RffM40D0shmEY7q5EeZacnExAQABJSUluGbx9+vRpQkJC1CfSRRRj11J8XU8xdj3F2LUUX9dTjF1k/xL47G7g6o/qlxequ2PxNUkuCvJZVX99EREREZGSxJYJq8aSPangr22rx5nlShAlFiIiIiIiJcmJdZB6PI8CBqQcM8uVIEosRERERERKktRTxVvuGlFiISIiIiJSkvg5uXSBs+WuESUWIiIiIiIlSfWO5uxPWQO1s7FA5UizXAmixEJEREREpCSxephTyubocrLRdUaJW89CiYWIiIiISEkT1decUtazkuP2yjWu2VSzBeX2BfJERERERCQHUX0h4h04+i1pUbFUuH4w1hK88rZaLERERERESqrL086m17wDIruU2KQClFiIiIiIiJRMhgHJRwHIrFTdzZXJnxILEREREZGS6MI5uHQegMyKJWtq2ZwosRARERERKYkut1YYFUPBw8fNlcmfEgsRERERkZIo5Zj5s3JN99bDSUosRERERERKohSzxYLKke6th5OUWIiIiIiIlESXu0LhrxYLEREREREprMstFoZaLEREREREpNDsYyyUWIiIiIiISGFldYXS4G0RERERESmUzIuQdtL8XYmFiIiIiIgUStpJMGzg4Q0Vg91dG6cosRARERERKWmSr5hq1lI6PrKXjlqKiIiIiJQnpWxxPFBiISIiIiJS8pSyNSxAiYWIiIiISMlTylbdBiUWIiIiIiIlT0rpmmoWlFiIiIiIiJQ8WWMs1BVKREREREQKrZQtjgdKLERERERESpb0ZEhPNH/XGAsRERERESmUrG5QvlXA28+9dSkAJRYiIiIiIiVJKVzDApRYiIiIiIiULKVwRihQYiEiIiIiUrIkl741LECJhYiIiIhIyZJS+lbdBiUWIiIiIiIli8ZYiIiIiIhIkSWrxUJERERERIrCsF3RYqExFiIiIiIiUhhpCWC7CBYr+EW4uzYFosRCRERERKSkyGqt8KsOVk/31qWAlFiIiIiIiJQUpXQNC1BiISIiIiJScpTSNSxAiYWIiIiISMlRStewACUWIiIiIiIlR7K6QhXJW2+9Re3atfH19SU6Opoff/wxz/KLFi2iYcOG+Pr60qxZM7788kuH/YZhMGXKFMLDw6lQoQIxMTHs37/focy5c+cYNGgQ/v7+BAYGMmzYMFJTU+379+7dS9euXQkNDcXX15e6devy1FNPcfHixQLVRURERETEaVmDt9ViUXAff/wxEyZMYOrUqWzbto3rr7+eHj16cPr06RzLb9iwgYEDBzJs2DC2b99Onz596NOnD7/++qu9zEsvvcTMmTOZNWsWmzZtolKlSvTo0YMLFy7YywwaNIidO3eyYsUKli1bxnfffceIESPs+728vIiNjeWbb75h7969zJgxg/fee4+pU6cWqC4iIiIiIk4rxYO3LYZhGO6sQHR0NDfeeCNvvvkmADabjcjISB555BGefPLJbOX79+9PWloay5Yts29r27YtLVq0YNasWRiGQUREBI899hiPP/44AElJSYSGhjJ37lwGDBjA7t27ady4MZs3b6Z169YALF++nNtuu43jx48TEZHznMETJkxg8+bNrFu3zqm6OCM5OZmAgACSkpLw9/d36pjiYrPZOH36NCEhIVitbs8xyyTF2LUUX9dTjF1PMXYtxdf1FONidPFPmFnR/H3U71AhCHBvjAvyWdWtk+NmZGSwdetWJk+ebN9mtVqJiYlh48aNOR6zceNGJkyY4LCtR48eLF26FIDDhw8THx9PTEyMfX9AQADR0dFs3LiRAQMGsHHjRgIDA+1JBUBMTAxWq5VNmzZx1113ZbvugQMH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+/tf02uXF4qxaym+rqcYu55i7FqKr+spxq7nzhgbhkFKSgoRERH5tpaoxcLNrFYrNWrUcGsd/P399UbgYoqxaym+rqcYu55i7FqKr+spxq7nrhjn11KRRR3hRERERESkyJRYiIiIiIhIkSmxKMd8fHyYOnUqPj4+7q5KmaUYu5bi63qKsespxq6l+LqeYux6pSXGGrwtIiIiIiJFphYLEREREREpMiUWIiIiIiJSZEosRERERESkyJRYlFNvvfUWtWvXxtfXl+joaH788Ud3V6nMeOaZZ7BYLA6Phg0burtapdp3331H7969iYiIwGKxsHTpUof9hmEwZcoUwsPDqVChAjExMezfv989lS2l8ovxkCFDst3XPXv2dE9lS6Hp06dz4403UrlyZUJCQujTpw979+51KHPhwgVGjx5N1apV8fPzo1+/fiQkJLipxqWPMzHu0qVLtvv44YcfdlONS5933nmH5s2b29dSaNeuHV999ZV9v+7hoskvvqXh/lViUQ59/PHHTJgwgalTp7Jt2zauv/56evTowenTp91dtTKjSZMmnDp1yv5Yv369u6tUqqWlpXH99dfz1ltv5bj/pZdeYubMmcyaNYtNmzZRqVIlevTowYULF65xTUuv/GIM0LNnT4f7ev78+dewhqXb2rVrGT16ND/88AMrVqzg4sWL3HLLLaSlpdnLjB8/ns8//5xFixaxdu1aTp48Sd++fd1Y69LFmRgDDB8+3OE+fumll9xU49KnRo0avPDCC2zdupUtW7bQrVs37rzzTnbu3AnoHi6q/OILpeD+NaTcadOmjTF69Gj788zMTCMiIsKYPn26G2tVdkydOtW4/vrr3V2NMgswPv30U/tzm81mhIWFGS+//LJ9W2JiouHj42PMnz/fDTUs/a6OsWEYxuDBg40777zTLfUpi06fPm0Axtq1aw3DMO9ZLy8vY9GiRfYyu3fvNgBj48aN7qpmqXZ1jA3DMDp37myMHTvWfZUqg6pUqWK8//77uoddJCu+hlE67l+1WJQzGRkZbN26lZiYGPs2q9VKTEwMGzdudGPNypb9+/cTERFB3bp1GTRoEEePHnV3lcqsw4cPEx8f73BPBwQEEB0drXu6mK1Zs4aQkBAaNGjAyJEj+f33391dpVIrKSkJgKCgIAC2bt3KxYsXHe7jhg0bUrNmTd3HhXR1jLPExcVR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040KFSoYX3/9tb0OoaGhRnp6ep7XnjNnjhEQEGB/PnXqVKNixYpGcnKyfdvEiRON6OhowzAMIyUlxfD29jYWLlxo3//7778bFSpUMMaOHWsYhmEcOXLE8PDwME6cOOFwre7duxuTJ0+2P3/ppZeMatWqGWPGjDHCw8ONs2fP5hsrEZHSytPdiY2IiJQ93377LdOnT2fPnj0kJydz6dIlLly4wPnz56lYsSJt2rShSZMmfPjhhzz55JP83//9H7Vq1aJTp04A/PTTTxw4cIDKlSs7nPfChQscPHjQ/rxZs2Z4e3sXuH61a9d2OHd4eDinT58GzNaMjIwMoqOj7fuDgoIculr98ssvZGZmct111zmcNz09napVq9qfP/bYYyxdupQ333yTr776ymGfiEhZo8RCRESK1W+//cbtt9/OyJEj+de//kVQUBDr169n2LBhZGRkULFiRQAefPBB3nrrLZ588knmzJnD0KFDsVgsAKSmptKqVSvi4uKynT84ONj+e6VKlQpVRy8vL4fnFosFm83m9PGpqal4eHiwdetWPDw8HPb5+fnZfz99+jT79u3Dw8OD/fv307Nnz0LVV0SkNNAYCxERKVZbt27FZrPx6quv0rZtW6677jpOnjyZrdz999/PkSNHmDlzJrt27WLw4MH2fTfccAP79+8nJCSE+vXrOzwCAgJcWv969erh5eXFpk2b7Nv++OMP9u3bZ3/esmVLMjMzOX36dLb6hYWF2cs98MADNGvWjA8//JAnnniC3bt3u7TuIiLupBYLEREplKSkJHbs2OGwrWrVqtSvX5+LFy/yxhtv0Lt3b77//ntmzZqV7fgqVarQt29fJk6cyC233EKNGjXs+wYNGsTLL7/MnXfeybPPPkuNGjU4cuQIS5YsYdKkSQ5li5ufnx/Dhg1j4sSJVK1alZCQEP7xj39gtf71Xdx1113HoEGDiI2N5dVXX6Vly5acOXOGlStX0rx5c3r16sVbb73Fxo0b+fnnn4mMjOSLL75g0KBB/PDDD4XqviUiUtKpxUJERAplzZo1tGzZ0uExbdo0rr/+ev7973/z4osv0rRpU+Li4pg+fXqO58jqHnX1TEkVK1bku+++o2bNmvTt25dGjRoxbNgwLly4gL+/v8tf28svv0zHjh3p3bs3MTExdOjQgVatWjmUmTNnDrGxsTz22GM0aNCAPn36sHnzZmrWrMmePXuYOHEib7/9NpGRkQC8/fbbnD17lqefftrl9RcRcQeLYRiGuyshIiLl00cffcT48eM5efKkvsUXESnl1BVKRESuufPnz3Pq1CleeOEFHnroISUVIiJlgLpCiYjINffSSy/RsGFDwsLCmDx5srurIyIixUBdoUREREREpMjUYiEiIiIiIkWmxEJERERERIpMiYWIiIiIiBSZEgsRERERESkyJRYiIiIiIlJkSixERERERKTIlFiIiIiIiEiRKbEQEREREZEiU2IhIiIiIiJF9v8WiNeVTo68kAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[INFO] Saved top-20 sensitive neurons per layer → sensitive_neurons.json\n" ] }, { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n", "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n", "\u001b[1;31mClick here for more info. \n", "\u001b[1;31mView Jupyter log for further details." ] } ], "source": [ "# ---------------------------------------------------------------------\n", "# 6 — Aggregate Saliency Profiles & Identify Sensitive Neurons\n", "# ---------------------------------------------------------------------\n", "import json\n", "\n", "base_dir = \"saliency\"\n", "files = sorted([f for f in os.listdir(base_dir) if \"_layer\" in f and f.endswith(\".npy\")])\n", "prompts = sorted({int(f.split(\"prompt\")[1].split(\"_\")[0]) for f in files})\n", "layers = sorted({int(f.split(\"_layer\")[1].split(\"_\")[0]) for f in files})\n", "\n", "# --------------- Compute average saliency per layer ---------------\n", "mean_saliency = []\n", "for l in layers:\n", " layer_vals = []\n", " for p in prompts:\n", " path = f\"{base_dir}/prompt{p:02d}_layer{l:02d}_saliency.npy\"\n", " if os.path.exists(path):\n", " s = np.abs(np.load(path))\n", " layer_vals.append(s.mean())\n", " if layer_vals:\n", " mean_saliency.append(np.mean(layer_vals))\n", " else:\n", " mean_saliency.append(np.nan)\n", "\n", "# Plot average saliency curve\n", "plt.figure(figsize=(8,4))\n", "plt.plot(layers, mean_saliency, marker=\"o\", color=\"darkorange\")\n", "plt.xlabel(\"Layer Index\")\n", "plt.ylabel(\"Mean |grad × act|\")\n", "plt.title(\"Average Layerwise Saliency Profile (All Prompts)\")\n", "plt.grid(True, alpha=0.3)\n", "plt.tight_layout()\n", "plt.show()\n", "\n", "# --------------- Identify most sensitive neurons per layer ---------------\n", "top_k = 20 # number of neurons to record per layer\n", "sensitive_neurons = {}\n", "\n", "for l in layers:\n", " all_neuron_vals = []\n", " for p in prompts:\n", " path = f\"{base_dir}/prompt{p:02d}_layer{l:02d}_saliency.npy\"\n", " if os.path.exists(path):\n", " s = np.abs(np.load(path))\n", " all_neuron_vals.append(s)\n", " if not all_neuron_vals:\n", " continue\n", " layer_stack = np.vstack(all_neuron_vals) # shape: (num_prompts, hidden_dim)\n", " mean_neuron_saliency = layer_stack.mean(axis=0)\n", " top_indices = np.argsort(mean_neuron_saliency)[-top_k:][::-1]\n", " sensitive_neurons[f\"layer_{l}\"] = top_indices.tolist()\n", "\n", "# Save to JSON\n", "out_path = \"sensitive_neurons.json\"\n", "with open(out_path, \"w\", encoding=\"utf-8\") as f:\n", " json.dump(sensitive_neurons, f, indent=2)\n", "\n", "print(f\"[INFO] Saved top-{top_k} sensitive neurons per layer → {out_path}\")\n" ] } ], "metadata": { "kernelspec": { "display_name": "lpu-env", "language": "python", "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.10.18" } }, "nbformat": 4, "nbformat_minor": 5 }