Skip to content

Commit

Permalink
Merge pull request #353 from komninoschatzipapas/main
Browse files Browse the repository at this point in the history
Add Dockerfile
  • Loading branch information
bghira authored Apr 22, 2024
2 parents 4f9086d + c4b188d commit b7bcfb9
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 0 deletions.
82 changes: 82 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# SimpleTuner needs CU118
FROM nvidia/cuda:11.8.0-runtime-ubuntu22.04

# /workspace is the default volume for Runpod & other hosts
WORKDIR /workspace

# Update apt-get
RUN apt-get update -y

# Prevents different commands from being stuck by waiting
# on user input during build
ENV DEBIAN_FRONTEND noninteractive

# Install openssh & git
RUN apt-get install -y --no-install-recommends openssh-server \
openssh-client \
git \
git-lfs

# Installl misc unix libraries
RUN apt-get install -y wget \
curl \
tmux \
tldr \
nvtop \
vim \
rsync \
net-tools \
less \
iputils-ping \
7zip \
zip \
unzip \
htop \
inotify-tools

# Set up git to support LFS, and to store credentials; useful for Huggingface Hub
RUN git config --global credential.helper store && \
git lfs install

# Install Python VENV
RUN apt-get install -y python3.10-venv

# Ensure SSH access. Not needed for Runpod but is required on Vast and other Docker hosts
EXPOSE 22/tcp

# Install misc Python & CUDA Libraries
RUN apt-get update -y && apt-get install -y python3 python3-pip libcudnn8 libcudnn8-dev
RUN python3 -m pip install pip --upgrade

# HF
ARG HUGGING_FACE_HUB_TOKEN
ENV HUGGING_FACE_HUB_TOKEN=$HUGGING_FACE_HUB_TOKEN
ENV HF_HOME=/workspace/huggingface

RUN pip3 install "huggingface_hub[cli]"

RUN huggingface-cli login --token "$HUGGING_FACE_HUB_TOKEN" --add-to-git-credential

# WanDB
ARG WANDB_TOKEN
ENV WANDB_TOKEN=$WANDB_TOKEN

RUN pip3 install wandb

RUN wandb login "$WANDB_TOKEN"

# Clone SimpleTuner
RUN git clone https://github.com/bghira/SimpleTuner --branch release
# RUN git clone https://github.com/bghira/SimpleTuner --branch main # Uncomment to use latest (possibly unstable) version

# Install SimpleTuner
RUN pip3 install poetry
RUN cd SimpleTuner && python3 -m venv .venv && poetry install --no-root
RUN chmod +x SimpleTuner/train_sdxl.sh
RUN chmod +x SimpleTuner/train_sd2x.sh

# Copy start script with exec permissions
COPY --chmod=755 docker-start.sh /start.sh

# Dummy entrypoint
ENTRYPOINT [ "/start.sh" ]
30 changes: 30 additions & 0 deletions docker-start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash

# Export useful ENV variables, including all Runpod specific vars, to /etc/rp_environment
# This file can then later be sourced in a login shell
echo "Exporting environment variables..."
printenv |
grep -E '^RUNPOD_|^PATH=|^HF_HOME=|^HUGGING_FACE_HUB_TOKEN=|^_=' |
sed 's/^\(.*\)=\(.*\)$/export \1="\2"/' >>/etc/rp_environment

# Add it to Bash login script
echo 'source /etc/rp_environment' >>~/.bashrc

# Vast.ai uses $SSH_PUBLIC_KEY
if [[ $SSH_PUBLIC_KEY ]]; then
PUBLIC_KEY="${SSH_PUBLIC_KEY}"
fi

# Runpod uses $PUBLIC_KEY
if [[ $PUBLIC_KEY ]]; then
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "${PUBLIC_KEY}" >>~/.ssh/authorized_keys
chmod 700 -R ~/.ssh
fi

# Start SSH server
service ssh start

# 🫡
sleep infinity

0 comments on commit b7bcfb9

Please sign in to comment.