Mimo_Injection_detector / requirements.txt
BentoUniAcc's picture
Add the family-naming model and the notebook part that builds it
4c0f820 verified
Raw
History Blame Contribute Delete
3.19 kB
# torch is deliberately NOT pinned or listed.
#
# On ZeroGPU the CUDA build must match the platform's driver, and the Space image already provides
# a matching one; asking pip for a different torch - in particular the cpu-only wheel that keeps a
# non-GPU Space small - is the usual way a Space that works in a notebook fails on hardware.
#
# gradio is absent for the same class of reason: the Space installs the version pinned as
# `sdk_version` in README.md, and listing it here as well is how the two end up disagreeing.
# Leaving it unpinned in both places is what broke the first deploy - HF fell back to a gradio 3.x
# default with no `show_copy_button`.
#
# llama-cpp-python is deliberately ABSENT, and there is no longer a CPU runtime in `mimo.py` for it
# to serve. Both ways of installing it were tried here and both fail:
#
# 1. abetlen's prebuilt wheel index. Those wheels are tagged plain `linux_x86_64` rather than
# `manylinux`, and they are linked against musl. pip installs one happily and then every
# import dies with `libc.musl-x86_64.so.1: cannot open shared object file`, because a Space
# runs on glibc.
# 2. the PyPI sdist, which is the only other option since PyPI publishes no binary wheel at all.
# Compiling llama.cpp from source exceeded the Space build limit outright: `Job timeout`.
#
# The GPU path is therefore the only runtime, which is also the one that reproduces Part B exactly.
# The interface used to offer the choice; it no longer does, because a control whose second option
# can never work is worse than no control.
spaces # the @spaces.GPU decorator; ZeroGPU refuses to serve a Space without one
transformers>=4.45
accelerate # device_map for the 4-bit load
bitsandbytes # the NF4 quantisation Part B measured
sentencepiece
einops # nomic-embed-v1.5's remote code imports it
sentence-transformers>=3.0
huggingface_hub>=0.23
numpy
pandas
pyarrow # read the Part A embedding index
# --- the family-naming model -----------------------------------------------------------------
#
# scikit-learn is PINNED, and that is not caution for its own sake. `family_naming_model.pkl` is a
# pickled fitted estimator, and unpickling one across a scikit-learn minor version is best-effort at
# most: it either warns, or silently reconstructs an object whose internals have moved.
#
# The pin is 1.7.2 rather than something newer for a reason worth recording. A ZeroGPU Space runs
# **Python 3.10** and ignores a `python_version` override in README.md, and scikit-learn 1.8 requires
# >= 3.11 - so pinning 1.8 fails at pip with `No matching distribution found` and the Space never
# builds. 1.7.2 is the newest release that installs on 3.10, so the model is fitted with 1.7.2 too:
# App_Creation.ipynb Part 2 prints the version it used and records it inside the .pkl itself.
# Retrain and re-pin together, never one without the other.
scikit-learn==1.7.2
joblib # loads the fitted classifier
pymupdf # n_pages and page_text_chars, exactly as the corpus measured them