Amazon SageMaker JumpStart에서 GPT 및 Bloom 모델로 텍스트 생성 실행

12 월 2020에서, AWS 발표 일반적인 가용성 Amazon SageMaker 점프스타트, 능력 아마존 세이지 메이커 머신 러닝(ML)을 빠르고 쉽게 시작할 수 있도록 도와줍니다. JumpStart는 일반적인 비즈니스 문제를 해결하는 다양한 종단 간 솔루션은 물론 인기 있는 ML 작업 전반에 걸쳐 사전 훈련된 다양한 모델의 클릭 한 번으로 미세 조정 및 배포를 제공합니다. 이러한 기능은 ML 프로세스의 각 단계에서 무거운 작업을 제거하여 고품질 모델을 더 쉽게 개발하고 배포 시간을 단축합니다.

이 게시물은 특정 ML 작업에 JumpStart를 사용하는 방법에 대한 시리즈의 네 번째 게시물입니다. 에서 첫 번째 게시물, JumpStart에서 이미지 분류 사용 사례를 실행하는 방법을 보여주었습니다. 에서 두 번째 게시물, 텍스트 분류 사용 사례를 실행하는 방법을 시연했습니다. 에서 세 번째 게시물, 이미지 세분화 사용 사례를 실행했습니다.

이 게시물에서는 사전 훈련된 텍스트 생성 모델을 배포하는 방법에 대한 단계별 연습을 제공합니다. 동일한 결과를 얻는 두 가지 방법을 살펴봅니다. 아마존 세이지 메이커 스튜디오, 그리고 프로그래밍 방식으로 점프스타트 API.

이 게시물에서 살펴보는 JumpStart API 코드로 바로 이동하려면 다음 샘플 Jupyter 노트북을 참조할 수 있습니다. JumpStart 소개 – 텍스트 생성.

JumpStart 개요

JumpStart는 한 줄의 코드를 작성하지 않고도 다양한 작업을 위한 ML 모델을 시작할 수 있도록 도와줍니다. 현재 JumpStart를 사용하여 다음을 수행할 수 있습니다.

  • 일반적인 ML 작업을 위해 사전 학습된 모델 배포 – JumpStart를 사용하면 공개적으로 사용 가능한 대규모 데이터 세트에 대해 사전 훈련된 모델을 쉽게 배포하여 개발 노력 없이 일반적인 ML 작업을 해결할 수 있습니다. ML 연구 커뮤니티는 최근에 개발된 대부분의 모델을 공개적으로 사용할 수 있도록 많은 노력을 기울였습니다. JumpStart는 객체 감지, 텍스트 분류 및 텍스트 생성과 같은 가장 인기 있는 300가지 ML 작업에 걸쳐 15개 이상의 모델 컬렉션을 호스팅하므로 초보자도 쉽게 사용할 수 있습니다. 이러한 모델은 TensorFlow, PyTorch, Hugging Face 및 MXNet과 같은 인기 있는 모델 허브에서 가져왔습니다.
  • 사전 훈련된 모델 미세 조정 – JumpStart를 사용하면 자체 훈련 알고리즘을 작성할 필요 없이 사전 훈련된 모델을 미세 조정할 수 있습니다. ML에서는 한 도메인에서 학습한 지식을 다른 도메인으로 이전하는 기능을 호출합니다. 전학 학습. 전이 학습을 사용하여 원본 모델 교육에 관련된 비용보다 훨씬 저렴한 교육 비용으로 더 작은 데이터 세트에서 정확한 모델을 생성할 수 있습니다. 또한 JumpStart에는 LightGBM, CatBoost, XGBoost 및 Scikit-learn을 기반으로 하는 인기 있는 교육 알고리즘이 포함되어 있어 테이블 형식 회귀 및 분류를 위해 처음부터 교육할 수 있습니다.
  • 사전 구축된 솔루션 사용 – JumpStart는 클릭 몇 번으로 배포할 수 있는 수요 예측, 산업 및 금융 애플리케이션과 같은 일반적인 ML 사용 사례를 위한 17가지 솔루션 세트를 제공합니다. 솔루션은 다양한 AWS 서비스를 결합하여 특정 비즈니스 사용 사례를 해결하는 종단 간 ML 애플리케이션입니다. 그들은 사용 AWS 클라우드 포메이션 빠른 배포를 위한 템플릿 및 참조 아키텍처, 즉 완전히 사용자 지정할 수 있습니다.
  • SageMaker 알고리즘에 대한 노트북 예제 참조 – SageMaker는 데이터 과학자와 ML 실무자가 ML 모델 교육 및 배포를 빠르게 시작하는 데 도움이 되는 일련의 내장 알고리즘을 제공합니다. JumpStart는 이러한 알고리즘을 빠르게 사용하는 데 사용할 수 있는 샘플 노트북을 제공합니다.
  • 교육 비디오 및 블로그 검토 – JumpStart는 SageMaker 내에서 다양한 기능을 사용하는 방법을 가르치는 수많은 블로그 게시물과 비디오도 제공합니다.

JumpStart는 사용자 정의 VPC 설정을 수락하고 AWS 키 관리 서비스 (AWS KMS) 암호화 키를 사용하여 엔터프라이즈 환경 내에서 사용 가능한 모델과 솔루션을 안전하게 사용할 수 있습니다. 보안 설정을 Studio 내에서 또는 SageMaker Python SDK를 통해 JumpStart에 전달할 수 있습니다.

텍스트 생성, GPT-2 및 Bloom

텍스트 생성은 유창하고 사람이 쓴 텍스트와 구별할 수 없는 텍스트를 생성하는 작업입니다. 그것은 또한 자연어 생성.

GPT-2는 널리 사용되는 변환기 기반 텍스트 생성 모델입니다. 사람이 레이블을 지정하지 않은 원시 영어 텍스트의 대규모 코퍼스에 대해 사전 훈련되었습니다. 부분 시퀀스(문장 또는 텍스트 조각)가 주어졌을 때 모델이 시퀀스의 다음 단어 또는 토큰을 예측해야 하는 작업에 대해 교육을 받았습니다.

Bloom은 또한 변환기 기반 텍스트 생성 모델이며 GPT-2와 유사하게 훈련됩니다. 그러나 Bloom은 46개의 다른 언어와 13개의 프로그래밍 언어로 사전 교육을 받았습니다. 다음은 Bloom 모델로 텍스트 생성을 실행하는 예입니다.

Input: "Some people like dogs, some people like cats"
Output: "Some people like dogs, some people like cats some people like birds, some people like fish,"

솔루션 개요

다음 섹션에서는 Studio UI와 JumpStart API를 통해 추론을 수행하는 단계별 데모를 제공합니다. 다음 단계를 거칩니다.

  1. Studio UI를 통해 JumpStart에 액세스하여 선행 학습된 모델에서 추론을 배포하고 실행합니다.
  2. 프로그래밍 방식으로 SageMaker Python SDK와 함께 JumpStart를 사용하여 사전 훈련된 모델을 배포하고 추론을 실행합니다.

Studio UI를 통해 JumpStart에 액세스하고 선행 학습된 모델로 추론 실행

이 섹션에서는 Studio UI를 통해 JumpStart 모델을 교육하고 배포하는 방법을 보여줍니다.

다음 비디오는 JumpStart에서 미리 훈련된 텍스트 생성 모델을 찾아 배포하는 방법을 보여줍니다. 모델 페이지에는 모델 및 사용 방법에 대한 중요한 정보가 포함되어 있습니다. JumpStart에서 사용할 수 있는 사전 훈련된 모델을 배포할 수 있습니다. 추론을 위해 우리는 ml.p3.2xlarge 인스턴스 유형을 선택합니다. 저렴한 가격으로 낮은 추론 지연 시간에 필요한 GPU 가속을 제공하기 때문입니다. SageMaker 호스팅 인스턴스를 구성한 후 다음을 선택합니다. 배포. 영구 엔드포인트가 시작되어 실행될 때까지 20~25분이 소요될 수 있습니다.

엔드포인트가 작동하면 추론 요청에 응답할 준비가 된 것입니다!

추론 시간을 단축하기 위해 JumpStart는 새로 배포된 엔드포인트에서 추론을 실행하는 방법을 보여주는 샘플 노트북을 제공합니다. 선택하다 노트북 열기 아래에 Studio에서 Endpoint 사용.

SageMaker SDK와 함께 프로그래밍 방식으로 JumpStart 사용

이전 섹션에서는 몇 번의 클릭만으로 사전 훈련된 모델을 대화식으로 배포하기 위해 JumpStart UI를 사용하는 방법을 보여주었습니다. 그러나 SageMaker SDK에 통합된 API를 사용하여 프로그래밍 방식으로 JumpStart의 모델을 사용할 수도 있습니다.

이 섹션에서는 SageMaker SDK를 사용하여 이전 프로세스를 복제할 수 있는 방법에 대한 간단한 예를 살펴봅니다. JumpStart에서 사전 훈련된 적절한 모델을 선택하고 이 모델을 SageMaker 엔드포인트에 배포하고 배포된 엔드포인트에서 추론을 실행합니다. 이 데모의 모든 단계는 함께 제공되는 노트북에서 사용할 수 있습니다. JumpStart 소개 – 텍스트 생성.

선행 학습된 모델 배포

SageMaker는 빌드 및 런타임 작업을 위해 Docker 컨테이너를 광범위하게 사용하는 플랫폼입니다. JumpStart는 사용 가능한 프레임워크별 사용 SageMaker 딥 러닝 컨테이너 (DLC). 먼저 추가 패키지와 선택한 작업에 대한 학습 및 추론을 처리하는 스크립트를 가져옵니다. 마지막으로 사전 훈련된 모델 아티팩트를 별도로 가져옵니다. model_uris, 플랫폼에 유연성을 제공합니다. 단일 추론 스크립트를 사용하여 동일한 작업에 대해 미리 훈련된 모델을 얼마든지 사용할 수 있습니다. 다음 코드를 참조하십시오.

model_id, model_version = "huggingface-textgeneration-bloom-560m", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

Bloom은 매우 큰 모델이며 배포하는 데 최대 20~25분이 소요될 수 있습니다. GPT-2와 같은 더 작은 모델을 사용할 수도 있습니다. 선행 학습된 GPT-2 모델을 배포하려면 다음을 설정할 수 있습니다. model_id = huggingface-textgeneration-gpt2. JumpStart에서 사용 가능한 다른 모델 목록은 다음을 참조하십시오. JumpStart 사용 가능한 모델 테이블.

다음으로 리소스를 세이지메이커 모델 인스턴스를 만들고 엔드포인트를 배포합니다.

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

모델이 배포된 후 실시간으로 예측을 얻을 수 있습니다!

추론 실행

다음 코드 스니펫은 출력이 어떻게 보이는지 보여줍니다. 배포된 모델에 요청을 보내려면 입력 텍스트를 utf-8 인코딩된 형식.

def query(model_predictor, text):
    """Query the model predictor."""

    encoded_text = json.dumps(text).encode("utf-8")

    query_response = model_predictor.predict(
        encoded_text,
        {
            "ContentType": "application/x-text",
            "Accept": "application/json",
        },
    )
    return query_response

엔드포인트 응답은 입력 텍스트와 생성된 텍스트를 포함하는 JSON 개체입니다.

def parse_response(query_response):
    """Parse response and return the generated text."""

    model_predictions = json.loads(query_response)
    generated_text = model_predictions["generated_text"]
    return generated_text
    
text = "Some people like dogs, some people like cats"
query_response = query(model_predictor, text)
parse_response(query_response)

결과는 다음과 같습니다.

"Some people like dogs, some people like cats some people like birds, some people like fish,"

결론

이 게시물에서는 JumpStart를 사용하여 사전 훈련된 텍스트 생성 모델을 배포하는 방법을 보여주었습니다. 코드를 작성할 필요 없이 이 작업을 수행할 수 있습니다. 직접 솔루션을 시도하고 의견을 보내주십시오. JumpStart에 대한 자세한 내용과 다양한 기타 ML 작업에 사전 훈련된 오픈 소스 모델을 사용하는 방법을 알아보려면 다음을 확인하세요. AWS re:Invent 2020 비디오.


저자에 관하여

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.비벡 마단 박사 Amazon SageMaker JumpStart 팀의 응용 과학자입니다. 그는 일리노이 대학교 어바나 샴페인에서 박사 학위를 받았고 조지아 공대에서 박사후 연구원이었습니다. 그는 기계 학습 및 알고리즘 설계 분야에서 활발한 연구원이며 EMNLP, ICLR, COLT, FOCS 및 SODA 컨퍼런스에 논문을 발표했습니다.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.산토시 쿨카르니 오스트레일리아의 스포츠 고객과 협력하는 Amazon Web Services의 엔터프라이즈 솔루션 아키텍트입니다. 그는 AI/ML, 빅 데이터 및 소프트웨어 개발에 대한 지식을 사용하여 비즈니스 문제를 해결하기 위해 대규모 분산 애플리케이션을 구축하는 데 열정을 가지고 있습니다.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Ashish Khetan 박사 Amazon SageMaker 내장 알고리즘을 사용하는 수석 응용 과학자이며 기계 학습 알고리즘 개발을 돕습니다. 그는 University of Illinois Urbana Champaign에서 박사 학위를 받았습니다. 그는 기계 학습 및 통계적 추론 분야에서 활동적인 연구원이며 NeurIPS, ICML, ICLR, JMLR, ACL 및 EMNLP 컨퍼런스에서 많은 논문을 발표했습니다.

타임 스탬프 :

더보기 AWS 기계 학습