{ "cells": [ { "cell_type": "markdown", "id": "e426cd04-c053-43e8-b505-63cee7956a53", "metadata": {}, "source": [ "# Welcome to a very busy Week 8 folder\n", "\n", "## We have lots to do this week!\n", "\n", "We'll move at a faster pace than usual, particularly as you're becoming proficient LLM engineers.\n" ] }, { "cell_type": "markdown", "id": "b3cf5389-93c5-4523-bc48-78fabb91d8f6", "metadata": {}, "source": [ "
\n",
" ![]() | \n",
" \n",
" Especially important this week: pull the latest\n", " I'm continually improving these labs, adding more examples and exercises.\n", " At the start of each week, it's worth checking you have the latest code.\n", " First do a git pull and merge your changes as needed. Any problems? Try asking ChatGPT to clarify how to merge - or contact me! \n", " After you've pulled the code, from the llm_engineering directory, in an Anaconda prompt (PC) or Terminal (Mac), run: \n", " conda env update --f environment.yml --prune \n", " Or if you used virtualenv rather than Anaconda, then run this from your activated environment in a Powershell (PC) or Terminal (Mac): \n", " pip install -r requirements.txt \n",
" Then restart the kernel (Kernel menu >> Restart Kernel and Clear Outputs Of All Cells) to pick up the changes.\n", " \n", " | \n",
"
✓ Initialized. View run at https://modal.com/apps/craigprobus/main/ap-UCsBW1nxpUhyEVHiLb6N9J\n", "\n" ], "text/plain": [ "\u001b[32m✓\u001b[0m Initialized. \u001b[38;5;249mView run at \u001b[0m\u001b[4;38;5;249mhttps://modal.com/apps/craigprobus/main/ap-UCsBW1nxpUhyEVHiLb6N9J\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "cbf7390bccd14a7d8e64776ac3bed20f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Building image im-VSaNVDfzNvHsrY579a1IOY\n",
"
\n"
],
"text/plain": [
"\u001b[33mBuilding image im-VSaNVDfzNvHsrY579a1IOY\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"=> Step 0: FROM base\n",
"
\n"
],
"text/plain": [
"\u001b[33m\n",
"=> Step 0: FROM base\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"=> Step 1: RUN python -m pip install accelerate bitsandbytes torch transformers\n",
"
\n"
],
"text/plain": [
"\u001b[33m\n",
"=> Step 1: RUN python -m pip install accelerate bitsandbytes torch transformers\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Looking in indexes: http://pypi-mirror.modal.local:5555/simple\n",
"
\n"
],
"text/plain": [
"\u001b[33mLooking in indexes: http://pypi-mirror.modal.local:5555/simple\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting accelerate\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting accelerate\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/accelerate/accelerate-1.6.0-py3-none-any.whl.metadata (19 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/accelerate/accelerate-1.6.0-py3-none-any.whl.metadata (19 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting bitsandbytes\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting bitsandbytes\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/bitsandbytes/bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl.metadata (5.0 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/bitsandbytes/bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl.metadata (5.0 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting torch\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting torch\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/torch/torch-2.6.0-cp311-cp311-manylinux1_x86_64.whl.metadata (28 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/torch/torch-2.6.0-cp311-cp311-manylinux1_x86_64.whl.metadata (28 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting transformers\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting transformers\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/transformers/transformers-4.51.1-py3-none-any.whl.metadata (38 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/transformers/transformers-4.51.1-py3-none-any.whl.metadata (38 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting numpy<3.0.0,>=1.17 (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting numpy<3.0.0,>=1.17 (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/numpy/numpy-2.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (62 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/numpy/numpy-2.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (62 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting packaging>=20.0 (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting packaging>=20.0 (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/packaging/packaging-24.2-py3-none-any.whl.metadata (3.2 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/packaging/packaging-24.2-py3-none-any.whl.metadata (3.2 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting psutil (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting psutil (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/psutil/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (22 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/psutil/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (22 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting pyyaml (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting pyyaml (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/pyyaml/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/pyyaml/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting huggingface-hub>=0.21.0 (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting huggingface-hub>=0.21.0 (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/huggingface-hub/huggingface_hub-0.30.2-py3-none-any.whl.metadata (13 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/huggingface-hub/huggingface_hub-0.30.2-py3-none-any.whl.metadata (13 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting safetensors>=0.4.3 (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting safetensors>=0.4.3 (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/safetensors/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.8 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/safetensors/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.8 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting filelock (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting filelock (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/filelock/filelock-3.18.0-py3-none-any.whl.metadata (2.9 kB)\n",
"Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.11/site-packages (from torch) (4.12.2)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/filelock/filelock-3.18.0-py3-none-any.whl.metadata (2.9 kB)\n",
"Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.11/site-packages (from torch) (4.12.2)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting networkx (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting networkx (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/networkx/networkx-3.4.2-py3-none-any.whl.metadata (6.3 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/networkx/networkx-3.4.2-py3-none-any.whl.metadata (6.3 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting jinja2 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting jinja2 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/jinja2/jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/jinja2/jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting fsspec (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting fsspec (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/fsspec/fsspec-2025.3.2-py3-none-any.whl.metadata (11 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/fsspec/fsspec-2025.3.2-py3-none-any.whl.metadata (11 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cuda-nvrtc-cu12==12.4.127 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cuda-nvrtc-cu12==12.4.127 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-nvrtc-cu12/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-nvrtc-cu12/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cuda-runtime-cu12==12.4.127 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cuda-runtime-cu12==12.4.127 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-runtime-cu12/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-runtime-cu12/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cuda-cupti-cu12==12.4.127 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cuda-cupti-cu12==12.4.127 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-cupti-cu12/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-cupti-cu12/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cudnn-cu12==9.1.0.70 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cudnn-cu12==9.1.0.70 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cudnn-cu12/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cudnn-cu12/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cublas-cu12==12.4.5.8 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cublas-cu12==12.4.5.8 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cublas-cu12/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cublas-cu12/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cufft-cu12==11.2.1.3 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cufft-cu12==11.2.1.3 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cufft-cu12/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cufft-cu12/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-curand-cu12==10.3.5.147 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-curand-cu12==10.3.5.147 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-curand-cu12/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-curand-cu12/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cusolver-cu12==11.6.1.9 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cusolver-cu12==11.6.1.9 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusolver-cu12/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusolver-cu12/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cusparse-cu12==12.3.1.170 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cusparse-cu12==12.3.1.170 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparse-cu12/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparse-cu12/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cusparselt-cu12==0.6.2 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cusparselt-cu12==0.6.2 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparselt-cu12/nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_x86_64.whl.metadata (6.8 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparselt-cu12/nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_x86_64.whl.metadata (6.8 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-nccl-cu12==2.21.5 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-nccl-cu12==2.21.5 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nccl-cu12/nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl.metadata (1.8 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nccl-cu12/nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl.metadata (1.8 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-nvtx-cu12==12.4.127 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-nvtx-cu12==12.4.127 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvtx-cu12/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.7 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvtx-cu12/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.7 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvjitlink-cu12/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvjitlink-cu12/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting triton==3.2.0 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting triton==3.2.0 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/triton/triton-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.4 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/triton/triton-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.4 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting sympy==1.13.1 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting sympy==1.13.1 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/sympy/sympy-1.13.1-py3-none-any.whl.metadata (12 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/sympy/sympy-1.13.1-py3-none-any.whl.metadata (12 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting mpmath<1.4,>=1.1.0 (from sympy==1.13.1->torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting mpmath<1.4,>=1.1.0 (from sympy==1.13.1->torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/mpmath/mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/mpmath/mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting regex!=2019.12.17 (from transformers)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting regex!=2019.12.17 (from transformers)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/regex/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (40 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/regex/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (40 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting requests (from transformers)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting requests (from transformers)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/requests/requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/requests/requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting tokenizers<0.22,>=0.21 (from transformers)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting tokenizers<0.22,>=0.21 (from transformers)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/tokenizers/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.8 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/tokenizers/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.8 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting tqdm>=4.27 (from transformers)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting tqdm>=4.27 (from transformers)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/tqdm/tqdm-4.67.1-py3-none-any.whl.metadata (57 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/tqdm/tqdm-4.67.1-py3-none-any.whl.metadata (57 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting MarkupSafe>=2.0 (from jinja2->torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting MarkupSafe>=2.0 (from jinja2->torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/markupsafe/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.0 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/markupsafe/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.0 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting charset-normalizer<4,>=2 (from requests->transformers)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting charset-normalizer<4,>=2 (from requests->transformers)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/charset-normalizer/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (35 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/charset-normalizer/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (35 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/site-packages (from requests->transformers) (3.10)\n",
"
\n"
],
"text/plain": [
"\u001b[33mRequirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/site-packages (from requests->transformers) (3.10)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting urllib3<3,>=1.21.1 (from requests->transformers)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting urllib3<3,>=1.21.1 (from requests->transformers)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 76.1/76.1 MB 495.7 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 76.1/76.1 MB 495.7 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/torch/torch-2.6.0-cp311-cp311-manylinux1_x86_64.whl (766.7 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/torch/torch-2.6.0-cp311-cp311-manylinux1_x86_64.whl (766.7 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 766.7/766.7 MB 467.3 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 766.7/766.7 MB 467.3 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cublas-cu12/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cublas-cu12/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 363.4/363.4 MB 473.1 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 363.4/363.4 MB 473.1 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-cupti-cu12/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (13.8 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-cupti-cu12/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (13.8 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.8/13.8 MB 512.4 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.8/13.8 MB 512.4 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-nvrtc-cu12/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (24.6 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-nvrtc-cu12/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (24.6 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24.6/24.6 MB 495.9 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24.6/24.6 MB 495.9 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-runtime-cu12/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (883 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-runtime-cu12/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (883 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 883.7/883.7 kB 554.2 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 883.7/883.7 kB 554.2 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cudnn-cu12/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cudnn-cu12/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 664.8/664.8 MB 470.9 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 664.8/664.8 MB 470.9 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cufft-cu12/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cufft-cu12/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 211.5/211.5 MB 452.7 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 211.5/211.5 MB 452.7 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-curand-cu12/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-curand-cu12/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.3/56.3 MB 465.1 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.3/56.3 MB 465.1 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusolver-cu12/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusolver-cu12/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 127.9/127.9 MB 460.4 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 127.9/127.9 MB 460.4 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparse-cu12/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparse-cu12/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 207.5/207.5 MB 456.0 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 207.5/207.5 MB 456.0 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparselt-cu12/nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_x86_64.whl (150.1 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparselt-cu12/nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_x86_64.whl (150.1 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 150.1/150.1 MB 452.6 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 150.1/150.1 MB 452.6 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nccl-cu12/nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl (188.7 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-nccl-cu12/nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl (188.7 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 188.7/188.7 MB 452.3 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 188.7/188.7 MB 452.3 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvjitlink-cu12/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvjitlink-cu12/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 21.1/21.1 MB 469.0 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 21.1/21.1 MB 469.0 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvtx-cu12/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (99 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/sympy/sympy-1.13.1-py3-none-any.whl (6.2 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvtx-cu12/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (99 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/sympy/sympy-1.13.1-py3-none-any.whl (6.2 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.2/6.2 MB 500.8 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.2/6.2 MB 500.8 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/triton/triton-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (253.2 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/triton/triton-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (253.2 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 253.2/253.2 MB 466.4 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 253.2/253.2 MB 466.4 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/transformers/transformers-4.51.1-py3-none-any.whl (10.4 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/transformers/transformers-4.51.1-py3-none-any.whl (10.4 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.4/10.4 MB 448.1 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.4/10.4 MB 448.1 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/huggingface-hub/huggingface_hub-0.30.2-py3-none-any.whl (481 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/fsspec/fsspec-2025.3.2-py3-none-any.whl (194 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/huggingface-hub/huggingface_hub-0.30.2-py3-none-any.whl (481 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/fsspec/fsspec-2025.3.2-py3-none-any.whl (194 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/numpy/numpy-2.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.4 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/numpy/numpy-2.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.4 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.4/16.4 MB 473.1 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.4/16.4 MB 473.1 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/packaging/packaging-24.2-py3-none-any.whl (65 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/pyyaml/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (762 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/packaging/packaging-24.2-py3-none-any.whl (65 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/pyyaml/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (762 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 763.0/763.0 kB 645.4 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 763.0/763.0 kB 645.4 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/regex/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (792 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/regex/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (792 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 792.7/792.7 kB 519.0 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 792.7/792.7 kB 519.0 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/safetensors/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (471 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/tokenizers/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/safetensors/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (471 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/tokenizers/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.0/3.0 MB 489.8 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.0/3.0 MB 489.8 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/tqdm/tqdm-4.67.1-py3-none-any.whl (78 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/filelock/filelock-3.18.0-py3-none-any.whl (16 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/jinja2/jinja2-3.1.6-py3-none-any.whl (134 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/tqdm/tqdm-4.67.1-py3-none-any.whl (78 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/filelock/filelock-3.18.0-py3-none-any.whl (16 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/jinja2/jinja2-3.1.6-py3-none-any.whl (134 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/networkx/networkx-3.4.2-py3-none-any.whl (1.7 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/networkx/networkx-3.4.2-py3-none-any.whl (1.7 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 589.9 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 589.9 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/psutil/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (277 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/psutil/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (277 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/requests/requests-2.32.3-py3-none-any.whl (64 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/requests/requests-2.32.3-py3-none-any.whl (64 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/charset-normalizer/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (143 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/markupsafe/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/mpmath/mpmath-1.3.0-py3-none-any.whl (536 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/charset-normalizer/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (143 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/markupsafe/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/mpmath/mpmath-1.3.0-py3-none-any.whl (536 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 813.0 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 813.0 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/urllib3/urllib3-2.3.0-py3-none-any.whl (128 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/urllib3/urllib3-2.3.0-py3-none-any.whl (128 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Installing collected packages: triton, nvidia-cusparselt-cu12, mpmath, urllib3, tqdm, sympy, safetensors, regex, pyyaml, psutil, packaging, 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, MarkupSafe, fsspec, filelock, charset-normalizer, requests, nvidia-cusparse-cu12, nvidia-cudnn-cu12, jinja2, nvidia-cusolver-cu12, huggingface-hub, torch, tokenizers, transformers, bitsandbytes, accelerate\n",
"
\n"
],
"text/plain": [
"\u001b[33mInstalling collected packages: triton, nvidia-cusparselt-cu12, mpmath, urllib3, tqdm, sympy, safetensors, regex, pyyaml, psutil, packaging, 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, MarkupSafe, fsspec, filelock, charset-normalizer, requests, nvidia-cusparse-cu12, nvidia-cudnn-cu12, jinja2, nvidia-cusolver-cu12, huggingface-hub, torch, tokenizers, transformers, bitsandbytes, accelerate\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Successfully installed MarkupSafe-3.0.2 accelerate-1.6.0 bitsandbytes-0.45.5 charset-normalizer-3.4.1 filelock-3.18.0 fsspec-2025.3.2 huggingface-hub-0.30.2 jinja2-3.1.6 mpmath-1.3.0 networkx-3.4.2 numpy-2.2.4 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 packaging-24.2 psutil-7.0.0 pyyaml-6.0.2 regex-2024.11.6 requests-2.32.3 safetensors-0.5.3 sympy-1.13.1 tokenizers-0.21.1 torch-2.6.0 tqdm-4.67.1 transformers-4.51.1 triton-3.2.0 urllib3-2.3.0\n",
"
\n"
],
"text/plain": [
"\u001b[33mSuccessfully installed MarkupSafe-3.0.2 accelerate-1.6.0 bitsandbytes-0.45.5 charset-normalizer-3.4.1 filelock-3.18.0 fsspec-2025.3.2 huggingface-hub-0.30.2 jinja2-3.1.6 mpmath-1.3.0 networkx-3.4.2 numpy-2.2.4 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 packaging-24.2 psutil-7.0.0 pyyaml-6.0.2 regex-2024.11.6 requests-2.32.3 safetensors-0.5.3 sympy-1.13.1 tokenizers-0.21.1 torch-2.6.0 tqdm-4.67.1 transformers-4.51.1 triton-3.2.0 urllib3-2.3.0\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"[notice] A new release of pip is available: 24.3.1 -> 25.0.1\n",
"[notice] To update, run: pip install --upgrade pip\n",
"
\n"
],
"text/plain": [
"\u001b[33m\n",
"[notice] A new release of pip is available: 24.3.1 -> 25.0.1\n",
"[notice] To update, run: pip install --upgrade pip\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Saving image...\n",
"
\n"
],
"text/plain": [
"\u001b[33mSaving image...\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Image saved, took 3.43s\n",
"
\n"
],
"text/plain": [
"\u001b[33mImage saved, took 3.43s\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"Built image im-VSaNVDfzNvHsrY579a1IOY in 69.35s\n",
"\n",
"\n",
"
\n"
],
"text/plain": [
"\u001b[33m\n",
"Built image im-VSaNVDfzNvHsrY579a1IOY in 69.35s\n",
"\n",
"\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n"
],
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"✓ Created objects.\n", "├── 🔨 Created mount /Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/llama.py\n", "├── 🔨 Created mount PythonPackage:hello\n", "└── 🔨 Created function generate.\n", "\n" ], "text/plain": [ "\u001b[32m✓\u001b[0m Created objects.\n", "\u001b[38;5;244m├── \u001b[0m🔨 Created mount /Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/llama.py\n", "\u001b[38;5;244m├── \u001b[0m🔨 Created mount PythonPackage:hello\n", "\u001b[38;5;244m└── \u001b[0m🔨 Created function generate.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ac86ee174ef44aa6a7aa90daa1eec36a", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n",
"
\n"
],
"text/plain": [
"\u001b[31m\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1AFetching 4 files: 0%| | 0/4 [00:00<?, ?it/s]
\n"
],
"text/plain": [
"\u001b[31m\u001b[1AFetching 4 files: 0%| | 0/4 [00:00, ?it/s]\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"
\n"
],
"text/plain": [
"\u001b[31m\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1AFetching 4 files: 25%|██▌ | 1/4 [01:05<03:16, 65.40s/it]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1AFetching 4 files: 25%|██▌ | 1/4 [01:05<03:16, 65.40s/it]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1AFetching 4 files: 50%|█████ | 2/4 [01:05<00:54, 27.15s/it]Fetching 4 files: 100%|██████████| 4/4 [01:05<00:00, 16.44s/it]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1AFetching 4 files: 50%|█████ | 2/4 [01:05<00:54, 27.15s/it]Fetching 4 files: 100%|██████████| 4/4 [01:05<00:00, 16.44s/it]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"
\n"
],
"text/plain": [
"\u001b[31m\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1ALoading checkpoint shards: 0%| | 0/4 [00:00<?, ?it/s]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1ALoading checkpoint shards: 0%| | 0/4 [00:00, ?it/s]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1ALoading checkpoint shards: 25%|██▌ | 1/4 [00:04<00:12, 4.24s/it]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1ALoading checkpoint shards: 25%|██▌ | 1/4 [00:04<00:12, 4.24s/it]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1ALoading checkpoint shards: 50%|█████ | 2/4 [00:08<00:09, 4.53s/it]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1ALoading checkpoint shards: 50%|█████ | 2/4 [00:08<00:09, 4.53s/it]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1ALoading checkpoint shards: 75%|███████▌ | 3/4 [00:13<00:04, 4.61s/it]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1ALoading checkpoint shards: 75%|███████▌ | 3/4 [00:13<00:04, 4.61s/it]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1ALoading checkpoint shards: 100%|██████████| 4/4 [00:14<00:00, 2.93s/it]Loading checkpoint shards: 100%|██████████| 4/4 [00:14<00:00, 3.51s/it]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1ALoading checkpoint shards: 100%|██████████| 4/4 [00:14<00:00, 2.93s/it]Loading checkpoint shards: 100%|██████████| 4/4 [00:14<00:00, 3.51s/it]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Setting `pad_token_id` to `eos_token_id`:128001 for open-end generation.\n",
"
\n"
],
"text/plain": [
"\u001b[31mSetting `pad_token_id` to `eos_token_id`:128001 for open-end generation.\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n"
],
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Stopping app - local entrypoint completed.\n",
"
\n"
],
"text/plain": [
"\u001b[33mStopping app - local entrypoint completed.\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"✓ App completed. View run at https://modal.com/apps/craigprobus/main/ap-UCsBW1nxpUhyEVHiLb6N9J\n", "\n" ], "text/plain": [ "\u001b[32m✓\u001b[0m App completed. \u001b[38;5;249mView run at \u001b[0m\u001b[4;38;5;249mhttps://modal.com/apps/craigprobus/main/ap-UCsBW1nxpUhyEVHiLb6N9J\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'<|begin_of_text|>Life is a mystery, everyone must stand alone, I hear you call my name,'" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "with modal.enable_output():\n", " with app.run():\n", " result=generate.remote(\"Life is a mystery, everyone must stand alone, I hear\")\n", "result" ] }, { "cell_type": "code", "execution_count": 21, "id": "9a9a6844-29ec-4264-8e72-362d976b3968", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_ephemeral.py:22: DeprecationError: 2025-02-03: Modal will stop implicitly adding local Python modules to the Image (\"automounting\") in a future update. The following modules need to be explicitly added for future compatibility:\n", "* hello\n", "* llama\n", "\n", "e.g.:\n", "image_with_source = my_image.add_local_python_source(\"hello\", \"llama\")\n", "\n", "For more information, see https://modal.com/docs/guide/modal-1-0-migration\n", " @app.function(image=image, secrets=secrets, gpu=GPU, timeout=1800)\n" ] } ], "source": [ "import modal\n", "from pricer_ephemeral import app, price" ] }, { "cell_type": "code", "execution_count": 22, "id": "50e6cf99-8959-4ae3-ba02-e325cb7fff94", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "dc1f6d673a0c4e7d8bf365e790672e42", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
✓ Initialized. View run at https://modal.com/apps/craigprobus/main/ap-hXVuCIvQjgcNjkaBXeKcWI\n", "\n" ], "text/plain": [ "\u001b[32m✓\u001b[0m Initialized. \u001b[38;5;249mView run at \u001b[0m\u001b[4;38;5;249mhttps://modal.com/apps/craigprobus/main/ap-hXVuCIvQjgcNjkaBXeKcWI\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "de2972e414374911a4da708900f40bab", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Building image im-lR52cm0dRXT5B8UWizJSP6\n",
"
\n"
],
"text/plain": [
"\u001b[33mBuilding image im-lR52cm0dRXT5B8UWizJSP6\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"=> Step 0: FROM base\n",
"
\n"
],
"text/plain": [
"\u001b[33m\n",
"=> Step 0: FROM base\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"=> Step 1: RUN python -m pip install accelerate bitsandbytes peft torch transformers\n",
"
\n"
],
"text/plain": [
"\u001b[33m\n",
"=> Step 1: RUN python -m pip install accelerate bitsandbytes peft torch transformers\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Looking in indexes: http://pypi-mirror.modal.local:5555/simple\n",
"
\n"
],
"text/plain": [
"\u001b[33mLooking in indexes: http://pypi-mirror.modal.local:5555/simple\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting accelerate\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting accelerate\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/accelerate/accelerate-1.6.0-py3-none-any.whl.metadata (19 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/accelerate/accelerate-1.6.0-py3-none-any.whl.metadata (19 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting bitsandbytes\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting bitsandbytes\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/bitsandbytes/bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl.metadata (5.0 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/bitsandbytes/bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl.metadata (5.0 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting peft\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting peft\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/peft/peft-0.15.1-py3-none-any.whl.metadata (13 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/peft/peft-0.15.1-py3-none-any.whl.metadata (13 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting torch\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting torch\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/torch/torch-2.6.0-cp311-cp311-manylinux1_x86_64.whl.metadata (28 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/torch/torch-2.6.0-cp311-cp311-manylinux1_x86_64.whl.metadata (28 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting transformers\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting transformers\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/transformers/transformers-4.51.1-py3-none-any.whl.metadata (38 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/transformers/transformers-4.51.1-py3-none-any.whl.metadata (38 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting numpy<3.0.0,>=1.17 (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting numpy<3.0.0,>=1.17 (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/numpy/numpy-2.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (62 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/numpy/numpy-2.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (62 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting packaging>=20.0 (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting packaging>=20.0 (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/packaging/packaging-24.2-py3-none-any.whl.metadata (3.2 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/packaging/packaging-24.2-py3-none-any.whl.metadata (3.2 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting psutil (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting psutil (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/psutil/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (22 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/psutil/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (22 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting pyyaml (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting pyyaml (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/pyyaml/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/pyyaml/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting huggingface-hub>=0.21.0 (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting huggingface-hub>=0.21.0 (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/huggingface-hub/huggingface_hub-0.30.2-py3-none-any.whl.metadata (13 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/huggingface-hub/huggingface_hub-0.30.2-py3-none-any.whl.metadata (13 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting safetensors>=0.4.3 (from accelerate)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting safetensors>=0.4.3 (from accelerate)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/safetensors/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.8 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/safetensors/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.8 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting tqdm (from peft)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting tqdm (from peft)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/tqdm/tqdm-4.67.1-py3-none-any.whl.metadata (57 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/tqdm/tqdm-4.67.1-py3-none-any.whl.metadata (57 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting filelock (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting filelock (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/filelock/filelock-3.18.0-py3-none-any.whl.metadata (2.9 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/filelock/filelock-3.18.0-py3-none-any.whl.metadata (2.9 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.11/site-packages (from torch) (4.12.2)\n",
"
\n"
],
"text/plain": [
"\u001b[33mRequirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.11/site-packages (from torch) (4.12.2)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting networkx (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting networkx (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/networkx/networkx-3.4.2-py3-none-any.whl.metadata (6.3 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/networkx/networkx-3.4.2-py3-none-any.whl.metadata (6.3 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting jinja2 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting jinja2 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/jinja2/jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/jinja2/jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting fsspec (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting fsspec (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/fsspec/fsspec-2025.3.2-py3-none-any.whl.metadata (11 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/fsspec/fsspec-2025.3.2-py3-none-any.whl.metadata (11 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cuda-nvrtc-cu12==12.4.127 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cuda-nvrtc-cu12==12.4.127 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-nvrtc-cu12/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-nvrtc-cu12/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cuda-runtime-cu12==12.4.127 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cuda-runtime-cu12==12.4.127 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-runtime-cu12/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-runtime-cu12/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cuda-cupti-cu12==12.4.127 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cuda-cupti-cu12==12.4.127 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-cupti-cu12/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-cupti-cu12/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cudnn-cu12==9.1.0.70 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cudnn-cu12==9.1.0.70 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cudnn-cu12/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cudnn-cu12/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cublas-cu12==12.4.5.8 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cublas-cu12==12.4.5.8 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cublas-cu12/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cublas-cu12/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cufft-cu12==11.2.1.3 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cufft-cu12==11.2.1.3 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cufft-cu12/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cufft-cu12/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-curand-cu12==10.3.5.147 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-curand-cu12==10.3.5.147 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-curand-cu12/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-curand-cu12/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cusolver-cu12==11.6.1.9 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cusolver-cu12==11.6.1.9 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusolver-cu12/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusolver-cu12/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cusparse-cu12==12.3.1.170 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cusparse-cu12==12.3.1.170 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparse-cu12/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparse-cu12/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-cusparselt-cu12==0.6.2 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-cusparselt-cu12==0.6.2 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparselt-cu12/nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_x86_64.whl.metadata (6.8 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparselt-cu12/nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_x86_64.whl.metadata (6.8 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-nccl-cu12==2.21.5 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-nccl-cu12==2.21.5 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nccl-cu12/nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl.metadata (1.8 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nccl-cu12/nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl.metadata (1.8 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-nvtx-cu12==12.4.127 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-nvtx-cu12==12.4.127 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvtx-cu12/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.7 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvtx-cu12/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.7 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting nvidia-nvjitlink-cu12==12.4.127 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting nvidia-nvjitlink-cu12==12.4.127 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvjitlink-cu12/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvjitlink-cu12/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting triton==3.2.0 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting triton==3.2.0 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/triton/triton-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.4 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/triton/triton-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.4 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting sympy==1.13.1 (from torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting sympy==1.13.1 (from torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/sympy/sympy-1.13.1-py3-none-any.whl.metadata (12 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/sympy/sympy-1.13.1-py3-none-any.whl.metadata (12 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting mpmath<1.4,>=1.1.0 (from sympy==1.13.1->torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting mpmath<1.4,>=1.1.0 (from sympy==1.13.1->torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/mpmath/mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/mpmath/mpmath-1.3.0-py3-none-any.whl.metadata (8.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting regex!=2019.12.17 (from transformers)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting regex!=2019.12.17 (from transformers)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/regex/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (40 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/regex/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (40 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting requests (from transformers)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting requests (from transformers)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/requests/requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/requests/requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting tokenizers<0.22,>=0.21 (from transformers)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting tokenizers<0.22,>=0.21 (from transformers)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/tokenizers/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.8 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/tokenizers/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.8 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting MarkupSafe>=2.0 (from jinja2->torch)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting MarkupSafe>=2.0 (from jinja2->torch)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/markupsafe/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.0 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/markupsafe/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.0 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting charset-normalizer<4,>=2 (from requests->transformers)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting charset-normalizer<4,>=2 (from requests->transformers)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/charset-normalizer/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (35 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/charset-normalizer/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (35 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/site-packages (from requests->transformers) (3.10)\n",
"
\n"
],
"text/plain": [
"\u001b[33mRequirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/site-packages (from requests->transformers) (3.10)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Collecting urllib3<3,>=1.21.1 (from requests->transformers)\n",
"
\n"
],
"text/plain": [
"\u001b[33mCollecting urllib3<3,>=1.21.1 (from requests->transformers)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" Downloading http://pypi-mirror.modal.local:5555/simple/urllib3/urllib3-2.3.0-py3-none-any.whl.metadata (6.5 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33m Downloading http://pypi-mirror.modal.local:5555/simple/urllib3/urllib3-2.3.0-py3-none-any.whl.metadata (6.5 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/site-packages (from requests->transformers) (2024.8.30)\n",
"
\n"
],
"text/plain": [
"\u001b[33mRequirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/site-packages (from requests->transformers) (2024.8.30)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/accelerate/accelerate-1.6.0-py3-none-any.whl (354 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/accelerate/accelerate-1.6.0-py3-none-any.whl (354 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/bitsandbytes/bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl (76.1 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/bitsandbytes/bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl (76.1 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 76.1/76.1 MB 140.6 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 76.1/76.1 MB 140.6 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/peft/peft-0.15.1-py3-none-any.whl (411 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/peft/peft-0.15.1-py3-none-any.whl (411 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/torch/torch-2.6.0-cp311-cp311-manylinux1_x86_64.whl (766.7 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/torch/torch-2.6.0-cp311-cp311-manylinux1_x86_64.whl (766.7 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 766.7/766.7 MB 263.0 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 766.7/766.7 MB 263.0 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cublas-cu12/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cublas-cu12/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 363.4/363.4 MB 314.0 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 363.4/363.4 MB 314.0 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-cupti-cu12/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (13.8 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-cupti-cu12/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (13.8 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.8/13.8 MB 323.0 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.8/13.8 MB 323.0 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-nvrtc-cu12/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (24.6 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-nvrtc-cu12/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (24.6 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24.6/24.6 MB 264.4 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24.6/24.6 MB 264.4 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-runtime-cu12/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (883 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cuda-runtime-cu12/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (883 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 883.7/883.7 kB 338.5 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 883.7/883.7 kB 338.5 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cudnn-cu12/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cudnn-cu12/nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 664.8/664.8 MB 316.5 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 664.8/664.8 MB 316.5 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cufft-cu12/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cufft-cu12/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 211.5/211.5 MB 252.0 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 211.5/211.5 MB 252.0 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-curand-cu12/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-curand-cu12/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.3/56.3 MB 253.5 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.3/56.3 MB 253.5 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusolver-cu12/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusolver-cu12/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 127.9/127.9 MB 256.1 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 127.9/127.9 MB 256.1 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparse-cu12/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparse-cu12/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 207.5/207.5 MB 258.0 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 207.5/207.5 MB 258.0 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparselt-cu12/nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_x86_64.whl (150.1 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-cusparselt-cu12/nvidia_cusparselt_cu12-0.6.2-py3-none-manylinux2014_x86_64.whl (150.1 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 150.1/150.1 MB 247.3 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 150.1/150.1 MB 247.3 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nccl-cu12/nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl (188.7 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-nccl-cu12/nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl (188.7 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 188.7/188.7 MB 264.4 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 188.7/188.7 MB 264.4 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvjitlink-cu12/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvjitlink-cu12/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 21.1/21.1 MB 221.4 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 21.1/21.1 MB 221.4 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvtx-cu12/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (99 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/nvidia-nvtx-cu12/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (99 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/sympy/sympy-1.13.1-py3-none-any.whl (6.2 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/sympy/sympy-1.13.1-py3-none-any.whl (6.2 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.2/6.2 MB 236.5 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.2/6.2 MB 236.5 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/triton/triton-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (253.2 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/triton/triton-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (253.2 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 253.2/253.2 MB 259.7 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 253.2/253.2 MB 259.7 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/transformers/transformers-4.51.1-py3-none-any.whl (10.4 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/transformers/transformers-4.51.1-py3-none-any.whl (10.4 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.4/10.4 MB 295.3 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.4/10.4 MB 295.3 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/huggingface-hub/huggingface_hub-0.30.2-py3-none-any.whl (481 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/huggingface-hub/huggingface_hub-0.30.2-py3-none-any.whl (481 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/fsspec/fsspec-2025.3.2-py3-none-any.whl (194 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/fsspec/fsspec-2025.3.2-py3-none-any.whl (194 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/numpy/numpy-2.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.4 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/numpy/numpy-2.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.4 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.4/16.4 MB 295.9 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.4/16.4 MB 295.9 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/packaging/packaging-24.2-py3-none-any.whl (65 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/packaging/packaging-24.2-py3-none-any.whl (65 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/pyyaml/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (762 kB)\n",
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 763.0/763.0 kB 433.0 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/pyyaml/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (762 kB)\n",
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 763.0/763.0 kB 433.0 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/regex/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (792 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/regex/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (792 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 792.7/792.7 kB 416.7 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 792.7/792.7 kB 416.7 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/safetensors/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (471 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/safetensors/safetensors-0.5.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (471 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/tokenizers/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/tokenizers/tokenizers-0.21.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.0/3.0 MB 338.3 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.0/3.0 MB 338.3 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/tqdm/tqdm-4.67.1-py3-none-any.whl (78 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/tqdm/tqdm-4.67.1-py3-none-any.whl (78 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/filelock/filelock-3.18.0-py3-none-any.whl (16 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/jinja2/jinja2-3.1.6-py3-none-any.whl (134 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/filelock/filelock-3.18.0-py3-none-any.whl (16 kB)\n",
"Downloading http://pypi-mirror.modal.local:5555/simple/jinja2/jinja2-3.1.6-py3-none-any.whl (134 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/networkx/networkx-3.4.2-py3-none-any.whl (1.7 MB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/networkx/networkx-3.4.2-py3-none-any.whl (1.7 MB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 315.3 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 315.3 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/psutil/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (277 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/psutil/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (277 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/requests/requests-2.32.3-py3-none-any.whl (64 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/requests/requests-2.32.3-py3-none-any.whl (64 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/charset-normalizer/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (143 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/charset-normalizer/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (143 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/markupsafe/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/markupsafe/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/mpmath/mpmath-1.3.0-py3-none-any.whl (536 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/mpmath/mpmath-1.3.0-py3-none-any.whl (536 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 356.4 MB/s eta 0:00:00\n",
"
\n"
],
"text/plain": [
"\u001b[33m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 356.4 MB/s eta 0:00:00\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Downloading http://pypi-mirror.modal.local:5555/simple/urllib3/urllib3-2.3.0-py3-none-any.whl (128 kB)\n",
"
\n"
],
"text/plain": [
"\u001b[33mDownloading http://pypi-mirror.modal.local:5555/simple/urllib3/urllib3-2.3.0-py3-none-any.whl (128 kB)\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Installing collected packages: triton, nvidia-cusparselt-cu12, mpmath, urllib3, tqdm, sympy, safetensors, regex, pyyaml, psutil, packaging, 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, MarkupSafe, fsspec, filelock, charset-normalizer, requests, nvidia-cusparse-cu12, nvidia-cudnn-cu12, jinja2, nvidia-cusolver-cu12, huggingface-hub, torch, tokenizers, transformers, bitsandbytes, accelerate, peft\n",
"
\n"
],
"text/plain": [
"\u001b[33mInstalling collected packages: triton, nvidia-cusparselt-cu12, mpmath, urllib3, tqdm, sympy, safetensors, regex, pyyaml, psutil, packaging, 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, MarkupSafe, fsspec, filelock, charset-normalizer, requests, nvidia-cusparse-cu12, nvidia-cudnn-cu12, jinja2, nvidia-cusolver-cu12, huggingface-hub, torch, tokenizers, transformers, bitsandbytes, accelerate, peft\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Successfully installed MarkupSafe-3.0.2 accelerate-1.6.0 bitsandbytes-0.45.5 charset-normalizer-3.4.1 filelock-3.18.0 fsspec-2025.3.2 huggingface-hub-0.30.2 jinja2-3.1.6 mpmath-1.3.0 networkx-3.4.2 numpy-2.2.4 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 packaging-24.2 peft-0.15.1 psutil-7.0.0 pyyaml-6.0.2 regex-2024.11.6 requests-2.32.3 safetensors-0.5.3 sympy-1.13.1 tokenizers-0.21.1 torch-2.6.0 tqdm-4.67.1 transformers-4.51.1 triton-3.2.0 urllib3-2.3.0\n",
"
\n"
],
"text/plain": [
"\u001b[33mSuccessfully installed MarkupSafe-3.0.2 accelerate-1.6.0 bitsandbytes-0.45.5 charset-normalizer-3.4.1 filelock-3.18.0 fsspec-2025.3.2 huggingface-hub-0.30.2 jinja2-3.1.6 mpmath-1.3.0 networkx-3.4.2 numpy-2.2.4 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 packaging-24.2 peft-0.15.1 psutil-7.0.0 pyyaml-6.0.2 regex-2024.11.6 requests-2.32.3 safetensors-0.5.3 sympy-1.13.1 tokenizers-0.21.1 torch-2.6.0 tqdm-4.67.1 transformers-4.51.1 triton-3.2.0 urllib3-2.3.0\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"[notice] A new release of pip is available: 24.3.1 -> 25.0.1\n",
"[notice] To update, run: pip install --upgrade pip\n",
"
\n"
],
"text/plain": [
"\u001b[33m\n",
"[notice] A new release of pip is available: 24.3.1 -> 25.0.1\n",
"[notice] To update, run: pip install --upgrade pip\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Saving image...\n",
"
\n"
],
"text/plain": [
"\u001b[33mSaving image...\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Image saved, took 5.08s\n",
"
\n"
],
"text/plain": [
"\u001b[33mImage saved, took 5.08s\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"Built image im-lR52cm0dRXT5B8UWizJSP6 in 82.34s\n",
"\n",
"\n",
"
\n"
],
"text/plain": [
"\u001b[33m\n",
"Built image im-lR52cm0dRXT5B8UWizJSP6 in 82.34s\n",
"\n",
"\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n"
],
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"✓ Created objects.\n", "├── 🔨 Created mount /Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_ephemeral.py\n", "├── 🔨 Created mount PythonPackage:llama\n", "├── 🔨 Created mount PythonPackage:hello\n", "└── 🔨 Created function price.\n", "\n" ], "text/plain": [ "\u001b[32m✓\u001b[0m Created objects.\n", "\u001b[38;5;244m├── \u001b[0m🔨 Created mount /Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_ephemeral.py\n", "\u001b[38;5;244m├── \u001b[0m🔨 Created mount PythonPackage:llama\n", "\u001b[38;5;244m├── \u001b[0m🔨 Created mount PythonPackage:hello\n", "\u001b[38;5;244m└── \u001b[0m🔨 Created function price.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ea2b8be65d6045059fd9700cea2838f9", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n",
"
\n"
],
"text/plain": [
"\u001b[31m\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1AFetching 4 files: 0%| | 0/4 [00:00<?, ?it/s]
\n"
],
"text/plain": [
"\u001b[31m\u001b[1AFetching 4 files: 0%| | 0/4 [00:00, ?it/s]\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"
\n"
],
"text/plain": [
"\u001b[31m\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1AFetching 4 files: 25%|██▌ | 1/4 [01:04<03:13, 64.59s/it]Fetching 4 files: 100%|██████████| 4/4 [01:04<00:00, 16.15s/it]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1AFetching 4 files: 25%|██▌ | 1/4 [01:04<03:13, 64.59s/it]Fetching 4 files: 100%|██████████| 4/4 [01:04<00:00, 16.15s/it]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"
\n"
],
"text/plain": [
"\u001b[31m\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1ALoading checkpoint shards: 0%| | 0/4 [00:00<?, ?it/s]
\n"
],
"text/plain": [
"\u001b[31m\u001b[1ALoading checkpoint shards: 0%| | 0/4 [00:00, ?it/s]\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"
\n"
],
"text/plain": [
"\u001b[31m\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1ALoading checkpoint shards: 25%|██▌ | 1/4 [00:04<00:12, 4.01s/it]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1ALoading checkpoint shards: 25%|██▌ | 1/4 [00:04<00:12, 4.01s/it]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1ALoading checkpoint shards: 50%|█████ | 2/4 [00:08<00:08, 4.30s/it]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1ALoading checkpoint shards: 50%|█████ | 2/4 [00:08<00:08, 4.30s/it]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1ALoading checkpoint shards: 75%|███████▌ | 3/4 [00:12<00:04, 4.38s/it]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1ALoading checkpoint shards: 75%|███████▌ | 3/4 [00:12<00:04, 4.38s/it]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\u001b[1ALoading checkpoint shards: 100%|██████████| 4/4 [00:13<00:00, 2.78s/it]Loading checkpoint shards: 100%|██████████| 4/4 [00:13<00:00, 3.33s/it]\n",
"
\n"
],
"text/plain": [
"\u001b[31m\u001b[1ALoading checkpoint shards: 100%|██████████| 4/4 [00:13<00:00, 2.78s/it]Loading checkpoint shards: 100%|██████████| 4/4 [00:13<00:00, 3.33s/it]\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Setting `pad_token_id` to `eos_token_id`:128001 for open-end generation.\n",
"
\n"
],
"text/plain": [
"\u001b[31mSetting `pad_token_id` to `eos_token_id`:128001 for open-end generation.\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n"
],
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Stopping app - local entrypoint completed.\n",
"
\n"
],
"text/plain": [
"\u001b[33mStopping app - local entrypoint completed.\n",
"\u001b[0m"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"✓ App completed. View run at https://modal.com/apps/craigprobus/main/ap-hXVuCIvQjgcNjkaBXeKcWI\n", "\n" ], "text/plain": [ "\u001b[32m✓\u001b[0m App completed. \u001b[38;5;249mView run at \u001b[0m\u001b[4;38;5;249mhttps://modal.com/apps/craigprobus/main/ap-hXVuCIvQjgcNjkaBXeKcWI\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "220.0" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "with modal.enable_output():\n", " with app.run():\n", " result=price.remote(\"Quadcast HyperX condenser mic, connects via usb-c to your computer for crystal clear audio\")\n", "result" ] }, { "cell_type": "markdown", "id": "04d8747f-8452-4077-8af6-27e03888508a", "metadata": {}, "source": [ "## Transitioning From Ephemeral Apps to Deployed Apps\n", "\n", "From a command line, `modal deploy xxx` will deploy your code as a Deployed App\n", "\n", "This is how you could package your AI service behind an API to be used in a Production System.\n", "\n", "You can also build REST endpoints easily, although we won't cover that as we'll be calling direct from Python.\n", "\n", "## Important note for Windows people:\n", "\n", "On the next line, I call `modal deploy` from within Jupyter lab; I've heard that on some versions of Windows this gives a strange unicode error because modal prints emojis to the output which can't be displayed. If that happens to you, simply use an Anaconda Prompt window or a Powershell instead, with your environment activated, and type `modal deploy pricer_service` there. Follow the same approach the next time we do `!modal deploy` too.\n", "\n", "As an alternative, a few students have mentioned you can run this code within Jupyter Lab if you want to run it from here:\n", "```\n", "# Check the default encoding\n", "print(locale.getpreferredencoding()) # Should print 'UTF-8'\n", "\n", "# Ensure UTF-8 encoding\n", "os.environ['PYTHONIOENCODING'] = 'utf-8'\n", "```" ] }, { "cell_type": "code", "execution_count": 24, "id": "7f90d857-2f12-4521-bb90-28efd917f7d1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33m╭─\u001b[0m\u001b[33m Modal Deprecation Warning (2025-02-06) \u001b[0m\u001b[33m────────────────────────────────────\u001b[0m\u001b[33m─╮\u001b[0m\n", "\u001b[33m│\u001b[0m Using Python module paths will require using the -m flag in a future version \u001b[33m│\u001b[0m\n", "\u001b[33m│\u001b[0m of Modal. \u001b[33m│\u001b[0m\n", "\u001b[33m│\u001b[0m Use `modal deploy -m pricer_service` instead. \u001b[33m│\u001b[0m\n", "\u001b[33m╰──────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n", "\u001b[2K\u001b[34m⠸\u001b[0m Creating objects.....\n", "\u001b[37m└── \u001b[0m\u001b[34m⠋\u001b[0m Creating mount \n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠦\u001b[0m Creating objects...\n", "\u001b[37m└── \u001b[0m\u001b[34m⠸\u001b[0m Creating mount \n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠏\u001b[0m Creating objects...\n", "\u001b[37m└── \u001b[0m\u001b[34m⠦\u001b[0m Creating mount \n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠹\u001b[0m Creating objects...\n", "\u001b[37m└── \u001b[0m\u001b[34m⠏\u001b[0m Creating mount \n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠴\u001b[0m Creating objects...\n", "\u001b[37m└── \u001b[0m🔨 Created mount \n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠧\u001b[0m Creating objects...\n", "\u001b[37m├── \u001b[0m🔨 Created mount \n", "\u001b[37m│ \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[37m│ \u001b[0me.py\n", "\u001b[37m└── \u001b[0m🔨 Created function price.\n", "\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[32m✓\u001b[0m Created objects.\n", "\u001b[37m├── \u001b[0m🔨 Created mount \n", "\u001b[37m│ \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[37m│ \u001b[0me.py\n", "\u001b[37m└── \u001b[0m🔨 Created function price.\n", "\u001b[32m✓\u001b[0m App deployed in 1.824s! 🎉\n", "\n", "View Deployment: \u001b[35mhttps://modal.com/apps/craigprobus/main/deployed/pricer-service\u001b[0m\n" ] } ], "source": [ "!modal deploy pricer_service" ] }, { "cell_type": "code", "execution_count": 26, "id": "1dec70ff-1986-4405-8624-9bbbe0ce1f4a", "metadata": {}, "outputs": [], "source": [ "#DEL: pricer = modal.Function.lookup(\"pricer-service\", \"price\")\n", "pricer = modal.Function.from_name(\"pricer-service\", \"price\")" ] }, { "cell_type": "code", "execution_count": 27, "id": "17776139-0d9e-4ad0-bcd0-82d3a92ca61f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "220.0" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pricer.remote(\"Quadcast HyperX condenser mic, connects via usb-c to your computer for crystal clear audio\")" ] }, { "cell_type": "code", "execution_count": 35, "id": "f56d1e55-2a03-4ce2-bb47-2ab6b9175a02", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2K\u001b[34m⠸\u001b[0m Creating objects.....\n", "\u001b[37m└── \u001b[0m\u001b[34m⠋\u001b[0m Creating mount \n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠦\u001b[0m Creating objects...\n", "\u001b[37m└── \u001b[0m\u001b[34m⠸\u001b[0m Creating mount \n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠏\u001b[0m Creating objects...\n", "\u001b[37m└── \u001b[0m\u001b[34m⠦\u001b[0m Creating mount \n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠹\u001b[0m Creating objects...\n", "\u001b[37m└── \u001b[0m🔨 Created mount \n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠦\u001b[0m Creating objects...\n", "\u001b[37m└── \u001b[0m🔨 Created mount \n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠏\u001b[0m Creating objects...\n", "\u001b[37m└── \u001b[0m🔨 Created mount \n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠹\u001b[0m Creating objects...\n", "\u001b[37m├── \u001b[0m🔨 Created mount \n", "\u001b[37m│ \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[37m│ \u001b[0me2.py\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠹\u001b[0m Creating objects...\n", "\u001b[37m├── \u001b[0m🔨 Created mount \n", "\u001b[37m│ \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[37m│ \u001b[0me2.py\n", "\u001b[37m└── \u001b[0m🔨 Created function Pricer.*.\n", "\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[32m✓\u001b[0m Created objects.\n", "\u001b[37m├── \u001b[0m🔨 Created mount \n", "\u001b[37m│ \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[37m│ \u001b[0me2.py\n", "\u001b[37m└── \u001b[0m🔨 Created function Pricer.*.\n", "\u001b[32m✓\u001b[0m App deployed in 2.287s! 🎉\n", "\n", "View Deployment: \u001b[35mhttps://modal.com/apps/craigprobus/main/deployed/pricer-service\u001b[0m\n" ] } ], "source": [ "# You can also run \"modal deploy -m pricer_service2\" at the command line in an activated environment\n", "!modal deploy -m pricer_service2" ] }, { "cell_type": "code", "execution_count": 36, "id": "9e19daeb-1281-484b-9d2f-95cc6fed2622", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "220.0\n" ] } ], "source": [ "#DEL: Pricer = modal.Cls.lookup(\"pricer-service\", \"Pricer\")\n", "Pricer = modal.Cls.from_name(\"pricer-service\", \"Pricer\")\n", "pricer = Pricer()\n", "reply = pricer.price.remote(\"Quadcast HyperX condenser mic, connects via usb-c to your computer for crystal clear audio\")\n", "print(reply)" ] }, { "cell_type": "code", "execution_count": 37, "id": "c29b8c58-4cb7-44b0-ab7e-6469d3a318e8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: modal in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (0.73.155)\n", "Requirement already satisfied: aiohttp in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (3.11.12)\n", "Requirement already satisfied: certifi in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (2025.1.31)\n", "Requirement already satisfied: click>=8.1.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (8.1.8)\n", "Requirement already satisfied: fastapi in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (0.115.8)\n", "Requirement already satisfied: grpclib==0.4.7 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (0.4.7)\n", "Requirement already satisfied: protobuf!=4.24.0,<6.0,>=3.19 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (5.29.3)\n", "Requirement already satisfied: rich>=12.0.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (13.9.4)\n", "Requirement already satisfied: synchronicity~=0.9.10 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (0.9.11)\n", "Requirement already satisfied: toml in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (0.10.2)\n", "Requirement already satisfied: typer>=0.9 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (0.15.1)\n", "Requirement already satisfied: types-certifi in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (2021.10.8.3)\n", "Requirement already satisfied: types-toml in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (0.10.8.20240310)\n", "Requirement already satisfied: watchfiles in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (1.0.4)\n", "Requirement already satisfied: typing_extensions~=4.6 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (4.12.2)\n", "Requirement already satisfied: h2<5,>=3.1.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from grpclib==0.4.7->modal) (4.2.0)\n", "Requirement already satisfied: multidict in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from grpclib==0.4.7->modal) (6.1.0)\n", "Requirement already satisfied: markdown-it-py>=2.2.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from rich>=12.0.0->modal) (3.0.0)\n", "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from rich>=12.0.0->modal) (2.19.1)\n", "Requirement already satisfied: sigtools>=4.0.1 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from synchronicity~=0.9.10->modal) (4.0.1)\n", "Requirement already satisfied: shellingham>=1.3.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from typer>=0.9->modal) (1.5.4)\n", "Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from aiohttp->modal) (2.4.6)\n", "Requirement already satisfied: aiosignal>=1.1.2 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from aiohttp->modal) (1.3.2)\n", "Requirement already satisfied: attrs>=17.3.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from aiohttp->modal) (25.1.0)\n", "Requirement already satisfied: frozenlist>=1.1.1 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from aiohttp->modal) (1.5.0)\n", "Requirement already satisfied: propcache>=0.2.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from aiohttp->modal) (0.2.1)\n", "Requirement already satisfied: yarl<2.0,>=1.17.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from aiohttp->modal) (1.18.3)\n", "Requirement already satisfied: starlette<0.46.0,>=0.40.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from fastapi->modal) (0.45.3)\n", "Requirement already satisfied: pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from fastapi->modal) (2.10.6)\n", "Requirement already satisfied: anyio>=3.0.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from watchfiles->modal) (4.8.0)\n", "Requirement already satisfied: idna>=2.8 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from anyio>=3.0.0->watchfiles->modal) (3.10)\n", "Requirement already satisfied: sniffio>=1.1 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from anyio>=3.0.0->watchfiles->modal) (1.3.1)\n", "Requirement already satisfied: hyperframe<7,>=6.1 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from h2<5,>=3.1.0->grpclib==0.4.7->modal) (6.1.0)\n", "Requirement already satisfied: hpack<5,>=4.1 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from h2<5,>=3.1.0->grpclib==0.4.7->modal) (4.1.0)\n", "Requirement already satisfied: mdurl~=0.1 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from markdown-it-py>=2.2.0->rich>=12.0.0->modal) (0.1.2)\n", "Requirement already satisfied: annotated-types>=0.6.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi->modal) (0.7.0)\n", "Requirement already satisfied: pydantic-core==2.27.2 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi->modal) (2.27.2)\n" ] } ], "source": [ "!pip install --upgrade modal" ] }, { "cell_type": "markdown", "id": "9c1b1451-6249-4462-bf2d-5937c059926c", "metadata": {}, "source": [ "# Optional: Keeping Modal warm\n", "\n", "## A way to improve the speed of the Modal pricer service\n", "\n", "A student mentioned to me that he was concerned by how slow Modal seems to be. The reason is that Modal puts our service to sleep if we don't use it, and then it takes 2.5 minutes to spin back up.\n", "\n", "I've added a utility called `keep_warm.py` that will keep our Modal warm by pinging it every 30 seconds.\n", "\n", "To use the utliity, bring up a new Terminal (Mac) or Anaconda prompt (Windows), ensure the environment is activated with `conda activate llms`\n", "\n", "Then run: `python keep_warm.py` from within the week8 drectory.\n", "\n", "Remember to press ctrl+C or exit the window when you no longer need Modal running.\n" ] }, { "cell_type": "markdown", "id": "3754cfdd-ae28-47c8-91f2-6e060e2c91b3", "metadata": {}, "source": [ "## And now introducing our Agent class" ] }, { "cell_type": "code", "execution_count": 32, "id": "ba9aedca-6a7b-4d30-9f64-59d76f76fb6d", "metadata": {}, "outputs": [], "source": [ "from agents.specialist_agent import SpecialistAgent" ] }, { "cell_type": "code", "execution_count": 33, "id": "fe5843e5-e958-4a65-8326-8f5b4686de7f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "350.0" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "agent = SpecialistAgent()\n", "agent.price(\"iPad Pro 2nd generation\")" ] }, { "cell_type": "code", "execution_count": null, "id": "f5a3181b-1310-4102-8d7d-52caf4c00538", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.11" } }, "nbformat": 4, "nbformat_minor": 5 }