{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "gpuType": "T4", "machine_shape": "hm" }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "ef751e27c2a849dfa4dd61dcb4089a5c": { "model_module": "@jupyter-widgets/controls", "model_name": "VBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "VBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "VBoxView", "box_style": "", "children": [ "IPY_MODEL_4591f16c3ee343309e061f78d4916e1f", "IPY_MODEL_3ebde0fc16f945bbb89b07256ac13a4d", "IPY_MODEL_9f0bc371b7de4afe9bbf92177d23120d", "IPY_MODEL_0694e4c434f44167a89b961e7552c806" ], "layout": "IPY_MODEL_619587447c234b81b72635ef9e5f2ef8" } }, "3aa625ac4fb44271bdda10bfc0fdd27e": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d36eedfeeb6e40b09faa9353a6002ede", "placeholder": "", "style": "IPY_MODEL_8915172b1a3d414ebbc52a88a7b5ca7f", "value": "
\n", " | question | \n", "answer | \n", "
---|---|---|
0 | \n", "How can I create an account? | \n", "To create an account, click on the 'Sign Up' b... | \n", "
1 | \n", "What payment methods do you accept? | \n", "We accept major credit cards, debit cards, and... | \n", "
2 | \n", "How can I track my order? | \n", "You can track your order by logging into your ... | \n", "
3 | \n", "What is your return policy? | \n", "Our return policy allows you to return product... | \n", "
4 | \n", "Can I cancel my order? | \n", "You can cancel your order if it has not been s... | \n", "
Step | \n", "Training Loss | \n", "
---|---|
1 | \n", "2.077400 | \n", "
2 | \n", "2.086700 | \n", "
3 | \n", "2.124100 | \n", "
4 | \n", "1.968100 | \n", "
5 | \n", "2.048200 | \n", "
6 | \n", "2.137500 | \n", "
7 | \n", "1.942300 | \n", "
8 | \n", "1.875000 | \n", "
9 | \n", "1.695200 | \n", "
10 | \n", "1.739100 | \n", "
11 | \n", "1.529400 | \n", "
12 | \n", "1.464600 | \n", "
13 | \n", "1.675800 | \n", "
14 | \n", "1.299600 | \n", "
15 | \n", "1.156000 | \n", "
16 | \n", "1.273800 | \n", "
17 | \n", "1.189400 | \n", "
18 | \n", "1.028300 | \n", "
19 | \n", "0.945700 | \n", "
20 | \n", "1.326200 | \n", "
21 | \n", "1.033200 | \n", "
22 | \n", "1.174500 | \n", "
23 | \n", "0.797100 | \n", "
24 | \n", "0.829100 | \n", "
25 | \n", "0.736800 | \n", "
26 | \n", "0.900600 | \n", "
27 | \n", "0.955600 | \n", "
28 | \n", "0.896100 | \n", "
29 | \n", "0.863500 | \n", "
30 | \n", "0.647400 | \n", "
31 | \n", "0.640400 | \n", "
32 | \n", "0.739600 | \n", "
33 | \n", "0.788800 | \n", "
34 | \n", "0.726700 | \n", "
35 | \n", "0.795300 | \n", "
36 | \n", "1.005300 | \n", "
37 | \n", "0.681900 | \n", "
38 | \n", "0.758200 | \n", "
39 | \n", "0.565200 | \n", "
40 | \n", "0.623800 | \n", "
41 | \n", "0.465700 | \n", "
42 | \n", "0.502900 | \n", "
43 | \n", "0.453800 | \n", "
44 | \n", "0.625000 | \n", "
45 | \n", "0.586900 | \n", "
46 | \n", "0.709400 | \n", "
47 | \n", "0.675100 | \n", "
48 | \n", "0.551800 | \n", "
49 | \n", "0.531900 | \n", "
50 | \n", "0.668400 | \n", "
51 | \n", "0.545100 | \n", "
52 | \n", "0.503300 | \n", "
53 | \n", "0.467800 | \n", "
54 | \n", "0.494700 | \n", "
55 | \n", "0.394500 | \n", "
56 | \n", "0.370800 | \n", "
57 | \n", "0.393300 | \n", "
58 | \n", "0.607500 | \n", "
59 | \n", "0.833000 | \n", "
60 | \n", "0.463800 | \n", "
61 | \n", "0.280700 | \n", "
62 | \n", "0.396900 | \n", "
63 | \n", "0.322900 | \n", "
64 | \n", "0.602100 | \n", "
65 | \n", "0.331300 | \n", "
66 | \n", "0.318100 | \n", "
67 | \n", "0.460900 | \n", "
68 | \n", "0.485200 | \n", "
69 | \n", "0.572600 | \n", "
70 | \n", "0.330900 | \n", "
71 | \n", "0.557900 | \n", "
72 | \n", "0.517200 | \n", "
73 | \n", "0.395900 | \n", "
74 | \n", "0.354400 | \n", "
75 | \n", "0.406600 | \n", "
76 | \n", "0.370200 | \n", "
77 | \n", "0.358900 | \n", "
78 | \n", "0.310800 | \n", "
79 | \n", "0.379100 | \n", "
80 | \n", "0.497100 | \n", "
"
]
},
"metadata": {}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"TrainOutput(global_step=80, training_loss=0.8479476287961006, metrics={'train_runtime': 441.1363, 'train_samples_per_second': 0.725, 'train_steps_per_second': 0.181, 'total_flos': 337002051969024.0, 'train_loss': 0.8479476287961006, 'epoch': 4.05})"
]
},
"metadata": {},
"execution_count": 31
}
]
},
{
"cell_type": "markdown",
"source": [
"## Save Trained Model"
],
"metadata": {
"id": "XEMYxmFFZevu"
}
},
{
"cell_type": "code",
"source": [
"model.save_pretrained(\"trained-model\")"
],
"metadata": {
"id": "__D-YiF4i4E-"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"model.push_to_hub(\n",
" \"curiousily/falcon-7b-qlora-chat-support-bot-faq\", use_auth_token=True\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 240,
"referenced_widgets": [
"1765001f2e8a45789c303bf25802ec26",
"b9342727e5b04a31a44a2bb39eb9b972",
"fb9cd1d7b199467ca84fdee089c3e616",
"cc2c910395a14a1b876e76a9f1967159",
"e6870d171e2e4f49b29940a584f8234f",
"6a21b3db09d043a09364c677e380fd1a",
"b47756ecdc5544fb881978069650dff7",
"8623daa5b6104e01aa049cce796d57a5",
"6a369f47577d4a1ab89fc34e893295e3",
"ec6c022167c549949cc2d4261e6b388a",
"defa462b8d0c425b8a3c5c10d3824449",
"ed46a43aa3b74664b7be0c5393af55c7",
"ea756bf0eec44265a894ca2c007ecdd3",
"6e2ec6222dbc4dafbbe3379d89e74a33",
"05c0d40b5c01447790d0ceccebc03d0f",
"3e72185f6ba44316818d958ff112e6a5",
"535b91b499d64a19a74ad64b96ff520b",
"b20a32370ca94e4490ec2541fedf4629",
"c770c0437f13471092d8b7bd92169f27",
"19e71863a0384ec8851bde3abbb3fa68",
"d0d5e191b9ea48fc83e8d14eef28807e",
"55aa6981a6304872b253b5452dd0399f",
"7cf8792fe92346e4be71b1cc0707c40f",
"95ea93ef06164a6792df160fc5a856e1",
"2c8a23857bfb41a28a4dcbaf360c5152",
"d81c35bd6c964b8396a93ae5ce9b7035",
"5f5378a779524d05bd130689944face8",
"7a12995dd12f4aa8ac273ed26fe8c774",
"e5a51c252b4642828528866ef7a71f61",
"996b7bc4804747bc8e3d3bff8c09bc4e",
"ef942a8f706549fd9d0ff97019b23d07",
"1f5ec464af694baeb020c677c9804203",
"05b4e2dcdb774de3847a1af4328a2d1e"
]
},
"id": "SBTcZs_EODfg",
"outputId": "4727fb36-a7a7-4f27-f6c7-ce93ced846d9"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"/usr/local/lib/python3.10/dist-packages/huggingface_hub/_commit_api.py:232: UserWarning: About to update multiple times the same file in the same commit: 'adapter_config.json'. This can cause undesired inconsistencies in your repo.\n",
" warnings.warn(\n",
"/usr/local/lib/python3.10/dist-packages/huggingface_hub/_commit_api.py:232: UserWarning: About to update multiple times the same file in the same commit: 'adapter_model.bin'. This can cause undesired inconsistencies in your repo.\n",
" warnings.warn(\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Upload 2 LFS files: 0%| | 0/2 [00:00, ?it/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "1765001f2e8a45789c303bf25802ec26"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"adapter_model.bin: 0%| | 0.00/18.9M [00:00, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "ed46a43aa3b74664b7be0c5393af55c7"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"adapter_model.bin: 0%| | 0.00/18.9M [00:00, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "7cf8792fe92346e4be71b1cc0707c40f"
}
},
"metadata": {}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"CommitInfo(commit_url='https://huggingface.co/curiousily/falcon-7b-chat-support-bot-faq/commit/a928c86d139ef860caf33df5b9eeccdc61d3688a', commit_message='Upload model', commit_description='', oid='a928c86d139ef860caf33df5b9eeccdc61d3688a', pr_url=None, pr_revision=None, pr_num=None)"
]
},
"metadata": {},
"execution_count": 35
}
]
},
{
"cell_type": "markdown",
"source": [
"## Load Trained Model"
],
"metadata": {
"id": "KIlYhwJhZgjb"
}
},
{
"cell_type": "code",
"source": [
"PEFT_MODEL = \"curiousily/falcon-7b-qlora-chat-support-bot-faq\"\n",
"\n",
"config = PeftConfig.from_pretrained(PEFT_MODEL)\n",
"model = AutoModelForCausalLM.from_pretrained(\n",
" config.base_model_name_or_path,\n",
" return_dict=True,\n",
" quantization_config=bnb_config,\n",
" device_map=\"auto\",\n",
" trust_remote_code=True,\n",
")\n",
"tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)\n",
"tokenizer.pad_token = tokenizer.eos_token\n",
"\n",
"model = PeftModel.from_pretrained(model, PEFT_MODEL)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 113,
"referenced_widgets": [
"66408bee12974f96b42c7ebef03f5fb1",
"a1b2b3007e4d45039abb88e2d867f7ea",
"8ba08878f4e34cf592c5022b4be1c45f",
"041ed7f21ecd4a7fbae240a5bd0c20a9",
"3a083454009c431181869fd7bfd4ac9a",
"fcb4d59661c44d27932e0194d6b0aa1c",
"eee58e8c4ff641559649c3b82961a4c3",
"b5887b1d286b4cdc9255f55c8334cfb3",
"8cec295bad7447d1ab45aaa6c56bbef7",
"fa64654a10814ad3a11aa11af4cf36ce",
"f82c5b1d7d8f49e3ac3708b6a91f71f2",
"9c1d89fdf66243548435317b75da3595",
"ba6f3f3d687c474c9bacb2aff2f6cbfa",
"da3010bd98e94beb9defdf825db3630d",
"57a3f9fdddd0418aa96c99fd894726c3",
"e9b09df570954dd78079b1c6e65429fa",
"26482d9ce0944ce8adb7aff5d2174e06",
"42a40156d8274b3195219f6811db3d92",
"dd3861e35f264c629476755db522ea58",
"ce1470c542724a97874b595d0002c2d7",
"d4337a0b3e244c938a26bf4768a03854",
"a2802ba1c11c4fe6b63f03a931ed7a67",
"77e56c383fbf44d9ae314136db39adaf",
"551736eb29504faaa884d6d00937e0d2",
"1af09897d7e446449269106afcb079a8",
"05cf083266ab4da6af75da41d784a973",
"198f3f9771734a72b2a660ffeb178709",
"2d68eaef329c417bad449df84e664463",
"21f3873dc2914858b80617074a79e71d",
"e79cca46e0a14d1c9d4e1ab17620862e",
"d5e7ccf8574540a2b60138653d856e5d",
"ab5655e1b7c948ddb07428d5d2e7d00f",
"956740f8080e4838b8c5a67096c6894d"
]
},
"id": "owt5PmrcjG5C",
"outputId": "9b79908f-5510-476b-d086-626686305190"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading (…)/adapter_config.json: 0%| | 0.00/410 [00:00, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "66408bee12974f96b42c7ebef03f5fb1"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Loading checkpoint shards: 0%| | 0/2 [00:00, ?it/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "9c1d89fdf66243548435317b75da3595"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Downloading adapter_model.bin: 0%| | 0.00/18.9M [00:00, ?B/s]"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "77e56c383fbf44d9ae314136db39adaf"
}
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"## Inference"
],
"metadata": {
"id": "1XvuuaswZk4e"
}
},
{
"cell_type": "code",
"source": [
"generation_config = model.generation_config\n",
"generation_config.max_new_tokens = 200\n",
"generation_config.temperature = 0.7\n",
"generation_config.top_p = 0.7\n",
"generation_config.num_return_sequences = 1\n",
"generation_config.pad_token_id = tokenizer.eos_token_id\n",
"generation_config.eos_token_id = tokenizer.eos_token_id"
],
"metadata": {
"id": "LAmXdHItPgQV"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"DEVICE = \"cuda:0\""
],
"metadata": {
"id": "qsS-RbE_UwJW"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"%%time\n",
"prompt = f\"\"\"\n",
"