BlazingText 알고리듬 - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

BlazingText 알고리듬

더 Amazon SageMaker BlazingText 알고리즘은 Word2Vec 및 텍스트 분류 알고리즘의 고도로 최적화된 구현을 제공합니다. Word2vec 알고리즘은 감정 분석, 명명된 엔터티 인식, 기계 번역 등 여러 가지 다운스트림 자연 언어 처리(NLP) 작업에 유용합니다. 텍스트 분류는 웹 검색, 정보 검색, 순위 지정 및 문서 분류를 수행하는 애플리케이션에 중요한 작업입니다.

Word2vec 알고리즘은 고품질 분산 벡터로 단어를 매핑합니다. 단어의 결과 벡터 표현은 단어 임베딩이라고 합니다. 의미적으로 유사한 단어는 가까이 있는 벡터에 해당합니다. 이러한 방식으로 단어 임베딩은 단어 간 의미 관계를 파악합니다.

많은 자연 언어 처리(NLP) 애플리케이션이 다량의 문서 모음을 훈련해 단어 임베딩을 배웁니다. 사전 훈련된 벡터 표현은 이후에 보다 제한된 양의 데이터로 훈련된 다른 모델의 일반화 가능성을 개선하는 의미 및 단어 분포에 대한 정보를 제공합니다. 대부분의 Word2vec 알고리즘 구현은 멀티 코어 CPU 아키텍처에 대해 최적화되어 있습니다. 이로 인해 크기가 큰 데이터 세트로 크기 조정하기 어렵습니다.

사용 BlazingText 알고리즘을 사용하면 대규모 데이터 세트로 쉽게 확장 할 수 있습니다. Word2Vec과 유사하게 스킵 그램 및 연속 기능을 제공합니다. bag-of-words (CBOW) 교육 아키텍처. BlazingText에서는 감독되는 다중 클래스, 다중 레이블 텍스트 분류 알고리즘을 구현하여 FastText 텍스트 분류기를 확장하여 사용자 지정과 함께 GPU 가속을 사용할 수 있습니다.쿠다커널. 멀티 코어 CPU 또는 GPU를 사용하여 몇 분 내에 10억 개 이상의 단어를 모델에게 훈련시킬 수 있습니다. 또한 다음과 같은 수준의 성능을 얻을 수 있습니다. state-of-the-art 딥러닝 텍스트 분류 알고리즘.

이 BlazingText 알고리즘은 병렬화할 수 없습니다. 학습과 관련된 파라미터에 대한 자세한 내용은 섹션을 참조하세요.에 대한 도커 레지스트리 경로 SageMaker 기본 제공 알고리즘.

이 SageMaker BlazingText 알고리즘은 다음의 기능을 제공합니다.

  • 멀티 코어 CPU 또는 GPU의 fastText 텍스트 분류자 및 고도로 최적화된 CUDA 커널을 사용하는 GPU의 Word2Vec 훈련을 가속화합니다. 자세한 내용을 알아보려면 다음 섹션을 참조하세요.BlazingText: 다중 GPU를 사용한 Word2Vec 스케일링 및 가속화.

  • character n-gram에 대한 벡터 표현을 학습하여 형태소(subword) 정보로 풍부해진 단어 벡터. 이 접근 방식을 통해 BlazingText 다음에 대해 의미 있는 벡터를 만들려면 out-of-vocabulary (OOV) 는 해당 벡터를 문자형 n-그램 (하위 단어) 벡터의 합으로 표현한 것입니다.

  • 여러 CPU 노드 간에 더욱 빠른 훈련 및 분산 컴퓨팅을 허용하는 Word2Vec 알고리즘을 위한 batch_skipgram mode. batch_skipgram mode에서는 Negative Sample Sharing 전략으로 미니 배치를 훈련하여 레벨 1 BLAS 작업을 레벨 3 BLAS 작업으로 변환합니다. 이렇게 하면 최신 아키텍처의 곱셈-누산 지침을 효율적을 활용할 수 있습니다. 자세한 정보는 Parallelizing Word2Vec in Shared and Distributed Memory를 참조하십시오.

요약하면 다음과 같은 모드가 에서 지원됩니다. BlazingText 다른 유형의 인스턴스에서:

Modes

Word2Vec

(비지도 학습)

텍스트 분류

(지도 학습)

단일 CPU 인스턴스

cbow

Skip-gram

Batch Skip-gram

supervised

단일 GPU 인스턴스(GPU 1개 이상)

cbow

Skip-gram

GPU 하나를 사용하는 supervised

다중 CPU 인스턴스

Batch Skip-gram 없음

기본 제공 수학에 대한 자세한 내용은 다음 내용을 참조하세요. BlazingText, 참조하십시오.BlazingText: 다중 GPU를 사용한 Word2Vec 스케일링 및 가속화.

의 입력/출력 인터페이스 BlazingText알고리즘

이 BlazingText 알고리즘에는 공백으로 구분된 토큰이 있는 단일 전처리된 텍스트 파일이 필요합니다. 이 파일의 각 행에는 문장이 하나 포함되어 있어야 합니다. 여러 텍스트 파일에 대해 훈련해야 하는 경우 해당 텍스트 파일을 하나의 파일로 연결한 다음 각 채널에서 파일을 업로드합니다.

훈련 및 검증 데이터 형식

Word2Vec 알고리즘에 대한 훈련 및 검증 데이터 형식

Word2Vec 훈련을 위해 train 채널에서 파일을 업로드합니다. 다른 채널은 지원되지 않습니다. 이 파일에는 행마다 훈련 문장이 포함되어 있어야 합니다.

텍스트 분류 알고리즘에 대한 훈련 및 검증 데이터 형식

지도 모드의 경우에는 파일 모드 또는 증강 매니페스트 텍스트 형식을 사용하여 훈련할 수 있습니다.

파일 모드를 사용하여 훈련

supervised 모드의 경우 훈련/검증 파일에는 레이블과 함께 행마다 훈련 문장이 하나씩 포함되어 있어야 합니다. 레이블은 문자열 __label__로 시작하는 단어입니다. 다음은 훈련/검증 파일의 예입니다.

__label__4 linux ready for prime time , intel says , despite all the linux hype , the open-source movement has yet to make a huge splash in the desktop market . that may be about to change , thanks to chipmaking giant intel corp . __label__2 bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly as the indian skippers return to international cricket was short lived .
참고

문장 내 레이블의 순서는 중요하지 않습니다.

train 채널에서 훈련 파일을 업로드하고, validation 채널에서 검증 파일을 선택적으로 업로드합니다.

증강 매니페스트 텍스트 형식으로 훈련

또한 지도 모드에서는 RecordIO 파일을 생성할 필요 없이 파이프 모드에서 훈련하도록 하는 증강 매니페스트 형식도 지원합니다. 이 형식을 사용하는 동안 문장 목록과 문장의 해당 레이블을 포함한 S3 매니페스트 파일을 생성해야 합니다. 매니페스트 파일 형식은 각 행이 샘플 하나를 나타내는 JSON Lines 형식이어야 합니다. 문장은 source 태그를 사용하여 지정되고, 레이블은 label 태그를 사용하여 지정할 수 있습니다. sourcelabel 태그는 둘 모두 요청으로 지정된 AttributeNames 파라미터 값 아래에서 제공되어야 합니다.

{"source":"linux ready for prime time , intel says , despite all the linux hype", "label":1} {"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label":2}

다중 레이블 훈련도 레이블의 JSON 배열을 지정하여 지원됩니다.

{"source":"linux ready for prime time , intel says , despite all the linux hype", "label": [1, 3]} {"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label": [2, 4, 5]}

증강 매니페스트 파일에 대한 자세한 정보는 증강 매니페스트 파일을 사용하여 훈련 작업에 데이터 세트 메타데이터 제공 단원을 참조하십시오.

모델 결과물 및 추론

Word2Vec 알고리즘의 모델 결과물

Word2Vec 학습의 경우 모델 아티팩트는 다음과 같이 구성됩니다.vectors.txt, 다음을 포함합니다 words-to-vectors 매핑 및vectors.bin, 에서 사용하는 바이너리 BlazingText 호스팅, 추론 또는 둘 다용입니다.vectors.txtGensim 및 Spacy와 같은 다른 도구와 호환되는 형식으로 벡터를 저장합니다. 예를 들어, Gensim 사용자는 다음 명령을 실행하여 vectors.txt 파일을 로드할 수 있습니다.

from gensim.models import KeyedVectors word_vectors = KeyedVectors.load_word2vec_format('vectors.txt', binary=False) word_vectors.most_similar(positive=['woman', 'king'], negative=['man']) word_vectors.doesnt_match("breakfast cereal dinner lunch".split())

평가 파라미터가 True로 설정된 경우에는 추가 파일인 eval.json이 생성됩니다. 이 파일에는 WS-353 데이터 세트에 대한 유사성 검증 결과(Spearman 순위 상관 계수)가 포함되어 있습니다. 훈련 코퍼스에 없는 WS-353 데이터 세트의 단어 수가 보고됩니다.

추론 요청의 경우 이 모델은 문자열 목록이 포함된 JSON 파일을 수락하고 벡터 목록을 반환합니다. 단어가 어휘에 등록되지 않은 경우 추론에서는 0으로 구성된 벡터를 반환합니다. 하위 단어가 로 설정된 경우True학습 중에 모델은 다음과 같은 벡터를 생성할 수 있습니다. out-of-vocabulary(OOV) 단어.

샘플 JSON 요청

Mime-type: application/json

{ "instances": ["word1", "word2", "word3"] }

텍스트 분류 알고리즘의 모델 결과물

감독된 출력을 사용한 트레이닝은model.bin에서 사용할 수 있는 파일 BlazingText 호스팅. 추론을 위해 BlazingText모델은 문장 목록이 포함된 JSON 파일을 받아 해당 예측 레이블 및 확률 점수 목록을 반환합니다. 각 문장은 공백으로 구분된 토큰, 단어 또는 둘 다가 포함된 문자열이어야 합니다.

샘플 JSON 요청

Mime-type: application/json

{ "instances": ["the movie was excellent", "i did not like the plot ."] }

기본적으로 서버는 확률이 가장 높은 예측을 하나만 반환합니다. 상위 k 예측을 가져오기 위해 구성에서 k를 다음과 같이 설정할 수 있습니다.

{ "instances": ["the movie was excellent", "i did not like the plot ."], "configuration": {"k": 2} }

에 대한 BlazingText, 그 content-typeaccept매개변수는 같아야 합니다. 배치 변환을 위해 이러한 파라미터는 둘 다 application/jsonlines여야 합니다. 다른 경우 Accept 필드가 무시됩니다. 입력 형식은 다음과 같습니다.

content-type: application/jsonlines {"source": "source_0"} {"source": "source_1"} if you need to pass the value of k for top-k, then you can do it in the following way: {"source": "source_0", "k": 2} {"source": "source_1", "k": 3}

출력 형식은 다음과 같습니다.

accept: application/jsonlines {"prob": [prob_1], "label": ["__label__1"]} {"prob": [prob_1], "label": ["__label__1"]} If you have passed the value of k to be more than 1, then response will be in this format: {"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]} {"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]}

감독 (텍스트 분류) 모드와 감독되지 않은 (Word2Vec) 모드 모두의 경우 바이너리 (*.bin) 제작: BlazingText FastText에서 교차 사용할 수 있으며 그 반대의 경우도 마찬가지입니다. 에서 만든 바이너리를 사용할 수 있습니다. BlazingText 글쓴이: fastText. 마찬가지로 다음을 사용하여 FastText로 만든 모델 바이너리를 호스팅할 수 있습니다. BlazingText.

다음은 로 생성된 모델을 사용하는 방법을 보여주는 예입니다. BlazingText fastText 포함:

#Download the model artifact from S3 aws s3 cp s3://<YOUR_S3_BUCKET>/<PREFIX>/model.tar.gz model.tar.gz #Unzip the model archive tar -xzf model.tar.gz #Use the model archive with fastText fasttext predict ./model.bin test.txt

그러나 바이너리는 CPU 및 단일 GPU에 대한 훈련인 경우에만 지원됩니다. 다중 GPU에 대한 훈련은 바이너리를 생성하지 않습니다.

데이터세트 형식 및 모델 호스팅에 대한 자세한 내용은 예제 노트북을 참조하십시오.를 사용한 텍스트 분류 BlazingText 알고리즘,FastText 모델, 및Word2Vec 알고리즘을 사용하여 하위 단어 임베딩 생성.

에 대한 EC2 인스턴스 권장 사항 BlazingText알고리즘

에 대한cbowskipgram모드, BlazingText 단일 CPU 및 단일 GPU 인스턴스를 지원합니다. 이러한 두 모드에서는 subwords 임베딩 학습을 지원합니다. 정확도의 저하 없이 속도를 최대한 높이려면 ml.p3.2xlarge 인스턴스를 사용하는 것이 좋습니다.

에 대한batch_skipgram모드, BlazingText 단일 또는 다중 CPU 인스턴스를 지원합니다. 여러 인스턴스를 학습할 때는 의 값을 설정하십시오.S3DataDistributionType필드 오브S3DataSource전달한 대상 객체CreateTrainingJobFullyReplicated. BlazingText컴퓨터 간에 데이터를 분산시키는 일을 담당합니다.

지도 텍스트 분류 모드의 경우 훈련 데이터 세트가 2GB 미만인 경우 C5 인스턴스가 권장됩니다. 더 큰 데이터 세트의 경우 단일 GPU가 있는 인스턴스를 사용하십시오. BlazingText 학습 및 추론을 위한 P2, P2 및 G5 인스턴스를 지원합니다.

BlazingText 샘플 노트북

를 사용하는 샘플 노트북의 경우 SageMaker BlazingText 감독된 바이너리 및 멀티클래스 분류 모델을 학습하고 배포하기 위한 알고리즘, 참조DBPedia 데이터셋의 블레이징 텍스트 분류. SageMaker에서 예제를 실행하는 데 사용할 수 있는 Jupyter 노트북 인스턴스를 생성하여 해당 인스턴스에 액세스하는 지침은 Amazon SageMaker 노트북 인스턴스 사용 단원을 참조하십시오. 노트북 인스턴스를 만들고 연 다음SageMaker 예제:탭을 클릭하면 모든 목록을 볼 수 있습니다. SageMaker 예제입니다. Blazing Text를 사용하는 주제 모델링 예제 노트북은 Introduction to Amazon algorithms(Amazon 알고리즘 소개) 섹션에 있습니다. 노트북을 열려면 노트북의 사용 탭을 선택하고 복사 생성을 선택합니다.