大模型项目(二)国产化kylin适配
大模型项目(二)国产化kylin适配
1.python部署
1.0.删除miniconda及其所有虚拟环境
一开始使用了miniconde,但感觉不如直接使用venv方便,所以删除minicode,删除别的应用一样的方法。
conda -V #查看安装版本
find ~ -name 'miniconda*' #找到安装地址
rm -rf /home/robot/miniconda3 #根据安装地址删除
conda -V #确认删除成功
1.1.查看系统版本和内核
因为外网的环境要导入内网,所以首先要确定内外网的系统环境一致。我使用的是arm的麒麟v10。
cat /etc/issue
cat os-release
uname -a
1.2.安装全量python环境
麒麟系统自带了python2和3版本的但都是轻量,没有pip等一系列包,所以需要安装一个全量的python环境,然后以这个环境创建venv虚拟环境,我这里使用python3.11.9版本,因为一开始使用的3.12.2版本不兼容哪个库来着,然后和别的公司技术交流,感觉使用3.11的比较多。
1.2.1.查看系统自带python环境
ls -l /usr/bin/python3* #查看你有多少python环境
python3 -V
which python3 #如果在/usr/bin/python3,大概率就是环境自带的轻量级python
python3 -c "import numpy,pandas" #出错,大概率轻量级
1.2.2.安装系统必要依赖
这里需要安装系统依赖包,然后导入到内网的时候也要有这些包进行安装,不然会出现_ssl等底层链接错误
sudo apt update
sudo apt-get update
sudo apt-get install -y libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev tk-dev build-essential
1.2.3.安装全量python环境
wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz #1.下载python源码
tar -xvzf Python-3.11.9.tgz #2.解压
cd Python-3.11.9
./configure --prefix=/usr/local/python3.11 --enable-optimizations --with-ensurepip=install# 3. 配置
make -j$(nproc) #4.编译
sudo make altinstall# 5. 安装(避免覆盖系统自带 python)
/usr/local/python3.11/bin/python3.11 -m pip -V #4.查看安装好的全量python版本
更换镜像源,这样pip安装的时候使用国内源会快一些
sudo vi /etc/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
pip config list #验证是否生效
1.2.4.创建虚拟环境
创建虚拟环境,安装python包
/usr/local/python3.11/bin/python3.11 -m venv ~/py311
source ~/py311/bin/activate
python -V
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cpu
pip install -r requirements.txt --ignore-installed #刪掉錯誤的
pip install --upgrade --force-reinstall transformers tokenizers sentence-transformers
pip install "transformers==4.44.2"
如果没有pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
然后在这个虚拟环境里面运行自己的代码,进行测试。
1.2.4.git模型需注意
git模型文件的时候,下载很快,但模型根本没下下来,那么就需要下面操作
sudo apt-get install git-lfs
git lfs install
git lfs pull #在模型文件的目录下,这样才会把bin这种大文件下载完整
1.3.打包环境
1.3.1.打包系统必要依赖
mkdir offline_pkgs_ssl
sudo apt-get install --download-only libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev tk-dev build-essential
cp /var/cache/apt/archives/*.deb offline_pkgs_ssl/
tar czvf offline_pkgs_ssl.tar.gz offline_pkgs_ssl/
1.3.2.打包python环境依赖
pip freeze > requirements.txt
pip download -r requirements.txt -d ./offline_pkgs_python
如果有不兼容那么可以手动修改requirements.txt。
1.4.内网部署环境
1.4.1.安装系统必要依赖
tar xzvf offline_pkgs_ssl.tar.gz
cd offline_pkgs_ssl
sudo dpkg -i *.deb
sudo apt-get install -f # 用本地包补齐依赖
1.4.2.安装python环境依赖
首先和外网一样,拿到下载的python安装包,进行全量python环境的安装,然后创建虚拟环境,然后安装python环境依赖包。
/usr/local/python3.11/bin/python3.11 -m venv ~/py311
pip install --no-index --find-links=./offline_pkgs_python -r requirements.txt
要是没有pip
python ~/offline_pkgs/get-pip.py --no-index --find-links=offline_pkgs_python
pip download pip setuptools wheel -d ./offline_pip
python3 -m ensurepip --upgrade # 如果支持
python3 ./offline_pip/pip-*.whl/pip install . --no-index
2.docker部署
2.1. 安装 Docker
sudo apt-get update
sudo apt-get install -y docker.io #1.用 apt 安装docker
docker --version #2.检查是否成功
sudo systemctl start docker #3.启动
sudo systemctl enable docker
2.2.构建镜像
2.2.1.更换国内源
sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json
{
"registry-mirrors":[
"https://docker.m.daocloud.io",
"https://registry.docker-cn.com",
"https://hub-mirror.c.163.com" ,
"https://dockerproxy.com",
"https://pee6w651.mirror.aliyuncs.com"
]
}
sudo systemctl daemon-reexec
sudo systemctl restart docker
2.2.2.创建Dockerfile
在项目的同级目录下创建Dockerfile
FROM python:3.11.9 #自己项目的python环境版本
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt -i https://pypi.tsinghua.edu.cn/simple #安装python依赖包
COPY . .
CMD ["python","forth_main.py"] #运行项目启动文件
2.2.3.构建镜像
docker build -t myapp:1.0 . #构建镜像,名叫myapp:1.0
docker images #查看镜像
2.3.运行测试
使用myapp:1.0镜像运行容器,端口映射物理机5000映射容器5000,目录volumn挂载物理机/home/kylin/zoe映射容器/app。这样容器里的 /app 就是宿主机的/home/kylin/zoe/docker_dir/AI0904代码目录,修改宿主机目录下代码,容器里立即生效
docker run -it --rm -p 5000:5000 -v /home/kylin/zoe/docker_dir/AI0904:/app myapp:1.0
然后使用wget发送post请求进行本地物理机测试
wget --header="Content-Type: application/json" --post-data='{"query":"飞行任务","deep":false}' -O - http://127.0.0.1:5000/ai/map
2.4.导出docker和镜像
apt-get download docker.io #下载 docker.io_xxx.deb
docker save -o myapp.tar myapp:1.0 # 下载镜像成tar包
把这两个文件导出
2.5.内网部署
sudo dpkg -i docker.io_xxx.deb #安装docker
sudo apt-get -f install # 用本地依赖包补齐
docker load -i myapp.tar #导入镜像
docker run -it --rm -p 5000:5000 -v /home/kylin/zoe/docker_dir/AI0904:/app myapp:1.0#运行服务
这个时候修改挂载在/home/kylin/zoe/docker_dir/AI0904目录下的代码进行调试即可。
2.6.docker常用操作
2.6.1.镜像
docker images # 查看本地镜像
docker rmi <镜像ID或名字> # 删除指定镜像
docker image prune -f # 删除未被使用的镜像
docker system prune -a -f # 删除所有无用镜像、容器、网络、缓存
2.6.2.容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器(包括已停止的)
docker run -d --name mycontainer -p 5000:5000 myapp:1.0 # 启动一个新的容器(后台运行)
docker start <容器ID或名字> # 启动一个已停止的容器
docker stop <容器ID或名字># 停止指定容器
docker stop $(docker ps -q)# 停止所有运行中的容器
docker rm <容器ID或名字># 删除指定容器
docker container prune -f # 删除所有已停止的容器
docker exec -it <容器ID或名字> /bin/bash # 进入容器交互终端
更多推荐

所有评论(0)