Skip to content

besthwang/npl_tutorials

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

npl에 대해 공부한 내용을 정리함.

각 폴더의 내용을 설명한다.

1. basics

기본적인 encoder-decoder를 LSTM으로 구현함.

2. transformers

transformer(Attentions Is All You Need)를 이해하기 위해 딥 러닝을 이용한 자연어 처리 입문
16-01 트랜스포머(Transformer)을 참고하였고, The Annotated Transformer-old,
The Annotated Transformer의 코드를 라인 단위로 분석하고 실행해본 과정을 정리함.

각 파일 설명

2.1 Annotated Transformer

The Annotated Transformer의 코드를 분석하고 실행함.


파일명 descrption
transformer_v2.py transformer 모델과 토큰 처리를 위한 모든 코드가 포함되어 있고, Multi-GPU(4)로 훈련가능함 de-en
trainning_the_annotated_transformer_decoding.ipynb 싱글 gpu로 transformer를 훈련 시킬수 있음. de-en 훈련 시킴
Results for Transformer.ipynb 훈련시킨 모델을 불러와 테스트 할 수 있음.

Conda 가상환경 생성:

  • multi-gpu로 훈련시키기 위해 windows 서버 2019를 사용함.
  • 윈도우 환경기준임 (windows 서버 2019에서 검증함.)
  • environment.yml로 가상환경 생성하면됨.
conda env create -f environment.yml
  • pytorch1.11+cu113 기반임
  • spacy를 위해 visual studio 2022이 설치되어야함.
  • windows server 2019에서 동작 시키기 위해 train_worker() 함수를 수정함.
      ddp_free_port = 60000  
      dist.init_process_group(
          "gloo",init_method=f"tcp://localhost:{ddp_free_port}",  rank=gpu, world_size=ngpus_per_node, timeout=timedelta(days=1),
      )
  • multi-gpu 훈련을 위해서는
    • load_trained_model()에서 config 내용을 수정 해야함.

      def load_trained_model():
          config = {
              "batch_size": 64,
              "distributed": True,
              "num_epochs": 100,
              "accum_iter": 10,
              "base_lr": 1.0,
              "max_padding": 72,
              "warmup": 3000,
              "file_prefix": "multi30k_model_",
          }
    • cmd 창에서 실행시켜야 함.

          > python transformer_v2.py
      

2.2 Annotated Transformer-old


파일명 descrption
Batch_datagen.ipynb Batch 클래스를 분석하고 사용법을 정리함, example로 훈련 시키기 위한 batch 데이터를 만듬
decoder_2nd_layer.ipynb 디코더의 두번째 서브층인 인코더-디코더 어텐션을 분석함
decoder_ex.py encoder과 decoder를 manual로 만들어 봄
decoder_selfattention_look_a_head_mask.ipynb 디코더의 첫번째 서브층의 셀프 어텐션과 룩-어헤드 마스크를 분석
encoder.ipynb 인코더만 분석함. 패딩, skip, layer normalization을 분석함. layer normalization는 논문 구현과 다름
full_model.ipynb full model를 만드는 과정을 테스트와 입력 데이터를 만드는 과정 정리
greedy_decoding.ipynb greed_decoding 자료 -chat-gpt
havard_mulitihead_attention.ipynb mulitihead_attention 코드 설명
MultiheadAttention.ipynb 다른 버전 설명
Understanding_Masking_in_PyTorch_for_Attention_Mechanisms.ipynb 마스킹 방법들을 설명함
Label Smoothing.ipynb Regularization 설명
Position-wise FFNN.ipynb 코드 설명
positional_encodingII.ipynb positional_encoding 설명
transformers.py Annotated Transformer-old 코드를 모아놓음
understanding_trainning.ipynb 다른 pytorch 훈련법과 비교해 봄
trainning.ipnb 랜덤 데이터로 훈련시키고, greedy_decoding함.

실행환경 (docker):


2.3 custom dataset 훈련시키는 예제 (영어-한국어)

Annotated Transformer-old로 초 심플한 영-한 번역기를 훈련 시킴.


파일명 descrption
custom_dataset_ex1.ipynb nltk로 한국어, 영어를 토큰화 함
custom_dataset_ex2.ipynb 한국어는 Okt로 영어는 spacy로 토큰화
make a custom vocab.ipynb 한국어를 토큰화, id 변환, 패딩등 특수문자를 붙이는 연습을 해 봄
simple_custom_trainning.ipynb 간단한 영-한 번역기를 훈련시킴, GPU에서 동작하고 Dataloader를 사용하도록 코드를 수정함. 32 example의 코퍼스 임.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors