Files
2025-07-03 20:56:38 +03:00

491 lines
28 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "69dc4c49-db9c-4ac6-b759-86fcd8d46809",
"metadata": {},
"source": [
"# Understanding Large Language Models - Lab 1: Setting Up Your Ecosystem\n",
"\n",
"## Introduction\n",
"### This notebook will guide you through setting up your environment for the course.\n",
"### We will install the necessary dependencies, download a pre-trained T5 model, and run a simple text-to-text prediction."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "bcd8a391-b7fd-476d-ae2e-ee8b9619f15d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting transformers\n",
" Using cached transformers-4.50.0-py3-none-any.whl.metadata (39 kB)\n",
"Collecting torch\n",
" Downloading torch-2.6.0-cp39-cp39-manylinux1_x86_64.whl.metadata (28 kB)\n",
"Collecting sentencepiece\n",
" Downloading sentencepiece-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (7.7 kB)\n",
"Collecting datasets\n",
" Using cached datasets-3.4.1-py3-none-any.whl.metadata (19 kB)\n",
"Collecting filelock (from transformers)\n",
" Using cached filelock-3.18.0-py3-none-any.whl.metadata (2.9 kB)\n",
"Collecting huggingface-hub<1.0,>=0.26.0 (from transformers)\n",
" Using cached huggingface_hub-0.29.3-py3-none-any.whl.metadata (13 kB)\n",
"Collecting numpy>=1.17 (from transformers)\n",
" Downloading numpy-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (60 kB)\n",
"Requirement already satisfied: packaging>=20.0 in ./.venv/lib/python3.9/site-packages (from transformers) (24.2)\n",
"Collecting pyyaml>=5.1 (from transformers)\n",
" Downloading PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)\n",
"Collecting regex!=2019.12.17 (from transformers)\n",
" Downloading regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (40 kB)\n",
"Collecting requests (from transformers)\n",
" Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)\n",
"Collecting tokenizers<0.22,>=0.21 (from transformers)\n",
" Using cached tokenizers-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.8 kB)\n",
"Collecting safetensors>=0.4.3 (from transformers)\n",
" Using cached safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.8 kB)\n",
"Collecting tqdm>=4.27 (from transformers)\n",
" Using cached tqdm-4.67.1-py3-none-any.whl.metadata (57 kB)\n",
"Requirement already satisfied: typing-extensions>=4.10.0 in ./.venv/lib/python3.9/site-packages (from torch) (4.12.2)\n",
"Collecting networkx (from torch)\n",
" Downloading networkx-3.2.1-py3-none-any.whl.metadata (5.2 kB)\n",
"Collecting jinja2 (from torch)\n",
" Using cached jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)\n",
"Collecting fsspec (from torch)\n",
" Using cached fsspec-2025.3.0-py3-none-any.whl.metadata (11 kB)\n",
"Collecting nvidia-cuda-nvrtc-cu12==12.4.127 (from torch)\n",
" Using cached nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"Collecting nvidia-cuda-runtime-cu12==12.4.127 (from torch)\n",
" Using cached nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"Collecting nvidia-cuda-cupti-cu12==12.4.127 (from torch)\n",
" Using cached nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"Collecting nvidia-cudnn-cu12==9.1.0.70 (from torch)\n",
" Using cached nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"Collecting nvidia-cublas-cu12==12.4.5.8 (from torch)\n",
" Using cached nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"Collecting nvidia-cufft-cu12==11.2.1.3 (from torch)\n",
" Using cached nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"Collecting nvidia-curand-cu12==10.3.5.147 (from torch)\n",
" Using cached nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"Collecting nvidia-cusolver-cu12==11.6.1.9 (from torch)\n",
" Using cached nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"Collecting nvidia-cusparse-cu12==12.3.1.170 (from torch)\n",
" Using cached nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"Collecting nvidia-cusparselt-cu12==0.6.2 (from torch)\n",
" Using cached nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_x86_64.whl.metadata (6.8 kB)\n",
"Collecting nvidia-nccl-cu12==2.21.5 (from torch)\n",
" Using cached nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl.metadata (1.8 kB)\n",
"Collecting nvidia-nvtx-cu12==12.4.127 (from torch)\n",
" Using cached nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.7 kB)\n",
"Collecting nvidia-nvjitlink-cu12==12.4.127 (from torch)\n",
" Using cached nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"Collecting triton==3.2.0 (from torch)\n",
" Downloading triton-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.4 kB)\n",
"Collecting sympy==1.13.1 (from torch)\n",
" Using cached sympy-1.13.1-py3-none-any.whl.metadata (12 kB)\n",
"Collecting mpmath<1.4,>=1.1.0 (from sympy==1.13.1->torch)\n",
" Using cached mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)\n",
"Collecting pyarrow>=15.0.0 (from datasets)\n",
" Downloading pyarrow-19.0.1-cp39-cp39-manylinux_2_28_x86_64.whl.metadata (3.3 kB)\n",
"Collecting dill<0.3.9,>=0.3.0 (from datasets)\n",
" Using cached dill-0.3.8-py3-none-any.whl.metadata (10 kB)\n",
"Collecting pandas (from datasets)\n",
" Downloading pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (89 kB)\n",
"Collecting xxhash (from datasets)\n",
" Downloading xxhash-3.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n",
"Collecting multiprocess<0.70.17 (from datasets)\n",
" Downloading multiprocess-0.70.16-py39-none-any.whl.metadata (7.2 kB)\n",
"Collecting fsspec (from torch)\n",
" Using cached fsspec-2024.12.0-py3-none-any.whl.metadata (11 kB)\n",
"Collecting aiohttp (from datasets)\n",
" Downloading aiohttp-3.11.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (7.7 kB)\n",
"Collecting accelerate>=0.26.0 (from transformers[torch])\n",
" Using cached accelerate-1.5.2-py3-none-any.whl.metadata (19 kB)\n",
"Requirement already satisfied: psutil in ./.venv/lib/python3.9/site-packages (from accelerate>=0.26.0->transformers[torch]) (7.0.0)\n",
"Collecting aiohappyeyeballs>=2.3.0 (from aiohttp->datasets)\n",
" Using cached aiohappyeyeballs-2.6.1-py3-none-any.whl.metadata (5.9 kB)\n",
"Collecting aiosignal>=1.1.2 (from aiohttp->datasets)\n",
" Using cached aiosignal-1.3.2-py2.py3-none-any.whl.metadata (3.8 kB)\n",
"Collecting async-timeout<6.0,>=4.0 (from aiohttp->datasets)\n",
" Downloading async_timeout-5.0.1-py3-none-any.whl.metadata (5.1 kB)\n",
"Collecting attrs>=17.3.0 (from aiohttp->datasets)\n",
" Using cached attrs-25.3.0-py3-none-any.whl.metadata (10 kB)\n",
"Collecting frozenlist>=1.1.1 (from aiohttp->datasets)\n",
" Downloading frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)\n",
"Collecting multidict<7.0,>=4.5 (from aiohttp->datasets)\n",
" Downloading multidict-6.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.9 kB)\n",
"Collecting propcache>=0.2.0 (from aiohttp->datasets)\n",
" Downloading propcache-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (10 kB)\n",
"Collecting yarl<2.0,>=1.17.0 (from aiohttp->datasets)\n",
" Downloading yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (69 kB)\n",
"Collecting charset-normalizer<4,>=2 (from requests->transformers)\n",
" Downloading charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (35 kB)\n",
"Collecting idna<4,>=2.5 (from requests->transformers)\n",
" Using cached idna-3.10-py3-none-any.whl.metadata (10 kB)\n",
"Collecting urllib3<3,>=1.21.1 (from requests->transformers)\n",
" Using cached urllib3-2.3.0-py3-none-any.whl.metadata (6.5 kB)\n",
"Collecting certifi>=2017.4.17 (from requests->transformers)\n",
" Using cached certifi-2025.1.31-py3-none-any.whl.metadata (2.5 kB)\n",
"Collecting MarkupSafe>=2.0 (from jinja2->torch)\n",
" Downloading MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.0 kB)\n",
"Requirement already satisfied: python-dateutil>=2.8.2 in ./.venv/lib/python3.9/site-packages (from pandas->datasets) (2.9.0.post0)\n",
"Collecting pytz>=2020.1 (from pandas->datasets)\n",
" Using cached pytz-2025.1-py2.py3-none-any.whl.metadata (22 kB)\n",
"Collecting tzdata>=2022.7 (from pandas->datasets)\n",
" Using cached tzdata-2025.1-py2.py3-none-any.whl.metadata (1.4 kB)\n",
"Requirement already satisfied: six>=1.5 in ./.venv/lib/python3.9/site-packages (from python-dateutil>=2.8.2->pandas->datasets) (1.17.0)\n",
"Using cached transformers-4.50.0-py3-none-any.whl (10.2 MB)\n",
"Downloading torch-2.6.0-cp39-cp39-manylinux1_x86_64.whl (766.7 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m766.7/766.7 MB\u001b[0m \u001b[31m31.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hUsing cached nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)\n",
"Using cached nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (13.8 MB)\n",
"Using cached nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (24.6 MB)\n",
"Using cached nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (883 kB)\n",
"Using cached nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n",
"Using cached nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)\n",
"Using cached nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)\n",
"Using cached nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)\n",
"Using cached nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)\n",
"Using cached nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_x86_64.whl (150.1 MB)\n",
"Using cached nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl (188.7 MB)\n",
"Using cached nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n",
"Using cached nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (99 kB)\n",
"Using cached sympy-1.13.1-py3-none-any.whl (6.2 MB)\n",
"Downloading triton-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (253.1 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m253.1/253.1 MB\u001b[0m \u001b[31m31.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hDownloading sentencepiece-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m35.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hUsing cached datasets-3.4.1-py3-none-any.whl (487 kB)\n",
"Using cached accelerate-1.5.2-py3-none-any.whl (345 kB)\n",
"Using cached dill-0.3.8-py3-none-any.whl (116 kB)\n",
"Using cached fsspec-2024.12.0-py3-none-any.whl (183 kB)\n",
"Downloading aiohttp-3.11.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m25.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hUsing cached huggingface_hub-0.29.3-py3-none-any.whl (468 kB)\n",
"Downloading multiprocess-0.70.16-py39-none-any.whl (133 kB)\n",
"Downloading numpy-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (19.5 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m19.5/19.5 MB\u001b[0m \u001b[31m38.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n",
"\u001b[?25hDownloading pyarrow-19.0.1-cp39-cp39-manylinux_2_28_x86_64.whl (42.1 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.1/42.1 MB\u001b[0m \u001b[31m32.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
"\u001b[?25hDownloading PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (737 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m737.4/737.4 kB\u001b[0m \u001b[31m17.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hDownloading regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (780 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m780.9/780.9 kB\u001b[0m \u001b[31m16.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hUsing cached requests-2.32.3-py3-none-any.whl (64 kB)\n",
"Using cached safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (471 kB)\n",
"Using cached tokenizers-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)\n",
"Using cached tqdm-4.67.1-py3-none-any.whl (78 kB)\n",
"Using cached filelock-3.18.0-py3-none-any.whl (16 kB)\n",
"Using cached jinja2-3.1.6-py3-none-any.whl (134 kB)\n",
"Downloading networkx-3.2.1-py3-none-any.whl (1.6 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m20.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hDownloading pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.1 MB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.1/13.1 MB\u001b[0m \u001b[31m24.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n",
"\u001b[?25hDownloading xxhash-3.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (193 kB)\n",
"Using cached aiohappyeyeballs-2.6.1-py3-none-any.whl (15 kB)\n",
"Using cached aiosignal-1.3.2-py2.py3-none-any.whl (7.6 kB)\n",
"Downloading async_timeout-5.0.1-py3-none-any.whl (6.2 kB)\n",
"Using cached attrs-25.3.0-py3-none-any.whl (63 kB)\n",
"Using cached certifi-2025.1.31-py3-none-any.whl (166 kB)\n",
"Downloading charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (146 kB)\n",
"Downloading frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (242 kB)\n",
"Using cached idna-3.10-py3-none-any.whl (70 kB)\n",
"Downloading MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20 kB)\n",
"Using cached mpmath-1.3.0-py3-none-any.whl (536 kB)\n",
"Downloading multidict-6.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (129 kB)\n",
"Downloading propcache-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (208 kB)\n",
"Using cached pytz-2025.1-py2.py3-none-any.whl (507 kB)\n",
"Using cached tzdata-2025.1-py2.py3-none-any.whl (346 kB)\n",
"Using cached urllib3-2.3.0-py3-none-any.whl (128 kB)\n",
"Downloading yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (321 kB)\n",
"Installing collected packages: triton, sentencepiece, pytz, nvidia-cusparselt-cu12, mpmath, xxhash, urllib3, tzdata, tqdm, sympy, safetensors, regex, pyyaml, pyarrow, propcache, nvidia-nvtx-cu12, nvidia-nvjitlink-cu12, nvidia-nccl-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, numpy, networkx, multidict, MarkupSafe, idna, fsspec, frozenlist, filelock, dill, charset-normalizer, certifi, attrs, async-timeout, aiohappyeyeballs, yarl, requests, pandas, nvidia-cusparse-cu12, nvidia-cudnn-cu12, multiprocess, jinja2, aiosignal, nvidia-cusolver-cu12, huggingface-hub, aiohttp, torch, tokenizers, transformers, datasets, accelerate\n",
"Successfully installed MarkupSafe-3.0.2 accelerate-1.5.2 aiohappyeyeballs-2.6.1 aiohttp-3.11.14 aiosignal-1.3.2 async-timeout-5.0.1 attrs-25.3.0 certifi-2025.1.31 charset-normalizer-3.4.1 datasets-3.4.1 dill-0.3.8 filelock-3.18.0 frozenlist-1.5.0 fsspec-2024.12.0 huggingface-hub-0.29.3 idna-3.10 jinja2-3.1.6 mpmath-1.3.0 multidict-6.2.0 multiprocess-0.70.16 networkx-3.2.1 numpy-2.0.2 nvidia-cublas-cu12-12.4.5.8 nvidia-cuda-cupti-cu12-12.4.127 nvidia-cuda-nvrtc-cu12-12.4.127 nvidia-cuda-runtime-cu12-12.4.127 nvidia-cudnn-cu12-9.1.0.70 nvidia-cufft-cu12-11.2.1.3 nvidia-curand-cu12-10.3.5.147 nvidia-cusolver-cu12-11.6.1.9 nvidia-cusparse-cu12-12.3.1.170 nvidia-cusparselt-cu12-0.6.2 nvidia-nccl-cu12-2.21.5 nvidia-nvjitlink-cu12-12.4.127 nvidia-nvtx-cu12-12.4.127 pandas-2.2.3 propcache-0.3.0 pyarrow-19.0.1 pytz-2025.1 pyyaml-6.0.2 regex-2024.11.6 requests-2.32.3 safetensors-0.5.3 sentencepiece-0.2.0 sympy-1.13.1 tokenizers-0.21.1 torch-2.6.0 tqdm-4.67.1 transformers-4.50.0 triton-3.2.0 tzdata-2025.1 urllib3-2.3.0 xxhash-3.5.0 yarl-1.18.3\n"
]
}
],
"source": [
"!pip install transformers torch sentencepiece datasets transformers[torch]"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "ee8aa32e-c5f7-45e6-9631-51b220fdeaf4",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/danielcujba/Desktop/Semestrul 2/LLM/.venv/lib/python3.9/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",
"You are using the default legacy behaviour of the <class 'transformers.models.t5.tokenization_t5.T5Tokenizer'>. This is expected, and simply means that the `legacy` (previous) behavior will be used so nothing changes for you. If you want to use the new behaviour, set `legacy=False`. This should only be set if you understand what it means, and thoroughly read the reason why this was added as explained in https://github.com/huggingface/transformers/pull/24565\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Input: translate English to French: How are you?\n",
"Output: Comment êtes-vous?\n"
]
}
],
"source": [
"from transformers import T5Tokenizer, T5ForConditionalGeneration\n",
"import torch\n",
"\n",
"tokenizer = T5Tokenizer.from_pretrained(\"t5-small\")\n",
"model = T5ForConditionalGeneration.from_pretrained(\"t5-small\")\n",
"\n",
"def generate_text(input_text, max_length=50):\n",
" \n",
" input_ids = tokenizer(input_text, return_tensors=\"pt\").input_ids\n",
"\n",
" ### PRINT OUT input_ids\n",
" \n",
" output_ids = model.generate(input_ids, max_length=max_length)\n",
"\n",
" ### PRINT OUT output_ids\n",
" \n",
" return tokenizer.decode(output_ids[0], skip_special_tokens=True)\n",
"\n",
"\n",
"example_input = \"translate English to French: How are you?\"\n",
"output_text = generate_text(example_input)\n",
"\n",
"print(\"Input:\", example_input)\n",
"print(\"Output:\", output_text)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "642c35b9-90ad-4045-a10e-8e8eab0d7046",
"metadata": {},
"outputs": [],
"source": [
"### Try at least 5 other example inputs\n",
"### Example 1: \"How are you?\"\n",
"### Example 2: \"What is your name?\"\n",
"### Example 3: \"Where is the nearest restaurant?\"\n",
"### Example 4: \"I love learning new things.\"\n",
"### Example 5: \"This is a beautiful day.\""
]
},
{
"cell_type": "markdown",
"id": "3d8e8e32-e518-4366-a807-c09e76faecbb",
"metadata": {},
"source": [
"# T5 and the Prefix + Input Structure\n",
"\n",
"T5 (Text-to-Text Transfer Transformer) is explicitly trained to follow a **prefix + input** format, guiding it to perform the correct NLP task.\n",
"\n",
"## Why Prefixes Matter\n",
"T5 was trained using structured prompts like:\n",
"- `translate English to French: How are you?` → `Comment allez-vous?`\n",
"- `summarize: The Eiffel Tower is in Paris.` → `Eiffel Tower is in Paris.`\n",
"- `question: Who discovered gravity? context: Isaac Newton discovered gravity.` → `Isaac Newton`\n",
"- `sentiment: I love this movie!` → `positive`\n",
"\n",
"## Without a Prefix?\n",
"❌ `How are you?` → (Unpredictable output) \n",
"✅ `translate English to French: How are you?` → `Comment allez-vous?`\n",
"\n",
"## Custom Prefixes\n",
"Fine-tune T5 with your own prefixes:\n",
"- `explain: What is...`\n",
"- `medical diagnosis: Patient has high fever...`"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "973e9772-3cea-4585-b29c-da2da22392dd",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Map: 100%|██████████| 1000/1000 [00:00<00:00, 4608.51 examples/s]\n",
"/home/danielcujba/Desktop/Semestrul 2/LLM/.venv/lib/python3.9/site-packages/transformers/training_args.py:1611: FutureWarning: `evaluation_strategy` is deprecated and will be removed in version 4.46 of 🤗 Transformers. Use `eval_strategy` instead\n",
" warnings.warn(\n",
"Passing a tuple of `past_key_values` is deprecated and will be removed in Transformers v4.48.0. You should pass an instance of `EncoderDecoderCache` instead, e.g. `past_key_values=EncoderDecoderCache.from_legacy_cache(past_key_values)`.\n"
]
},
{
"data": {
"text/html": [
"\n",
" <div>\n",
" \n",
" <progress value='600' max='600' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
" [600/600 05:36, Epoch 3/3]\n",
" </div>\n",
" <table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>Epoch</th>\n",
" <th>Training Loss</th>\n",
" <th>Validation Loss</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>No log</td>\n",
" <td>0.005014</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>No log</td>\n",
" <td>0.000452</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>0.240300</td>\n",
" <td>0.000289</td>\n",
" </tr>\n",
" </tbody>\n",
"</table><p>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fine-tuning complete! Model saved to ./t5-custom-response\n"
]
}
],
"source": [
"import torch\n",
"import pandas as pd\n",
"from transformers import T5Tokenizer, T5ForConditionalGeneration, Trainer, TrainingArguments\n",
"from datasets import Dataset\n",
"\n",
"csv_filename = \"explain_dataset.csv\"\n",
"\n",
"df = pd.read_csv(csv_filename)\n",
"dataset = Dataset.from_pandas(df)\n",
"\n",
"def preprocess_function(examples):\n",
" inputs = examples[\"Input\"]\n",
" targets = examples[\"Response\"]\n",
" \n",
" model_inputs = tokenizer(inputs, max_length=64, truncation=True, padding=\"max_length\")\n",
" \n",
" labels = tokenizer(targets, max_length=64, truncation=True, padding=\"max_length\").input_ids\n",
"\n",
" model_inputs[\"labels\"] = labels\n",
" \n",
" return model_inputs\n",
"\n",
"tokenized_dataset = dataset.map(preprocess_function, batched=True)\n",
"\n",
"dataset_split = tokenized_dataset.train_test_split(test_size=0.2)\n",
"\n",
"train_dataset = dataset_split[\"train\"]\n",
"eval_dataset = dataset_split[\"test\"]\n",
"\n",
"training_args = TrainingArguments(\n",
" output_dir=\"./t5-fine-tuned\",\n",
" evaluation_strategy=\"epoch\",\n",
" learning_rate=3e-4,\n",
" per_device_train_batch_size=4,\n",
" num_train_epochs=3,\n",
" save_strategy=\"epoch\",\n",
" save_total_limit=2,\n",
")\n",
"\n",
"trainer = Trainer(\n",
" model=model,\n",
" args=training_args,\n",
" train_dataset=train_dataset,\n",
" eval_dataset=eval_dataset,\n",
")\n",
"\n",
"trainer.train()\n",
"\n",
"# Save the fine-tuned model\n",
"model.save_pretrained(\"./t5-custom-response\")\n",
"tokenizer.save_pretrained(\"./t5-custom-response\")\n",
"\n",
"print(\"Fine-tuning complete! Model saved to ./t5-custom-response\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "94b21356-cd22-457f-ac52-4240973e9bce",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Original Model Output:\n",
"Warum ist die Frage, wie machmach learning?\n",
"\n",
"\n",
"\n",
"Fine-Tuned Model Output:\n",
"Machine learning is a subset of AI that enables systems to learn from data and improve without explicit programming.\n"
]
}
],
"source": [
"original_model = T5ForConditionalGeneration.from_pretrained(\"t5-small\")\n",
"fine_tuned_model = T5ForConditionalGeneration.from_pretrained(\"./t5-custom-response\")\n",
"\n",
"def generate_response(model, input_text):\n",
" input_ids = tokenizer(input_text, return_tensors=\"pt\").input_ids\n",
" output_ids = model.generate(input_ids, max_length=64)\n",
" return tokenizer.decode(output_ids[0], skip_special_tokens=True)\n",
"\n",
"test_question = \"explain: What is machine learning?\"\n",
"\n",
"original_output = generate_response(original_model, test_question)\n",
"fine_tuned_output = generate_response(fine_tuned_model, test_question)\n",
"\n",
"print(\"Original Model Output:\")\n",
"print(original_output)\n",
"print(\"\\n\\n\\nFine-Tuned Model Output:\")\n",
"print(fine_tuned_output)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"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.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}