이 repo에는 Azure Machine Learning Service를 사용한 Bert (Transformers의 Bitirectional Encoder 표현) 언어 표현 모델에 대한 최종-엔드 레시피가 포함되어 있습니다.
7/7/2020에 업데이트 :? https://github.com/microsoft/onnxruntime-training-examples/tree/mas 이 구현은 ONNX 런타임을 사용하여 교육을 가속화하며 Azure Machine Learning Service를 포함한 GPU의 환경에서 사용할 수 있습니다. Bert 및 GPT-2와 같은 변압기 모델의 교육 및 가속화를 위해 Onnx 런타임 사용에 대한 자세한 내용은 Onnx 런타임 교육 기술 딥 다이브의 블로그에서 제공됩니다.
Bert는 코퍼스에서 깊고 미묘한 텍스트 관계를 효과적으로 포착 할 수있는 능력으로 구별되는 언어 표현 모델입니다. 원래 논문에서 저자는 BERT 모델이 텍스트 분류, 이름이 지명 된 엔티티 인식 및 질문 답변을 포함한 여러 NLP 작업에 대한 최첨단 모델을 구축하기 위해 쉽게 조정할 수 있음을 보여줍니다. 이 저장소에서 우리는 개발자가 코퍼스에서 처음부터 버트 모델을 사전에 전제하고 기존 버트 모델을 미세 조정하여 특수 작업을 해결할 수있는 노트북을 제공합니다. Bert에 대한 간단한 소개는 Bert에서 빠른 시작을 위해이 저장소에서 제공됩니다.
버트 언어 표현 모델을 원하는 수준의 정확도로 전제하는 것은 상당히 어려운 일입니다. 결과적으로 대부분의 개발자는 처음부터 훈련하는 대신 표준 코퍼스 (예 : Wikipedia)에서 미리 훈련 된 Bert 모델에서 시작합니다. 이 전략은 최종 모델이 사전 훈련 단계에서 사용되는 코퍼스와 유사한 코퍼스에서 훈련을받는 경우에도 잘 작동합니다. 그러나 문제가 표준 코퍼스와는 상당히 다른 특수 코퍼스와 관련이 있다면 결과는 최적이 아닙니다. 또한 Bert의 정확성을 넘어 언어 표현을 발전 시키려면 사용자는 모델 아키텍처, 교육 데이터, 비용 기능, 작업 및 최적화 루틴을 변경해야합니다. 이러한 모든 변경 사항은 큰 매개 변수 및 교육 데이터 크기로 탐색해야합니다. Bert-Large의 경우, 3 억 4 천만 개의 매개 변수가 있고 매우 큰 문서 코퍼스에 대해 훈련을 받았기 때문에 이것은 상당히 상당 할 수 있습니다. GPU를 통해이를 지원하려면 기계 학습 엔지니어는 이러한 대형 모델을 훈련시키기 위해 분산 교육 지원이 필요합니다. 그러나 이러한 분산 환경을 구성하는 복잡성과 취약성으로 인해 전문가 조정조차도 훈련 된 모델의 열등한 결과로 끝날 수 있습니다.
이러한 문제를 해결하기 위해이 리포지토리는 사전 해독 된 Bert-Large 모델을위한 워크 플로를 게시하고 있습니다. 개발자는 이제 자체 하드웨어 또는 Azure Machine Learning Service를 사용하여 GPU의 도메인 별 데이터를 사용하여 Bert와 같은 자체 언어 표현 모델을 구축 할 수 있습니다. 이 repo의 프리 트레인 레시피에는 데이터 세트 및 전처리 스크립트가 포함되어 있으므로 누구나 자신의 범용 언어 표현 모델을 Bert 이상으로 구축 할 수 있습니다. 전반적으로 이것은 연구원들이 스스로 탐색을 시도 할 수있는 좋은 최적으로 수렴하는 안정적이고 예측 가능한 레시피입니다.
이 repo의 사전 조리 레시피는 Pytorch 사전 RET BERT V0.6.2 패키지를 기반으로합니다. 이 사전 여적 레시피의 구현에는 gradient accumulation 과 같은 최적화 기술 (모델 가중치를 업데이트하기 전에 더 작은 미니 배치에 대한 그라디언트가 축적 됨) 및 mixed precision training 포함됩니다. 전 노트북 및 파이썬 모듈은 프리 트레인 디렉토리에서 제공됩니다.
데이터 준비는 모든 기계 학습 프로젝트에서 중요한 단계 중 하나입니다. Bert Pretraining의 경우 문서 수준의 코퍼스가 필요합니다. 사전 레이팅에 사용되는 데이터의 품질은 훈련 된 모델의 품질에 직접적인 영향을 미칩니다. 데이터 전처리를보다 쉽고 결과의 반복성을 위해 데이터 전처리 코드를 Repo에 포함시킵니다. 사전 처리를 위해 Wikipedia Corpus 또는 기타 데이터 세트를 사전 프로세스하는 데 사용될 수 있습니다. 이에 대한 자세한 내용은 사전 준비를 위해 데이터 준비의 추가 정보를 참조하십시오.
이 repo의 미세 조정 레시피는 Azure Machine Learning Service를 사용하여 Bert Langu Finetuning 용 노트북 및 파이썬 모듈은 Finetune 디렉토리에서 제공됩니다. 우리는 다음과 비교하여 사전 여분의 체크 포인트를 미세화하고 평가합니다.
일반 언어 이해 평가 (Glue) 벤치 마크는 자연어 이해 시스템을 평가하고 분석하기위한 9 개의 문장 또는 문장 쌍 언어 이해 작업의 모음입니다. Bert_eval_glue.ipynb Jupyter 노트북을 사용하면 사용자가 Azure ML에서 이러한 작업에 대해 사전 여지가있는 검문소 중 하나를 실행할 수 있습니다.
Azure Machine Learning Service는 클라우드 기반 환경을 제공하여 데이터를 준비하고, 기차, 테스트, 배포, 관리 및 추적하고, 기계 학습 모델을 추적합니다. 이 서비스는 Pytorch, Tensorflow 및 Scikit-Learn과 같은 오픈 소스 기술을 전적으로 지원하며 고전 ML에서 딥 러닝, 감독 및 감독 학습에 이르기까지 모든 종류의 머신 러닝에 사용할 수 있습니다.
Jupyter Notebook은 Azureml Python SDK를 사용하고 프리 트레인 및 Finetune 작업을 제출하는 데 사용될 수 있습니다. 이 repo에는 다양한 활동에 대한 다음 노트가 포함되어 있습니다.
| 활동 | 공책 |
|---|---|
| 프리 트레인 | bert_pretrain.ipynb |
| 접착제 FINETUNE/평가 | bert_eval_glue.ipynb |
| 활동 | 공책 |
|---|---|
| 접착제 FINETUNE/평가 | Tensorflow-Bert-Azureml.ipynb |
이 프로젝트는 Microsoft 오픈 소스 행동 강령을 채택했습니다. 자세한 내용은 추가 질문이나 의견이 있으면 행동 강령 FAQ 또는 [email protected]에 문의하십시오.