-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDockerfile.standalone
130 lines (109 loc) · 3.84 KB
/
Dockerfile.standalone
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#git clone https://github.com/tripathiarpan20/text-generation-docker.git
#cd text-generation-docker
#wget https://raw.githubusercontent.com/tripathiarpan20/self-improvement-4all/main/Dockerfile.standalone
#rm Dockerfile
#mv Dockerfile.standalone Dockerfile
#Original script/forked from: https://github.com/ashleykleynhans/text-generation-docker/blob/main/Dockerfile
# Stage 1: Base
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 as base
ARG COMMIT=2b675533f75a9441c6ba8e52bd5b82b68eedf99c
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ENV DEBIAN_FRONTEND=noninteractive \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=on \
SHELL=/bin/bash
# Create workspace working directory
WORKDIR /workspace
# Install Ubuntu packages
RUN apt update && \
apt -y upgrade && \
apt install -y --no-install-recommends \
software-properties-common \
python3.10-venv \
python3-pip \
python3-dev \
python3-tk \
bash \
dos2unix \
git \
git-lfs \
ncdu \
nginx \
net-tools \
openssh-server \
libglib2.0-0 \
libsm6 \
libgl1 \
libxrender1 \
libxext6 \
ffmpeg \
wget \
curl \
psmisc \
rsync \
vim \
zip \
unzip \
htop \
pkg-config \
libcairo2-dev \
libgoogle-perftools4 libtcmalloc-minimal4 \
apt-transport-https ca-certificates && \
update-ca-certificates && \
apt clean && \
rm -rf /var/lib/apt/lists/* && \
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
ENV PATH="/usr/local/cuda/bin:${PATH}"
# Set Python
RUN ln -s /usr/bin/python3.10 /usr/bin/python
# Stage 2: Install Web UI and python modules
FROM base as setup
# Install Torch
RUN python3 -m venv /venv && \
source /venv/bin/activate && \
pip3 install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 && \
pip3 install --no-cache-dir xformers && \
deactivate
# Clone the git repo of Text Generation Web UI and set version
WORKDIR /
RUN git clone https://github.com/oobabooga/text-generation-webui && \
cd /text-generation-webui && \
git checkout ${COMMIT} && \
wget -P instruction-templates/ https://raw.githubusercontent.com/tripathiarpan20/self-improvement-4all/main/prompt%20templates/Template_recalled_dialogue_2.yaml && \
wget -P instruction-templates/ https://raw.githubusercontent.com/tripathiarpan20/self-improvement-4all/main/prompt%20templates/Template2.yaml
# Install the dependencies for Text Generation Web UI
# Including all extensions
WORKDIR /text-generation-webui
RUN source /venv/bin/activate && \
pip3 install -r requirements.txt && \
bash -c 'for req in extensions/*/requirements.txt ; do pip3 install -r "$req" ; done' && \
deactivate
# Install runpodctl
RUN wget https://github.com/runpod/runpodctl/releases/download/v1.10.0/runpodctl-linux-amd -O runpodctl && \
chmod a+x runpodctl && \
mv runpodctl /usr/local/bin
# Install Jupyter
RUN pip3 install -U --no-cache-dir jupyterlab \
jupyterlab_widgets \
ipykernel \
ipywidgets \
gdown
# NGINX Proxy
COPY nginx/nginx.conf /etc/nginx/nginx.conf
COPY nginx/api.html nginx/502.html /usr/share/nginx/html/
COPY nginx/template-readme.md /usr/share/nginx/html/README.md
# Copy startup script for Oobabooba Web UI
COPY start_textgen_server.sh /text-generation-webui/
# Copy scripts to download models
COPY fetch_model.py /text-generation-webui/
COPY download_model.py /text-generation-webui/
# Set up the container startup script
WORKDIR /
COPY pre_start.sh start.sh fix_venv.sh ./
RUN chmod +x /start.sh && \
chmod +x /pre_start.sh && \
chmod +x /fix_venv.sh && \
chmod a+x /text-generation-webui/start_textgen_server.sh
# Start the container
SHELL ["/bin/bash", "--login", "-c"]
CMD [ "/start.sh" ]