Healthcare용 항목 추출 모델 학습

Healthcare용 AutoML Entity Extraction은 커스텀 Healthcare Natural Language 모델을 학습하기 위한 시작점을 제공합니다. 모델을 학습시킨 후 모델에서 예측을 요청할 수 있습니다. 예측은 항목 추출을 위해 모델에 의료 텍스트를 제출할 때 발생합니다.

AutoML에서는 다음과 같은 예측 모드를 지원합니다.

  • 모델이 제출된 단일 문서에 대해 동기식 분석을 수행하는 온라인 예측
  • 모델이 문서 모음에 대해 비동기식 분석을 수행하는 일괄 예측

AutoML API 사용 설정

Healthcare용 AutoML Entity Extraction을 사용하여 모델을 학습시키기 전에 Google Cloud 프로젝트에 AutoML API를 사용 설정해야 합니다.

AutoML API를 사용 설정하려면 다음 단계를 완료하세요.

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

    프로젝트 선택기로 이동

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

  4. 서비스 계정을 만듭니다.

    1. Cloud Console에서 서비스 계정 만들기 페이지로 이동합니다.

      서비스 계정 만들기로 이동
    2. 프로젝트를 선택합니다.
    3. 서비스 계정 이름 필드에 이름을 입력합니다. Cloud Console은 이 이름을 기반으로 서비스 계정 ID 필드를 채웁니다.

      서비스 계정 설명 필드에 설명을 입력합니다. 예를 들면 Service account for quickstart입니다.

    4. 만들기를 클릭합니다.
    5. 역할 선택 필드를 클릭합니다.

      빠른 액세스에서 기본을 클릭한 후 소유자를 클릭합니다.

    6. 계속을 클릭합니다.
    7. 완료를 클릭하여 서비스 계정 만들기를 마칩니다.

      브라우저 창을 닫지 마세요. 다음 단계에서 사용합니다.

  5. 서비스 계정 키 만들기

    1. Cloud Console에서 만든 서비스 계정의 이메일 주소를 클릭합니다.
    2. 를 클릭합니다.
    3. 키 추가를 클릭한 후 새 키 만들기를 클릭합니다.
    4. 만들기를 클릭합니다. JSON 키 파일이 컴퓨터에 다운로드됩니다.
    5. 닫기를 클릭합니다.
  6. GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 서비스 계정 키가 포함된 JSON 파일의 경로로 설정합니다. 이 변수는 현재 셸 세션에만 적용되므로, 새 세션을 열 경우, 변수를 다시 설정합니다.

  7. AutoML Natural Language API를 사용 설정합니다.

    API 사용 설정

  8. Cloud SDK 설치 및 초기화

권한 설정

Healthcare용 AutoML Entity Extraction을 기본 모델로 사용하는 커스텀 모델을 학습시키려면 healthcare.nlpServiceViewer 역할에 포함된 healthcare.nlpservce.analyzeEntities 권한이 있는 서비스 계정을 사용해야 합니다.

이 역할을 할당하려면 gcloud projects add-iam-policy-binding 명령어를 실행합니다.

gcloud projects add-iam-policy-binding PROJECT_ID --member serviceAccount:SERVICE_ACCOUNT_ID --role roles/healthcare.nlpServiceViewer

모델 학습

AutoML UI를 사용한 모델 학습

AutoML UI를 사용하여 모델을 학습시키려면 다음 단계를 완료하세요.

  1. AutoML Natural Language UI를 열고 AutoML 항목 추출에서 시작하기를 클릭합니다.

    데이터 세트 페이지에는 현재 프로젝트용으로 이전에 만든 데이터 세트의 상태가 표시됩니다. 다른 프로젝트의 데이터 세트를 사용하여 학습하려면 제목 표시줄의 오른쪽 상단에 있는 목록에서 프로젝트를 선택합니다.

  2. 데이터 세트를 만들거나 커스텀 모델 학습에 사용할 데이터 세트를 선택합니다.

    선택한 데이터 세트의 표시 이름이 제목 표시줄에 나타나고 페이지에는 데이터 세트에 있는 개별 문서가 라벨과 함께 나열됩니다.

  3. 텍스트 또는 문서의 데이터 세트를 구조화된 JSONL 형식으로 나열하는 CSV 파일을 가져옵니다.

  4. 데이터 세트를 검토한 후 제목 표시줄 아래에 있는 학습 탭을 클릭합니다.

    이 데이터 세트의 첫 번째 모델을 학습시키는 경우 학습 페이지에는 데이터 세트에 대한 기본 분석이 제공되며 데이터 세트가 학습에 적합한지 여부를 알려줍니다. AutoML Natural Language에서 변경을 제안하면 텍스트 항목 페이지로 돌아가서 항목이나 라벨을 추가하는 것이 좋습니다.

    이 데이터 세트에서 다른 모델을 학습시킨 경우 학습 페이지에는 해당 모델의 기본 평가 측정항목이 표시됩니다.

  5. 학습 시작을 클릭합니다.

  6. 모델의 이름을 입력합니다.

    모델 이름은 최대 32자(영문 기준)여야 하며 문자, 숫자, 밑줄만 포함할 수 있습니다. 첫 번째 글자는 문자여야 합니다.

  7. 모델을 자동으로 배포하려면 학습 완료 후 모델 배포 옵션을 선택합니다.

  8. Healthcare 항목 추출 사용 설정 옵션을 선택합니다.

  9. 학습 시작을 클릭합니다.

학습은 몇 시간 정도 걸릴 수 있습니다. 모델 학습이 완료되면 이메일 알림이 전송됩니다.

AutoML API를 사용한 모델 학습

AutoML API로 모델을 학습시키려면 projects.locations.models.create 메서드를 사용합니다.

  1. 아래의 요청 본문을 request.json 파일에 저장합니다. 요청에 다음 정보를 제공합니다.

    • DISPLAY_NAME: 모델의 표시 이름입니다.
    • DATASET_ID: 데이터 세트 ID입니다.
    {
    "displayName": "DISPLAY_NAME",
    "dataset_id": "DATASET_ID",
    "textExtractionModelMetadata": {
       "model_hint": "healthcare"
    }
    }
    
  2. projects.locations.models.create 명령어를 실행합니다.

    curl

    curl을 사용하여 POST 요청을 수행하려면 다음 명령어를 실행합니다.

    curl -X POST \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models
    

    PowerShell

    Windows PowerShell을 사용하여 POST 요청을 수행하려면 다음 명령어를 실행합니다.

    $cred = gcloud auth application-default print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }
    
    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models" | Select-Object -Expand Content
    

    명령어 출력은 다음 샘플과 비슷하게 표시됩니다. 작업 ID를 사용하여 작업 상태를 가져올 수 있습니다. 자세한 내용은 작업 상태 가져오기를 참조하세요.

    {
      "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
        "createTime": "CREATE_TIME",
        "updateTime": "UPDATE_TIME",
        "cancellable": true
      }
    }
    

예측 실행

AutoML Natural Language UI를 사용하여 예측

Healthcare용 AutoML Entity Extraction을 사용하여 Cloud Storage의 파일 또는 AutoML Natural Language UI에 입력한 텍스트를 예측할 수 있습니다.

AutoML Natural Language UI를 사용하여 예측하려면 다음 단계를 완료하세요.

  1. AutoML Natural Language UI를 열고 모델을 클릭합니다.

  2. 문서 분석에 사용하려는 모델의 행을 클릭합니다.

  3. 제목 표시줄 아래의 테스트 및 사용 탭을 클릭합니다.

  4. Cloud Storage의 파일 선택을 클릭한 다음 PDF 파일의 Cloud Storage 경로를 입력하거나 아래에 텍스트 입력을 클릭한 후 예측에 사용할 의료 텍스트를 입력합니다.

  5. 예측을 클릭합니다.

batchPredict 메서드를 사용하여 예측

모델을 사용하여 문서 코퍼스에 대해 처리량이 높은 비동기 예측을 수행하려면 batchPredict 메서드를 사용할 수 있습니다. 일괄 예측 메서드를 사용하려면 Cloud Storage 버킷의 위치를 가리키는 입력 및 출력 URI를 지정해야 합니다.

입력 URI는 분석할 콘텐츠를 지정하는 JSONL 파일을 가리킵니다. 출력은 AutoML이 일괄 예측의 결과를 저장하는 위치를 지정합니다.

batchPredict 메서드를 사용하여 예측하려면 다음 단계를 완료하세요.

  1. 분석할 콘텐츠가 포함된 JSONL 파일을 인라인 또는 Cloud Storage 버킷에 저장된 파일의 링크로 만듭니다.

    다음 샘플은 JSONL 파일에 포함된 인라인 콘텐츠를 보여 주며 각 항목에는 필요한 고유 ID가 포함되어 있습니다.

    { "id": "0", "text_snippet": { "content": "Insulin regimen human 5 units IV administered.." } }
    { "id": "1", "text_snippet": { "content": "Blood pressure is normal." } }
    ...
    { "id": "n", "text_snippet": { "content": "Pulse: 80. BP: 110/70. Respirations: 16. Temp: 97.4." } }
    

    다음 샘플은 Cloud Storage 버킷에 있어야 하는 입력 파일의 링크가 포함된 JSONL 파일을 보여줍니다.

    { "document": { "input_config": { "gcs_source": { "input_uris": [ "gs://FOLDER/FILENAME1" ] } } } }
    { "document": { "input_config": { "gcs_source": { "input_uris": [ "gs://FOLDER/FILENAME2" ] } } } }
    ...
    
  2. JSONL 입력 파일의 위치와 Cloud Storage 버킷의 출력 디렉터리를 지정하는 JSON 파일을 만듭니다.

    {
    "input_config": { "gcs_source": { "input_uris": [ "gs://JSONL_FILE_LOCATION"] } },
    "output_config": { "gcs_destination": { "output_uri_prefix": "gs://OUTPUT_DIR" } }
    }
    
  3. 예측하려면 batchPredict 메서드를 실행합니다.

    curl

    batchPredict 명령어에서 다음을 바꿉니다.

    • REQUEST_FILENAME을 요청 JSON 파일의 위치로 바꿉니다.
    • PROJECT_ID/locations/REGION/models/MODEL_ID를 모델의 정규화된 이름으로 바꿉니다. 모델 ID를 찾으려면 AutoML UI의 모델 페이지로 이동합니다.

    다음 샘플은 curl을 사용하는 POST 요청을 보여줍니다.

    curl -X POST \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @REQUEST_FILENAME \
    https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID:batchPredict
    

    명령어에 대한 응답은 다음 샘플과 비슷합니다.

    {
    "name": "projects/824236087934/locations/REGION/operations/MODEL_ID",
    "metadata": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
      "createTime": "CREATE_TIME",
      "updateTime": "UPDATE_TIME",
      "batchPredictDetails": {
        "inputConfig": {
          "gcsSource": {
            "inputUris": [
              "gs://INPUT_URI"
            ]
          }
        }
      }
    }
    }
    

    예측이 완료되었는지 확인하려면 다음 명령어를 실행하세요.

    curl -X GET \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: application/json" \
     https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

    다음 샘플과 유사한 응답에서 ¨done¨: true를 찾아 작업이 완료되었는지 확인합니다.

    {
    "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "metadata": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
      "createTime": "CREATE_TIME",
      "updateTime": "UPDATE_TIME",
      "batchPredictDetails": {
        "inputConfig": {
          "gcsSource": {
            "inputUris": [
              "gs://JSONL_FILE_LOCATION"
            ]
          }
        },
        "outputInfo": {
          "gcsOutputDirectory": "gs://OUTPUT_DIRPREDICTION_FILENAME"
        }
      }
    },
    "done": true,
    "response": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.BatchPredictResult"
    }
    }
    

    지정한 출력 위치에서 JSONL 파일에는 예측 결과가 포함됩니다.

    PowerShell

    batchPredict 명령어에서 다음을 바꿉니다.

    • REQUEST_FILENAME을 요청 JSON 파일이 저장된 위치로 바꿉니다.
    • PROJECT_ID/locations/REGION/models/MODEL_ID를 모델의 정규화된 이름으로 바꿉니다. 모델 ID를 찾으려면 AutoML UI의 모델 페이지로 이동합니다.

    다음 샘플은 Windows PowerShell을 사용하는 POST 요청을 보여줍니다.

    $cred = gcloud auth application-default print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }
    
    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile REQUEST_FILENAME `
    -Uri "https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/models/MODEL_ID:batchPredict" | Select-Object -Expand Content
    

    명령어에 대한 응답은 다음 샘플과 비슷합니다.

    {
    "name": "projects/824236087934/locations/REGION/operations/MODEL_ID",
    "metadata": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
      "createTime": "CREATE_TIME",
      "updateTime": "UPDATE_TIME",
      "batchPredictDetails": {
        "inputConfig": {
          "gcsSource": {
            "inputUris": [
              "gs://INPUT_URI"
            ]
          }
        }
      }
    }
    }
    

    예측이 완료되었는지 확인하려면 다음 명령어를 실행하세요.

    curl -X GET \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: application/json" \
     https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

    다음 샘플과 유사한 응답에서 ¨done¨: true를 찾아 작업이 완료되었는지 확인합니다.

    {
    "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "metadata": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
      "createTime": "CREATE_TIME",
      "updateTime": "UPDATE_TIME",
      "batchPredictDetails": {
        "inputConfig": {
          "gcsSource": {
            "inputUris": [
              "gs://JSONL_FILE_LOCATION"
            ]
          }
        },
        "outputInfo": {
          "gcsOutputDirectory": "gs://OUTPUT_DIRPREDICTION_FILENAME"
        }
      }
    },
    "done": true,
    "response": {
      "@type": "type.googleapis.com/google.cloud.automl.v1beta1.BatchPredictResult"
    }
    }
    

    지정한 출력 위치에서 JSONL 파일에는 예측 결과가 포함됩니다.