ipex-llm/docker/llm/finetune/qlora/cpu/docker/Dockerfile.k8s
Qiyuan Gong de4bb97b4f
Remove accelerate 0.23.0 install command in readme and docker (#11333)
*ipex-llm's accelerate has been upgraded to 0.23.0. Remove accelerate 0.23.0 install command in README and docker。
2024-06-17 17:52:12 +08:00

86 lines
3.6 KiB
Docker

# USE TO BUILD A MORE SLIM IMAGE FOR K8S
FROM ubuntu:20.04 as key-getter
ARG http_proxy
ARG https_proxy
RUN apt-get update && \
apt-get install -y curl gpg && \
curl -fsSL https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB | gpg --dearmor | tee /root/intel-oneapi-archive-keyring.gpg
FROM debian:bullseye as builder
ARG http_proxy
ARG https_proxy
ENV TZ=Asia/Shanghai
ARG PIP_NO_CACHE_DIR=false
ENV TRANSFORMERS_COMMIT_ID=95fe0f5
# add public key
COPY --from=key-getter /root/intel-oneapi-archive-keyring.gpg /usr/share/keyrings/intel-oneapi-archive-keyring.gpg
RUN echo "deb [signed-by=/usr/share/keyrings/intel-oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main " > /etc/apt/sources.list.d/oneAPI.list
RUN mkdir -p /ipex_llm/data && mkdir -p /ipex_llm/model && \
# Install python 3.11.1
apt-get update && apt-get install -y openssh-server openssh-client libcap2-bin gnupg2 ca-certificates \
curl wget gpg gpg-agent git \
gcc g++ make libunwind8-dev zlib1g-dev libssl-dev libffi-dev && \
mkdir -p /opt/python && \
cd /opt/python && \
wget https://www.python.org/ftp/python/3.11.1/Python-3.11.1.tar.xz && \
tar -xf Python-3.11.1.tar.xz && \
cd Python-3.11.1 && \
./configure --enable-optimizations --with-zlib && \
make altinstall && \
rm /usr/bin/python3 && \
# Create a symbolic link pointing to Python 3.11 at /usr/bin/python3
ln -s /opt/python/Python-3.11.1/python /usr/bin/python3 && \
# Create a symbolic link pointing to /usr/bin/python3 at /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python && \
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
python3 get-pip.py && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
mkdir -p /var/run/sshd && \
setcap CAP_NET_BIND_SERVICE=+eip /usr/sbin/sshd && \
apt remove libcap2-bin -y && \
sed -i "s/[ #]\(.*StrictHostKeyChecking \).*/ \1no/g" /etc/ssh/ssh_config && \
echo " UserKnownHostsFile /dev/null" >> /etc/ssh/ssh_config && \
sed -i "s/[ #]\(.*Port \).*/ \1$port/g" /etc/ssh/ssh_config && \
sed -i "s/#\(StrictModes \).*/\1no/g" /etc/ssh/sshd_config && \
sed -i "s/#\(Port \).*/\1$port/g" /etc/ssh/sshd_config && \
useradd -m mpiuser && \
cp -r /etc/ssh/sshd_config /home/mpiuser/.sshd_config && \
echo "Port $port" >> /home/mpiuser/.sshd_config && \
# install pytorch 2.1.0
pip install --upgrade pip && \
export PIP_DEFAULT_TIMEOUT=100 && \
pip install --upgrade torch==2.1.0 --index-url https://download.pytorch.org/whl/cpu && \
# install CPU ipex-llm
pip install --pre --upgrade ipex-llm[all] && \
# install ipex and oneccl
pip install intel_extension_for_pytorch==2.0.100 && \
pip install oneccl_bind_pt -f https://developer.intel.com/ipex-whl-stable && \
# install huggingface dependencies
pip install datasets transformers==4.36.0 && \
pip install fire peft==0.10.0 && \
# install basic dependencies
apt-get update && apt-get install -y curl wget gpg gpg-agent && \
# Install Intel oneAPI keys.
apt remove -y gnupg2 ca-certificates && \
apt autoremove -y && \
apt update && \
apt install -y --no-install-recommends dnsutils intel-oneapi-mpi && \
rm -rf /var/lib/apt/lists/* && \
# get qlora example code
cd /ipex_llm && \
git clone https://github.com/intel-analytics/IPEX-LLM.git && \
mv IPEX-LLM/python/llm/example/CPU/QLoRA-FineTuning/* . && \
rm -r IPEX-LLM && \
chown -R mpiuser /ipex_llm
# for k8s
COPY ./ipex-llm-qlora-finetuing-entrypoint.sh /ipex_llm/ipex-llm-qlora-finetuing-entrypoint.sh
USER mpiuser
ENTRYPOINT ["/bin/bash"]