반응형

tensorflow 5

모델 압축·배포 최적화 시리즈 3편: Pruning (가중치 가지치기)

"신경망에서 정말 모든 weight가 필요할까?"Pruning은 중요도가 낮은 weight, 뉴런, 채널을 제거해 모델을 가볍게 만드는 기법입니다. Pruning이란?Pruning(가지치기)은 신경망의 불필요한 파라미터를 제거하여 모델 크기를 줄이고 추론 속도를 높이는 방법입니다.학습이 끝난 모델의 weight 중요도를 측정중요도가 낮은 weight → 0으로 만들거나 제거모델 sparsity 증가 → 연산량 감소왜 중요한가?모델 크기 줄이기 (저장 공간, 메모리 사용량 절약)추론 속도 향상 (특히 하드웨어가 sparsity 가속 지원 시)Overfitting 감소 → 일반화 성능이 더 좋아질 수도 있음Pruning의 종류Unstructured Pruning개별 weight 중요도 기준으로 0으로 만듦 ..

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을..

[keras] ValueError: Unknown optimizer: AdaBeliefOptimizer. Please ensure this object is passed to the `custom_objects` argument 에러해결

개발환경 - google colab 1. Problem tensorflow keras를 사용하면서 optimizer를 custom에서 사용하고 학습한 모델을 'h5' 형태로 저장한 후 다시 load할 때 해당 에러가 발생했다. 2. Reason tensorflow keras는 'h5' 형태로 모델을 저장할때 기존 라이브러리에 있는 optimizer나 activation function만 저장되기 때문 그렇기 때문에 custom해서 사용한 optimizer는 저장되지 않음 3. Solution 모델을 load 할 때 custom_objects key값에 optimizer name 그리고 value에 custom optimizer를 넣음 model = tf.keras.models.load_model('./C..

ML | DL/Tensorflow 2022.03.19

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() 메서드를 ..

반응형