반응형

pytorch 13

AI 모델 경량화 시리즈 1편: LoRA(Low-Rank Adaptation) 완벽 가이드

대형 모델 파인튜닝을 위한 가장 효율적이고 핫한 방법 LoRA란 무엇인가?LoRA(Low-Rank Adaptation)는 대형 모델 파인튜닝(transfer learning) 을 훨씬 가볍고 효율적으로 만들기 위해 고안된 방법입니다.기존에는 파인튜닝 시 모델 전체 파라미터를 업데이트해야 했습니다.하지만 대형 모델(수억~수십억 파라미터)을 이런 식으로 학습하려면:VRAM 엄청 필요 (A100 여러 장…)학습 시간이 오래 걸림모델 버전을 여러 개 저장하기 힘듦LoRA는 이런 문제를 해결합니다.핵심 아이디어는 “기존 가중치는 그대로 두고, 아주 작은 저랭크 행렬만 학습한다” 입니다.수식으로 보는 LoRA기존 선형 계층(예: Attention의 Q, K, V projection)은 다음과 같습니다:y = W..

RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same 에러해결

개발환경 - ubuntu18.04 - python3.7 1. Problem RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same pytorch로 학습을 할 때 input type과 weight type이 같아야만 한다는 에러가 발생 2. Reason GPU로 학습을 할 때 model이나 dataset를 GPU에 설정하지 않았기 때문에 발생 3. Solution torch.tensor(..., device="cuda") torch.tensor(...).cuda() torch.tensor(...).to("cuda") model.to("cuda") dataset이나 model을..

freeze_support() error 해결

개발환경 - window10 - pytorch 1.2.0 - pycham 2020.3.3 1. Problem pytorch를 사용해서 model을 학습하려고 할 때 해당 error가 발생하였다. 2. Reason window 환경은 unix, linux와 다르게 *fork 를 지원하지 않고 *spawn을 사용한다고 하는데 spawn은 부모프로세스와 자식 프로세스가 구분되지 않아 프로세스를 계속 불러오는 재귀호출이 발생한다. * fork : 부모 프로세스에서 자식 프로세스를 하나 복제 생성해 주는 역할을 한다. 이때 복제 생성시, 부모 프로세스와 같은 프로세스가 만들어짐 * spawn : 부모 프로세스는 깨끗한 새 파이썬 인터프리터 프로세스를 시작한다. 자식 프로세스는 프로세스 객체의 run() 메서드를 ..

반응형