Amazon SageMaker의 TensorFlow 텍스트 분류 모델에 대한 전이 학습

아마존 세이지 메이커 의 제품군을 제공합니다 내장 알고리즘, 사전 훈련 된 모델사전 구축된 솔루션 템플릿 데이터 과학자와 머신 러닝(ML) 실무자가 ML 모델 교육 및 배포를 빠르게 시작할 수 있도록 지원합니다. 지도 학습과 비지도 학습 모두에 이러한 알고리즘과 모델을 사용할 수 있습니다. 표, 이미지, 텍스트 등 다양한 유형의 입력 데이터를 처리할 수 있습니다.

이 게시물은 SageMaker의 새로운 내장 알고리즘에 대한 시리즈의 세 번째 게시물입니다. 에서 첫 번째 게시물, 우리는 SageMaker가 이미지 분류를 위한 내장 알고리즘을 제공하는 방법을 보여주었습니다. 에서 두 번째 게시물, 우리는 SageMaker가 객체 감지를 위한 내장 알고리즘을 제공하는 방법을 보여주었습니다. 오늘 우리는 SageMaker가 TensorFlow를 사용하여 텍스트 분류를 위한 새로운 내장 알고리즘을 제공한다고 발표했습니다. 이 지도 학습 알고리즘은 다음에서 사용할 수 있는 많은 사전 훈련된 모델에 대한 전이 학습을 지원합니다. 텐서플로우 허브. 텍스트 조각을 입력으로 사용하고 각 클래스 레이블에 대한 확률을 출력합니다. 대량의 텍스트를 사용할 수 없는 경우에도 전이 학습을 사용하여 이러한 사전 훈련된 모델을 미세 조정할 수 있습니다. SageMaker를 통해 사용할 수 있습니다. 내장 알고리즘, 뿐만 아니라 SageMaker 점프스타트 UI in 아마존 세이지 메이커 스튜디오. 자세한 내용은 다음을 참조하십시오. 텍스트 분류 그리고 예시 노트북 JumpStart 소개 – 텍스트 분류.

SageMaker의 TensorFlow를 사용한 텍스트 분류는 TensorFlow Hub에서 사용할 수 있는 많은 사전 훈련된 모델에 대한 전이 학습을 제공합니다. 학습 데이터의 클래스 레이블 수에 따라 사전 학습된 TensorFlow 허브 모델에 분류 계층이 연결됩니다. 분류 계층은 무작위 가중치로 초기화되는 2-norm regularizer가 있는 dropout 계층과 완전 연결 계층의 조밀한 계층으로 구성됩니다. 모델 훈련에는 dropout layer의 dropout rate에 대한 hyper-parameters와 Dense layer에 대한 L2 regularization factor가 있습니다. 그런 다음 사전 훈련된 모델을 포함한 전체 네트워크 또는 최상위 분류 계층만 새 훈련 데이터에서 미세 조정할 수 있습니다. 이 전이 학습 모드에서는 더 작은 데이터 세트로도 훈련을 수행할 수 있습니다.

새로운 TensorFlow 텍스트 분류 알고리즘을 사용하는 방법

이 섹션에서는 TensorFlow 텍스트 분류 알고리즘을 SageMaker Python SDK. Studio UI에서 사용하는 방법에 대한 자세한 내용은 세이지메이커 점프스타트.

알고리즘은 다음에 나열된 사전 훈련된 모델에 대한 전이 학습을 지원합니다. 텐서플로우 모델. 각 모델은 고유한 model_id. 다음 코드는 다음으로 식별되는 BERT 기본 모델을 미세 조정하는 방법을 보여줍니다. model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 커스텀 트레이닝 데이터셋에서 각각 model_id, 다음을 통해 SageMaker 교육 작업을 시작하려면 견적 SageMaker Python SDK의 클래스를 사용하려면 SageMaker에서 제공하는 유틸리티 함수를 통해 Docker 이미지 URI, 학습 스크립트 URI 및 사전 학습된 모델 URI를 가져와야 합니다. 훈련 스크립트 URI에는 데이터 처리, 사전 훈련된 모델 로드, 모델 훈련 및 추론을 위해 훈련된 모델 저장에 필요한 모든 코드가 포함되어 있습니다. 사전 학습된 모델 URI에는 사전 학습된 모델 아키텍처 정의 및 모델 매개변수가 포함됩니다. 사전 훈련된 모델 URI는 특정 모델에 따라 다릅니다. 사전 훈련된 모델 tarball은 TensorFlow에서 사전 다운로드되어 적절한 모델 서명으로 저장되었습니다. 아마존 단순 스토리지 서비스 (Amazon S3) 버킷을 사용하여 네트워크 격리에서 훈련 작업을 실행합니다. 다음 코드를 참조하십시오.

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-tc-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

이러한 모델별 교육 아티팩트를 사용하여 개체를 구성할 수 있습니다. 견적 수업:

# Create SageMaker Estimator instance
tf_tc_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

다음으로 사용자 지정 데이터 세트에 대한 전이 학습을 위해 다음 목록에 있는 훈련 하이퍼파라미터의 기본값을 변경해야 할 수 있습니다. 하이퍼 파라미터. 다음을 호출하여 기본값과 함께 이러한 하이퍼파라미터의 Python 사전을 가져올 수 있습니다. hyperparameters.retrieve_default, 필요에 따라 업데이트한 다음 Estimator 클래스에 전달합니다. 일부 하이퍼파라미터의 기본값은 모델마다 다릅니다. 대형 모델의 경우 기본 배치 크기가 더 작고 train_only_top_layer 하이퍼파라미터는 다음으로 설정됩니다. True. 초매개변수 Train_only_top_layer 미세 조정 프로세스 중에 변경되는 모델 매개변수를 정의합니다. 만약에 train_only_top_layer is True, 분류 계층의 매개변수가 변경되고 나머지 매개변수는 미세 조정 프로세스 동안 일정하게 유지됩니다. 한편, 만약 train_only_top_layer is False, 그러면 모델의 모든 매개변수가 미세 조정됩니다. 다음 코드를 참조하십시오.

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

우리는 SST2 모델을 미세 조정하기 위한 기본 데이터 세트로 사용됩니다. 데이터 세트에는 긍정적이고 부정적인 영화 리뷰가 포함되어 있습니다. 에서 다운로드되었습니다. TensorFlow 아래에 아파치 2.0 라이선스. 다음 코드는 S3 버킷에서 호스팅되는 기본 교육 데이터 세트를 제공합니다.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/SST2/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

마지막으로 모델 미세 조정을 위한 SageMaker 교육 작업을 시작하려면 Estimator 클래스의 객체에서 .fit을 호출하는 동시에 교육 데이터 세트의 Amazon S3 위치를 전달합니다.

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

새로운 SageMaker TensorFlow 텍스트 분류 알고리즘을 사용자 정의 데이터 세트에 대한 전이 학습에 사용하는 방법에 대한 자세한 내용은 미세 조정된 모델을 배포하고 배포된 모델에서 추론을 실행하고 먼저 미세 조정하지 않고 사전 훈련된 모델을 있는 그대로 배포합니다. 사용자 지정 데이터 세트에서 다음 예제 노트북을 참조하세요. JumpStart 소개 – 텍스트 분류.

TensorFlow 텍스트 분류 알고리즘을 위한 입력/출력 인터페이스

에 나열된 사전 훈련된 각 모델을 미세 조정할 수 있습니다. TensorFlow 모델 클래스 수에 관계없이 텍스트 문장으로 구성된 주어진 데이터 세트에 사전 훈련된 모델은 분류 계층을 텍스트 임베딩 모델에 연결하고 계층 매개변수를 임의의 값으로 초기화합니다. 분류 계층의 출력 차원은 입력 데이터에서 감지된 클래스의 수에 따라 결정됩니다. 목표는 입력 데이터의 분류 오류를 최소화하는 것입니다. 미세 조정으로 반환된 모델은 추론을 위해 추가로 배포할 수 있습니다.

다음 지침은 모델에 입력하기 위해 훈련 데이터의 형식을 지정하는 방법을 설명합니다.

  • 입력 – data.csv 파일이 포함된 디렉토리. 첫 번째 열의 각 행에는 0과 클래스 수 사이의 정수 클래스 레이블이 있어야 합니다. 두 번째 열의 각 행에는 해당하는 텍스트 데이터가 있어야 합니다.
  • 출력 – 추론을 위해 배포하거나 증분 교육을 사용하여 추가로 교육할 수 있는 미세 조정된 모델입니다. 클래스 레이블에 대한 클래스 색인을 매핑하는 파일은 모델과 함께 저장됩니다.

다음은 입력 CSV 파일의 예입니다. 파일에는 헤더가 없어야 합니다. 파일은 다음과 유사한 경로를 사용하여 S3 버킷에서 호스팅되어야 합니다. s3://bucket_name/input_directory/. 후행에 유의하십시오. / 필요합니다.

|0 |hide new secretions from the parental units|
|0 |contains no wit , only labored gags|
|1 |that loves its characters and communicates something rather beautiful about human nature|
|...|...|

TensorFlow 텍스트 분류 알고리즘을 사용한 추론

생성된 모델은 추론 및 지원 텍스트를 위해 호스팅될 수 있습니다. application/x-text 컨텐츠 타입. 출력에는 확률 값, 모든 클래스에 대한 클래스 레이블 및 JSON 형식으로 인코딩된 확률이 가장 높은 클래스 인덱스에 해당하는 예측 레이블이 포함됩니다. 모델은 요청당 단일 문자열을 처리하고 한 줄만 출력합니다. 다음은 JSON 형식 응답의 예입니다.

accept: application/json;verbose
{"probabilities": [prob_0, prob_1, prob_2, ...],
 "labels": [label_0, label_1, label_2, ...],
 "predicted_label": predicted_label}

If acceptapplication/json, 그러면 모델은 확률만 출력합니다. 훈련 및 추론에 대한 자세한 내용은 샘플 노트북 소개를 참조하세요. JumpStart 소개 – 텍스트 분류.

JumpStart UI를 통해 SageMaker 내장 알고리즘 사용

또한 JumpStart UI를 통해 몇 번의 클릭으로 SageMaker TensorFlow 텍스트 분류 및 기타 내장 알고리즘을 사용할 수 있습니다. JumpStart는 그래픽 인터페이스를 통해 다양한 ML 프레임워크 및 모델 허브에서 기본 제공 알고리즘 및 사전 훈련된 모델을 훈련 및 배포할 수 있는 SageMaker 기능입니다. 또한 ML 모델과 다양한 기타 AWS 서비스를 결합하여 대상 사용 사례를 해결하는 본격적인 ML 솔루션을 배포할 수 있습니다.

다음은 JumpStart UI를 통해 몇 번의 클릭으로 방금 수행한 것과 동일한 미세 조정 및 배포 프로세스를 복제하는 방법을 보여주는 두 개의 비디오입니다.

사전 훈련된 모델 미세 조정

다음은 동일한 사전 훈련된 텍스트 분류 모델을 미세 조정하는 프로세스입니다.

미세 조정된 모델 배포

모델 교육이 완료된 후 클릭 한 번으로 영구적인 실시간 엔드포인트에 모델을 직접 배포할 수 있습니다.

결론

이 게시물에서 우리는 SageMaker TensorFlow 텍스트 분류 내장 알고리즘의 출시를 발표했습니다. 이 알고리즘을 사용하여 TensorFlow 허브에서 사전 훈련된 모델을 사용하여 사용자 지정 데이터 세트에서 전이 학습을 수행하는 방법에 대한 예제 코드를 제공했습니다.

자세한 내용은 선적 서류 비치 그리고 예시 노트북 JumpStart 소개 – 텍스트 분류.


저자 소개

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 TensorFlow 텍스트 분류 모델에 대한 전이 학습. 수직 검색. 일체 포함.비벡 마단 박사 는 응용 과학자입니다. Amazon SageMaker JumpStart 팀. 그는 일리노이 대학교 어바나 샴페인에서 박사 학위를 받았고 조지아 공대에서 박사후 연구원이었습니다. 그는 머신 러닝 및 알고리즘 설계 분야의 활발한 연구원이며 EMNLP, ICLR, COLT, FOCS 및 SODA 컨퍼런스에 논문을 발표했습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 TensorFlow 텍스트 분류 모델에 대한 전이 학습. 수직 검색. 일체 포함.주앙 모 우라 Amazon Web Services의 AI/ML 전문가 솔루션 아키텍트입니다. 그는 주로 NLP 사용 사례에 중점을 두고 고객이 딥 러닝 모델 교육 및 배포를 최적화하도록 지원합니다. 그는 또한 로우 코드 ML 솔루션 및 ML 전문 하드웨어의 적극적인 지지자입니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스의 TensorFlow 텍스트 분류 모델에 대한 전이 학습. 수직 검색. 일체 포함.Ashish Khetan 박사 는 수석 응용 과학자입니다. Amazon SageMaker 내장 알고리즘 기계 학습 알고리즘을 개발하는 데 도움이 됩니다. 그는 University of Illinois Urbana Champaign에서 박사 학위를 받았습니다. 그는 머신 러닝 및 통계 추론 분야의 활발한 연구원이며 NeurIPS, ICML, ICLR, JMLR, ACL 및 EMNLP 컨퍼런스에서 많은 논문을 발표했습니다.

타임 스탬프 :

더보기 AWS 기계 학습