:bulb: Docker가 AI 모델 패키징을 위해 OCI Artifacts를 채택했다. 컨테이너 이미지처럼 모델을 다루는 새로운 표준 ModelPack과 그 기술적 배경을 정리한다.


[01] 배경 — 인프라 진화의 4단계

graph LR
    HW["1. 하드웨어
중심"] --> VM["2. 가상머신
(VM) 시대"] VM --> CT["3. 컨테이너 시대
(Docker / K8s)"] CT --> AI["4. AI 모델 중심
인프라 (현재)"] style HW fill:#f5f5f5,stroke:#616161 style VM fill:#e3f2fd,stroke:#1565c0 style CT fill:#fff3e0,stroke:#e65100 style AI fill:#e8f5e9,stroke:#2e7d32

현재 단계에서 개발자들은 모델 배포 시 다음 문제를 겪고 있다:

문제 설명
비표준화된 저장 방식 Hugging Face, S3, 자체 서버 등 산재
가중치 파일 산재 .bin, .safetensors, .gguf 등 포맷 혼재
환경 불일치 모델·코드·메타데이터의 결합이 약함
벤더 종속 특정 플랫폼·기업에 묶이는 배포 방식

[02] ModelPack — “AI 모델을 위한 Docker”

ModelPack은 벤더 중립적 오픈소스 표준으로, OCI Artifacts 위에 AI 모델 패키징 규약을 정의한 것이다.

2-1. Docker 컨테이너 vs ModelPack

구분 Docker 컨테이너 ModelPack
패키징 대상 애플리케이션 + 실행 환경 모델 가중치 + 메타데이터 + 추론 코드
포맷 OCI Image OCI Artifacts
레지스트리 Docker Hub, Harbor 등 동일하게 재사용
CLI docker modctl

:bulb: 핵심 장점 — 기존 Docker Hub, Harbor, GitHub Packages 같은 표준 OCI 레지스트리를 그대로 사용할 수 있어 별도의 AI 전용 인프라 구축이 불필요하다.

2-2. ModelPack의 3가지 구성 요소

요소 역할 비유
Model Spec OCI 이미지 명세 기반의 기술 규칙 (매니페스트, 설정 레이어, 데이터 레이어) OCI Image Spec
Modelfile 메타데이터·파일 매핑 정의 (NAME, ARCH, FAMILY, PARAMSIZE, FORMAT 등) Dockerfile
modctl CLI 도구 (build, push, pull, extract) docker CLI

2-3. 효율성 설계

모델 가중치와 코드를 별도 레이어로 분리:

1
2
3
Layer 1: model weights (큰 파일, 자주 안 바뀜)
Layer 2: inference code (작은 파일, 자주 바뀜)
Layer 3: metadata (config, license)

코드 수정 시 거대한 가중치 파일을 다시 전송할 필요가 없어 레이어 캐싱 효과를 극대화한다.


[03] OCI Image vs OCI Artifacts — 왜 Artifacts인가

Docker는 OCI Image가 아닌 OCI Artifacts를 선택했다. 그 이유가 핵심이다.

3-1. 두 형식의 차이

항목 OCI Image OCI Artifacts
목적 컨테이너 실행 임의 콘텐츠 저장·배포
레이어 형식 TAR 아카이브 (파일시스템) 자유 형식 (도메인별 정의)
메타데이터 컨테이너 실행 환경 도메인 특화 (JSON 자유)
미디어 타입 고정 (image config, layer) 커스텀 정의 가능

3-2. Artifacts를 선택한 4가지 이유

graph TD
    OCI["OCI Artifacts 선택"] --> R1["① 도메인 특화
메타데이터"] OCI --> R2["② 성능 최적화"] OCI --> R3["③ 인퍼런스 엔진
과 분리"] OCI --> R4["④ 명확한 의도
표현"] style OCI fill:#e3f2fd,stroke:#1565c0

① 도메인 특화 메타데이터

모델 크기, 파라미터 수, 양자화 정보 등을 JSON으로 정의. 작은 메타데이터 파일만 먼저 받아 모델 비교·선택이 가능하다.

1
2
3
4
5
6
7
8
{
  "format": "gguf",
  "quantization": "Q4_K_M",
  "parameters": "7B",
  "architecture": "llama",
  "created": "2026-05-06T...",
  "digests": {...}
}

② 성능 최적화

최적화 설명
비압축 저장 모델은 고엔트로피 파일이라 압축 효율 극히 낮음 — 압축하지 않음
단일 파일 형식 메모리 맵핑(mmap) 가능 — 추론 시작 시간 단축
결정적 블롭 동일 모델 파일은 항상 동일한 블롭 → 중복 제거 효율 증대

③ 인퍼런스 엔진과 분리

모델과 실행 엔진(llama.cpp, vLLM 등)을 별도로 배포한다.

1
2
3
4
5
모델 (OCI Artifact)
  ↓ pull
사용자 환경
  ↓
시스템에 최적화된 엔진 (별도 설치)

장점:

  • 사용자가 GPU/CPU 환경에 맞는 엔진을 선택
  • 매번 모든 엔진 조합으로 모델을 패키징할 필요 없음

④ 명확한 의도 표현

OCI Image가 아니라는 점을 미디어 타입으로 명시:

  • 컨테이너처럼 실행 시도하면 실패
  • 인퍼런스 엔진 없이 독립 실행 불가능함이 명확
  • 혼동과 예기치 않은 오류 방지

[04] 기술적 상세 — 미디어 타입과 구조

4-1. Docker AI 모델 미디어 타입

1
2
3
application/vnd.docker.ai.model.config.v0.1+json   ← 모델 설정
application/vnd.docker.ai.gguf.v3                  ← GGUF 모델 파일
application/vnd.docker.ai.license                  ← 라이선스 파일

4-2. 모델 레이어의 특성

특성 설명
파일시스템 레이어 아님 단순 파일 저장소
식별 방법 파일명이 아닌 미디어 타입으로 식별
활용 Docker Model Runner가 모델 스토어에서 검색

4-3. 모델 설정에 포함되는 정보

항목 예시
포맷 gguf, safetensors, onnx
양자화 수준 Q4_K_M, Q8_0, FP16
파라미터 수 7B, 13B, 70B
아키텍처 llama, mistral, qwen
생성 타임스탬프 ISO 8601
파일 다이제스트 무결성 검증용 SHA256

[05] 실무 워크플로우

5-1. ModelPack — modctl 사용

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
# 1. modctl 설치 및 모델 파일 준비
modctl --version

# 2. Modelfile 작성 (메타데이터 정의)
cat > Modelfile <<'EOF'
NAME llama-3-8b
ARCH llama
FAMILY llama-3
PARAMSIZE 8B
FORMAT gguf

CONFIG ./config.json
MODEL  ./llama-3-8b-q4.gguf
CODE   ./inference.py
DOC    ./README.md
EOF

# 3. OCI 레이어로 빌드
modctl build -t harbor.example.com/models/llama-3-8b:q4 .

# 4. 원격 레지스트리 배포
modctl push harbor.example.com/models/llama-3-8b:q4

# 5. 사용 환경에서 다운로드
modctl pull harbor.example.com/models/llama-3-8b:q4
modctl extract harbor.example.com/models/llama-3-8b:q4 ./model/

5-2. Docker Model Runner 사용

Docker는 자체 도구 Docker Model Runner도 제공한다.

1
2
3
4
5
# Hugging Face에서 자동 변환하여 OCI Artifact로 push
docker model pull hf://meta-llama/Llama-3-8B-Instruct

# 로컬에서 LLM 실행
docker model run llama-3-8b-instruct

[06] 엔터프라이즈 관점의 장점

영역 효과
DevOps 인프라 재사용 Docker Hub, Artifactory, Harbor 등 기존 인프라 그대로 사용
보안 Registry Access Management(RAM) 정책 기반 접근 제어
버전 관리 OCI 태그 시스템 그대로 활용
클라우드 네이티브 containerd, Kubernetes와 깊은 연계
1급 객체화 모델을 클라우드 네이티브 환경의 1급 시민으로 취급

[07] 향후 계획

Docker가 발표한 다음 버전 지원 예정 사항:

기능 설명
런타임 설정 템플릿, 컨텍스트 크기, 기본 파라미터
LoRA 어댑터 사용 사례별 파인튜닝 추가
멀티모달 프로젝터 비전-언어 모델(VLM) 지원
모델 인덱스 파라미터·양자화 변형 목록
containerd 깊은 통합 컨테이너 런타임 레벨에서 모델 관리
ModelPack 상호 운용 다른 표준과의 호환성 개선

[08] 정리

핵심 내용
목표 AI 모델 배포를 Docker처럼 표준화
선택 OCI Image가 아닌 OCI Artifacts
이유 도메인 특화 메타데이터, 비압축 저장, 엔진 분리, 명확한 의도
인프라 기존 OCI 레지스트리(Docker Hub, Harbor) 그대로 사용
CLI ModelPack의 modctl 또는 docker model
포맷 식별 파일명 아닌 미디어 타입으로

:bulb: 컨테이너 기술이 소프트웨어 배포를 표준화했듯이, OCI Artifacts 기반의 ModelPack/Docker Model Runner는 AI 모델 배포의 표준화를 시도한다. 기존 클라우드 인프라를 활용하면서도 모델의 일관성·이식성·성능을 모두 확보하는 실용적 접근이다.


참고