{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "74fc32e1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "label\n", "1 5362\n", "0 4666\n", "3 2159\n", "4 1937\n", "2 1304\n", "5 572\n", "Name: count, dtype: int64\n" ] } ], "source": [ "from datasets import load_dataset\n", "import pandas as pd\n", "\n", "dataset = load_dataset(\"dair-ai/emotion\")\n", "label_names = dataset[\"train\"].features[\"label\"].names\n", "\n", "df = pd.DataFrame(dataset[\"train\"])\n", "print(df[\"label\"].value_counts())" ] }, { "cell_type": "code", "execution_count": 2, "id": "53d69ac1", "metadata": {}, "outputs": [ { "data": { "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", "
textlabel
0i didnt feel humiliated0
1i can go from feeling so hopeless to so damned...0
2im grabbing a minute to post i feel greedy wrong3
3i am ever feeling nostalgic about the fireplac...2
4i am feeling grouchy3
\n", "
" ], "text/plain": [ " text label\n", "0 i didnt feel humiliated 0\n", "1 i can go from feeling so hopeless to so damned... 0\n", "2 im grabbing a minute to post i feel greedy wrong 3\n", "3 i am ever feeling nostalgic about the fireplac... 2\n", "4 i am feeling grouchy 3" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 3, "id": "8ecaa77f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DatasetDict({\n", " train: Dataset({\n", " features: ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],\n", " num_rows: 16000\n", " })\n", " validation: Dataset({\n", " features: ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],\n", " num_rows: 2000\n", " })\n", " test: Dataset({\n", " features: ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],\n", " num_rows: 2000\n", " })\n", "})" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Tokenization\n", "\n", "from transformers import AutoTokenizer\n", "\n", "model_name = \"distilbert-base-uncased\"\n", "tokenizer = AutoTokenizer.from_pretrained(model_name)\n", "\n", "def tokenize(batch):\n", " return tokenizer(batch[\"text\"], padding=\"max_length\", truncation=True, max_length=64)\n", "\n", "tokenized = dataset.map(tokenize, batched=True)\n", "tokenized" ] }, { "cell_type": "code", "execution_count": 4, "id": "c57493f4", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "853d3ad1823b4d799a0d052bfb2f3120", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Loading weights: 0%| | 0/100 [00:00\n", " \n", " \n", " [1500/1500 1:04:28, Epoch 3/3]\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", "
EpochTraining LossValidation LossAccuracyF1 Weighted
10.6091210.2007750.9275000.928239
20.1692150.1489690.9405000.940165
30.1169370.1455990.9365000.936436

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "383e8f3dd5fc475b9fcedc0f734ae052", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Writing model shards: 0%| | 0/1 [00:00" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " sadness 0.96 0.96 0.96 581\n", " joy 0.94 0.96 0.95 695\n", " love 0.87 0.79 0.83 159\n", " anger 0.95 0.90 0.92 275\n", " fear 0.90 0.88 0.89 224\n", " surprise 0.70 0.83 0.76 66\n", "\n", " accuracy 0.93 2000\n", " macro avg 0.88 0.89 0.88 2000\n", "weighted avg 0.93 0.93 0.93 2000\n", "\n" ] }, { "data": { "image/png": "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", "text/plain": [ "

" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import confusion_matrix, classification_report\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "preds = trainer.predict(tokenized[\"test\"])\n", "pred = np.argmax(preds.predictions, axis=1)\n", "y_true = tokenized[\"test\"][\"label\"]\n", "\n", "print(classification_report(y_true, pred, target_names=label_names))\n", "\n", "cm = confusion_matrix(y_true, pred)\n", "sns.heatmap(cm, annot=True, fmt=\"d\", xticklabels=label_names, yticklabels=label_names, cmap=\"Blues\")\n", "plt.xlabel(\"Predicted\")\n", "plt.ylabel(\"True\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "id": "a99c42dd", "metadata": {}, "outputs": [], "source": [ "from huggingface_hub import login\n", "login()" ] }, { "cell_type": "code", "execution_count": 10, "id": "c1d401db", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9ae732c123cb44f3bfdb52384a5e89a9", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Writing model shards: 0%| | 0/1 [00:00 \u001b[39m\u001b[32m1\u001b[39m \u001b[43mmodel\u001b[49m\u001b[43m.\u001b[49m\u001b[43mpush_to_hub\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mTrunkSam/support-emotion-classifier\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 2\u001b[39m tokenizer.push_to_hub(\u001b[33m\"\u001b[39m\u001b[33mTrunkSam/support-emotion-classifier\u001b[39m\u001b[33m\"\u001b[39m)\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\TrunkSam\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\transformers\\modeling_utils.py:3601\u001b[39m, in \u001b[36mPreTrainedModel.push_to_hub\u001b[39m\u001b[34m(self, *args, **kwargs)\u001b[39m\n\u001b[32m 3599\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m tags:\n\u001b[32m 3600\u001b[39m kwargs[\u001b[33m\"\u001b[39m\u001b[33mtags\u001b[39m\u001b[33m\"\u001b[39m] = tags\n\u001b[32m-> \u001b[39m\u001b[32m3601\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[43mpush_to_hub\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\TrunkSam\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\transformers\\utils\\hub.py:814\u001b[39m, in \u001b[36mPushToHubMixin.push_to_hub\u001b[39m\u001b[34m(self, repo_id, commit_message, commit_description, private, token, revision, create_pr, max_shard_size, tags)\u001b[39m\n\u001b[32m 811\u001b[39m model_card.save(os.path.join(tmp_dir, \u001b[33m\"\u001b[39m\u001b[33mREADME.md\u001b[39m\u001b[33m\"\u001b[39m))\n\u001b[32m 813\u001b[39m \u001b[38;5;66;03m# Upload\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m814\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_upload_modified_files\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 815\u001b[39m \u001b[43m \u001b[49m\u001b[43mtmp_dir\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 816\u001b[39m \u001b[43m \u001b[49m\u001b[43mrepo_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 817\u001b[39m \u001b[43m \u001b[49m\u001b[43mfiles_timestamps\u001b[49m\u001b[43m=\u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 818\u001b[39m \u001b[43m \u001b[49m\u001b[43mcommit_message\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcommit_message\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 819\u001b[39m \u001b[43m \u001b[49m\u001b[43mtoken\u001b[49m\u001b[43m=\u001b[49m\u001b[43mtoken\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 820\u001b[39m \u001b[43m \u001b[49m\u001b[43mcreate_pr\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcreate_pr\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 821\u001b[39m \u001b[43m \u001b[49m\u001b[43mrevision\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrevision\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 822\u001b[39m \u001b[43m \u001b[49m\u001b[43mcommit_description\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcommit_description\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 823\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\TrunkSam\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\transformers\\utils\\hub.py:729\u001b[39m, in \u001b[36mPushToHubMixin._upload_modified_files\u001b[39m\u001b[34m(self, working_dir, repo_id, files_timestamps, commit_message, token, create_pr, revision, commit_description)\u001b[39m\n\u001b[32m 726\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m\n\u001b[32m 728\u001b[39m logger.info(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mUploading the following files to \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mrepo_id\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[33m'\u001b[39m\u001b[33m,\u001b[39m\u001b[33m'\u001b[39m.join(modified_files)\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n\u001b[32m--> \u001b[39m\u001b[32m729\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mhf_api\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[43mcreate_commit\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 730\u001b[39m \u001b[43m \u001b[49m\u001b[43mrepo_id\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrepo_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 731\u001b[39m \u001b[43m \u001b[49m\u001b[43moperations\u001b[49m\u001b[43m=\u001b[49m\u001b[43moperations\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 732\u001b[39m \u001b[43m \u001b[49m\u001b[43mcommit_message\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcommit_message\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 733\u001b[39m \u001b[43m \u001b[49m\u001b[43mcommit_description\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcommit_description\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 734\u001b[39m \u001b[43m \u001b[49m\u001b[43mtoken\u001b[49m\u001b[43m=\u001b[49m\u001b[43mtoken\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 735\u001b[39m \u001b[43m \u001b[49m\u001b[43mcreate_pr\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcreate_pr\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 736\u001b[39m \u001b[43m \u001b[49m\u001b[43mrevision\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrevision\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 737\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\TrunkSam\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\huggingface_hub\\utils\\_validators.py:88\u001b[39m, in \u001b[36mvalidate_hf_hub_args.._inner_fn\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 84\u001b[39m validate_repo_id(arg_value)\n\u001b[32m 86\u001b[39m kwargs = smoothly_deprecate_legacy_arguments(fn_name=fn.\u001b[34m__name__\u001b[39m, kwargs=kwargs)\n\u001b[32m---> \u001b[39m\u001b[32m88\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\TrunkSam\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\huggingface_hub\\hf_api.py:2164\u001b[39m, in \u001b[36mfuture_compatible.._inner\u001b[39m\u001b[34m(self, *args, **kwargs)\u001b[39m\n\u001b[32m 2161\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m.run_as_future(fn, \u001b[38;5;28mself\u001b[39m, *args, **kwargs)\n\u001b[32m 2163\u001b[39m \u001b[38;5;66;03m# Otherwise, call the function normally\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m2164\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\TrunkSam\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\huggingface_hub\\hf_api.py:5277\u001b[39m, in \u001b[36mHfApi.create_commit\u001b[39m\u001b[34m(self, repo_id, operations, commit_message, commit_description, token, repo_type, revision, create_pr, num_threads, parent_commit, run_as_future, _hot_reload)\u001b[39m\n\u001b[32m 5274\u001b[39m \u001b[38;5;66;03m# If updating twice the same file or update then delete a file in a single commit\u001b[39;00m\n\u001b[32m 5275\u001b[39m _warn_on_overwriting_operations(operations)\n\u001b[32m-> \u001b[39m\u001b[32m5277\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mpreupload_lfs_files\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 5278\u001b[39m \u001b[43m \u001b[49m\u001b[43mrepo_id\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrepo_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 5279\u001b[39m \u001b[43m \u001b[49m\u001b[43madditions\u001b[49m\u001b[43m=\u001b[49m\u001b[43madditions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 5280\u001b[39m \u001b[43m \u001b[49m\u001b[43mtoken\u001b[49m\u001b[43m=\u001b[49m\u001b[43mtoken\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 5281\u001b[39m \u001b[43m \u001b[49m\u001b[43mrepo_type\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrepo_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 5282\u001b[39m \u001b[43m \u001b[49m\u001b[43mrevision\u001b[49m\u001b[43m=\u001b[49m\u001b[43munquoted_revision\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# first-class methods take unquoted revision\u001b[39;49;00m\n\u001b[32m 5283\u001b[39m \u001b[43m \u001b[49m\u001b[43mcreate_pr\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcreate_pr\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 5284\u001b[39m \u001b[43m \u001b[49m\u001b[43mnum_threads\u001b[49m\u001b[43m=\u001b[49m\u001b[43mnum_threads\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 5285\u001b[39m \u001b[43m \u001b[49m\u001b[43mfree_memory\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# do not remove `CommitOperationAdd.path_or_fileobj` on LFS files for \"normal\" users\u001b[39;49;00m\n\u001b[32m 5286\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 5288\u001b[39m files_to_copy = _fetch_files_to_copy(\n\u001b[32m 5289\u001b[39m copies=copies,\n\u001b[32m 5290\u001b[39m repo_type=repo_type,\n\u001b[32m (...)\u001b[39m\u001b[32m 5294\u001b[39m endpoint=\u001b[38;5;28mself\u001b[39m.endpoint,\n\u001b[32m 5295\u001b[39m )\n\u001b[32m 5297\u001b[39m \u001b[38;5;28mself\u001b[39m._duplicate_lfs_files(\n\u001b[32m 5298\u001b[39m repo_id=repo_id, copies=copies, files_to_copy=files_to_copy, token=token, repo_type=repo_type\n\u001b[32m 5299\u001b[39m )\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\TrunkSam\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\huggingface_hub\\hf_api.py:5536\u001b[39m, in \u001b[36mHfApi.preupload_lfs_files\u001b[39m\u001b[34m(self, repo_id, additions, token, repo_type, revision, create_pr, num_threads, free_memory, gitignore_content)\u001b[39m\n\u001b[32m 5524\u001b[39m \u001b[38;5;66;03m# Prepare upload parameters\u001b[39;00m\n\u001b[32m 5525\u001b[39m upload_kwargs = {\n\u001b[32m 5526\u001b[39m \u001b[33m\"\u001b[39m\u001b[33madditions\u001b[39m\u001b[33m\"\u001b[39m: new_lfs_additions_to_upload,\n\u001b[32m 5527\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mrepo_type\u001b[39m\u001b[33m\"\u001b[39m: repo_type,\n\u001b[32m (...)\u001b[39m\u001b[32m 5534\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mrevision\u001b[39m\u001b[33m\"\u001b[39m: revision \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m create_pr \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[32m 5535\u001b[39m }\n\u001b[32m-> \u001b[39m\u001b[32m5536\u001b[39m \u001b[43m_upload_files\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 5537\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mupload_kwargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[32m 5538\u001b[39m \u001b[43m \u001b[49m\u001b[43mnum_threads\u001b[49m\u001b[43m=\u001b[49m\u001b[43mnum_threads\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 5539\u001b[39m \u001b[43m \u001b[49m\u001b[43mcreate_pr\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcreate_pr\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 5540\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 5541\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m addition \u001b[38;5;129;01min\u001b[39;00m new_lfs_additions_to_upload:\n\u001b[32m 5542\u001b[39m addition._is_uploaded = \u001b[38;5;28;01mTrue\u001b[39;00m\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\TrunkSam\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\huggingface_hub\\utils\\_validators.py:88\u001b[39m, in \u001b[36mvalidate_hf_hub_args.._inner_fn\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 84\u001b[39m validate_repo_id(arg_value)\n\u001b[32m 86\u001b[39m kwargs = smoothly_deprecate_legacy_arguments(fn_name=fn.\u001b[34m__name__\u001b[39m, kwargs=kwargs)\n\u001b[32m---> \u001b[39m\u001b[32m88\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\TrunkSam\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\huggingface_hub\\_commit_api.py:397\u001b[39m, in \u001b[36m_upload_files\u001b[39m\u001b[34m(additions, repo_type, repo_id, headers, endpoint, num_threads, revision, create_pr)\u001b[39m\n\u001b[32m 395\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m is_xet_available():\n\u001b[32m 396\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m has_buffered_io_data:\n\u001b[32m--> \u001b[39m\u001b[32m397\u001b[39m \u001b[43m_upload_xet_files\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 398\u001b[39m \u001b[43m \u001b[49m\u001b[43madditions\u001b[49m\u001b[43m=\u001b[49m\u001b[43madditions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 399\u001b[39m \u001b[43m \u001b[49m\u001b[43mrepo_type\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrepo_type\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 400\u001b[39m \u001b[43m \u001b[49m\u001b[43mrepo_id\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrepo_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 401\u001b[39m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m=\u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 402\u001b[39m \u001b[43m \u001b[49m\u001b[43mendpoint\u001b[49m\u001b[43m=\u001b[49m\u001b[43mendpoint\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 403\u001b[39m \u001b[43m \u001b[49m\u001b[43mrevision\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrevision\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 404\u001b[39m \u001b[43m \u001b[49m\u001b[43mcreate_pr\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcreate_pr\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 405\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 406\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[32m 407\u001b[39m logger.warning(\n\u001b[32m 408\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mUploading files as a binary IO buffer is not supported by Xet Storage. Falling back to HTTP upload.\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 409\u001b[39m )\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\TrunkSam\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\huggingface_hub\\utils\\_validators.py:88\u001b[39m, in \u001b[36mvalidate_hf_hub_args.._inner_fn\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 84\u001b[39m validate_repo_id(arg_value)\n\u001b[32m 86\u001b[39m kwargs = smoothly_deprecate_legacy_arguments(fn_name=fn.\u001b[34m__name__\u001b[39m, kwargs=kwargs)\n\u001b[32m---> \u001b[39m\u001b[32m88\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\TrunkSam\\AppData\\Local\\Programs\\Python\\Python313\\Lib\\site-packages\\huggingface_hub\\_commit_api.py:658\u001b[39m, in \u001b[36m_upload_xet_files\u001b[39m\u001b[34m(additions, repo_type, repo_id, headers, endpoint, revision, create_pr)\u001b[39m\n\u001b[32m 655\u001b[39m all_paths_ops = [op \u001b[38;5;28;01mfor\u001b[39;00m op \u001b[38;5;129;01min\u001b[39;00m additions \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(op.path_or_fileobj, (\u001b[38;5;28mstr\u001b[39m, Path))]\n\u001b[32m 657\u001b[39m handles: \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mtuple\u001b[39m[CommitOperationAdd, Any]] = []\n\u001b[32m--> \u001b[39m\u001b[32m658\u001b[39m \u001b[43m\u001b[49m\u001b[38;5;28;43;01mwith\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43msession\u001b[49m\u001b[43m.\u001b[49m\u001b[43mnew_upload_commit\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 659\u001b[39m \u001b[43m \u001b[49m\u001b[43mtoken_refresh_url\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrefresh_url\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 660\u001b[39m \u001b[43m \u001b[49m\u001b[43mtoken_refresh_headers\u001b[49m\u001b[43m=\u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 661\u001b[39m \u001b[43m \u001b[49m\u001b[43mcustom_headers\u001b[49m\u001b[43m=\u001b[49m\u001b[43mxet_headers\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 662\u001b[39m \u001b[43m \u001b[49m\u001b[43mprogress_callback\u001b[49m\u001b[43m=\u001b[49m\u001b[43mprogress_callback\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 663\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mas\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mcommit\u001b[49m\u001b[43m:\u001b[49m\n\u001b[32m 664\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mop\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mall_paths_ops\u001b[49m\u001b[43m:\u001b[49m\n\u001b[32m 665\u001b[39m \u001b[43m \u001b[49m\u001b[43mhandles\u001b[49m\u001b[43m.\u001b[49m\u001b[43mappend\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[43mop\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcommit\u001b[49m\u001b[43m.\u001b[49m\u001b[43mstart_upload_file\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mstr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mop\u001b[49m\u001b[43m.\u001b[49m\u001b[43mpath_or_fileobj\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msha256\u001b[49m\u001b[43m=\u001b[49m\u001b[43m_sha256_arg\u001b[49m\u001b[43m(\u001b[49m\u001b[43mop\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[31mKeyboardInterrupt\u001b[39m: " ] } ], "source": [ "model.push_to_hub(\"TrunkSam/support-emotion-classifier\")\n", "tokenizer.push_to_hub(\"TrunkSam/support-emotion-classifier\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.13.15" } }, "nbformat": 4, "nbformat_minor": 5 }