**環境說明:**從系統鏡像開始打造python大模型鏡像,之前是人工手動裝的方式,并且模型和依賴在公網中,對于離線交付環境不太友好,所以打造的離線化交付版本
Dockerfile:
FROM centos:7.9
ENV PYTHONIOENCODING=utf-8
ENV NCCL_DEBUG=INFO
##下載阿里的鏡像源,裝一些基礎命令依賴等
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo && yum -y install python3 python wget bind
## 項目啟動的一些路徑需要創建
RUN mkdir -p /export && chmod -R 777 /export && mkdir -p /root/logs && mkdir -p /deploy/app
## 裝miniconda的腳本
COPY deploy-miniconda.sh /deploy
## 項目代碼cp
COPY app /deploy/app
## 工作目錄
WORKDIR /deploy/app
## python項目的依賴文件寫在里面,供pip install 用
ADD requirements.txt /tmp/requirements.txt
## 大模型知識庫的文件,ADD和COPY指令需要追加目錄根,不然會將文件的內容拷進去,用下面目錄到目錄的方式也行
COPY XXX /deploy/XXX## 安裝miniconda
RUN sh /deploy/deploy-miniconda.sh
##下面是手動裝遇到需要手動輸入的解決方式,現在用腳本解決了,不然安裝miniconda需要按回車N次
#RUN cd /deploy && sh -c '/bin/echo -e "\nyes\nyes" | /bin/bash ./miniconda.sh'
## 安裝好miniconda設置環境變量
ENV PATH="/root/miniconda3/bin:${PATH}"
ENV ANACONDA_HOME=/root/miniconda3/
## source進入python開發環境
RUN export PATH="/root/miniconda3/bin:${PATH}" && export ANACONDA_HOME=/root/miniconda3/ && source activate
##安裝項目依賴
RUN export LANG=zh_CN.UTF-8 && pip install --default-timeout=1000 -r /tmp/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
## 啟動腳本
RUN chmod 777 /deploy/app/start.sh
## 啟動服務
CMD ["python", "-u", "server.py"]
## 原本用下面的方式,因為source過,容器內部環境有變,會提示找不到路徑
#CMD sh /deploy/app/start.sh
#ENTRYPOINT /deploy/app/start.sh
大模型,想想還是打個碼吧,雖然是開源的
安裝miniconda的腳本
#!/usr/bin/bash
set -e
wget "https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py311_24.1.2-0-Linux-x86_64.sh" -O ~/miniconda.sh
bash ~/miniconda.sh -b -p $HOME/miniconda3
~/miniconda3/bin/conda init $(echo $SHELL | awk -F '/' '{print $NF}')
echo 'Successfully installed miniconda...'
echo -n 'Conda version: '
~/miniconda3/bin/conda --version
echo -e '\n'
exec bash
清華源地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
### 制作鏡像
docker build -f Dockerfile -t model:v1 .
### 測試
docker run -it -d --name py-model model:v1 -p xxx:xxx
python報錯
huggingface_hub.errors.HFValidationError: Repo id must be in the form ‘repo_name‘ or ‘namespace/repo
這個就是大模型數據路徑指的不對,修改成正確的即可