[Bug] Error when running DockerFile on a MacM1

#19
by MartinSai - opened

DockerFile:

# build frontend with node
FROM node:20-alpine AS frontend
RUN apk add --no-cache libc6-compat
WORKDIR /app

COPY streaming-react-app .
RUN \
    if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
    elif [ -f package-lock.json ]; then npm ci; \
    elif [ -f pnpm-lock.yaml ]; then yarn global add pnpm && pnpm i --frozen-lockfile; \
    else echo "Lockfile not found." && exit 1; \
    fi

RUN npm run build

# build backend on CUDA 
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 AS backend
WORKDIR /app

ENV DEBIAN_FRONTEND=noninteractive
ENV NODE_MAJOR=20

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y --no-install-recommends \
    git \
    git-lfs \
    wget \
    curl \
    # python build dependencies \
    build-essential \
    libssl-dev \
    zlib1g-dev \
    libbz2-dev \
    libreadline-dev \
    libsqlite3-dev \
    libncursesw5-dev \
    xz-utils \
    tk-dev \
    libxml2-dev \
    libxmlsec1-dev \
    libffi-dev \
    liblzma-dev \
    sox libsox-fmt-all \
    # gradio dependencies \
    ffmpeg \
    # fairseq2 dependencies \
    libjpeg8-dev \
    libpng-dev \
    libsndfile-dev && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

USER root

# Create the target directory before creating the symbolic link
RUN mkdir -p /usr/lib/x86_64-linux-gnu/
RUN ln -s /usr/lib/x86_64-linux-gnu/libsox.so.3 /usr/lib/x86_64-linux-gnu/libsox.so
# install older versions libjpeg62-turbo and libpng15
RUN wget http://ftp.us.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_2.1.5-2_arm64.deb && \
    dpkg -i libjpeg62-turbo_2.1.5-2_arm64.deb && \
    rm libjpeg62-turbo_2.1.5-2_arm64.deb
RUN wget https://master.dl.sourceforge.net/project/libpng/libpng15/1.5.30/libpng-1.5.30.tar.gz && \
    tar -xvf libpng-1.5.30.tar.gz && cd libpng-1.5.30 && ./configure && make && make install && cd .. && rm -rf libpng-1.5.30.tar.gz libpng-1.5.30
    
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
    PATH=/home/user/.local/bin:$PATH
WORKDIR $HOME/app

RUN curl https://pyenv.run | bash
ENV PATH=$HOME/.pyenv/shims:$HOME/.pyenv/bin:$PATH
ARG PYTHON_VERSION=3.10.12
RUN pyenv install $PYTHON_VERSION && \
    pyenv global $PYTHON_VERSION && \
    pyenv rehash && \
    pip install --no-cache-dir -U pip setuptools wheel

COPY --chown=user:user ./seamless_server ./seamless_server
# change dir since pip needs to seed whl folder
RUN cd seamless_server && \
    pip install fairseq2 --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/nightly/pt2.1.1/cu118 && \
    pip install --no-cache-dir --upgrade -r requirements.txt
COPY --from=frontend /app/dist ./streaming-react-app/dist

WORKDIR $HOME/app/seamless_server
RUN --mount=type=secret,id=HF_TOKEN,mode=0444,required=false \ 
    huggingface-cli login --token $(cat /run/secrets/HF_TOKEN) || echo "HF_TOKEN error" && \
    huggingface-cli download meta-private/SeamlessExpressive pretssel_melhifigan_wm-final.pt  --local-dir ./models/Seamless/ || echo "HF_TOKEN error" && \
    ln -s $(readlink -f models/Seamless/pretssel_melhifigan_wm-final.pt) models/Seamless/pretssel_melhifigan_wm.pt || true;

USER user
RUN ["chmod", "+x", "./run_docker.sh"]
CMD ./run_docker.sh

ERROR:

1.759 ERROR: Cannot install fairseq2==0.1.0, fairseq2==0.1.1, fairseq2==0.2.0, fairseq2==0.2.0.dev20231116+cu118, fairseq2==0.2.0.dev20231120+cu118, fairseq2==0.2.0.dev20231123+cu118, fairseq2==0.2.0.dev20231127+cu118, fairseq2==0.2.0.dev20231128+cu118, fairseq2==0.2.0.dev202311282016+cu118, fairseq2==0.2.1.dev202311301403+cu118, fairseq2==0.2.1.dev202312040137+cu118, fairseq2==0.2.1.dev202312071557+cu118, fairseq2==0.2.1.dev202312110349+cu118 and fairseq2==0.3.0.dev202312111507+cu118 because these package versions have conflicting dependencies.
1.760 
1.760 The conflict is caused by:
1.760     fairseq2 0.3.0.dev202312111507+cu118 depends on fairseq2n==0.3.0.dev202312111507+cu118
1.760     fairseq2 0.2.1.dev202312110349+cu118 depends on fairseq2n==0.2.1.dev202312110349+cu118
1.760     fairseq2 0.2.1.dev202312071557+cu118 depends on fairseq2n==0.2.1.dev202312071557+cu118
1.760     fairseq2 0.2.1.dev202312040137+cu118 depends on fairseq2n==0.2.1.dev202312040137+cu118
1.760     fairseq2 0.2.1.dev202311301403+cu118 depends on fairseq2n==0.2.1.dev202311301403+cu118
1.760     fairseq2 0.2.0 depends on fairseq2n==0.2.0
1.760     fairseq2 0.2.0.dev202311282016+cu118 depends on fairseq2n==0.2.0.dev202311282016+cu118
1.760     fairseq2 0.2.0.dev20231128+cu118 depends on fairseq2n==0.2.0.dev20231128+cu118
1.760     fairseq2 0.2.0.dev20231127+cu118 depends on fairseq2n==0.2.0.dev20231127+cu118
1.760     fairseq2 0.2.0.dev20231123+cu118 depends on fairseq2n==0.2.0.dev20231123+cu118
1.760     fairseq2 0.2.0.dev20231120+cu118 depends on fairseq2n==0.2.0.dev20231120+cu118
1.760     fairseq2 0.2.0.dev20231116+cu118 depends on fairseq2n==0.2.0.dev20231116+cu118
1.760     fairseq2 0.1.1 depends on fairseq2n==0.1.1
1.760     fairseq2 0.1.0 depends on fairseq2n==0.1.0
1.760 
1.760 To fix this you could try to:
1.760 1. loosen the range of package versions you've specified
1.760 2. remove package versions to allow pip attempt to solve the dependency conflict
1.760 
1.760 ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts
------
Dockerfile:180
--------------------
 179 |     # change dir since pip needs to seed whl folder
 180 | >>> RUN cd seamless_server && \
 181 | >>>     pip install fairseq2 --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/nightly/pt2.1.1/cu118 && \
 182 | >>>     pip install --no-cache-dir --upgrade -r requirements.txt
 183 |     COPY --from=frontend /app/dist ./streaming-react-app/dist
--------------------
ERROR: failed to solve: process "/bin/sh -c cd seamless_server &&     pip install fairseq2 --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/nightly/pt2.1.1/cu118 &&     pip install --no-cache-dir --upgrade -r requirements.txt" did not complete successfully: exit code: 1

maybe change fairseq2 --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/nightly/pt2.1.1/cu118 to a fix wheel file (so built in a fixed date).

This comment has been hidden

I think it's because the pre-release (daily released) version of fairseq2 is not compatible fairseq2n.

Don't use

fairseq2 --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/nightly/pt2.1.1/cu118

but instead of a file with earlier date listed in

https://fair.pkg.atmeta.com/fairseq2/whl/nightly/pt2.1.1/cu118/fairseq2/

You don't need to build the image to see which one works. Just install in a python environment to see which one is working and modify your docker file.

Hey @MartinSai , sorry about the trouble. I will update the Dockerfile soon, but for M1 Mac it seems currently the fairseq2 version on PyPi is built for Pytorch 2.0.1. So I recommend installing torch 2.0.1 (and the compatible torchaudio, see https://pytorch.org/get-started/previous-versions/#v201), then running pip install fairseq2. You may need to run brew install libsndfile if you haven't already. Please let me know if that helps.

Further, we have installation instructions if you want to run locally here: https://huggingface.co/spaces/facebook/seamless-streaming/blob/main/README.md (the Dockerfile is set up for a linux container). You should change 1) https://huggingface.co/spaces/facebook/seamless-streaming/blob/main/seamless_server/models/SeamlessStreaming/vad_s2st_sc_main.yaml#L19 and 2) https://huggingface.co/spaces/facebook/seamless-streaming/blob/main/seamless_server/src/simuleval_transcoder.py#L195 to "mps" instead of cuda.

AI at Meta org

@MartinSai I actually would recommend first trying out inference by copying this notebook: https://fb.me/mt-neurips to your Mac. Scroll to the bottom to see the SeamlessStreaming standalone streaming inference section. You can verify that the model is running as expected on your mac before testing it in the live demo setting. See related discussion here: https://huggingface.co/spaces/facebook/seamless-streaming/discussions/17#65789a9776b6de7978130e0f

Sign up or log in to comment