본문으로 건너뛰기

학습 이미지 업로드: CLI 방식

keynet-train CLI를 사용하여 훈련 스크립트를 Docker 컨테이너 이미지로 자동 빌드하고 Harbor registry에 업로드합니다.

0.7.4 버전부터 지원

이 기능은 keynet-train 0.7.4 버전부터 사용할 수 있습니다. 현재 최신 버전은 0.8.5입니다.

개요

keynet-train CLI는 Docker 이미지 빌드와 업로드 과정을 자동화하여, 복잡한 Docker 명령어 없이 간편하게 훈련 환경을 배포할 수 있습니다.

Dockerfile을 직접 작성하고 싶으신가요?

Dockerfile을 직접 작성하거나 Docker 이미지를 완전히 제어하고 싶으시다면 학습 이미지 업로드: Docker 방식 페이지를 참고하세요.

이 페이지는 Dockerfile 자동 생성 방식만 다룹니다.

기존 방식 (Docker 명령어):

docker login harbor.aiplatform.re.kr
docker build -t harbor.aiplatform.re.kr/kitech-model/<repo-key>:latest .
docker push harbor.aiplatform.re.kr/kitech-model/<repo-key>:latest

새 방식 (keynet CLI):

keynet login https://gateway.aiplatform.re.kr
keynet-train push train.py
Docker 필수

keynet-train CLI는 내부적으로 Docker를 사용합니다. Docker 가 설치되어 있고 실행 중이어야 합니다.

사전 요구사항

  • keynet-train 0.8.5 이상 설치 (0.7.4 이상 호환)
  • Docker 설치 및 실행 중 (필수)
  • KeyNet Platform 계정

API 엔드포인트

엔드포인트 주소

현재 KeyNet Platform API 엔드포인트는 https://gateway.aiplatform.re.kr입니다. 이 주소는 변경될 수 있으므로, 최신 주소는 관리자에게 확인하세요.

CLI 명령어

keynet login

Platform 및 컨테이너 레지스트리 인증을 수행합니다.

keynet login https://gateway.aiplatform.re.kr

출력 예시:

Username: YOUR@EMAIL
Password: ********
Login Succeeded
✅ Logged in to https://gateway.aiplatform.re.kr
✅ Docker login successful

Email: YOUR@EMAIL
Password:

✓ Platform authentication successful
✓ Harbor login successful
✓ Configuration saved

╭────────────────── Login Complete ───────────────────╮
│ │
│ Server: https://gateway.aiplatform.re.kr │
│ User: YOUR@EMAIL │
│ Expires: 2025-12-10T10:53:23.619082Z │
│ Config: /Users/hbjs/.config/keynet/config.json │
│ │
╰─────────────────────────────────────────────────────╯

인증 정보는 로컬에 저장되며, 이후 push 명령어 실행 시 자동으로 사용됩니다.

keynet-train push

훈련 스크립트를 Docker 이미지로 빌드하고 Harbor에 push합니다. Dockerfile을 자동으로 생성하여 빌드합니다.

keynet-train push train.py

필수 요구사항:

  • @trace_pytorch 데코레이터에 model_name 지정
  • @trace_pytorch 데코레이터에 base_image 지정
  • 프로젝트 디렉토리에 requirements.txt 파일

코드 예시:

train.py
from keynet_train import trace_pytorch
import torch

@trace_pytorch(
model_name="my-model",
sample_input=torch.randn(1, 3, 224, 224),
base_image="pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime"
)
def train_model():
# 훈련 코드...
return model
requirements.txt
keynet-train>=0.8.5

자동 생성되는 Dockerfile:

FROM pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime
WORKDIR /workspace
COPY . /workspace
RUN pip install -r requirements.txt
CMD ["python", "train.py"]

CLI 옵션

# Base image 지정 (decorator 값을 override)
keynet-train push train.py --base-image pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime

# requirements.txt 경로 지정
keynet-train push train.py --requirements ./deps/requirements.txt

# 빌드 컨텍스트 지정
keynet-train push train.py --context ./my-project

# 캐시 없이 빌드
keynet-train push train.py --no-cache

keynet logout

저장된 인증 정보를 삭제합니다.

keynet logout

전체 워크플로우 예시

train.py
import argparse
import torch
from keynet_train import trace_pytorch

parser = argparse.ArgumentParser()
parser.add_argument("--learning-rate", type=float, default=0.001)
parser.add_argument("--epochs", type=int, default=10)

@trace_pytorch(
model_name="resnet50-classifier",
sample_input=torch.randn(1, 3, 224, 224),
base_image="pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime"
)
def train_model():
args = parser.parse_args()
# 훈련 코드...
return model

if __name__ == "__main__":
train_model()
requirements.txt
keynet-train>=0.8.5
# 실행
keynet login https://gateway.aiplatform.re.kr
keynet-train push train.py

다음 단계

keynet-train CLI를 사용하여 이미지를 업로드했다면:

  1. Hyperparameter 설정: Platform에서 hyperparameter 등록
  2. 학습 이미지 업로드: Docker 방식: Docker 명령어로 직접 빌드하는 방법 (고급)