From 2c75a61f221c1e4fe0fa702fa148beb99e9b544e Mon Sep 17 00:00:00 2001 From: sanjaycal Date: Wed, 29 Jan 2025 14:57:27 -0500 Subject: [PATCH] Make the api run through uv --- install.sh | 7 +- requirements-no-gpu-uv.txt | 340 +++++++++++++++++++++++++++++++++ requirements-uv.txt | 374 +++++++++++++++++++++++++++++++++++++ run.sh | 4 +- 4 files changed, 721 insertions(+), 4 deletions(-) create mode 100644 requirements-no-gpu-uv.txt create mode 100644 requirements-uv.txt diff --git a/install.sh b/install.sh index 9d83260..72de995 100755 --- a/install.sh +++ b/install.sh @@ -277,6 +277,9 @@ install_dependencies() { fi fi + #install uv + curl -LsSf https://astral.sh/uv/install.sh | sh + echo "HAS_GPU=$HAS_GPU" if [ "$HAS_GPU" = true ] ; then @@ -285,7 +288,7 @@ install_dependencies() { echo "Installing requirements:" # Install the python requirements - pip install --upgrade -r "$TLAB_CODE_DIR"/requirements.txt + uv pip install --upgrade -r "$TLAB_CODE_DIR"/requirements-uv.txt # Install Flash Attention separately - it doesn't play well in requirements file # Using instructions from https://github.com/Dao-AILab/flash-attention @@ -298,7 +301,7 @@ install_dependencies() { echo "https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#pre-installation-actions" echo "Installing Tranformer Lab requirements without GPU support" - pip install --upgrade -r "$TLAB_CODE_DIR"/requirements-no-gpu.txt + uv pip install --upgrade -r "$TLAB_CODE_DIR"/requirements-no-gpu-uv.txt fi # Check if the uvicorn command works: diff --git a/requirements-no-gpu-uv.txt b/requirements-no-gpu-uv.txt new file mode 100644 index 0000000..01b4945 --- /dev/null +++ b/requirements-no-gpu-uv.txt @@ -0,0 +1,340 @@ +# This file was autogenerated by uv via the following command: +# uv pip compile requirements.in -o requirements-no-gpu-uv.txt +absl-py==2.1.0 + # via + # rouge-score + # tensorboard +accelerate==1.3.0 + # via + # -r requirements.in + # peft +aiofiles==24.1.0 + # via -r requirements.in +aiohappyeyeballs==2.4.4 + # via aiohttp +aiohttp==3.11.11 + # via + # datasets + # fschat + # fsspec +aiosignal==1.3.2 + # via aiohttp +aiosqlite==0.20.0 + # via -r requirements.in +annotated-types==0.7.0 + # via pydantic +anyio==4.8.0 + # via + # httpx + # starlette + # watchfiles +attrs==25.1.0 + # via aiohttp +brotli==1.1.0 + # via py7zr +certifi==2022.12.7 + # via + # httpcore + # httpx + # requests +charset-normalizer==2.1.1 + # via requests +click==8.1.8 + # via + # nltk + # uvicorn +datasets==2.19.1 + # via + # -r requirements.in + # evaluate +dill==0.3.8 + # via + # datasets + # evaluate + # multiprocess +einops==0.8.0 + # via -r requirements.in +evaluate==0.4.3 + # via -r requirements.in +fastapi==0.115.7 + # via + # -r requirements.in + # fschat +filelock==3.13.1 + # via + # datasets + # huggingface-hub + # torch + # transformers +frozenlist==1.5.0 + # via + # aiohttp + # aiosignal +fschat==0.2.36 + # via -r requirements.in +fsspec==2024.2.0 + # via + # datasets + # evaluate + # huggingface-hub + # torch +grpcio==1.70.0 + # via tensorboard +h11==0.14.0 + # via + # httpcore + # uvicorn +httpcore==1.0.7 + # via httpx +httpx==0.28.1 + # via fschat +huggingface-hub==0.28.0 + # via + # accelerate + # datasets + # evaluate + # peft + # tokenizers + # transformers +idna==3.4 + # via + # anyio + # httpx + # requests + # yarl +inflate64==1.0.1 + # via py7zr +jinja2==3.1.4 + # via torch +joblib==1.4.2 + # via nltk +latex2mathml==3.77.0 + # via markdown2 +loralib==0.1.2 + # via -r requirements.in +markdown==3.7 + # via tensorboard +markdown-it-py==3.0.0 + # via rich +markdown2==2.5.3 + # via fschat +markupsafe==2.1.5 + # via + # jinja2 + # werkzeug +mdurl==0.1.2 + # via markdown-it-py +mpmath==1.3.0 + # via sympy +multidict==6.1.0 + # via + # aiohttp + # yarl +multiprocess==0.70.16 + # via + # datasets + # evaluate +multivolumefile==0.2.3 + # via py7zr +networkx==3.3 + # via torch +nh3==0.2.20 + # via fschat +nltk==3.9.1 + # via rouge-score +numpy==2.1.2 + # via + # accelerate + # datasets + # evaluate + # fschat + # pandas + # peft + # rouge-score + # scipy + # tensorboard + # torchvision + # transformers +nvidia-ml-py3==7.352.0 + # via -r requirements.in +packaging==24.1 + # via + # -r requirements.in + # accelerate + # datasets + # evaluate + # huggingface-hub + # peft + # tensorboard + # transformers +pandas==2.2.3 + # via + # datasets + # evaluate +peft==0.14.0 + # via -r requirements.in +pillow==11.0.0 + # via torchvision +prompt-toolkit==3.0.50 + # via fschat +propcache==0.2.1 + # via + # aiohttp + # yarl +protobuf==5.29.3 + # via tensorboard +psutil==6.1.1 + # via + # -r requirements.in + # accelerate + # peft + # py7zr +py7zr==0.22.0 + # via -r requirements.in +pyarrow==19.0.0 + # via datasets +pyarrow-hotfix==0.6 + # via datasets +pybcj==1.0.3 + # via py7zr +pycryptodomex==3.21.0 + # via py7zr +pydantic==2.10.6 + # via + # -r requirements.in + # fastapi + # fschat +pydantic-core==2.27.2 + # via pydantic +pygments==2.19.1 + # via + # markdown2 + # rich +pyppmd==1.1.1 + # via py7zr +python-dateutil==2.9.0.post0 + # via pandas +python-multipart==0.0.20 + # via -r requirements.in +pytz==2024.2 + # via pandas +pyyaml==6.0.2 + # via + # accelerate + # datasets + # huggingface-hub + # peft + # transformers + # wavedrom +pyzstd==0.16.2 + # via py7zr +regex==2024.11.6 + # via + # nltk + # tiktoken + # transformers +requests==2.28.1 + # via + # datasets + # evaluate + # fschat + # huggingface-hub + # tiktoken + # transformers +rich==13.9.4 + # via fschat +rouge-score==0.1.2 + # via -r requirements.in +safetensors==0.5.2 + # via + # accelerate + # peft + # transformers +scipy==1.15.1 + # via -r requirements.in +sentencepiece==0.2.0 + # via -r requirements.in +setuptools==70.2.0 + # via + # tensorboard + # torch +shortuuid==1.0.13 + # via fschat +six==1.17.0 + # via + # python-dateutil + # rouge-score + # tensorboard + # wavedrom +sniffio==1.3.1 + # via anyio +starlette==0.45.3 + # via fastapi +svgwrite==1.4.3 + # via wavedrom +sympy==1.13.1 + # via torch +tensorboard==2.18.0 + # via -r requirements.in +tensorboard-data-server==0.7.2 + # via tensorboard +texttable==1.7.0 + # via py7zr +tiktoken==0.8.0 + # via + # -r requirements.in + # fschat +tokenizers==0.21.0 + # via transformers +torch==2.6.0+cpu + # via + # -r requirements.in + # accelerate + # peft + # torchaudio + # torchvision +torchaudio==2.6.0+cpu + # via -r requirements.in +torchvision==0.21.0+cpu + # via -r requirements.in +tqdm==4.66.5 + # via + # datasets + # evaluate + # huggingface-hub + # nltk + # peft + # transformers +transformers==4.47.1 + # via + # -r requirements.in + # peft +typing-extensions==4.12.2 + # via + # aiosqlite + # anyio + # fastapi + # huggingface-hub + # pydantic + # pydantic-core + # torch +tzdata==2025.1 + # via pandas +urllib3==1.26.13 + # via requests +uvicorn==0.34.0 + # via fschat +watchfiles==1.0.4 + # via -r requirements.in +wavedrom==2.0.3.post3 + # via markdown2 +wcwidth==0.2.13 + # via prompt-toolkit +werkzeug==3.1.3 + # via tensorboard +xxhash==3.5.0 + # via + # datasets + # evaluate +yarl==1.18.3 + # via aiohttp diff --git a/requirements-uv.txt b/requirements-uv.txt new file mode 100644 index 0000000..c1dffa5 --- /dev/null +++ b/requirements-uv.txt @@ -0,0 +1,374 @@ +# This file was autogenerated by uv via the following command: +# uv pip compile requirements.in -o requirements-uv.txt +absl-py==2.1.0 + # via + # rouge-score + # tensorboard +accelerate==1.3.0 + # via + # -r requirements.in + # peft +aiofiles==24.1.0 + # via -r requirements.in +aiohappyeyeballs==2.4.4 + # via aiohttp +aiohttp==3.11.11 + # via + # datasets + # fschat + # fsspec +aiosignal==1.3.2 + # via aiohttp +aiosqlite==0.20.0 + # via -r requirements.in +annotated-types==0.7.0 + # via pydantic +anyio==4.8.0 + # via + # httpx + # starlette + # watchfiles +attrs==25.1.0 + # via aiohttp +brotli==1.1.0 + # via py7zr +certifi==2024.12.14 + # via + # httpcore + # httpx + # requests +charset-normalizer==3.4.1 + # via requests +click==8.1.8 + # via + # nltk + # uvicorn +datasets==3.2.0 + # via + # -r requirements.in + # evaluate +dill==0.3.8 + # via + # datasets + # evaluate + # multiprocess +einops==0.8.0 + # via -r requirements.in +evaluate==0.4.3 + # via -r requirements.in +fastapi==0.115.7 + # via + # -r requirements.in + # fschat +filelock==3.17.0 + # via + # datasets + # huggingface-hub + # torch + # transformers +frozenlist==1.5.0 + # via + # aiohttp + # aiosignal +fschat==0.2.36 + # via -r requirements.in +fsspec==2024.9.0 + # via + # datasets + # evaluate + # huggingface-hub + # torch +grpcio==1.70.0 + # via tensorboard +h11==0.14.0 + # via + # httpcore + # uvicorn +httpcore==1.0.7 + # via httpx +httpx==0.28.1 + # via fschat +huggingface-hub==0.28.0 + # via + # accelerate + # datasets + # evaluate + # peft + # tokenizers + # transformers +idna==3.10 + # via + # anyio + # httpx + # requests + # yarl +inflate64==1.0.1 + # via py7zr +jinja2==3.1.5 + # via torch +joblib==1.4.2 + # via nltk +latex2mathml==3.77.0 + # via markdown2 +loralib==0.1.2 + # via -r requirements.in +markdown==3.7 + # via tensorboard +markdown-it-py==3.0.0 + # via rich +markdown2==2.5.3 + # via fschat +markupsafe==3.0.2 + # via + # jinja2 + # werkzeug +mdurl==0.1.2 + # via markdown-it-py +mpmath==1.3.0 + # via sympy +multidict==6.1.0 + # via + # aiohttp + # yarl +multiprocess==0.70.16 + # via + # datasets + # evaluate +multivolumefile==0.2.3 + # via py7zr +networkx==3.4.2 + # via torch +nh3==0.2.20 + # via fschat +nltk==3.9.1 + # via rouge-score +numpy==2.2.2 + # via + # accelerate + # datasets + # evaluate + # fschat + # pandas + # peft + # rouge-score + # scipy + # tensorboard + # torchvision + # transformers +nvidia-cublas-cu12==12.4.5.8 + # via + # nvidia-cudnn-cu12 + # nvidia-cusolver-cu12 + # torch +nvidia-cuda-cupti-cu12==12.4.127 + # via torch +nvidia-cuda-nvrtc-cu12==12.4.127 + # via torch +nvidia-cuda-runtime-cu12==12.4.127 + # via torch +nvidia-cudnn-cu12==9.1.0.70 + # via torch +nvidia-cufft-cu12==11.2.1.3 + # via torch +nvidia-curand-cu12==10.3.5.147 + # via torch +nvidia-cusolver-cu12==11.6.1.9 + # via torch +nvidia-cusparse-cu12==12.3.1.170 + # via + # nvidia-cusolver-cu12 + # torch +nvidia-cusparselt-cu12==0.6.2 + # via torch +nvidia-ml-py3==7.352.0 + # via -r requirements.in +nvidia-nccl-cu12==2.21.5 + # via torch +nvidia-nvjitlink-cu12==12.4.127 + # via + # nvidia-cusolver-cu12 + # nvidia-cusparse-cu12 + # torch +nvidia-nvtx-cu12==12.4.127 + # via torch +packaging==24.2 + # via + # -r requirements.in + # accelerate + # datasets + # evaluate + # huggingface-hub + # peft + # tensorboard + # transformers +pandas==2.2.3 + # via + # datasets + # evaluate +peft==0.14.0 + # via -r requirements.in +pillow==11.1.0 + # via torchvision +prompt-toolkit==3.0.50 + # via fschat +propcache==0.2.1 + # via + # aiohttp + # yarl +protobuf==5.29.3 + # via tensorboard +psutil==6.1.1 + # via + # -r requirements.in + # accelerate + # peft + # py7zr +py7zr==0.22.0 + # via -r requirements.in +pyarrow==19.0.0 + # via datasets +pybcj==1.0.3 + # via py7zr +pycryptodomex==3.21.0 + # via py7zr +pydantic==2.10.6 + # via + # -r requirements.in + # fastapi + # fschat +pydantic-core==2.27.2 + # via pydantic +pygments==2.19.1 + # via + # markdown2 + # rich +pyppmd==1.1.1 + # via py7zr +python-dateutil==2.9.0.post0 + # via pandas +python-multipart==0.0.20 + # via -r requirements.in +pytz==2024.2 + # via pandas +pyyaml==6.0.2 + # via + # accelerate + # datasets + # huggingface-hub + # peft + # transformers + # wavedrom +pyzstd==0.16.2 + # via py7zr +regex==2024.11.6 + # via + # nltk + # tiktoken + # transformers +requests==2.32.3 + # via + # datasets + # evaluate + # fschat + # huggingface-hub + # tiktoken + # transformers +rich==13.9.4 + # via fschat +rouge-score==0.1.2 + # via -r requirements.in +safetensors==0.5.2 + # via + # accelerate + # peft + # transformers +scipy==1.15.1 + # via -r requirements.in +sentencepiece==0.2.0 + # via -r requirements.in +setuptools==75.8.0 + # via + # tensorboard + # torch +shortuuid==1.0.13 + # via fschat +six==1.17.0 + # via + # python-dateutil + # rouge-score + # tensorboard + # wavedrom +sniffio==1.3.1 + # via anyio +starlette==0.45.3 + # via fastapi +svgwrite==1.4.3 + # via wavedrom +sympy==1.13.1 + # via torch +tensorboard==2.18.0 + # via -r requirements.in +tensorboard-data-server==0.7.2 + # via tensorboard +texttable==1.7.0 + # via py7zr +tiktoken==0.8.0 + # via + # -r requirements.in + # fschat +tokenizers==0.21.0 + # via transformers +torch==2.6.0 + # via + # -r requirements.in + # accelerate + # peft + # torchaudio + # torchvision +torchaudio==2.6.0 + # via -r requirements.in +torchvision==0.21.0 + # via -r requirements.in +tqdm==4.67.1 + # via + # datasets + # evaluate + # huggingface-hub + # nltk + # peft + # transformers +transformers==4.47.1 + # via + # -r requirements.in + # peft +triton==3.2.0 + # via torch +typing-extensions==4.12.2 + # via + # aiosqlite + # anyio + # fastapi + # huggingface-hub + # pydantic + # pydantic-core + # torch +tzdata==2025.1 + # via pandas +urllib3==2.3.0 + # via requests +uvicorn==0.34.0 + # via fschat +watchfiles==1.0.4 + # via -r requirements.in +wavedrom==2.0.3.post3 + # via markdown2 +wcwidth==0.2.13 + # via prompt-toolkit +werkzeug==3.1.3 + # via tensorboard +xxhash==3.5.0 + # via + # datasets + # evaluate +yarl==1.18.3 + # via aiohttp diff --git a/run.sh b/run.sh index af5b5c1..1de180a 100755 --- a/run.sh +++ b/run.sh @@ -71,7 +71,7 @@ fi echo "▶️ Starting the API server:" if [ "$RELOAD" = true ]; then echo "🔁 Reload the server on file changes" - uvicorn api:app --reload --port ${PORT} --host ${HOST} + uv run -v uvicorn api:app --reload --port ${PORT} --host ${HOST} else - uvicorn api:app --port ${PORT} --host ${HOST} --no-access-log + uv run -v uvicorn api:app --port ${PORT} --host ${HOST} --no-access-log fi