{ "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", " \n", " \n", "
\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", "
" ] }, { "cell_type": "code", "execution_count": 9, "id": "bc0e1c1c-be6a-4395-bbbd-eeafc9330d7e", "metadata": {}, "outputs": [], "source": [ "# Just one import to start with!!\n", "\n", "import modal" ] }, { "cell_type": "markdown", "id": "ab5c8533-9f66-448f-b9b2-133d1ff50639", "metadata": {}, "source": [ "# Setting up the modal tokens\n", "\n", "The first time you run this, please uncomment the next line and execute it. \n", "This is the same as running `modal setup` from the command line. It connects with Modal and installs your tokens. \n", "\n", "## Debugging some common problems on Windows\n", "\n", "If this command fails in the next cell, or if any of the modal commands with the `!` fail, please try running them directly on the command line in an activated environment (without the `!`)\n", "\n", "A student on Windows mentioned that on Windows, you might also need to run this command from a command prompt in an activated environment afterwards: \n", "`modal token new` \n", "(Thank you Ed B. for that!)\n", "\n", "Another Windows student Minh N. mentioned you may need to use this approach, from an activated environment in the command line: \n", "`modal token set --token-id --token-secret `\n", "\n", "Also, a student David S. mentioned the following: \n", "> In case anyone else using Windows hits this problem: Along with having to run `modal token new` from a command prompt, you have to move the generated token file. It will deploy the token file (.modal.toml) to your Windows profile folder. The virtual environment couldn't see that location (strangely, it couldn't even after I set environment variables for it and rebooted). I moved that token file to the folder I'm operating out of for the lab and it stopped throwing auth errors.\n", "\n", "And another Windows student (Robert M. - thank you!!) added another possible step:\n", "\n", "\n", "> I could not get modal to see my tokens (resulting in an 'auth error'), even after copying the \".modal.toml\" file to the \"week8\" folder and restarting JupyterLab. The fix was to manually set the environment variables (the standard way). This config method is explained by modal on their [web site](https://modal.com/docs/reference/modal.config) \n", "```\n", "import os\n", "os.environ[\"MODAL_TOKEN_ID\"] = \"xxx\"\n", "os.environ[\"MODAL_TOKEN_SECRET\"] = \"yyy\" \n", "```\n", "\n", "Finally: I've also heard that in some situations, you might need to restart the Kernel of this jupyter notebook after running this. (Kernel menu >> Restart Kernel and Clear Outputs of All Cells)." ] }, { "cell_type": "code", "execution_count": null, "id": "0d240622-8422-4c99-8464-c04d063e4cb6", "metadata": {}, "outputs": [], "source": [ "# Remove the '# ' from the next line and run the cell, or run this command without the excalamation mark from an activated command prompt\n", "# !modal setup" ] }, { "cell_type": "code", "execution_count": 10, "id": "3b133701-f550-44a1-a67f-eb7ccc4769a9", "metadata": {}, "outputs": [], "source": [ "from hello import app, hello, hello_europe" ] }, { "cell_type": "code", "execution_count": 11, "id": "0f3f73ae-1295-49f3-9099-b8b41fc3429b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello from San Diego, California, US!!'" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "with app.run():\n", " reply=hello.local()\n", "reply" ] }, { "cell_type": "code", "execution_count": 18, "id": "c1d8c6f9-edc7-4e52-9b3a-c07d7cff1ac7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello from Ashburn, Virginia, US!!'" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#NOTE: .remote()\n", "with app.run():\n", " reply=hello.remote()\n", "reply" ] }, { "cell_type": "markdown", "id": "a1c075e9-49c7-4ebd-812f-83196d32de32", "metadata": {}, "source": [ "## Added thanks to student Tue H.\n", "\n", "If you look in hello.py, I've added a simple function hello_europe\n", "\n", "That uses the decorator: \n", "`@app.function(image=image, region=\"eu\")`\n", "\n", "See the result below! More region specific settings are [here](https://modal.com/docs/guide/region-selection)\n", "\n", "Note that it does consume marginally more credits to specify a region." ] }, { "cell_type": "code", "execution_count": 14, "id": "b027da1a-c79d-42cb-810d-32ddca31aa02", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello from Frankfurt am Main, Hesse, DE!!'" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "with app.run():\n", " reply=hello_europe.remote()\n", "reply" ] }, { "cell_type": "markdown", "id": "22e8d804-c027-45fb-8fef-06e7bba6295a", "metadata": {}, "source": [ "# Before we move on -\n", "\n", "## We need to set your HuggingFace Token as a secret in Modal\n", "\n", "1. Go to modal.com, sign in and go to your dashboard\n", "2. Click on Secrets in the nav bar\n", "3. Create new secret, click on Hugging Face, this new secret needs to be called **hf-secret** because that's how we refer to it in the code\n", "4. Fill in your HF_TOKEN where it prompts you\n", "\n", "### And now back to business: time to work with Llama" ] }, { "cell_type": "code", "execution_count": 19, "id": "cb8b6c41-8259-4329-b1c4-a1f67d26d1be", "metadata": {}, "outputs": [], "source": [ "from llama import app, generate" ] }, { "cell_type": "code", "execution_count": 20, "id": "db4a718a-d95d-4f61-9688-c9df21d88fe6", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9015e936cf2849ba9b7187470e746451", "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-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\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\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\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\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 }