본문으로 건너뛰기

템플릿 이미지 업로드

관리자가 학습에 사용할 베이스 이미지(template image)를 직접 빌드하여 업로드하는 방법을 안내합니다.

관리자 전용

이 기능은 플랫폼 관리자만 사용할 수 있습니다. 일반 사용자가 학습용 이미지를 업로드하려면 학습 이미지 업로드: CLI 방식 또는 학습 이미지 업로드: Docker 방식을 사용하세요.

개요​

템플릿 이미지는 사용자들이 학습 시 선택할 수 있는 베이스 이미지입니다. 관리자는 다양한 환경(PyTorch, TensorFlow, CUDA 버전 등)의 템플릿 이미지를 미리 준비하여 제공할 수 있습니다.

템플릿 이미지 워크플로우:

  1. 관리자가 베이스 이미지를 빌드
  2. Harbor의 템플릿 이미지 저장소에 push
  3. Platform이 webhook으로 이미지 등록 감지
  4. DB에 자동 등록
  5. 사용자가 학습 시 사용 가능한 템플릿 확인 가능
자동 감지

템플릿 이미지를 Harbor에 push하면 Platform이 webhook을 통해 자동으로 감지하여 DB에 등록합니다. 별도의 등록 작업은 필요하지 않습니다.

사전 요구사항​

  • Docker가 설치되어 있어야 합니다
  • 템플릿 이미지 저장소 push 권한이 있는 Harbor 계정 (관리자에게 문의)
  • Platform 관리자 권한

템플릿 이미지란?​

템플릿 이미지는 사용자가 학습 코드를 작성할 때 베이스로 사용할 수 있는 사전 구성된 Docker 이미지입니다.

일반적인 템플릿 이미지 예시:

  • pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime
  • tensorflow/tensorflow:2.15.0-gpu
  • nvcr.io/nvidia/pytorch:24.01-py3

템플릿 이미지에 포함되는 것:

  • Base OS (Ubuntu, Alpine 등)
  • Python 및 필수 라이브러리
  • ML 프레임워크 (PyTorch, TensorFlow 등)
  • CUDA, cuDNN (GPU 사용 시)
  • 공통 의존성 패키지

사용자 학습 이미지와의 차이:

구분템플릿 이미지학습 이미지
제공자관리자사용자
목적베이스 환경 제공학습 코드 실행
포함 내용프레임워크, 공통 라이브러리사용자 코드, 커스텀 의존성
저장소템플릿 이미지 저장소사용자별 저장소

1. Harbor 로그인​

템플릿 이미지 저장소에 push하기 위해 Harbor에 로그인합니다.

docker login harbor.aiplatform.re.kr

인증 정보 입력:

Username: <관리자 계정>
Password: <관리자 비밀번호>

로그인 성공​

Login Succeeded
Harbor 도메인

현재 Harbor 도메인은 harbor.aiplatform.re.kr입니다. 이 도메인은 변경될 수 있으므로, 최신 도메인은 관리자에게 확인하세요.

2. 베이스 이미지 준비​

템플릿으로 제공할 베이스 이미지를 준비합니다. 두 가지 방법이 있습니다:

방법 1: 기존 이미지 사용​

공식 이미지를 그대로 사용하거나 태그만 변경하여 사용합니다.

# 공식 PyTorch 이미지 pull
docker pull pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime

# 템플릿 저장소 태그로 변경
docker tag pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime \
harbor.aiplatform.re.kr/kitech-base-image/pytorch-2.3.0-cuda12.1:20250112

방법 2: 커스텀 이미지 빌드​

공통 의존성을 추가한 커스텀 이미지를 빌드합니다.

Dockerfile 예시:

Dockerfile.pytorch-template
FROM pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime

WORKDIR /workspace

# 공통 의존성 설치
RUN pip install --no-cache-dir \
numpy==1.26.4 \
pandas==2.0.3 \
scikit-learn==1.3.0 \
matplotlib==3.7.2 \
seaborn==0.12.2 \
mlflow==2.9.2

# 한국 시간대 설정
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

빌드:

docker build -f Dockerfile.pytorch-template \
-t harbor.aiplatform.re.kr/kitech-base-image/pytorch-2.3.0-cuda12.1-kitech:20250112 .
네이밍 규칙

템플릿 이미지 이름은 중복을 피하고 버전을 명확히 구분할 수 있도록 작성하는 것이 좋습니다.

권장 형식:

Repository 이름: <framework>-<version>[-<suffix>]

  • pytorch-2.3.0-cuda12.1: 기본 PyTorch 이미지
  • tensorflow-2.15.0-gpu-kitech: 조직명 suffix 추가
  • vision-base-1.0: 특정 용도의 베이스 이미지

Tag: 빌드 날짜나 버전 번호 사용

  • 20250112: 빌드 날짜 (YYYYMMDD)
  • v1, v2: 시맨틱 버전
  • latest: 가장 최신 버전 (권장하지 않음)

피해야 할 패턴:

  • 너무 일반적인 이름: pytorch, base, ml-image
  • 버전 정보 누락: pytorch-cuda (어떤 버전인지 불명확)
  • Tag 없이 latest만 사용 (버전 추적 어려움)

3. 템플릿 저장소 구조​

템플릿 이미지는 특정 project와 repository 구조를 따라야 합니다.

harbor.aiplatform.re.kr/kitech-base-image/<repository-name>:<tag>
└───────┬────────┘ └──────┬───────┘ └┬┘
Project Repository Tag

예시:

# PyTorch 템플릿
harbor.aiplatform.re.kr/kitech-base-image/pytorch-2.3.0-cuda12.1:20250112

# TensorFlow 템플릿
harbor.aiplatform.re.kr/kitech-base-image/tensorflow-2.15.0-gpu-kitech:20250112

# 커스텀 템플릿
harbor.aiplatform.re.kr/kitech-base-image/vision-training-base:v1
저장소 구조 준수

템플릿 이미지는 반드시 kitech-base-image project에 push해야 합니다. 다른 project에 push하면 Platform이 템플릿으로 인식하지 못합니다.

4. 이미지 Push​

준비한 이미지를 템플릿 저장소에 push합니다.

docker push harbor.aiplatform.re.kr/kitech-base-image/pytorch-2.3.0-cuda12.1:20250112

Push 진행 상황​

The push refers to repository [harbor.aiplatform.re.kr/kitech-base-image/pytorch-2.3.0-cuda12.1]
7e91ab813e95: Pushed
8d3ac3489996: Pushed
f1417ff83b31: Pushed
0e736609e8e5: Pushed
84e69331e841: Pushed
20250112: digest: sha256:abc123... size: 3245

M1/M2 Mac에서 빌드하는 경우​

Ubuntu 환경에서 실행되도록 플랫폼을 지정해야 합니다:

# 플랫폼 지정하여 빌드
docker build --platform linux/amd64 \
-t harbor.aiplatform.re.kr/kitech-base-image/pytorch-2.3.0-cuda12.1:20250112 .

# Push
docker push harbor.aiplatform.re.kr/kitech-base-image/pytorch-2.3.0-cuda12.1:20250112

5. Platform에서 확인​

Push가 완료되면 Platform이 webhook을 통해 자동으로 감지합니다.

자동 등록 확인​

템플릿 이미지 목록

등록 시간

Webhook 처리 시간으로 인해 몇 초에서 최대 1분 정도 소요될 수 있습니다. 이미지가 즉시 표시되지 않으면 잠시 기다린 후 새로고침하세요.

메타데이터 수정​

Webhook으로 자동 등록된 템플릿 이미지는 기본 정보만 포함되어 있습니다. 관리자는 사용자가 이해하기 쉽도록 설명과 메타데이터를 추가할 수 있습니다.

템플릿 이미지 수정

사용자에게 제공​

등록된 템플릿 이미지는 사용자가 학습 코드 작성 시 베이스 이미지로 선택할 수 있습니다.

템플릿 이미지 선택

사용자 코드 예시:

from keynet_train import trace_pytorch

@trace_pytorch(
model_name="my-model",
sample_input=torch.randn(1, 3, 224, 224),
base_image="harbor.aiplatform.re.kr/kitech-base-image/pytorch-2.3.0-cuda12.1:20250112"
)
def train_model():
# 훈련 코드...
return model

다음 단계​

템플릿 이미지를 업로드했다면:

  1. 사용자 가이드 업데이트: 사용 가능한 템플릿 이미지 목록을 문서화
  2. 학습 이미지 업로드: CLI 방식: 사용자가 템플릿을 활용하는 방법
  3. 버전 관리: 템플릿 이미지 버전 업데이트 정책 수립