diff --git a/.github/workflows/push-docker-image.yaml b/.github/workflows/push-docker-image.yaml new file mode 100644 index 0000000..cbad1b2 --- /dev/null +++ b/.github/workflows/push-docker-image.yaml @@ -0,0 +1,54 @@ +name: Push to Docker Hub + +on: + push: + branches: [ main ] + tags: + - "*.*.*" + pull_request: + branches: [ main ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Docker meta + id: meta + uses: crazy-max/ghaction-docker-meta@v2 + with: + # list of Docker images to use as base name for tags + images: | + learningathome/petals + # generate Docker tags based on the following events/attributes + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to Docker Hub + if: github.event_name != 'pull_request' + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + context: . + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5de479d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +FROM nvcr.io/nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04 +LABEL maintainer="bigscience-workshop" +LABEL repository="petals" + +WORKDIR /home +# Set en_US.UTF-8 locale by default +RUN echo "LC_ALL=en_US.UTF-8" >> /etc/environment + +# Install packages +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + wget \ + git \ + ed \ + && apt-get clean autoclean && rm -rf /var/lib/apt/lists/{apt,dpkg,cache,log} /tmp/* /var/tmp/* + +RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O install_miniconda.sh && \ + bash install_miniconda.sh -b -p /opt/conda && rm install_miniconda.sh +ENV PATH="/opt/conda/bin:${PATH}" + +RUN conda install python~=3.10 pip && \ + pip install --no-cache-dir "torch>=1.12" torchvision torchaudio && \ + conda clean --all && rm -rf ~/.cache/pip + +COPY . petals/ +RUN pip install -e petals[dev] + +WORKDIR /home/petals/ +CMD bash diff --git a/requirements.txt b/requirements.txt index 3a495bf..e553c61 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,6 @@ accelerate==0.10.0 huggingface-hub==0.7.0 transformers==4.21.3 protobuf>=3.20.3,<4.0dev -git+https://github.com/learning-at-home/hivemind@be88b4280cdd87432168e1da238e532f1364078b +hivemind>=1.1.3 humanfriendly async-timeout>=4.0.2