Ubuntu TechHive
devops-in-the-age-of-ai-part-deux.md
AI 时代的 DevOps(第二部)
article.细节

AI 时代的 DevOps(第二部)

reading.进展 1 分钟阅读数

人工智能时代的 DevOps 描述

AI 时代的 DevOps

模型生命周期

graph LR
    A[模型训练] --> B[模型保存]
    B --> C[模型 + API 打包 - Docker 容器]
    C --> D[通过 API 提供服务]

模型文件格式转换(可选)

graph LR
    A(Tensorflow H5 模型) --> B(转换为 ONNX) --> C(ONNX 模型)
    D(Pytorch PT 模型) --> E(转换为 ONNX) --> F(ONNX 模型)
    G(Python Pickle 模型) --> G(Python Pickle 模型)

先前技术

开源模型

Ollama

brew install ollama

ollama pull llama3.2

ollama serve

LlamaCpp

brew install llamacpp

llama-server --hf-repo hugging-quants/Llama-3.2-1B-Instruct-Q8_0-GGUF --hf-file llama-3.2-1b-instruct-q8_0.gguf -c 2048

Docker 中的 Ollama

FROM ollama/ollama:0.3.12

# 监听所有接口,端口 8080
ENV OLLAMA_HOST 0.0.0.0:8080

# 将模型权重文件存储在 /models 中
ENV OLLAMA_MODELS /models

# 减少日志冗余
ENV OLLAMA_DEBUG false

# 永不从 GPU 卸载模型权重
ENV OLLAMA_KEEP_ALIVE -1 

# 将模型权重存储在容器镜像中
ENV MODEL gemma2:9b
RUN ollama serve & sleep 5 && ollama pull $MODEL 

# 启动 Ollama
ENTRYPOINT ["ollama", "serve"]

支持的变量:

  • `MODEL` (构建变量)
  • `OLLAMA_HOST` (运行时变量)
  • `OLLAMA_NUM_PARALLEL` (运行时变量)

Docker 中的 LlamaCpp

FROM ghcr.io/ggerganov/llama.cpp:server

# 为服务器和模型创建目录
RUN mkdir -p /app/models

# 将模型文件下载到 /app/models 中

EXPOSE 8080

# 容器启动时运行服务器的命令
ENTRYPOINT ["llama-server", "-m", "/app/models/llama-3.2-1b-instruct-q8_0.gguf", "-c", "2048"]

LlamaCpp Docker 文档

接下来将其移植到 Dagger 并发布到 Google Cloud Registry

Dagger

brew install dagger

示例:
dagger call --interactive function-name --project-path=./path-to-project-in-repo \
   --src-dir=https://user:$GITHUB_TOKEN@github.com/user/reponame#branchname --image-name="gcr.io/organization/project/image-name"

部署 UI 应用

npm run build

cd client

fly launch