跳到主要内容

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 源码和模型层。

casaos_docker_1.webp

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 服务

casaos_docker_2.webp

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

    casaos_docker_3.webp

    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 中进行安装