Spaces:
Running
on
T4
[Bug] Error when running DockerFile on a MacM1
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).
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.
@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