Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Build and Push Deploy Images

on:
push:
branches: [ main, master ]
paths:
- 'src/**'
- 'docker/RK3576/VLM/deploy_llm.dockerfile'
- 'docker/RK3576/LLM/deploy_llm.dockerfile'
- 'docker/RK3588/VLM/deploy_vlm.dockerfile'
- 'docker/RK3588/LLM/deploy_llm.dockerfile'
- '.github/workflows/deploy.yml'
- 'lib/**'
workflow_dispatch:

permissions:
contents: read
packages: write

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- platform: rk3576
type: llm
dockerfile: docker/RK3576/LLM/deploy_llm.dockerfile
- platform: rk3576
type: vlm
dockerfile: docker/RK3576/VLM/deploy_vlm.dockerfile
- platform: rk3588
type: llm
dockerfile: docker/RK3588/LLM/deploy_llm.dockerfile
- platform: rk3588
type: vlm
dockerfile: docker/RK3588/VLM/deploy_vlm.dockerfile

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up QEMU (for ARM64 emulation)
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

# Generate image tags:
# Image name: ghcr.io/<owner>/deploy_<type>
# Tags: <platform>-latest, <platform>-<short-sha>
- name: Generate image tags
id: meta
run: |
OWNER_LOWER=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')
IMAGE_NAME="ghcr.io/${OWNER_LOWER}/deploy_${{ matrix.type }}"
SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)
TAGS="${IMAGE_NAME}:${{ matrix.platform }}-latest"
TAGS="${TAGS},${IMAGE_NAME}:${{ matrix.platform }}-${SHORT_SHA}"
echo "tags=${TAGS}" >> $GITHUB_OUTPUT

- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
file: ${{ matrix.dockerfile }}
platforms: linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: |
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.version=${{ github.ref_name }}
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Thumbs.db
*.db

# Environment variables
.env
.env/
.env.local

# Jupyter
Expand Down
2 changes: 1 addition & 1 deletion VLM.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# LLM Fast start
# VLM Fast start

## Step 1: Install Docker

Expand Down
2 changes: 1 addition & 1 deletion docker/RK3576/LLM/DeepSeek-R1-Distill-Qwen.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ ENV RKLLM_MODEL_PATH=/app/models/${MODEL_FILE}

EXPOSE 8001

CMD ["sh", "-c", "python3 /app/fastapi_server_llm.py --rkllm_model_path ${RKLLM_MODEL_PATH} --target_platform rk3576"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3576.sh && python3 /app/fastapi_server_llm.py --rkllm_model_path ${RKLLM_MODEL_PATH} --target_platform rk3576"]
2 changes: 1 addition & 1 deletion docker/RK3576/LLM/Qwen3.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ ENV RKLLM_MODEL_PATH=/app/models/${MODEL_FILE}

EXPOSE 8001

CMD ["sh", "-c", "python3 /app/fastapi_server_llm.py --rkllm_model_path ${RKLLM_MODEL_PATH} --target_platform rk3576"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3576.sh && python3 /app/fastapi_server_llm.py --rkllm_model_path ${RKLLM_MODEL_PATH} --target_platform rk3576"]
25 changes: 25 additions & 0 deletions docker/RK3576/LLM/deploy_llm.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# 第一阶段:环境准备
FROM python:3.10-slim AS base

RUN apt-get update && \
apt-get install -y wget curl git sudo libgomp1 && \
rm -rf /var/lib/apt/lists/*

WORKDIR /app

# 安装依赖
COPY ./src/llm/requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r /app/requirements.txt

# 拷贝运行时库和工具
COPY ./lib/librkllmrt.so /usr/lib/librkllmrt.so
COPY ./src/fix_freq_rk3576.sh /app/fix_freq_rk3576.sh
RUN chmod +x /app/fix_freq_rk3576.sh

# --- 最终阶段 ---
FROM base AS final

COPY ./src/llm/fastapi_server_llm.py /app/

EXPOSE 8001

2 changes: 1 addition & 1 deletion docker/RK3576/VLM/DeepseekOCR.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,4 @@ ENV VISION_MODEL_PATH=/app/models/${VISION_FILE}

EXPOSE 8002

CMD ["sh", "-c", "python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3576.sh && python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
3 changes: 2 additions & 1 deletion docker/RK3576/VLM/InternVL3.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ COPY ./lib/librknnrt.so /usr/lib/librknnrt.so
COPY ./src/fix_freq_rk3576.sh /app/fix_freq_rk3576.sh
RUN chmod +x /app/fix_freq_rk3576.sh


# --- 最终阶段 ---
FROM base AS final
ARG LLM_URL
Expand All @@ -48,4 +49,4 @@ ENV VISION_MODEL_PATH=/app/models/${VISION_FILE}

EXPOSE 8002

CMD ["sh", "-c", "python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3576.sh && python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
3 changes: 2 additions & 1 deletion docker/RK3576/VLM/Qwen2.5-VL.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ COPY ./lib/librknnrt.so /usr/lib/librknnrt.so
COPY ./src/fix_freq_rk3576.sh /app/fix_freq_rk3576.sh
RUN chmod +x /app/fix_freq_rk3576.sh


# --- 最终阶段 ---
FROM base AS final
ARG LLM_URL
Expand All @@ -48,4 +49,4 @@ ENV VISION_MODEL_PATH=/app/models/${VISION_FILE}

EXPOSE 8002

CMD ["sh", "-c", "python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3576.sh && python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
2 changes: 1 addition & 1 deletion docker/RK3576/VLM/Qwen3-VL.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,4 @@ ENV VISION_MODEL_PATH=/app/models/${VISION_FILE}

EXPOSE 8002

CMD ["sh", "-c", "python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3576.sh && python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
28 changes: 28 additions & 0 deletions docker/RK3576/VLM/deploy_vlm.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 第一阶段:环境准备
FROM python:3.10-slim AS base

RUN apt-get update && \
apt-get install -y wget curl git sudo libgomp1 && \
rm -rf /var/lib/apt/lists/*

WORKDIR /app

# 安装依赖
COPY ./src/vlm/requirements.txt /app/requirements.txt
COPY ./src/vlm/fastapi_server_vlm.py /app/fastapi_server_vlm.py
RUN pip install --no-cache-dir -r /app/requirements.txt

# 拷贝运行时库和工具
COPY ./lib/librkllmrt.so /usr/lib/librkllmrt.so
COPY ./lib/librkllm_service.so /usr/lib/librkllm_service.so
COPY ./lib/librknnrt.so /usr/lib/librknnrt.so


COPY ./src/fix_freq_rk3576.sh /app/fix_freq_rk3576.sh
RUN chmod +x /app/fix_freq_rk3576.sh

# --- 最终阶段 ---
FROM base AS final

EXPOSE 8002

2 changes: 1 addition & 1 deletion docker/RK3588/LLM/DeepSeek-R1-Distill-Qwen.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ ENV RKLLM_MODEL_PATH=/app/models/${MODEL_FILE}

EXPOSE 8001

CMD ["sh", "-c", "python3 /app/fastapi_server_llm.py --rkllm_model_path ${RKLLM_MODEL_PATH} --target_platform rk3588"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3588.sh && python3 /app/fastapi_server_llm.py --rkllm_model_path ${RKLLM_MODEL_PATH} --target_platform rk3588"]
2 changes: 1 addition & 1 deletion docker/RK3588/LLM/Gemma3.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ ENV RKLLM_MODEL_PATH=/app/models/${MODEL_FILE}

EXPOSE 8001

CMD ["sh", "-c", "python3 /app/fastapi_server_llm.py --rkllm_model_path ${RKLLM_MODEL_PATH} --target_platform rk3588"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3588.sh && python3 /app/fastapi_server_llm.py --rkllm_model_path ${RKLLM_MODEL_PATH} --target_platform rk3588"]
2 changes: 1 addition & 1 deletion docker/RK3588/LLM/Qwen3.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ ENV RKLLM_MODEL_PATH=/app/models/${MODEL_FILE}

EXPOSE 8001

CMD ["sh", "-c", "python3 /app/fastapi_server_llm.py --rkllm_model_path ${RKLLM_MODEL_PATH} --target_platform rk3588"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3588.sh && python3 /app/fastapi_server_llm.py --rkllm_model_path ${RKLLM_MODEL_PATH} --target_platform rk3588"]
25 changes: 25 additions & 0 deletions docker/RK3588/LLM/deploy_llm.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# 第一阶段:环境准备
FROM python:3.10-slim AS base

RUN apt-get update && \
apt-get install -y wget curl git sudo libgomp1 && \
rm -rf /var/lib/apt/lists/*

WORKDIR /app

# 安装依赖
COPY ./src/llm/requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r /app/requirements.txt

# 拷贝运行时库和工具
COPY ./lib/librkllmrt.so /usr/lib/librkllmrt.so
COPY ./src/fix_freq_rk3588.sh /app/fix_freq_rk3588.sh
RUN chmod +x /app/fix_freq_rk3588.sh

# --- 最终阶段 ---
FROM base AS final

COPY ./src/llm/fastapi_server_llm.py /app/

EXPOSE 8001

2 changes: 1 addition & 1 deletion docker/RK3588/VLM/DeepseekOCR.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,4 @@ ENV VISION_MODEL_PATH=/app/models/${VISION_FILE}

EXPOSE 8002

CMD ["sh", "-c", "python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3588.sh && python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
6 changes: 3 additions & 3 deletions docker/RK3588/VLM/InternVL3.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ COPY ./lib/librkllm_service.so /usr/lib/librkllm_service.so
COPY ./lib/librknnrt.so /usr/lib/librknnrt.so


COPY ./src/fix_freq_rk3576.sh /app/fix_freq_rk3576.sh
RUN chmod +x /app/fix_freq_rk3576.sh
COPY ./src/fix_freq_rk3588.sh /app/fix_freq_rk3588.sh
RUN chmod +x /app/fix_freq_rk3588.sh

# --- 最终阶段 ---
FROM base AS final
Expand Down Expand Up @@ -48,4 +48,4 @@ ENV VISION_MODEL_PATH=/app/models/${VISION_FILE}

EXPOSE 8002

CMD ["sh", "-c", "python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3588.sh && python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
2 changes: 1 addition & 1 deletion docker/RK3588/VLM/Qwen2-VL.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,4 @@ ENV VISION_MODEL_PATH=/app/models/${VISION_FILE}

EXPOSE 8002

CMD ["sh", "-c", "python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3588.sh && python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
2 changes: 1 addition & 1 deletion docker/RK3588/VLM/Qwen2.5-VL.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,4 @@ ENV VISION_MODEL_PATH=/app/models/${VISION_FILE}

EXPOSE 8002

CMD ["sh", "-c", "python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3588.sh && python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
3 changes: 2 additions & 1 deletion docker/RK3588/VLM/Qwen3-VL.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ COPY ./lib/librknnrt.so /usr/lib/librknnrt.so
COPY ./src/fix_freq_rk3588.sh /app/fix_freq_rk3588.sh
RUN chmod +x /app/fix_freq_rk3588.sh


# --- 最终阶段 ---
FROM base AS final
ARG LLM_URL
Expand Down Expand Up @@ -50,4 +51,4 @@ ENV VISION_MODEL_PATH=/app/models/${VISION_FILE}

EXPOSE 8002

CMD ["sh", "-c", "python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
CMD ["sh", "-c", "bash /app/fix_freq_rk3588.sh && python3 /app/fastapi_server_vlm.py --llm_model ${LLM_MODEL_PATH} --encoder_model ${VISION_MODEL_PATH}"]
27 changes: 27 additions & 0 deletions docker/RK3588/VLM/deploy_vlm.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# 第一阶段:环境准备
FROM python:3.10-slim AS base

RUN apt-get update && \
apt-get install -y wget curl git sudo libgomp1 && \
rm -rf /var/lib/apt/lists/*

WORKDIR /app

# 安装依赖
COPY ./src/vlm/requirements.txt /app/requirements.txt
COPY ./src/vlm/fastapi_server_vlm.py /app/fastapi_server_vlm.py
RUN pip install --no-cache-dir -r /app/requirements.txt

# 拷贝运行时库和工具
COPY ./lib/librkllmrt.so /usr/lib/librkllmrt.so
COPY ./lib/librkllm_service.so /usr/lib/librkllm_service.so
COPY ./lib/librknnrt.so /usr/lib/librknnrt.so


COPY ./src/fix_freq_rk3588.sh /app/fix_freq_rk3588.sh
RUN chmod +x /app/fix_freq_rk3588.sh

# --- 最终阶段 ---
FROM base AS final

EXPOSE 8002
Loading