문장 토큰 화를 통해 자신의 Corpora에서 GPT-2 변압기 언어 모델 교육.
이 repo에는 다중 GPU 교육을 지원하는 GPT-2의 Pytorch 구현이 포함되어 있습니다. 또한 lm/gpt_2_tf 의 Tensorflow 구현도 포함되어 있지만 더 이상 개발되지 않았습니다. 동일한 데이터 준비 스크립트를 공유합니다. TF 교육 명령은 gpt-2-tf-train 이며 텐서 플로 1.13이 필요합니다. 아래 문서는 Pytorch 버전 용입니다.
내용물
파이썬 3.6+는 토치 야간 또는 1.6.0+로 필요합니다. VirtualEnV에서 작업하는 것은 다음과 같습니다. Pytorch의 적절한 버전을 먼저 설치 한 다음 :
PIP 설치 -R 요구 사항 .txt Python setup.py 개발
지침은 다음과 같습니다. 작은 코퍼스의 전체 파이프 라인 데모에 대해서는 test/test_shakespeare.sh 도 참조하십시오 (CPU에서 1 분이 걸리십시오).
코퍼스 형식 : 최상위 train , valid 및 test 폴더가있는 디렉토리. 각 최상위 폴더에는 하위 폴더가 포함될 수 있습니다. 그 안에는 .txt 확장자가있는 UTF-8 인코딩 된 텍스트 파일이 있어야합니다.
문장 모델을 훈련시키고 코퍼스를 인코딩하라는 명령은 여러 Corpora를 지원합니다. 아래 예에서는 data/corpora-* 로 나열 될 수 있다고 가정합니다.
Train SentencePiece 모델 (실행 후 sp-text.txt 제거 할 수 있음). 이것은 필요한 경우 권고 된대로 많은 양의 메모리를 소비하고 문장 인수를 조정할 수 있습니다 ( sp-train 명령에서 직접 지원되지 않습니다).
SP- 트레인 데이터/Corpora-* sp-text.txt sp-model
Numpy 파일 생성 Corpora를 인코딩합니다.
sp-encode data/corpora-* sp-model.Model Data/Encoded
예제 명령 :
GPT-2 Run-Root Data/인코딩 된 SP-Model.Model
run-root 에는 모델 체크 포인트 및 JSON-Lines Logs가 포함되어 있으며 X Axis에서 볼 수있는 수많은 토큰이있는 json_log_plots.plot("run-root") 있는 Jupyter 노트북에 표시 할 수 있습니다.
기본 하이퍼 파라미터는 방출 된 "작은"GPT-2 모델에 해당합니다.
다중 GPU를 사용할 수 있으면 torch.distributed 의 도움으로 훈련에 사용됩니다.
경로가 존재하고 --clean 키가 통과되지 않으면 훈련이 재개됩니다. 모든 매개 변수를 여전히 지정해야하며 모델 매개 변수는 일치해야합니다.
교육 매개 변수에 대한 메모 :
--batch-size 는 GPU 당이므로 GPU 수를 변경할 때 다시 조정할 필요가 없습니다. 메모리에 맞는 Max를 사용하십시오.--g-accum-gradients 는 글로벌 그라디언트 축적 수입니다. GPU의 수로 나눌 수 있어야합니다. 효과적인 글로벌 배치 크기는 항상 batch_size * g_accum_gradients 입니다.--batch-size 또는 --g-accum-gradients 또는 gpus 수 또는 --n-ctx 변경할 때 --lr 변경할 필요가 없습니다. 손실은 이미 적절하게 조정되었습니다.예제 명령 :
GPT-2- 세대의 런 뿌리 "인공 지능"
run-root 에는 모델 체크 포인트 "Artificial intelligence" 이 포함되어 있습니다.
추론 매개 변수에 대한 메모 :
--tokens-to-generate : 생성 할 토큰 수, 기본값은 42입니다.--top-k : 각 위치에 대해 생성 할 토큰 후보 수 (빔 폭), 기본값은 8입니다. 라이센스는 MIT입니다.
Tensorflow GPT-2 모델은 https://github.com/openai/gpt-2/blob/mas
Pytorch 포트는 원래 OpenAi 코드를 기반으로합니다.
tests/shakespeare 에서 셰익스피어 코퍼스 테스트는 http://shakespeare.mit.edu에서 공개 도메인의 것입니다.
OpenAi GPT-2 용지 및 블로그도 참조하십시오.