Kakao i Machine Learning::튜토리얼::PyTorch로 학습하기::Console

페이지 이동경로

PyTorch로 콘솔에서 학습하기

Kakao i Machine Learning을 처음 사용하시는 분들을 위해 MNIST 데이터세트와 Python (PyTorch) 학습 스크립트를 활용한 학습 튜토리얼을 제공합니다. 이 문서에서는 Kakao i Machine Learning 웹 콘솔에서 워크스페이스를 생성한 후, 모델을 학습하고 배포하는 방법을 안내합니다.
Tensorflow 모델로 학습하고 배포하는 방법은 Tensorflow로 학습하기 문서를 참고하시기 바랍니다.

Step 1. 로그인 및 워크스페이스 준비하기

이 단계에서는 Kakao i Machine Learning 콘솔에 로그인하고, 기본 제공 쿼터가 부여된 워크스페이스를 생성합니다.

로그인하기

가입한 KakaoCloud (공공) 계정의 아이디와 비밀번호를 입력하여 로그인합니다.

워크스페이스 만들기

로그인에 성공하면 워크스페이스 목록에 진입합니다. 워크스페이스는 Kakao i Machine Learning의 최상위 개념으로, 여러 사용자가 스토리지, 데이터세트, 모델, 엔드포인트 등 모든 기능을 공유할 수 있는 공간을 의미합니다.

안내
공공 클라우드 환경에서는 워크스페이스 만들기 절차를 생략합니다.
  1. Kakao i Machine Learning 메인 화면에서 [+ 워크스페이스 만들기] 버튼을 클릭합니다.

    Kakako i Machine Learning 메인 화면 그림Kakako i Machine Learning 메인 화면

  2. 워크스페이스 만들기 팝업창에서 워크스페이스 생성에 필요한 정보를 입력 후, [만들기] 버튼을 입력합니다.

    워크스페이스 생성 정보 입력 그림워크스페이스 생성 정보 입력

    워크스페이스 생성 정보 입력 항목
    항목 설명
    워크스페이스 이름 - 모든 워크스페이스에서 고유함
    - 공백 없이, 영어 소문자(a-z), 숫자(0-9), 하이픈(-)만 사용
    - 영어 소문자(a-z)로 시작하며, 소문자(a-z) 또는 숫자(0-9)로 끝나야 됨
    - 2~63자 입력 가능
    워크스페이스 설명(선택) 워크스페이스 사용 목적 등 설명이 필요할 경우 입력
    - 최대 1,024자 이내로 작성

Step 2. 스토리지에 MNIST 데이터 업로드하기

AI 모델 학습에 사용되는 데이터는 Kakao i Machine Learning 원격 저장소인 스토리지에 업로드해야 합니다. 본 튜토리얼에서는 MNIST 데이터를 스토리지에 업로드하여 학습을 진행합니다.

  1. MNIST 데이터 파일(data_mnist.zip)을 다운받습니다.

    data_mnist.zip 파일
  2. 다운받은 MNIST 데이터 파일(data_mnist.zip)의 압축을 해제합니다.

  3. Kakao i Machine Learning 콘솔에서 스토리지 메뉴를 클릭합니다.

  4. 스토리지 목록에서 기본으로 생성된 default 스토리지를 클릭하여 상세 페이지로 이동합니다.

  5. 스토리지 상세 페이지의 파일 브라우저 탭에서 [폴더 올리기] 버튼을 클릭합니다.

    MNIST 데이터 업로드 그림MNIST 데이터 업로드

  6. 압축을 해제한 MNIST 데이터 폴더를 원격 저장소에 업로드합니다.

    안내

    • 압축을 해제한 MNIST 데이터 폴더를 원격 저장소에 업로드합니다.
    • 웹 콘솔에서 데이터는 한번에 최대 50개 파일(파일 크기 총 10GB 이하)을 업로드할 수 있습니다.
    • 대용량 또는 다량의 파일은 KiML CLI kiml data upload 명령어를 실행하여 업로드하시기 바랍니다.

Step 3. 데이터세트 만들기

해당 단계는 데이터세트를 만드는 작업입니다. 앞서 스토리지에 업로드한 MNIST 데이터를 데이터세트로 지정하여, 학습에서 활용할 수 있도록 합니다.

  1. Kakao i Machine Learning 콘솔에서 데이터세트 메뉴를 클릭합니다.

  2. 데이터세트 화면에서 우측 상단의 [+ 데이터세트 만들기] 버튼을 클릭합니다.

    데이터세트 화면 그림데이터세트 화면

  3. 1단계: 기본 정보에서 기본 정보를 입력하고, [다음] 버튼을 클릭합니다.

    데이터세트 기본 정보 입력 그림데이터세트 기본 정보 입력

    1단계: 기본 정보 화면 구성

    항목 설명
    데이터세트 기본 정보
    이름 원하는 데이터세트의 이름
    - 튜토리얼에서는 mnist-dataset 입력
    설명(선택) 데이터세트에 대한 상세한 설명이 필요한 경우 입력
    태그(선택) 데이터세트에 대한 태그가 필요한 경우 입력

  4. 2단계: 데이터 선택 화면에서 필요한 정보를 입력하고 [만들기] 버튼을 클릭합니다.

    데이터 선택 그림데이터 선택

    2단계: 데이터 선택 화면 구성

    항목 설명
    스토리지 선택 default 선택
    폴더 경로 스토리지에 업로드한 데이터가 저장된 폴더 경로 선택
    - 이 튜토리얼에서는 mnist_dataset 폴더 선택

  5. 데이터세트 화면으로 돌아가면, 데이터세트 목록에서 방금 만든 데이터세트를 확인할 수 있습니다.

Step 4. 실험과 실행 만들기

이 단계에서는 새로운 실험을 만들고, 생성한 실험에 포함된 새로운 실행을 만듭니다.

실험 만들기

  1. Kakao i Machine Learning 콘솔에서 실험 메뉴로 이동해 우측 상단 [+ 실험 만들기] 버튼을 클릭합니다.

  2. 실험 만들기 팝업창에서 실험 생성에 필요한 정보를 입력하고 [만들기] 버튼을 클릭합니다.

    실험 만들기 팝업창 그림실험 만들기 팝업창

    실험 만들기 팝업창 구성

    항목 설명
    이름 원하는 실험의 이름
    - 튜토리얼에서는 mnist-experiment 입력
    설명(선택) 실험에 대한 상세한 설명이 필요한 경우 입력
    태그(선택) 실험에 대한 태그가 필요한 경우 입력

  3. 실험 화면으로 돌아가면, 실험 목록에서 방금 만든 실험을 확인할 수 있습니다.

실행 만들기

  1. Kakao i Machine Learning 콘솔에서 실험 메뉴를 클릭합니다.

  2. 실험 목록에서 방금 만든 실험 이름을 클릭하여 실험 상세 페이지로 이동합니다.

  3. 실험 상세 페이지의 실행 탭에서 [실행 만들기] 버튼을 클릭합니다.

    실행 상세 페이지 그림실행 상세 페이지

  4. 1단계: 기본 설정 화면에서 실행에 필요한 정보를 입력하고, [다음] 버튼을 클릭합니다.

    실행 기본 설정 그림실행 기본 설정

    1단계: 기본 설정 화면 구성

    항목 설명
    기본 설정 정보
    실험 실험 만들기 단계에서 만든 mnist-experiment 실험 선택
    실행 이름 실행을 만드는 시간 기준으로 실행 이름이 자동으로 입력됨
    - 튜토리얼에서는 mnist-run 입력
    실행 설명(선택) 부가 설명이 필요한 경우 입력
    학습을 실행하고자 하는 인스턴스의 타입과 수량
    인스턴스 유형 GPU 포함 선택
    인스턴스 타입 원하는 인스턴스 타입
    - 공공 클라우드 환경: 1A100-16-MO 카드 선택
    인스턴스 개수 위에서 선택한 인스턴스에 대해 원하는 수량 입력
    - 튜토리얼에서는 1 입력
    이미지 학습 실행에 사용할 이미지 선택
    - 튜토리얼에서는 cosmos-pytorch1.10.0-cuda11.3-cudnn8-py3.7-ubuntu18.04 선택

  5. 2단계: 실행 구성 화면에서 학습을 실행하기 위한 데이터세트와 소스 코드 등의 정보를 입력한 후, [다음] 버튼을 클릭합니다.
    이때 MNIST 모델을 학습하기 위한 소스 코드는 아래의 파일을 다운받아 사용합니다.

    mnist.tar.gz 파일

    실행 구성 설정 그림실행 구성 설정

    2단계: 실행 구성 화면 구성

    항목 설명
    데이터세트(선택) 학습에 사용할 데이터세트가 사전 등록된 경우 선택
    - 튜토리얼에서는 앞 단계에서 만든 mnist-dataset을 선택
    아웃풋 학습 로그 및 결과물(모델)이 저장되는 위치
    - 아웃풋 저장 시, /app/outputs 경로에 저장됨
    학습에 사용할 데이터세트, 모델 코드 등이 저장된 위치
    파일 업로드 소스 디렉토리 파일 업로드
    - .tar.gz 형식 지원, 파일 크기 최대 100MB 지원
    - 파일 용량이 큰 경우, CLI 이용 권장
    - 튜토리얼에서는 다운받은 mnist.tar.gz 파일 업로드
    명령어 학습을 시작할 엔트리포인트, 명령어, 전달 인자 입력
    - 튜토리얼에서 python -u mnist.py --data_dir /app/input/dataset/mnist-dataset --output_dir /app/outputs 입력
    - 매개변수와 전달 인자는 줄바꿈으로 구분
    - 최대 1,024자 입력 가능
    환경변수(선택) 스크립트 실행에 필요한 환경 변수
    - 튜토리얼에서는 입력하지 않음

  6. 3단계: 검토 화면에서 지금까지 입력한 내용을 검토한 후 [만들기] 버튼을 클릭합니다.

    실행 검토 그림실행 검토

  7. 실행 목록으로 돌아가면 방금 만든 실행을 확인할 수 있습니다.

  8. 제출한 실행의 상태가 running에서 학습이 완료된 completed 상태로 변경될 때까지 기다립니다.

실험 단위 텐서보드 조회하기

실험 하위의 여러 실행 결과를 텐서보드에서 확인할 수 있습니다.

  1. Kakao i Machine Learning 콘솔에서 실험 메뉴를 클릭합니다.

  2. 전체 실험 탭에서 텐서보드를 조회할 실험 이름의 TensorBoard 열의 [아웃링크] 아이콘을 클릭합니다.

    실험 텐서보드 링크 그림실험 텐서보드 링크

  3. 또는 텐서보드를 조회할 실험의 상세 페이지에서 실험 이름 하단 정보 영역의 TensorBoard 아웃링크를 클릭합니다.

    실험 상세 페이지 텐서보드 링크 그림실험 상세 페이지 텐서보드 링크

미지원 기능 안내
공공 클라우드 환경에서는 모델 추론 및 배포 기능은 지원하지 않습니다. 자세한 내용은 공공 환경 주의사항 문서를 참고하시기 바랍니다.

Step 5. 모델 등록하기

모델은 ML 모델의 수명 주기를 관리할 수 있는 모델 저장소입니다. Kakao i Machine Learning 플랫폼에서 학습한 실행을 모델로 등록하거나, 외부에서 학습한 모델을 불러올 수 있습니다. 이 단계에서는 실행을 통해 학습된 모델을 등록합니다.

  1. Kakao i Machine Learning 콘솔에서 모델 메뉴를 클릭합니다.

  2. 모델 화면에서 우측 상단의 [모델 만들기] 버튼을 클릭합니다.

  3. 모델 만들기 화면의 모델 등록하기 탭에서 필요한 정보를 입력하고, [만들기] 버튼을 클릭합니다.

    모델 기본 설정 그림모델 기본 설정

    모델 등록하기 탭 화면 구성

    항목 설명
    모델 위치 새로운 모델을 만들지, 기존의 모델에 버전을 추가할지 선택
    - 새로운 모델 만들기 선택
    모델 기본 설정 정보
    모델 이름 원하는 모델의 이름
    - 튜토리얼에서는 mnist-model 입력
    모델 설명(선택) 모델에 대한 상세한 설명이 필요한 경우 입력
    모델 별칭(선택) 특정 버전의 모델을 식별하는데 도움을 주는 키워드
    모델로 등록할 실행 정보 입력
    실험 / 실행 생성한 실험과 실행을 선택
    - 해당 실행의 결과로 학습된 모델을 자동으로 불러옴
    - 튜토리얼에서는 앞 단계에서 생성한 실험과 실행을 선택
    실행 아웃풋 경로 아웃풋 모델이 저장된 경로
    - 튜토리얼에서는 공란으로 비워둠

  4. 모델 화면으로 돌아가면, 모델 목록에서 방금 만든 모델을 확인할 수 있습니다.

Step 6. 등록한 모델 배포하기

이 단계에서는 학습된 모델이 포함된 인스턴스를 API 엔드포인트로 배포하는 방법을 안내합니다.

안내
등록한 모델 배포 기능은 Tensorflow Serving과 Triton 프레임워크를 지원합니다. Triton에서는 TorchScript만 사용할 수 있습니다.

엔드포인트 만들기

  1. Kakao i Machine Learning 콘솔에서 엔드포인트 메뉴를 클릭합니다.

  2. 엔드포인트 화면의 우측 상단 [엔드포인트 만들기] 버튼을 클릭합니다.

  3. 1단계: 엔드포인트 화면에서 기본 정보를 입력하고 [다음]을 클릭합니다.

    엔드포인트 정보 입력 그림엔드포인트 정보 입력

    1단계: 엔드포인트 화면 구성

    항목 설명
    엔드포인트 기본 정보
    엔드포인트 이름 엔드포인트의 이름
    - 튜토리얼에서는 mnist-endpoint 입력
    엔드포인트 설명(선택) 엔드포인트에 대한 상세한 설명이 필요할 경우 입력
    태그(선택) 엔드포인트에 대한 태그가 필요한 경우 입력

  4. 2단계: 배포 화면에서 배포 1에 이름과 포트 설정값을 입력하고 이미지를 선택합니다.

    안내
    배포는 최대 2개까지 만들 수 있으며, 이 튜토리얼에서는 하나의 배포를 만듭니다.

    엔드포인트 배포 생성 그림엔드포인트 배포 생성

    1단계: 엔드포인트 화면 구성

    항목 설명
    배포 이름 배포 이름
    - 튜토리얼에서는 mnist-deployment 입력
    배포 방식 배포 방식
    - NVIDA Trition Inference Serving 선택
    배포 이미지 배포할 이미지 선택
    - 등록한 모델 배포 기능은 Triton, TF Serving, Cosmos Serving 기본 이미지에서 지원
    - 튜토리얼에서는 cosmos-tritonserver-22.06-py3 선택
    Triton Config Triton 배포를 적용하기 위한 설정값 입력
    - 튜토리얼에서는 아래 예제를 참고하여 입력

    코드예제튜토리얼 코드용 Triton Config

    platform: "pytorch_libtorch"
    input [
      {
        name: "input__0"
        data_type: TYPE_FP32
        dims: [ 1, 1, 28, 28 ]
      }
    ]
    output [
      {
        name: "output__0"
        data_type: TYPE_FP32
        dims: [ 1, 10 ]
      }
    ]
    

  5. 이미지 선택 후, 모델 설정 및 선택한 이미지에 맞는 추가 정보를 입력할 수 있습니다. 모델 설정 및 추가 정보를 입력하고 [다음] 버튼을 클릭합니다.

    1단계: 엔드포인트 화면 구성

    항목 설명
    모델 배포를 원하는 모델
    - 튜토리얼에서는 앞서 등록한 모델명 선택
    Triton Triton 이미지를 선택한 경우, 배포를 위한 상세 정보 입력
    - 모델 파일 타입: 현재 torchScript만 지원
    - Config.pbtxt: 배포하고자 하는 모델에 맞는 설정값 입력
    - 튜토리얼에서는 아래 내용 참고하여 입력
    인스턴스 구성 워크스페이스에 할당된 쿼터에서 내에서 원하는 인스턴스 타입과 개수 선택
    - 튜토리얼에서는 GPU 포함 1V100-4-MO 선택, 수량 1 입력
    환경 변수(선택) 환경 변수 설정이 필요한 경우 입력
    태그(선택) 배포에 대한 태그가 필요한 경우 입력

  6. 3단계: 트래픽 설정 화면에서 아무것도 변경하지 않고 [다음] 버튼을 클릭합니다.

    엔드포인트 트래픽 설정 그림엔드포인트 트래픽 설정

    튜토리얼 Tip!
    배포를 여러 개 만들 경우, 트래픽을 분할하는 비율이나 미러링 모드 활성화 여부를 지정할 수 있습니다.
    이 튜토리얼에서는 배포가 1개이므로 트래픽은 100%로 고정됩니다.

    3단계: 트래픽 화면 구성

    항목 설명
    미러링 모드 활성화(토글) 활성화 시, 메인 배포에 입력된 트래픽을 다른 배포에도 복제하여 전송
    - 메인 배포 선택 필요
    - 트래픽 비율은 100%로 고정
    트래픽 할당 비율 조정 각 배포에 배분할 트래픽 비율 입력
    - 슬라이더로 트래픽 할당 비율 조정(5단위로 조정 가능)

  7. 4단계: 검토 페이지에서 입력한 내용을 검토한 후 [만들기] 버튼을 클릭합니다.

    엔드포인트 검토 그림엔드포인트 검토

배포한 모델 테스트하기

배포한 모델을 테스트하는 방법은 다음과 같습니다.

  1. Kakao i Machine Learning 콘솔에서 엔드포인트 메뉴의 엔드포인트 목록에서 방금 생성한 엔드포인트 이름을 클릭합니다.

  2. 엔드포인트 정보 탭의 기본 정보에서 엔드포인트와 API Key를 별도로 복사해 둡니다.

    엔드포인트 기본 정보 그림엔드포인트 기본 정보

  3. 터미널에서 테스트 코드를 실행합니다.

    코드예제테스트 코드

      curl -X POST ${엔드포인트 주소}/v2/models/model/infer \
    -H "Authorization: Bearer ${API Key}" \
    --data-raw '{
     "inputs" : [
       {
         "name" : "input__0",
         "datatype":"FP32",
         "shape" : [ 1, 1, 28, 28 ],
         "data" : [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07058823853731155, 0.16862745583057404, 0.  30588236451148987, 0.6117647290229797, 0.9921568632125854, 0.9921568632125854, 0.  8235294222831726, 0.8549019694328308, 0.11764705926179886, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2235294133424759, 0.7803921699523926,   0.9921568632125854, 0.9882352948188782, 0.9882352948188782, 0.9882352948188782, 0.  9882352948188782, 0.9921568632125854, 0.9882352948188782, 0.8666666746139526, 0.  24705882370471954, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.4941176474094391, 0.9647058844566345, 0.9882352948188782, 0.8392156958580017, 0.  4941176474094391, 0.2862745225429535, 0.08235294371843338, 0.08235294371843338, 0.  08235294371843338, 0.529411792755127, 0.9843137264251709, 0.5333333611488342, 0.0, 0.0, 0.0, 0.  0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.08627451211214066, 0.  929411768913269, 0.9254902005195618, 0.5686274766921997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  7019608020782471, 0.9058823585510254, 0.21568627655506134, 0.250980406999588, 0.  16862745583057404, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.  3333333432674408, 0.9882352948188782, 0.3960784375667572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  0, 0.08627451211214066, 0.9882352948188782, 0.9215686321258545, 0.9921568632125854, 0.  9372549057006836, 0.06666667014360428, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0,   0.3333333432674408, 0.9921568632125854, 0.3294117748737335, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0, 0.6627451181411743, 0.9921568632125854, 0.9019607901573181, 0.4156862795352936, 0.  03529411926865578, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.3333333432674408,   0.9882352948188782, 0.3294117748737335, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  6627451181411743, 0.9882352948188782, 0.5137255191802979, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.3333333432674408, 0.9882352948188782, 0.5568627715110779, 0.  01568627543747425, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04313725605607033, 0.8274509906768799,   0.9882352948188782, 0.45098039507865906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.  0, 0.0, 0.0, 0.10980392247438431, 0.9372549057006836, 0.9882352948188782, 0.5411764979362488, 0.  250980406999588, 0.16862745583057404, 0.0, 0.0, 0.0, 0.0, 0.0, 0.08627451211214066, 0.  9882352948188782, 0.9882352948188782, 0.8274509906768799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.21960784494876862, 0.9882352948188782, 0.9882352948188782,   0.9921568632125854, 0.9372549057006836, 0.8274509906768799, 0.8274509906768799, 0.  8274509906768799, 0.1764705926179886, 0.0, 0.08627451211214066, 0.9882352948188782, 0.  9882352948188782, 0.8274509906768799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0,   0.0, 0.0, 0.0, 0.0, 0.0, 0.3490196168422699, 0.41960784792900085, 0.7254902124404907, 0.  45098039507865906, 0.4156862795352936, 0.07058823853731155, 0.0, 0.0, 0.08627451211214066, 0.  9921568632125854, 0.9921568632125854, 0.8313725590705872, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  08627451211214066, 0.9882352948188782, 0.9882352948188782, 0.9529411792755127, 0.  1882352977991104, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.007843137718737125, 0.686274528503418, 0.  9882352948188782, 0.9921568632125854, 0.2823529541492462, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],   [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  6627451181411743, 0.9882352948188782, 0.9921568632125854, 0.658823549747467, 0.0, 0.0, 0.0, 0.  0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0, 0.4941176474094391, 0.9882352948188782, 0.9921568632125854, 0.7960784435272217, 0.  03529411926865578, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.10588235408067703, 0.8980392217636108, 1.0, 0.  9921568632125854, 0.08235294371843338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5137255191802979, 0.  9921568632125854, 0.9882352948188782, 0.08235294371843338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0,   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  3803921639919281, 0.9921568632125854, 0.9882352948188782, 0.29019609093666077, 0.0, 0.0, 0.0, 0.  0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0, 0.0, 0.7176470756530762, 0.9882352948188782, 0.5960784554481506, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  0, 0.0, 0.0, 0.16470588743686676, 0.886274516582489, 0.38823530077934265, 0.0, 0.0, 0.0, 0.0, 0.  0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.  0, 0.0]]]]
       }
     ]
    }'
    

    배포 모델 테스트 호출 방식

    메서드 요청 URL
    POST {엔드포인트 주소}/v2/models/model/infer

    테스트 코드 Path Parameter

    파라미터 설명
    {엔드포인트 주소} 엔드포인트 정보의 엔드포인트
    {API Key} 엔드포인트 정보의 API Key

  4. 정상적으로 실행된다면 아래와 같이 응답을 확인할 수 있습니다.

    코드예제정상 응답 실행

    {"model_name":"model","model_version":"1","outputs":[{"name":"output__0","datatype":"FP32","shape":[1,10],"data":[-7.412685394287109,-11.19141674041748,-2.4548983573913576,-4.434718132019043,-5.006168365478516,-5.374503135681152,-11.610991477966309,0.5824547410011292,-4.415952205657959,3.276334524154663]}]}%
    

Step 7. 리소스 정리하기

엔드포인트에 모델이 배포된 상태에서는 실제로 모델이 호출되지 않더라도 인스턴스가 계속해서 사용되며, 워크스페이스 컴퓨팅 자원 할당량을 차지합니다. 이를 원하지 않으면 엔드포인트와 모델 배포를 삭제해야 합니다.

주의
배포 테스트를 완료 후, 리소스 반납을 위해 엔드포인트를 반드시 삭제해야 합니다.
  1. Kakao i Machine Learning 콘솔에서 엔드포인트 메뉴를 클릭합니다.

  2. 엔드포인트 화면에서 엔드포인트 목록에서 생성한 엔드포인트 이름을 클릭합니다.

  3. 우측 상단의 [더보기] 아이콘을 클릭 후, 엔드포인트 삭제를 클릭합니다.

    엔드포인트 상세 화면 그림엔드포인트 상세 화면

  4. 엔드포인트 삭제 팝업창에서 텍스트 입력창에 삭제할 엔드포인트 이름을 입력 후, [삭제] 버튼을 클릭합니다.

    엔드포인트 삭제 그림엔드포인트 삭제

부록. 모델 이미지 서빙하기

배포할 모델 컨테이너 이미지가 있다면, 해당 이미지를 커스텀 이미지로 등록한 후 엔드포인트에 연결할 수 있습니다.

모델 컨테이너 이미지 준비하기

배포를 원하는 컨테이너 이미지를 카카오클라우드 (공공) Container Registry에 등록합니다. 간단한 테스트 예시로 이미 등록된 컨테이너 이미지를 사용해 보시려면, Container Registry에 등록한 샘플 도커 이미지 경로를 사용하시기 바랍니다.

코드예제샘플 도커 이미지 경로

kiml-gov.kr-gov-central-1.kcr.dev/public-kiml/cosmos-tensorflow2.8.0-cuda11.2-cudnn8-py3.8-ubuntu20.04

모델 컨테이너 이미지 등록하기

  1. Kakao i Machine Learning 콘솔에서 이미지 메뉴를 클릭합니다.

  2. 이미지 화면에서 우측 상단 [+ 이미지 만들기] 버튼을 클릭합니다.

  3. 이미지 만들기 화면에서 필요한 정보를 입력한 후, [만들기] 버튼을 클릭합니다.

    커스텀 이미지 정보 입력 그림커스텀 이미지 정보 입력

    이미지 만들기 화면 구성

    항목 설명
    기본 설정 정보
    커스텀 이미지 이름 커스텀 이미지 이름
    - 모델 이미지를 식별할 수 있는 이름을 입력
    이미지 설명(선택) 부가 설명이 필요한 경우 입력
    이미지를 설정하는 방식을 선택하고, 필요한 상세 내용을 입력
    설정 타입 이미지 설정하는 방식을 선택
    - 튜토리얼에서는 Docker Image 선택
    Docker Image 경로 도커 이미지 주소 입력
    - 컨테이너 이미지 경로 예: aiaas.kr-central-1.kcr.dev/qa-private/distr_pytorch
    사용자 정보/비밀번호(선택) 비공개 저장소의 이미지를 등록하는 경우, 해당 레지스트리의 계정 정보 입력
    태그(선택) 이미지에 태그가 필요한 경우 입력

엔드포인트 만들기

  1. Kakao i Machine Learning 콘솔에서 엔드포인트 메뉴를 클릭합니다.

  2. 엔드포인트 화면의 우측 상단 [엔드포인트 만들기] 버튼을 클릭합니다.

  3. 1단계: 엔드포인트 화면에서 기본 정보를 입력하고 [다음]을 클릭합니다.

    엔드포인트 정보 입력 그림엔드포인트 정보 입력

    1단계:엔드포인트 화면 구성

    항목 설명
    엔드포인트 기본 정보
    엔드포인트 이름 엔드포인트의 이름
    엔드포인트 설명(선택) 엔드포인트에 대한 상세한 설명이 필요할 경우 입력
    태그(선택) 엔드포인트에 대한 태그가 필요한 경우 입력

  4. 2단계: 배포 화면에서 배포 1 항목에 모델 배포에 필요한 정보를 입력한 후 [다음] 버튼을 클릭합니다.

    안내
    배포는 최대 2개까지 만들 수 있으며, 이 튜토리얼에서는 하나의 배포를 만듭니다.

    엔드포인트 배포 생성(2) 그림엔드포인트 배포 생성

    2단계: 배포 화면 구성
    항목 설명
    배포 이름 배포의 이름
    배포 방식 이미지 배포 방식
    - 튜토리얼에서는 커스텀 이미지 배포탭 선택
    배포 이미지 배포할 이미지 선택
    - 튜토리얼에서는 앞에서 등록한 모델 컨테이너 이미지 선택
    포트 번호 컨테이너에 접속 가능한 포트 번호
    - 샘플 컨테이너 이미지를 활용하는 경우 8501 입력
    GPU 포함 워크스페이스에 부여된 잔여 쿼터 하에서 원하는 인스턴스와 개수 선택
    - 샘플 컨테이너 이미지를 사용하는 경우, 수량은 1 입력
    태그(선택) 배포를 태그로 관리하고 싶은 경우 입력
    주의
    샘플 컨테이너 이미지를 배포한 후 호출 테스트를 수행하려면 반드시 GPU 인스턴스를 선택합니다.
  5. 3단계: 트래픽 설정 페이지에서 아무것도 변경하지 않고 [다음] 버튼을 클릭합니다.

    엔드포인트 트래픽 설정 그림엔드포인트 트래픽 설정

    튜토리얼 Tip!
    배포를 여러 개 만들 경우, 트래픽을 분할하는 비율이나 미러링 모드 활성화 여부를 지정할 수 있습니다.
    이 튜토리얼에서는 배포가 1개이므로 트래픽은 100%로 고정됩니다.

    3단계: 트래픽 설정 화면 구성

    항목 설명
    미러링 모드 활성화(토글) 활성화 시, 메인 배포에 입력된 트래픽을 다른 배포에도 복제하여 전송
    - 메인 배포 선택 필요
    - 트래픽 비율은 100%로 고정
    트래픽 할당 비율 조정 각 배포에 배분할 트래픽 비율 입력
    - 슬라이더로 트래픽 할당 비율 조정(5단위로 조정 가능)

  6. 4단계: 검토 페이지에서 입력한 내용을 검토한 후 [만들기] 버튼을 클릭합니다.

    엔드포인트 검토 그림엔드포인트 검토

배포된 모델 테스트하기

배포한 모델을 테스트하는 방법은 다음과 같습니다.

  1. Kakao i Machine Learning 콘솔에서 엔드포인트 메뉴를 클릭한 후, 엔드포인트 목록에서 방금 생성한 엔드포인트 이름을 클릭합니다.

  2. 엔드포인트 정보 탭의 기본 정보에서 엔드포인트와 API Key를 별도로 복사해 둡니다.

    엔드포인트 기본 정보 그림엔드포인트 기본 정보

  3. 터미널에서 테스트 코드를 실행합니다.

    코드예제테스트 코드

    curl -d '{"instances": [1.0, 2.0, 5.0]}' \
        -X POST {엔드포인트 주소}/v1/models/saved_model_half_plus_two_gpu:predict
    

    배포된 모델 테스트 호출 방식

    메서드 요청 URL
    POST {엔드포인트 주소}/v1/models/saved_model_half_plus_two_gpu:predict

    테스트 코드 Path Parameter

    파라미터 설명
    {엔드포인트 주소} 엔드포인트 정보의 엔드포인트

이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

더 자세한 의견은 documentation@kakaoenterprise.com 으로 제보해주세요.