llm_api使用python开发,当项目上需要落地招标文件在线检能力时,需要在项目服务器上部署llm_api。在实施过程中遇到了两个问题:1. 使用miniconda部署,步骤比较繁琐;2. 项目上存在不同的CPU架构,需要进行适配。

为了解决上述问题,采用docker buildx构建多平台镜像,部署时只需要将镜像导入运行,即可完成,方便快捷。(实际操作在wsl2下完成,主要是需要解决网络问题)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 启用Buildx
docker buildx create --use

# 启用 QEMU 模拟(用于跨架构运行)
docker run --privileged --rm tonistiigi/binfmt --install all

# 构建镜像并导出docker镜像
docker buildx build --platform linux/amd64 -t llm_api:amd64 --output=type=docker . && docker save -o llm_api-amd64.tar llm_api:amd64

docker buildx build --platform linux/arm64 -t llm_api:arm64 --output=type=docker . && docker save -o llm_api-arm64.tar llm_api:arm64

llm_api的Dockerfile如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 使用多平台兼容的 Python 基础镜像(自动适配 arm64 或 amd64)
FROM --platform=$TARGETPLATFORM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 安装系统依赖(可选,根据你的 Python 包需求)
# RUN apt-get update && apt-get install -y \
#     gcc \
#     && rm -rf /var/lib/apt/lists/*

# 复制依赖文件
# COPY requirements.txt .

# 安装 Python 依赖
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir "fastapi[standard]" && \
    pip install --no-cache-dir json-repair && \
    pip install --no-cache-dir requests && \
    pip install --no-cache-dir tiktoken

# 暴露端口(FastAPI 默认 8000)
# EXPOSE 8000

# 启动命令
CMD ["python", "server.py"]

将生成的tar文件复制到项目服务器上,注意:需要对应CPU的架构(amd64或arm64)。

1
2
3
4
5
# 导入镜像
docker load -i llm_api-amd64.tar

# 运行镜像
docker run --rm -d --name=llm_api --restart=unless-stopped --net=host -v /root/llm_api:/app llm_api:amd64