Browse Source

Add Dockerfile (#82)

This commit adds a Dockerfile that sets up the environment for Petals, as well as a GitHub Action to build the corresponding image on each push to the main branch.
Max Ryabinin 2 years ago
parent
commit
5c2990e1b5
3 changed files with 84 additions and 1 deletions
  1. 54 0
      .github/workflows/push-docker-image.yaml
  2. 29 0
      Dockerfile
  3. 1 1
      requirements.txt

+ 54 - 0
.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 }}

+ 29 - 0
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

+ 1 - 1
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