GPT "생성 사전 훈련 된 변압기"는 GPT 시리즈 모델의 첫 번째 버전이며, 변압기 아키텍처를 기반으로하는 자동 회귀 언어 모델링 기능으로 혁명화 된 자연 언어 처리.
이 프로젝트는 텐서 플로우를 사용하여 처음부터 GPT (생성 사전 훈련 된 변압기) 모델을 처음부터 구현 한 것입니다. 여기에는 위치 임베딩,주의 메커니즘, 피드 포워드 층 등과 같은 모델의 모든 구성 요소가 포함됩니다.
중요한 참고 : 이 프로젝트의 목표는 GPT 아키텍처와 내부 작업에 대한 깊은 이해를 제공하는 것입니다. 따라서 주로 교육 목적을위한 것입니다. 이 모델의 구조 및 작업 메커니즘을 완전히 이해하고 프로젝트에서 구현 한 구성 요소를 사용할 수 있습니다. 일반적으로 프로젝트를 사용하여 빅 데이터로 언어 모델을 교육하려면 빅 데이터를보다 효율적으로 처리하려면 데이터 세트 파일을 수정해야 할 수도 있습니다. 나는 지금 이와 관련이 없기 때문에 주로 단순하고 크지 않은 데이터를 처리하도록 데이터 세트 파일을 설계했습니다.
GPT에는 여러 버전이 있습니다. 이 구현은 주로 "생성 사전 훈련에 의한 언어 이해 향상"의 구현에 중점을 둡니다.
config.py : 모델 하이퍼 파라미터의 구성 파일.decoder.py : GPT 디코더.positional_embeddings.py : 위치 임베딩 생성.embeddings.py : 토큰 임베딩 생성.attention.py : 자체 정보 메커니즘.feed_forward.py : Feed-Forward Neural Network.lr_schedule.py : 학습 속도 일정.utils.py : 훈련 및 추론을위한 유틸리티 기능.loss_functions.py : 사용자 정의 손실 함수.metrics.py : 사용자 정의 평가 메트릭.streamer.py : 효율적인 교육을위한 데이터 스 트리머.gpt_model.py : 메인 GPT 모델 구현.bpe_tokenizer.py : bpe (바이트 쌍 인코딩) 토큰 화를위한 토큰 화기.tokenizer.py : 사전 훈련 된 GPT 토큰 화기.prepare_dataset.py : 데이터 세트에서 일부 작업을 수행하는 파일 (유효성 검사 데이터를위한 특수 폴더 생성).inferance.py : 입력 프롬프트를 기반으로 모델에서 문장을 생성하는 데 필요한 파일.tmp/ : 모델 체크 포인트 저장을위한 디렉토리.demo/ : 프로젝트 문서.tokenizer/ : 재교육 토큰 화기를 저장하기위한 디렉토리.dummy_data/ : 스 트리머를 테스트하기 위해 일부 데이터를 넣는 디렉토리. 자세한 프로젝트 문서는 demo/ 디렉토리에서 찾을 수 있습니다. 여기에는 GPT 아키텍처, 교육 절차 및 다양한 자연어 처리 작업에 모델을 사용하는 방법에 대한 설명이 포함됩니다.
저장소 복제 :
git clone https://github.com/AliHaiderAhmad001/GPT-from-Scratch-with-Tensorflow.git
cd GPT-from-Scratch-with-Tensorflow가상 환경을 만듭니다 (선택 사항이지만 권장) :
python -m venv venv
source venv/bin/activate # On Windows: venvScriptsactivate프로젝트 종속성 설치 :
pip install -r requirements.txt데이터 세트 다운로드 및 준비 : 데모를 검토하고 검토 할 수 있습니다. 동일한 데이터 세트에서 작업하거나 변경하거나 환경 설정을 조정할 수 있습니다. 그러나 여기에서 데이터 세트를 직접 다운로드 할 수 있습니다. 다음 코드를 통해 유효성 검사를 위해 IT의 일부를 취할 수 있습니다.
python prepare_dataset.py aclImdb/test aclImdb/valid --num_files_to_move 2500내가 사용하는 데이터 로더는 유효성 검사 세트가 별도의 폴더에 있도록해야합니다.
python bpe_tokenizer.py aclImdb --batch_size 1000 --vocab_size 50357 --save --save_fp tokenizer/adapted-tokenizerpython train.pypython train.py --resumepython inferance.py " input_text_prompt " --sampler " greedy " # For greedy samplingpython inferance.py " input_text_prompt " --sampler " beam " --beam_width 5 # For beam search sampling with a beam width of 5 이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.