facebookresearch / facebookresearch/detectron2

`ERROR: Failed building wheel for detectron2` when installing detectron2 through a docker image in a DigitalOcean droplet

Open
#4,994 6 comments 1 reaction 0 assignees View on GitHub
Dominant language
Python
Stars
34.7k
Forks
7.9k
PR merge metrics
No merged PRs in 30d

Description

I'm running into an error when installing `detectron2` in a docker image in a digital ocean droplet but it works with no problems when I build the docker image in my local machine.

EDIT: Upon rebuilding with `--no-cache` the dockerfile below doesn't include detectron when building for some reason. Didn't have this before.

Here's my dockerfile:
```
FROM python:3.10-slim-buster

# Update package lists
RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 gcc g++ git build-essential libpoppler-cpp-dev pkg-config poppler-utils tesseract-ocr libtesseract-dev -y

# Make working directories
RUN mkdir -p /app
WORKDIR /app
# Copy the requirements.txt file to the container
COPY requirements.txt .

# Install dependencies
RUN pip install --upgrade pip

RUN pip install torch torchvision torchaudio

RUN pip install -r requirements.txt

RUN pip install 'git+https://github.com/facebookresearch/detectron2.git@v0.4#egg=detectron2'

# Copy the .env file to the container
COPY .env .

# Copy every file in the source folder to the created working directory
COPY . .

# Expose the port that the application will run on
EXPOSE 8080

# Start the application
CMD ["python3.10", "uvicorn", "-m", "main:app", "--proxy-headers", "--host", "0.0.0.0", "--port", "8080"]
```

I'm using a basic digital ocean droplet with 2 GB Memory / 2 Intel vCPUs / 60 GB Disk / and running Ubuntu 22.10 x64.

Here's the error:
```
Building wheels for collected packages: detectron2, fvcore
Building wheel for detectron2 (setup.py): started
Building wheel for detectron2 (setup.py): still running...
Building wheel for detectron2 (setup.py): still running...
Building wheel for detectron2 (setup.py): finished with status 'error'
error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [397 lines of output]
running bdist_wheel
/usr/local/lib/python3.10/site-packages/torch/utils/cpp_extension.py:476: UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja.. Falling back to using the slow distutils backend.

...
...
...

from /tmp/pip-req-build-1jp0qvnm/detectron2/layers/csrc/vision.cpp:3:
/usr/local/lib/python3.10/site-packages/torch/include/pybind11/pybind11.h: In instantiation of ‘class pybind11::class_’:
/tmp/pip-req-build-1jp0qvnm/detectron2/layers/csrc/vision.cpp:105:73: required from here
/usr/local/lib/python3.10/site-packages/torch/include/pybind11/pybind11.h:1479:7: warning: ‘pybind11::class_’ declared with greater visibility than its base ‘pybind11::detail::generic_type’ [-Wattributes]
class class_ : public detail::generic_type {
^~~~~~
/usr/local/lib/python3.10/site-packages/torch/include/pybind11/pybind11.h: In instantiation of ‘class pybind11::class_’:
/tmp/pip-req-build-1jp0qvnm/detectron2/layers/csrc/vision.cpp:107:67: required from here
/usr/local/lib/python3.10/site-packages/torch/include/pybind11/pybind11.h:1479:7: warning: ‘pybind11::class_’ declared with greater visibility than its base ‘pybind11::detail::generic_type’ [-Wattributes]
gcc: fatal error: Killed signal terminated program cc1plus
compilation terminated.
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for detectron2
Running setup.py clean for detectron2
Building wheel for fvcore (setup.py): started
Building wheel for fvcore (setup.py): finished with status 'done'
Created wheel for fvcore: filename=fvcore-0.1.5.post20221221-py3-none-any.whl size=61405 sha256=f68cb822c5d8cc162abe548a6080cc96afae83ad7f5dfdcc836fe6cf5ae14b81
Stored in directory: /root/.cache/pip/wheels/01/c0/af/77c1cf53a1be9e42a52b48e5af2169d40ec2e89f7362489dd0
Successfully built fvcore
Failed to build detectron2
ERROR: Could not build wheels for detectron2, which is required to install pyproject.toml-based projects
```

I've also tried with this dockerfile:
```
FROM python:3.10-slim-buster

# Update package lists
RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 gcc g++ git build-essential libpoppler-cpp-dev pkg-config poppler-utils tesseract-ocr libtesseract-dev -y

# Make working directories
RUN mkdir -p /app
WORKDIR /app
# Copy the requirements.txt file to the container
COPY requirements.txt .

# Install dependencies
RUN pip install --upgrade pip

RUN pip install torch torchvision torchaudio

RUN pip install -r requirements.txt

RUN pip install 'git+https://github.com/facebookresearch/detectron2.git'

# Copy the .env file to the container
COPY .env .

# Copy every file in the source folder to the created working directory
COPY . .

# Expose the port that the application will run on
EXPOSE 8080

# Start the application
CMD ["python3.10", "-m", "uvicorn", "main:app", "--proxy-headers", "--host", "0.0.0.0", "--port", "8080"]
```

But it doesn't install detectron on my local machine.

Contributor guide

Open the contributing guide

Research direction

Start with the supplied Dockerfile and requirements.txt, then reproduce the `pip install torch torchvision torchaudio` and detectron2 installation steps on the stated Ubuntu droplet. Compare the local and droplet builds, including the reported GCC termination, and consider the issue done only when detectron2 installs successfully in the Docker image.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, python, pytorch, ubuntu
Domain
cloud, devops, machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.