Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
Pitchbendphil's avatar
Pitchbendphil
Honored Guest
6 months ago

Audio Craft - no attributeError: MusicGen object has no attribute from_pretrained

Hi Community,

Hi Audiocraft Team & Community,

I'm encountering a persistent `AttributeError setup.

The import from audiocraft.models import MusicGen works, but hasattr(Music: type object 'MusicGen' has no attribute 'from_pretrained' when trying to load facebook/musicgenGen, 'from_pretrained') returns False. This setup previously worked on a Google Cloud VM.

Key Configuration-smallwithin a custom Docker environment on a Hugging Face Space (T4 GPU). Theaudiocraft.models:

  • Base Docker Image: nvidia/cuda:12.1.1-cudnn8-runtime-.MusicGen class imports, but the from_pretrained method is missing at runtime.

This setup previouslyubuntu22.04`

  • Python: 3.9 (via `deadsnakes worked on a different platform (Google Cloud VM).

Key Configuration:

  • Base Docker Image: nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04
    /ppain Docker, in avenv`)

  • Core Pinned Versions in requirements.txt:

    • torch==2.0.1 (cu118)

      • Python: 3.9 (via deadsnakes/ppa and managed in a venv)

  • Core Libraries (from requirements.txt😞

    • torch==2torchaudio==2.0.2` (cu118)

    • torchvision==0.15.2 (cu118)

    • audiocraft==1.0.1+cu118

    • torchaudio==2.0.2+cu118

    • torchvision==0.15.2+cu118

    • audiocraft==1.1.0

    • numpy==1.24.1.0

    • numpy==1.24.4

    • xformers==0.0.20

    • transformers>=4.28.0,<4.32.0

    • Relevant system dependencies (build-essential, cmake, ffmpeg) are installed.
      .4`

    • xformers==0.0.20

    • transformers>=4.28.0,<4.32.0

    • accelerate>=0.19.0,<0.22.0

    • librosa==0.9.2* All Dockerfile syntax, pip conflicts, and permission errors have been resolved. The app builds and Streamlit starts.

Minimal app.py to Reproduce:

Generated python

import streamlit as st

st.title("Audiocraft MusicGen Load Test")
try:
    from audiocraft.models import Music
    *   `streamlit`
*   System dependencies like `build-essential`, `cmake`, `ffmpeg` are installed.
*   File permissions and cache directories (`STREAMLIT_HOME`, `HF_HOME`) are correctly set for a non-root user.

**Minimal `app.py` to Reproduce:**
```python
importGen
    st.success("Class 'MusicGen' imported successfully!")
    if hasattr(MusicGen, 'from_pretrained'):
        st.success("'from_pretrained' method exists. Attempting to load model...")
        model = MusicGen.from_pretrained("facebook/musicgen-small") # This line isn't reached
 streamlit as st
# audiocraft and torch are imported within the function

@st.cache_resource
def attempt_load_model():
    st.info("Attempting to load MusicGen model...")
    try:
        from audiocraft.models import MusicGen
        st.success("Class 'MusicGen' imported successfully!")

        if not hasattr(MusicGen, 'from_pretrained'):
            st.error("ERROR: 'MusicGen' object        st.success("MODEL LOADED SUCCESSFULLY!")
    else:
        st.error("ERROR: 'MusicGen' object has no attribute 'from_pretrained'")
except Exception as e:
    st.error(f"Error: {type(e).__name__}: {e}")
 

The app consistently outputs: "ERROR: 'MusicGen' object has no attribute 'from_pretrained'".

I suspect an issue with how audiocraft or its compiled lacks 'from_pretrained' method.")
return None

Generated code

model = MusicGen.from_pretrained("facebook/musicgen-small")
    st.success("MODEL LOADED SUCCESSFULLY!")
    st.balloons()
    return model
except Exception as e:
    st.error(f"Error loading model: {type(e).__name__}: {e}")
    return None
 

attempt_load_model()

Generated code

**Observed Behavior:**
 components (like `xformers` or `torch`'s CUDA parts) build or initialize in this specific Docker/HF T4 environment, leading to an incomplete `MusicGen` object.

Could there be a known incompatibility, a required build flag, or an environment variable I'm missing for this setup? Any guidance would be greatly appreciated.

Thank you!
No RepliesBe the first to reply