CasaOS 构建自定义大模型软件
App 构建方法
在参考 Apo 构建方法前可先参考 手动部署应用 文档熟悉整个应用部署流程过程与细节。
CasaOS 的第三方应用利用 docker image 创建容器并安装到 CasaOS 中,CasaOS 可对容器配置进行设置与管理, 在此之前我们需要准备我们的 Docker image 且 Dockerfile, 这里将以 radxa stable diffusion 为例子详细讲述大模型 App 的 docker image 的构建过程。
radxa 大模型 App image 是以 ubuntu20.04 为基础进行四层 layer 的方式进行拆分构建,每层的构建都是基于上一层,分别是 ubuntu20.04 层, SDK base 层,App env 运行所需环境层,与顶层 App code + model 源码和模型层。
SDK base 层
在SDK base 中安装了必备的工具: libncurses5, libatomic1, kmod, python3, python3-pip, vim
并安装了 sophon SDK: libsophon-0.5.0, sophon-ffmpeg_0.7.1, sophon-opencv_0.7.1 这三个 deb 与 sophon-sail 和 tpu-perf 模块
Dockerfile
FROM ubuntu:20.04
LABEL maintainer="Zifeng ZHANG <[email protected]>"
WORKDIR /tools
COPY tools .
RUN apt update && \
apt install -y libncurses5 libatomic1 kmod python3 python3-pip vim && \
apt install -y ./sophon-soc-libsophon_0.5.0_arm64.deb && \
apt install -y ./sophon-mw-soc-sophon-ffmpeg_0.7.1_arm64.deb && \
apt install -y ./sophon-mw-soc-sophon-opencv_0.7.1_arm64.deb && \
pip3 install ./sophon_arm-3.7.0-py3-none-any.whl && \
pip3 install ./tpu_perf-1.2.31-py3-none-manylinux2014_aarch64.whl
App env 层
App env 层基于 SDK base 镜像基础上添加 App 运行必须的环境,例如 python modules, 和一些特殊需要安装的 deb, 拆分此层的目的是后续 App 源码更新在环境不变的情况下减少安装速度,并且可通过 App env + SDK base 镜像外部挂载 App 源码和模型卷可直接启动服务, 可在 此层加入 CMD 默认启动 App 服务
Dockerfile
FROM radxazifeng278/radxa_min:0.1.4
LABEL maintainer="Zifeng ZHANG <[email protected]>"
WORKDIR /env
COPY requirements.txt .
RUN pip3 install -r requirements.txt
WORKDIR /StableDiffusion_v2-TPU
CMD ["bash", "run.sh"]
App source code with model 层
App source code with model 层将基于上一 App env 镜像中放入源码与模型从而构建成一个完整的 App,并且加入 App 启动命令 CMD
Dockerfile
FROM radxazifeng278/radxa_sd_env:0.1.0
LABEL maintainer="Zifeng ZHANG <[email protected]>"
WORKDIR /StableDiffusion_v2-TPU
COPY StableDiffusion_v2-TPU .
CMD ["bash", "run.sh"]
当得到完整的 App 镜像后可参考 安装 radxa 一键启动大模型 Apps 对自定义 App 在 CasaOS 中进行安装