Transformer의 내부 동작 살펴보기

정한 Rycont
•조회수 821
from_pretrained
메소드에서load_in_8bit
를True
로 설정하여 모델을 로드한다[Function] replace_with_bnb_linear (src/transformers/integrations/bitsandbytes.py)
Arguments: (model)
Keywords
modules_to_not_convert
current_key_name
quantization_config
이 함수가 하는 일:
model
파라미터로 넘겨받은 모델에서torch.nn.Linear
를 찾고bnb.nn.Linear8bit
로 변환한다.model.named_children
메소드를 통해 재귀적으로 레이어를 탐색한다레이어가
Linear
혹은Conv1D
의 instance인지 확인한다bnb.nn.Linear8bitLt
레이어로 교체한다. 입력 값 갯수, 출력 값 갯수, 편향 사용 여부를 그대로 복사한다.bnb.nn.Linear8bitLt
: Bits and Bytes 모듈에서 제공하는 8bit linear layer.Bits and Bytes(Bitsandbytes): 8bit 연산에 관련한 CUDA 함수 래핑 라이브러리
이 과정에서
lm_head
는 양자화되지 않는다. 안정성 이슈가 있다고 함.