fix(build): install mlx-audio/mlx-lm with --no-deps to bypass transformers 5.x conflict (#482)

The previous fix (#481) capped transformers at 4.57.6 in requirements-mlx.txt,
but pip's clean resolver in CI can't satisfy that alongside mlx-audio>=0.3.1
(declares `transformers==5.0.0rc3` or `>=5.0.0`) — it backtracks through every
transformers and tokenizers version and exits with `ResolutionImpossible`.

The dev install worked only because mlx-audio 0.4.1 was already present, so
pip never tried to re-resolve.

mlx-audio 0.4.1 + mlx-lm 0.31.1 both declare transformers>=5.x but the API
surface we actually use works fine on 4.57.x in practice (verified across all
engines in dev). Install both --no-deps to bypass the resolver; transitive
runtime deps (huggingface_hub, librosa, numpy, numba, pyloudnorm, etc.) are
already pulled in by requirements.txt.

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
This commit is contained in:
Jamie Pine
2026-04-18 17:43:31 -07:00
committed by GitHub
co-authored by Claude Opus 4.7
parent bf58750447
commit 3c1e8512b9
2 changed files with 19 additions and 8 deletions
+9
View File
@@ -68,6 +68,15 @@ jobs:
if: matrix.backend == 'mlx'
run: |
pip install -r backend/requirements-mlx.txt
# mlx-audio>=0.3.1 and mlx-lm>=0.31.1 both declare transformers>=5.x,
# which conflicts with our 4.57.x cap. The runtime APIs we use work
# fine on transformers 4.57.x in practice (verified in dev), so install
# them --no-deps. mlx-audio's other runtime deps (huggingface_hub,
# librosa, numpy, numba, pyloudnorm) are already in requirements.txt;
# the rest (sounddevice, miniaudio, protobuf, sentencepiece, pyyaml,
# jinja2) are pulled in by other engines.
pip install --no-deps mlx-lm==0.31.1
pip install --no-deps mlx-audio==0.4.1
- name: Build Python server (Linux/macOS)
if: matrix.platform != 'windows-latest'
+10 -8
View File
@@ -2,12 +2,14 @@
# These should only be installed on aarch64-apple-darwin platforms
mlx>=0.30.0
mlx-audio>=0.3.1
# Restate the transformers cap from requirements.txt. mlx-audio depends on
# `transformers` with no upper bound, so installing it after requirements.txt
# lets pip upgrade transformers past 4.57.x (latest is 5.x), which breaks
# qwen-custom-voice (`@check_model_inputs()` API change), tada-1b (dataclass
# `mutable default` enforcement), and luxtts (Whisper init path) in the
# frozen MLX bundle. Keep this constraint in sync with requirements.txt.
transformers>=4.36.0,<=4.57.6
# NOTE: mlx-audio is intentionally not listed here. From 0.3.1 onward it
# declares `transformers==5.0.0rc3` / `>=5.0.0`, which conflicts with the
# `transformers<=4.57.6` cap in requirements.txt and breaks CI's clean
# resolver. The mlx-audio API surface we use (mlx_audio.tts.load,
# mlx_audio.stt.load) works fine on transformers 4.57.x in practice.
#
# Install it via `pip install --no-deps mlx-audio==0.4.1` after this file
# (see .github/workflows/release.yml). All other mlx-audio runtime deps
# (huggingface_hub, librosa, miniaudio, mlx-lm, numba, numpy, protobuf,
# pyloudnorm, sounddevice, tqdm) are already in requirements.txt.