이 프로젝트는 Bert Pretraining을 용이하게하는 Python 모듈입니다. 이 특정 모델을 훈련하기위한 현재 기존 오픈 소스 솔루션은 복잡합니다. 우리는 절차를 단순화했습니다. 이 프로젝트의 목표는 ML 실무자들이 데이터를 사용하여 자신의 버트 모델을 훈련시킬 수 있도록 더 넓은 기계 학습 커뮤니티에 코드를 열어야합니다. 이 코드는 VBERT (VMware의 BERT 모델)의 최신 반복을 훈련시키기 위해 VMWARE 내의 기계 학습 및 자연어 처리 연구원을 돕기 위해 만들어졌습니다.
데모 노트북은 데모 폴더 내에 있습니다
Python 3.7 또는 3.8 가상 Env를 설정하고 사용 요구 사항을 설치하십시오.
pip install . 루트 폴더 내에서
또는
pip install git+https://github.com/vmware-labs/bert-pretraining
https://github.com/google-research/bert에서 create_pretraining_data.py를 사용하여 사전 여보 데이터를 만듭니다.
훈련 중에 세트 설정된 분리 된 평가에서 모델의 MLM 및 NSP 정확도를 평가하려면 별도의 평가 파일을 만들 수 있습니다.
구성 객체에서 split_ratio 매개 변수를 사용하여 단일 파일을 교육 및 평가 벡터로 분할 할 수도 있습니다.
사전 여파 매개 변수는 Pretraining_Config 클래스를 통해 처리됩니다. Demo.ipynb를 따라 샘플 Bert 사전 조정을 실행하십시오.
Pretraining_config 매개 변수
| 매개 변수 | 기본값 | 설명 |
|---|---|---|
| model_name | 데모 버트 | 모델 이름 |
| IS_BASE | 진실 | Bert-Base와 Bert-Large를 선택하는 부울 |
| max_seq_length | 128 | MSL, tfrecord 파일과 일치해야합니다 (다른 MSL로 버트를 프리 레이트하려면 2 개의 분리 파일 생성 예를 들어 : 128, 512) |
| max_predictions_per_seq | 20 | MLM 용으로 마스킹 된 토큰 수, tfrecord 파일과 일치해야합니다. |
| NUM_TRAIN_STEPS | 1000 | Tfrecord 파일의 끝에 도달하면 모델을 훈련시키기위한 단계 수 있습니다 (의미있는 사전 여면에는 더 많은 훈련 단계가 필요합니다) |
| num_warmup_steps | 10 | 워밍업 단계 수, Bert는 훈련 단계의 1%를 워밍업 단계로 사용합니다. |
| Learning_rate | 1E-05 | 모델 학습 속도 |
| Train_batch_size | 32 | 훈련 배치 크기 (GPU를 가로 질러 분할) |
| save_intermediate_checkpoints | 진실 | save_checkpoint_steps가 결정한 모든 'X'교육 단계에 대한 검문소를 저장하십시오. 검사 점은 항상 훈련이 끝날 때 절약됩니다. |
| save_intermediate_checkpoint_steps | 25000 | 모든 'X'교육 단계 후 체크 포인트를 저장합니다 (워밍업 단계 포함) |
| eval_batch_size | 32 | 평가 배치 크기 (GPU를 가로 질러 분할) |
| max_eval_steps | 1000 | 별도의 평가 파일이 없을 때 평가를 수행하기위한 단계 수. 별도의 평가 파일이 제공되거나 split_ratio가 제공되는 경우 전체 평가 데이터 세트가 평가에 사용됩니다. |
| 평가 _point | 1000 | 모든 'X'교육 단계에 대한 평가를 수행합니다 |
| split_ratio | 없음 | 교육에 사용할 교육 데이터 세트의 비율 훈련 tfrecord를 기차로 나누고 데이터 세트를 평가합니다. 분할 비율이 제공되지 않으면 훈련 파일은 Evaulation에 사용됩니다 (평가 단계 수는 max_eval_steps 매개 변수에 의해 제어됩니다) |
| init_checkpoint | 없음 | 훈련을 재개하는 경우 이전 체크 포인트로가는 경로를 제공합니다. 비 기본 체크 포인트 (Bert-Base, Bert-Large)에서 교육을 초기화하는 경우 모델 체크 포인트 이름/경로를 제공하십시오). |
| input_file | ./input/demo_msl128.tfrecord | 입력 tfrecord 파일 https://github.com/google-research/bert에서 create_pretraining_data.py를 사용하여 생성되었습니다 |
| Eval_File | 없음 | Seperate Eval DataSet을 사용하려면 https://github.com/google-research/bert에서 Create_Pretraining_data.py를 사용하여 생성 된 입력 tfrecord 파일을 제공하십시오. |
| log_csv | ./eval_results.csv | 평가 결과를 저장하는 파일 ** |
| output_dir | ./ckpts | 검문소를 저장하는 디렉토리 |
| num_gpu | 3 | 훈련에 사용할 GPU 수 |
** 출력 log_CSV 파일은 하이퍼 파라미터 및 평가 결과를 기록합니다.
Demo.tfrecord 파일은 Wikicorpus 데이터 세트에서 작성되었습니다.
Bert-Pretraining Project 팀은 지역 사회의 기여를 환영합니다. 이 프로젝트 작업을 시작하기 전에 기고자 라이센스 계약 (https://cla.vmware.com/cla/1/preview)을 읽고 서명하십시오. 코드를 기여하고 싶고 귀하가 기고자 라이센스 계약 (CLA)에 서명하지 않은 경우 당사의 봇이 풀 요청을 열 때 그렇게하라는 메시지를 표시합니다. CLA 프로세스에 대한 궁금한 점이 있으면 Contributing.md를 참조하십시오.
아파치 -2.0