지속적 평가를 시작하기 전에

지속적 평가를 사용하려면 먼저 다음 두 가지를 수행해야 합니다.

  • 평가를 위해 모델 버전을 학습시켜 AI Platform Prediction에 배포
  • 지속적 평가에 필요한 Google Cloud API 사용 설정

AI Platform 예측에 모델 버전 배포

AI Platform 데이터 라벨링 서비스는 AI Platform Prediction에 배포한 머신러닝 모델에 대해서만 지속적 평가를 수행할 수 있습니다. 평가 작업을 만들 때 AI Platform Prediction 모델 버전에 연결합니다. 각 모델 버전에는 하나의 평가 작업만 연결할 수 있습니다.

머신러닝 모델을 학습하고 AI Platform 예측에 모델 버전으로 배포하는 방법은 Keras로 학습 및 예측 시작 가이드를 참조하세요.

모델 버전 요구사항

지속적 평가는 여러 유형의 머신러닝 모델을 지원합니다.

모델 유형
이미지 분류 이미지를 입력으로 받고 하나 이상의 라벨을 출력으로 반환하는 모델입니다. 입력 이미지는 base64 인코딩 이미지 또는 Cloud Storage 파일 경로로 제공될 수 있습니다.
텍스트 분류 텍스트를 입력으로 받고 하나 이상의 라벨을 출력으로 반환하는 모델입니다.
일반적 분류 임의의 배열 또는 문자열을 입력으로 받고 하나 이상의 라벨을 출력으로 반환하는 모델입니다.

데이터 라벨링 서비스는 일반적 분류의 정답 라벨을 제공하기 위해 검토자를 할당할 수 없습니다. 일반적 분류 모델에 지속적 평가를 설정하는 경우 직접 정답 라벨을 태그해야 합니다.
이미지 객체 감지 이미지를 입력으로 받고 라벨이 지정된 하나 이상의 경계 상자를 출력으로 반환하는 모델입니다. 이러한 경계 상자는 이미지에서 객체의 위치를 예측합니다.

머신러닝 모델이 수행하는 태스크에 따라 모델을 학습시켜 배포된 모델 버전이 온라인 예측 입력을 수락하고 지속적 평가가 지원하는 특정 형식으로 온라인 예측 출력을 생성하도록 해야 합니다.

다음 섹션의 사양은 온라인 예측 요청 및 응답의 JSON 본문 요구사항을 AI Platform 예측으로 확장합니다. 지속적 평가는 현재 온라인 예측만 샘플링하며 일괄 예측은 샘플링하지 않습니다. 온라인 및 일괄 예측의 차이점에 대해 알아보세요.

예시에서 강조표시된 필드는 지속적 평가에 필요한 필드를 나타냅니다. 예측 입력 및 출력에 추가 필드를 포함할 수 있지만 Data Labeling Service는 입력을 정답 라벨 지정을 위해 검토자에게 할당할 때와 평가 측정항목을 계산할 때 이를 무시합니다.

강조표시된 필드의 키(yourDataKey, yourLabelKey, yourScoreKey, yourBoundingBoxKey)를 / 문자를 포함하지 않는 문자열로 바꿀 수 있습니다. 평가 작업을 만들 때 이러한 문자열을 지정해야 합니다.

다음 섹션에서는 각 모델 유형의 모델 요구사항을 설명합니다.

이미지 분류

입력 형식

모델은 다음 형식으로 온라인 예측 요청을 수신해야 합니다.

{
  "instances": [
    {
      "yourDataKey": <image input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

<image input (string)>은 다음 중 하나일 수 있습니다.

  • base64 인코딩 이미지입니다.
  • Cloud Storage에 저장된 이미지의 URI입니다. 데이터 라벨링 서비스가 이미지를 읽을 권한을 갖도록 하려면 Cloud Storage 버킷이 평가 작업을 만드는 Google Cloud 프로젝트와 같은 프로젝트에 있어야 합니다.
Base64 인코딩 예시

다음 예시는 base64 인코딩 이미지가 포함된 온라인 예측 요청 본문을 보여줍니다.

{
  "instances": [
    {
      "image_bytes": {
        "b64": "iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAhUlEQVR4AWOAgZeONnHvHcXiGJDBqyDTXa+dVC888oy51F9+eRdY8NdWwYz/RyT//znEsAjEt277+syt5VMJw989DM/+H2MI/L8tVBQk4d38xcWp7ctLhi97ZCZ0rXV6yLA4b6dH59sjTq3fnji1fp4AsWS5j7PXstRg+/b3gU7N351AQgA8+jkf43sjaQAAAABJRU5ErkJggg=="
      }
    }
  ]
}

이 예시의 image_bytes 필드에 입력 데이터가 중첩되어 있습니다. 모델에서 이와 같은 예측 입력을 허용하는 경우 평가 작업을 만들 때 이 중첩 구조를 지정해야 합니다.

Cloud Storage 참조 예시

다음 예시는 Cloud Storage의 이미지에 대한 참조가 포함된 온라인 예측 요청 본문을 보여줍니다.

{
  "instances": [
    {
      "image_path": "gs://cloud-samples-data/datalabeling/image/flower_1.jpeg"
    }
  ]
}

출력 형식

모델은 다음과 같은 형식으로 온라인 예측을 반환해야 합니다.

{
  "predictions": [
    {
      "YOUR_LABEL_KEY": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

라벨 배열과 점수 배열은 길이가 동일해야 합니다. 모델이 단일 라벨 분류를 수행하는 경우 라벨 1개와 점수 1개가 있어야 합니다. 모델이 다중 라벨 분류를 수행하는 경우 라벨 배열의 각 라벨은 점수 배열의 동일한 색인에 있는 점수에 해당해야 합니다.

점수는 필수입니다. 점수는 머신러닝 모델이 예측에 할당하는 신뢰도 또는 확률을 나타냅니다. 일반적으로 모델은 특정 입력에 대해 계산된 점수를 분류 임계값과 비교하여 라벨을 선택합니다.

분류 출력 예시

다음 예시는 분류를 위한 온라인 예측 응답 본문을 보여줍니다.

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

텍스트 분류

입력 형식

모델은 다음 형식으로 온라인 예측 요청을 수신해야 합니다.

{
  "instances": [
    {
      "yourDataKey": <text input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
텍스트 입력 예시

다음 예시는 텍스트 데이터가 포함된 온라인 예측 요청 본문을 보여줍니다.

{
  "instances": [
    {
      "text": "If music be the food of love, play on;"
    }
  ]
}

출력 형식

모델은 다음과 같은 형식으로 온라인 예측을 반환해야 합니다.

{
  "predictions": [
    {
      "YOUR_LABEL_KEY": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

라벨 배열과 점수 배열은 길이가 동일해야 합니다. 모델이 단일 라벨 분류를 수행하는 경우 라벨 1개와 점수 1개가 있어야 합니다. 모델이 다중 라벨 분류를 수행하는 경우 라벨 배열의 각 라벨은 점수 배열의 동일한 색인에 있는 점수에 해당해야 합니다.

점수는 필수입니다. 점수는 머신러닝 모델이 예측에 할당하는 신뢰도 또는 확률을 나타냅니다. 일반적으로 모델은 특정 입력에 대해 계산된 점수를 분류 임계값과 비교하여 라벨을 선택합니다.

분류 출력 예시

다음 예시는 분류를 위한 온라인 예측 응답 본문을 보여줍니다.

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

일반적 분류

입력 형식

모델은 다음 형식으로 온라인 예측 요청을 수신해야 합니다.

{
  "instances": [
    {
      "yourDataKey": <input data (string or array)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
일반적 입력 예시

다음 예시는 문자열과 숫자를 포함하는 입력 데이터 배열이 있는 온라인 예측 요청 본문을 보여줍니다.

{
  "instances": [
    {
      "weather": [
        "sunny",
        72,
        0.22
      ]
    }
  ]
}

출력 형식

모델은 다음과 같은 형식으로 온라인 예측을 반환해야 합니다.

{
  "predictions": [
    {
      "YOUR_LABEL_KEY": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

라벨 배열과 점수 배열은 길이가 동일해야 합니다. 모델이 단일 라벨 분류를 수행하는 경우 라벨 1개와 점수 1개가 있어야 합니다. 모델이 다중 라벨 분류를 수행하는 경우 라벨 배열의 각 라벨은 점수 배열의 동일한 색인에 있는 점수에 해당해야 합니다.

점수는 필수입니다. 점수는 머신러닝 모델이 예측에 할당하는 신뢰도 또는 확률을 나타냅니다. 일반적으로 모델은 특정 입력에 대해 계산된 점수를 분류 임계값과 비교하여 라벨을 선택합니다.

분류 출력 예시

다음 예시는 분류를 위한 온라인 예측 응답 본문을 보여줍니다.

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

이미지 객체 감지

입력 형식

모델은 다음 형식으로 온라인 예측 요청을 수신해야 합니다.

{
  "instances": [
    {
      "yourDataKey": <image input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

<image input (string)>은 다음 중 하나일 수 있습니다.

  • base64 인코딩 이미지입니다.
  • Cloud Storage에 저장된 이미지의 URI입니다. 데이터 라벨링 서비스가 이미지를 읽을 권한을 갖도록 하려면 Cloud Storage 버킷이 평가 작업을 만드는 Google Cloud 프로젝트와 같은 프로젝트에 있어야 합니다.
Base64 인코딩 예시

다음 예시는 base64 인코딩 이미지가 포함된 온라인 예측 요청 본문을 보여줍니다.

{
  "instances": [
    {
      "image_bytes": {
        "b64": "iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAhUlEQVR4AWOAgZeONnHvHcXiGJDBqyDTXa+dVC888oy51F9+eRdY8NdWwYz/RyT//znEsAjEt277+syt5VMJw989DM/+H2MI/L8tVBQk4d38xcWp7ctLhi97ZCZ0rXV6yLA4b6dH59sjTq3fnji1fp4AsWS5j7PXstRg+/b3gU7N351AQgA8+jkf43sjaQAAAABJRU5ErkJggg=="
      }
    }
  ]
}

이 예시의 image_bytes 필드에 입력 데이터가 중첩되어 있습니다. 모델에서 이와 같은 예측 입력을 허용하는 경우 평가 작업을 만들 때 이 중첩 구조를 지정해야 합니다.

Cloud Storage 참조 예시

다음 예시는 Cloud Storage의 이미지에 대한 참조가 포함된 온라인 예측 요청 본문을 보여줍니다.

{
  "instances": [
    {
      "image_path": "gs://cloud-samples-data/datalabeling/image/flower_1.jpeg"
    }
  ]
}

출력 형식

모델은 다음과 같은 형식으로 온라인 예측을 반환해야 합니다.

{
  "predictions": [
    {
      "yourBoundingBoxKey": [
        {
          "top_left": {
            "x": <left coordinate for first box>,
            "y": <top coordinate for first box>
          },
          "bottom_right": {
            "x": <right coordinate for first box>,
            "y": <bottom coordinate for first box>
          },
        },
        ...
      ],
      "YOUR_LABEL_KEY": [
        <label for first box>,
        ...
      ],
      "YOUR_SCORE_KEY": [
        <score for first box,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

경계 상자 배열, 라벨 배열, 점수 배열은 모두 길이가 동일해야 합니다. 경계 상자 배열의 각 항목은 라벨 배열의 동일한 색인에 있는 라벨에 의해 라벨링되어야 하며 점수 배열의 같은 색인에 있는 점수에 해당해야 합니다. 예를 들어 yourBoundingBoxKey[0]yourLabelKey[0]에 의해 라벨링되며 점수는 yourScoreKey[0]입니다.

점수는 필수입니다. 점수는 머신러닝 모델이 예측에 할당하는 신뢰도 또는 확률을 나타냅니다. 일반적으로 모델은 특정 입력에 대해 계산된 점수를 분류 임계값과 비교하여 라벨을 선택합니다.

대체 출력 형식

yourBoundingBoxKey에 문자열 detection_boxes를 사용하고, yourLabelKey에 문자열 detection_classes를 사용하고, yourScoreKey에 문자열 detection_scores를 사용하는 경우 예측 출력에 표준 형식 대신 다음 형식을 사용할 수 있습니다.

{
  "predictions": [
    {
      "detection_boxes": [
        {
          "x_min": <left coordinate for first box>,
          "y_min": <top coordinate for first box>,
          "x_max": <right coordinate for first box>,
          "y_max": <bottom coordinate for first box>
        },
        ...
      ],
      "detection_classes": [
        <label for first box>,
        ...
      ],
      "detection_scores": [
        <score for first box,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
객체 감지 출력 예시

다음 예시는 객체 감지의 온라인 예측 응답 본문을 보여줍니다.

{
  "predictions": [
    {
      "bird_locations": [
        {
          "top_left": {
            "x": 53,
            "y": 22
          },
          "bottom_right": {
            "x": 98,
            "y": 150
          }
        }
      ],
      "species": [
        "rufous hummingbird"
      ],
      "probability": [
        0.77
      ]
    }
  ]
}

API 사용 설정

지속적 평가를 사용하려면 먼저 여러 Google Cloud API를 사용 설정해야 합니다. 다음 단계에서는 AI Platform Prediction에 모델 버전을 배포할 때 동일한 프로젝트에서 AI Platform Training 및 Prediction API를 이미 사용 설정했다고 가정합니다.

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. Data Labeling Service and BigQuery API를 사용 설정합니다.

    API 사용 설정

  5. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  6. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  7. Data Labeling Service and BigQuery API를 사용 설정합니다.

    API 사용 설정

다음 단계

평가 작업 생성 가이드를 읽고 지속적 평가를 시작하세요.