: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 모델용 패키징 표준

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와 OCI 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 정책 기반 접근 제어
버전 관리 OCI 태그 시스템 그대로 활용
클라우드 네이티브 containerd, Kubernetes와 깊은 연계
표준 리소스화 모델을 클라우드 네이티브 환경이 기본 지원하는 배포 단위로 취급

[07] 향후 계획

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

기능 설명
런타임 설정 템플릿, 컨텍스트 크기, 기본 파라미터
LoRA 어댑터 사용 사례별 파인튜닝 추가
멀티모달 프로젝터 비전-언어 모델 지원
모델 인덱스 파라미터·양자화 변형 목록
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 모델 배포를 컨테이너 이미지와 같은 방식으로 표준화한다. 기존 OCI 레지스트리를 그대로 쓰면서 모델의 일관성과 이식성을 확보한다.


참고