기본 제공 BERT 알고리즘 시작하기

이 가이드에서는 AI Platform Training에서 Bidirectional Encoder Representations from Transformers(BERT) 모델을 학습시키는 방법을 보여줍니다.

BERT는 언어 표현을 사전 학습시키는 방법입니다. 사전 학습은 BERT가 Wikipedia와 같은 대량의 텍스트 소스로 처음 학습되는 방법을 나타냅니다. 이후 학습 결과를 질문 답변감정 분석과 같은 다른 자연어 처리(NLP) 태스크에 적용할 수 있습니다. BERT 및 AI Platform Training을 사용하면 약 30분 만에 다양한 NLP 모델을 학습시킬 수 있습니다.

BERT에 대한 자세한 내용은 다음 리소스를 참조하세요.

목표

  • 모델 출력을 보관할 Cloud Storage 버킷을 만듭니다.
  • 학습 작업을 실행합니다.
  • 출력 결과를 확인합니다.

이 튜토리얼를 시작하기 전에 Google Cloud 프로젝트가 올바르게 설정되었는지 확인하세요.

다음 단계에 따라 GCP 계정을 설정하고, 필요한 API를 사용 설정하고, Google Cloud CLI를 설치 및 활성화합니다.

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  9. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

데이터 준비

이 튜토리얼에서는 데이터를 사전 처리하거나 다운로드할 필요가 없습니다. 필요한 모든 데이터 및 모델 체크포인트는 공개 스토리지 버킷에서 제공됩니다. 이 프로세스에 관심이 있다면 명령줄에서 데이터 세트를 만드는 방법을 다루는 Cloud TPU 튜토리얼을 확인하세요.

학습 작업 제출

작업을 제출하려면 몇 가지 기본 학습 인수 및 BERT 알고리즘과 관련된 몇 가지 기본 인수를 지정해야 합니다.

학습 작업의 일반 인수:

학습 작업 인수
인수 설명
job-id 학습 작업의 고유 ID입니다. 학습 작업을 제출한 후 이 인수를 사용하여 학습 작업의 상태 로그를 찾을 수 있습니다.
job-dir 학습 작업이 성공적으로 완료된 후 AI Platform Training이 학습 파일을 저장하는 Cloud Storage 경로입니다.
scale-tier 학습용 머신 유형을 지정합니다. 머신이 한 개만 있는 구성을 선택하려면 BASIC을 사용합니다.
master-image-uri 학습 작업에 사용할 Docker 컨테이너를 지정하는 데 사용되는 Container Registry URI입니다. 앞에서 IMAGE_URI로 정의된 BERT 기본 제공 알고리즘에 이 컨테이너를 사용합니다.
region 학습 작업을 실행할 사용 가능한 리전을 지정합니다. 이 가이드에서는 us-central1 리전을 사용할 수 있습니다.

제공된 데이터 세트를 사용한 기본 제공 BERT 알고리즘 학습과 관련된 인수

알고리즘 인수
인수 설명
mode train_and_eval 학습 미세 조정 또는 모델 내보내기 여부를 나타냅니다.
train_dataset_path gs://cloud-tpu-checkpoints/bert/classification/mnli_train.tf_record 학습 데이터가 저장되는 Cloud Storage 경로입니다.
eval_dataset_path gs://cloud-tpu-checkpoints/bert/classification/mnli_eval.tf_record 평가 데이터가 저장되는 Cloud Storage 경로입니다.
input_meta_data_path gs://cloud-tpu-checkpoints/bert/classification/mnli_meta_data 입력 스키마가 저장되는 Cloud Storage 경로입니다.
bert_config_file gs://cloud-tpu-checkpoints/bert/keras_bert/uncased_L-24_H-1024_A-16/bert_config.json BERT 구성 파일이 저장되는 Cloud Storage 경로입니다.
init_checkpoint gs://cloud-tpu-checkpoints/bert/keras_bert/uncased_L-24_H-1024_A-16/bert_model.ckpt 세부 조정을 위한 체크포인트 시작(일반적으로 선행 학습된 BERT 모델)
train_batch_size 32 학습의 배치 크기입니다.
eval_batch_size 32 평가의 배치 크기입니다.
learning_rate 2e-5 Adam 옵티마이저에 사용되는 학습률입니다.
num_train_epochs 1 실행할 학습 세대 수(train_and_eval 모드에서만 사용 가능)입니다.
steps_per_loop 1000 그래프 모드 루프별 단계 수입니다.

다른 모든 BERT 알고리즘 플래그의 세부 목록은 기본 제공 BERT 참조를 확인하세요.

학습 작업 실행

  1. AI Platform > 작업 페이지로 이동합니다.

AI Platform > 작업 페이지

  1. 페이지 상단에서 '새 학습 작업' 버튼을 클릭하고 '기본 제공 알고리즘 학습'을 선택합니다.

  2. 학습 알고리즘으로 BERT 선택

  3. 찾아보기 버튼을 사용하여 Cloud Storage 버킷에서 학습 및 평가 데이터 세트를 표시하고 출력 디렉터리를 선택합니다.

  4. 다음 페이지에서 위의 인수 값을 사용하여 학습 작업을 구성합니다.

  5. 학습 작업 이름을 지정하고 BASIC_TPU 머신 유형을 사용합니다.

  6. '제출'을 클릭하여 작업을 시작합니다.

작업 디렉터리 이해

학습 작업이 성공적으로 완료되면 AI Platform Training이 다른 몇 가지 아티팩트와 함께 학습된 모델을 개발자의 Cloud Storage 버킷에 만듭니다. JOB_DIR 내의 디렉터리 구조는 다음과 같습니다.

  • model/(TensorFlow SavedModel 디렉터리)
    • saved_model.pb
    • assets/
    • variables/
  • summary/(학습 및 평가에서 로깅)
    • eval/
    • train/
  • 다양한 체크포인트 파일(학습 중에 생성 및 사용)
    • 체크포인트
    • ctl_checkpoint-1.data-00000-of-00002
    • ...
    • ctl_checkpoint-1.index

JOB_DIR의 디렉터리 구조가 이전 목록에 설명된 구조와 일치하는지 확인합니다.

gcloud storage ls -a $JOB_DIR/*

학습된 모델 배포

AI Platform Prediction은 모델버전 리소스를 사용하여 학습된 모델을 구성합니다. AI Platform Prediction 모델은 머신러닝 모델 버전의 컨테이너입니다.

모델을 배포하려면 AI Platform Prediction에서 모델 리소스를 만들고 해당 모델의 버전을 만든 다음 모델과 버전을 사용하여 온라인 예측을 요청합니다.

AI Platform Prediction에 모델을 배포하는 방법에 대해 자세히 알아보세요.

Console

  1. 작업 페이지에 모든 학습 작업의 목록이 표시됩니다. 바로 전에 제출한 학습 작업의 이름을 클릭합니다.

  2. 작업 세부정보 페이지에서 작업의 일반 진행 상태를 확인하거나 로그 보기를 클릭하여 더 자세한 진행 상태를 확인할 수 있습니다.

  3. 작업이 성공하면 모델 배포 버튼이 맨 위에 나타납니다. 모델 배포를 클릭합니다.

  4. '새 모델로 배포'를 선택하고 모델 이름을 입력합니다. 그런 다음 확인을 클릭합니다.

  5. 버전 만들기 페이지에서 버전 이름(예: v1)을 입력하고 다른 모든 필드를 기본 설정으로 유지합니다. 저장을 클릭합니다.

  6. 모델 세부정보 페이지에 버전 이름이 표시됩니다. 버전을 만드는 데 몇 분 정도 걸립니다. 버전이 준비되면 버전 이름 옆에 체크표시 아이콘이 나타납니다.

  7. 버전 이름(v1)을 클릭하여 버전 세부정보 페이지로 이동합니다. 이 튜토리얼의 다음 단계에서는 예측 요청을 전송합니다.

온라인 예측 수행

예측을 요청할 때 모델에 필요한 방식으로 입력 데이터를 JSON 형식으로 지정해야 합니다. 현재 BERT 모델은 입력을 자동으로 사전 처리하지 않습니다.

콘솔

  1. 방금 만든 버전인 v1버전 세부정보 페이지에서 샘플 예측 요청을 전송할 수 있습니다.

    테스트 및 사용 탭을 선택합니다.

  2. 다음 샘플을 입력란에 복사합니다.

      {
        "instances": [
          {
            "input_mask": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            "input_type_ids":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            "input_word_ids": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
            }
          ]
        }
    
  3. 테스트를 클릭합니다.

    잠시 기다리면 예측 벡터가 반환됩니다.

다음 단계

이 가이드에서는 샘플 데이터 세트를 사용하여 BERT 모델을 학습시켰습니다. 대부분의 경우 이 학습 결과는 추론에 사용할 수 없습니다. 추론에 모델을 사용하려면 일반에 공개된 데이터 세트 또는 자체 데이터 세트에서 데이터를 학습시킵니다. Cloud TPU에서 학습된 모델은 데이터 세트가 TFRecord 형식이어야 합니다.

데이터 세트 변환 도구 샘플을 사용하여 이미지 분류 데이터 세트를 TFRecord 형식으로 변환할 수 있습니다. 이미지 분류 모델을 사용하지 않는 경우 데이터 세트를 직접 TFRecord 형식으로 변환해야 합니다. 자세한 내용은 TFRecord 및 tf.Example을 참조하세요.