From 406dd0b7c7214812d7935b9b2951ed269a5f072e Mon Sep 17 00:00:00 2001 From: slSeanWU Date: Thu, 23 Oct 2025 11:27:43 -0400 Subject: [PATCH] add setup steps and reqs --- .gitignore | 3 + README.md | 47 ++++++++++++++++ requirements.txt | 143 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 193 insertions(+) create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index b7faf40..d737031 100644 --- a/.gitignore +++ b/.gitignore @@ -205,3 +205,6 @@ cython_debug/ marimo/_static/ marimo/_lsp/ __marimo__/ + +# artifacts +soundfonts/ \ No newline at end of file diff --git a/README.md b/README.md index 6c3b65c..4cd0d92 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,50 @@ [NeurIPS AI4Music '25] MIDI-LLM: Adapting LLMs for text-to-MIDI music generation. Built with Llama 3.2 (1B) LLM. + +# Setup + +- A GPU with 16GB+ VRAM and CUDA 12.x is recommended + +- Install [Miniconda / Anaconda](https://www.anaconda.com/docs/getting-started/miniconda/install) + +- Create and activate Python 3.11 conda environment +```bash +conda create -n midi-llm python=3.11 +conda activate midi-llm +``` + +- Install packages + download soundfont for MIDI-to-audio synthesis +```bash +# Conda pkgs for audio processing & synthesis +conda install conda-forge::ffmpeg +conda install conda-forge::fluidsynth + +# Soundfont (credit -- '@Frank Wen' https://member.keymusician.com/Member/FluidR3_GM/README.html) +wget https://keymusician01.s3.amazonaws.com/FluidR3_GM.zip +mkdir -p soundfonts +unzip FluidR3_GM.zip -d ./soundfonts/FluidR3_GM +rm FluidR3_GM.zip +``` + +- Install [PyTorch](https://pytorch.org/get-started/locally/) with `pip` +```bash +pip install torch torchvision --index-url https://download.pytorch.org/whl/cu126 +``` +(Note: this is an example for CUDA 12.6, check PyTorch website if you're on other CUDA versions) + +- Check if PyTorch works correctly on CUDA GPU + +```bash +python -c "import torch; x = torch.randn(30, 30).cuda(); y = x.clone(); z = torch.mm(x, y); print(f'GPU works correctly, output shape: {z.shape}')" +``` + +- Install other dependencies +```bash +pip install -r requirements.txt +``` + +- Verify all installation +```bash +python -c "import torch; from vllm import LLM; from anticipation.convert import events_to_midi; print('Setup successful')" +``` \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..0699482 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,143 @@ +aiohappyeyeballs==2.6.1 +aiohttp==3.13.1 +aiosignal==1.4.0 +annotated-types==0.7.0 +anticipation @ git+https://github.com/jthickstun/anticipation.git@af37397922665a0fb8d474d7988b0f3755a38d45 +anyio==4.11.0 +astor==0.8.1 +attrs==25.4.0 +blake3==1.0.8 +cachetools==6.2.1 +cbor2==5.7.0 +certifi==2025.10.5 +cffi==2.0.0 +charset-normalizer==3.4.4 +click==8.2.1 +cloudpickle==3.1.1 +compressed-tensors==0.11.0 +cupy-cuda12x==13.6.0 +depyf==0.19.0 +dill==0.4.0 +diskcache==5.6.3 +distro==1.9.0 +dnspython==2.8.0 +einops==0.8.1 +email-validator==2.3.0 +fastapi==0.119.1 +fastapi-cli==0.0.14 +fastapi-cloud-cli==0.3.1 +fastrlock==0.8.3 +filelock==3.19.1 +frozendict==2.4.6 +frozenlist==1.8.0 +fsspec==2025.9.0 +gguf==0.17.1 +h11==0.16.0 +hf-xet==1.1.10 +httpcore==1.0.9 +httptools==0.7.1 +httpx==0.28.1 +huggingface-hub==0.36.0 +idna==3.11 +interegular==0.3.3 +Jinja2==3.1.6 +jiter==0.11.1 +jsonschema==4.25.1 +jsonschema-specifications==2025.9.1 +lark==1.2.2 +llguidance==0.7.30 +llvmlite==0.44.0 +lm-format-enforcer==0.11.3 +markdown-it-py==4.0.0 +MarkupSafe==2.1.5 +mdurl==0.1.2 +midi2audio==0.1.1 +mido==1.3.3 +mistral_common==1.8.5 +mpmath==1.3.0 +msgpack==1.1.2 +msgspec==0.19.0 +multidict==6.7.0 +networkx==3.5 +ninja==1.13.0 +numba==0.61.2 +numpy==2.2.6 +nvidia-cublas-cu12==12.8.4.1 +nvidia-cuda-cupti-cu12==12.8.90 +nvidia-cuda-nvrtc-cu12==12.8.93 +nvidia-cuda-runtime-cu12==12.8.90 +nvidia-cudnn-cu12==9.10.2.21 +nvidia-cufft-cu12==11.3.3.83 +nvidia-cufile-cu12==1.13.1.3 +nvidia-curand-cu12==10.3.9.90 +nvidia-cusolver-cu12==11.7.3.90 +nvidia-cusparse-cu12==12.5.8.93 +nvidia-cusparselt-cu12==0.7.1 +nvidia-nccl-cu12==2.27.3 +nvidia-nvjitlink-cu12==12.8.93 +nvidia-nvshmem-cu12==3.3.20 +nvidia-nvtx-cu12==12.8.90 +openai==2.6.0 +openai-harmony==0.0.4 +opencv-python-headless==4.12.0.88 +outlines_core==0.2.11 +packaging==25.0 +partial-json-parser==0.2.1.1.post6 +pillow==11.3.0 +prometheus-fastapi-instrumentator==7.1.0 +prometheus_client==0.23.1 +propcache==0.4.1 +protobuf==6.33.0 +psutil==7.1.1 +py-cpuinfo==9.0.0 +pybase64==1.4.2 +pycountry==24.6.1 +pycparser==2.23 +pydantic==2.12.3 +pydantic-extra-types==2.10.6 +pydantic_core==2.41.4 +Pygments==2.19.2 +python-dotenv==1.1.1 +python-json-logger==4.0.0 +python-multipart==0.0.20 +PyYAML==6.0.3 +pyzmq==27.1.0 +ray==2.50.1 +referencing==0.37.0 +regex==2025.10.23 +requests==2.32.5 +rich==14.2.0 +rich-toolkit==0.15.1 +rignore==0.7.1 +rpds-py==0.28.0 +safetensors==0.6.2 +scipy==1.16.2 +sentencepiece==0.2.1 +sentry-sdk==2.42.1 +setproctitle==1.3.7 +shellingham==1.5.4 +sniffio==1.3.1 +soundfile==0.13.1 +soxr==1.0.0 +starlette==0.48.0 +sympy==1.14.0 +tiktoken==0.12.0 +tokenizers==0.22.1 +torch==2.8.0 +torchaudio==2.8.0 +torchvision==0.23.0 +tqdm==4.67.1 +transformers==4.57.1 +triton==3.4.0 +typer==0.20.0 +typing-inspection==0.4.2 +typing_extensions==4.15.0 +urllib3==2.5.0 +uvicorn==0.38.0 +uvloop==0.22.1 +vllm==0.11.0 +watchfiles==1.1.1 +websockets==15.0.1 +xformers==0.0.32.post1 +xgrammar==0.1.25 +yarl==1.22.0 \ No newline at end of file