Make the api run through uv

This commit is contained in:
sanjaycal
2025-01-29 14:57:27 -05:00
parent a413b8e67b
commit 2c75a61f22
4 changed files with 721 additions and 4 deletions

View File

@@ -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:

340
requirements-no-gpu-uv.txt Normal file
View File

@@ -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

374
requirements-uv.txt Normal file
View File

@@ -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

4
run.sh
View File

@@ -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