emphasis10 / dacon_tech_classification

0 stars 0 forks source link

Improve training performance #4

Open emphasis10 opened 3 years ago

emphasis10 commented 3 years ago

Performance Issue

Embedding Dimension

현재 구현, 실험 중인 대부분의 모델에서 Keras Embedding layer를 사용한다. Embedding layer의 param은 vocab_size dimension으로 구할 수 있다. 예를 들어, BPE vocab_size 32000으로 encoding하고 dim을 128로 준다면 32000128에 비례하여 커지게 된다(dtype에 따른 용량 등등)

-> VRAM이 부족하다면, 적당한 vocab_sizeembedding_dim을 정해야 한다.

Param이 많아지는 경우

Embedding layer를 제외하고 모델을 복잡하게 쌓으면 parameter들이 많아진다. Convolution 계열의 layer들은 덜하지만, Dense나 LSTM, GRU 같은 RNN base의 layer들은 그 안에 dimension을 가지고 있기 때문에 parameter를 비교적 많이 가지고 있다.

연산이 많아지는 경우

대부분의 layer를 쌓을 수록 연산이 많아진다. RNN 기반의 모델들은 sequentially 처리하기 때문에 병렬 처리도 어렵다. 연산이 많아지면 Training, Inference 시에 시간이 오래 걸린다.

emphasis10 commented 3 years ago

Mixed Precision

https://www.tensorflow.org/guide/mixed_precision

TL;DR - 연산 속도와 정확도를 모두 챙기는 방법

TensorCore가 있는 GPU에서는 Mixed Precision을 사용하는 것이 좋다. FP16FP32를 정확도와 속도의 관점에서 적절히 섞어서 사용.

http://hwengineer.blogspot.com/2018/03/v100-tensor-core.html