본문 바로가기

딥러닝
[LLM] 4. 효율적인 GPU 사용, 분산 학습, LoRA, QLoRA 단일 GPU 효율적으로 사용하기 GPU 자원은 한정되어 있기 때문에, 언제든 GPU 메모리를 효율적으로 사용하는 방법을 탐구해야 한다. 이번에는 GPU 메모리 사용 효율화를 위한 방법인 그레이디언트 누적 / 그레이디언트 체크포인팅에 대하여 알아본다. 그레이디언트 누적 (Gradient Accumulation) - 큰 batch size를 사용할 수 있도록 보조하는 방법론이다. batch size를 크게 잡을수록 모델 학습이 더 안정적으로 이루어지지만, 이전 글에서 확인했듯이 batch size를 늘릴수록 GPU 자원을 더 많이 소모한다. Gradient Accumulation은 작은 배치를 여러 번 처리한 후, 각 배치에서 계산된 Gradient를 누적하여 하나의 큰 배치처럼 처리한다.그레이디언트 체크포..
[LLM] 3. 좋은 데이터 셋, GPU 지도 미세 조정  LLM이 사용자의 목적에 맞는 적절한 응답을 내놓기 위해서는 지도 미세조정(supervised fine-tuning)이 필요하다. 비록 미세조정 되지 않은 pre-trained LLM 모델도 엄청나게 많은 데이터(Llama-2의 경우 약 10TB의 txt)를 이용하여 사전학습 된 것이기에 대부분의 문제에서 강력한 성능을 보인다. 하지만 LLM이 사용되길 원하는 분야가 아주 마이너하거나 데이터 수집이 어려운 분야라면, 직접 미세조정을 통해 더 우수한 모델을 구축할 수 있을 것이다.   지도 미세조정에 사용하는 데이터셋을 지시 데이터셋(Instruction dataset)이라 부른다. 2023년 공개된 Llama의 추가학습 버전인 Alpaca를 학습하는 데 사용된 알파카 데이터셋을 살펴보도..
[LLM] 2. 허깅페이스 트랜스포머 모델 학습하기 허깅페이스란?  2017년 트랜스포머 아키텍처가 세상에 공개된 이후, BERT와 GPT등 트랜스포머를 기반에 두면서도 구현 방식이 상이한 자연어 처리 모델들이 쏟아져 나왔다. 각 모델들의 활용법 또한 다르기 때문에, 사용자가 각 모델들의 활용법을 숙지하는 데 시간이 제법 소요되는 상황이 발생한 것. 이에 따라 각 모델의 개발/사용이 지연되기도 했다. 이러한 배경 속에서 Hugging face팀은 트랜스포머 라이브러리를 개발했는데, 쉬운 인터페이스로 트랜스포머 기반의 모델을 활용할 수 있도록 하였다. 이를 통해 우리는 트랜스포머 기반 모델을 손쉽게 사용할 수 있고, 심지어는 나만의 데이터로 학습시키는 것 또한 가능하다. (트랜스포머 기반 뿐만 아니라, 시중에 공개되어 있는 매우 다양한 종류의 딥러닝 모델을..
13. RNN 코드실습 이 포스트는 '텐초의 파이토치 딥러닝 특'을 참고하여 만들어졌음! RNN 개념도 물론 중요하지만 요것들을 실제로 적용하는 과정에서 무수한 궁금증이 생기기 때문에 한 번 코드실습을 해보는 시간을 가져보겠다. 결과가 가시적인 CNN과는 달리 RNN은 개념도 그렇고 코드 칠 때도 뭐가 뭔지 모르는 부분이 많았다. 텐초의 파이토치 딥러닝 특강의 '6장 넷플릭스 주가 예측하기 RNN으로 첫 시계열 학습'을 참고하여 RNN 코드 실습을 진행하였다. ㄱㄱ씽~ 1. 데이터 가져오기 import pandas as pd data = pd.read_csv("/content/train.csv") data.head()​ 실습에 사용할 데이터는 https://www.kaggle.com/c/netflix-stock-predicti..
12. RNN (Recurrent Neural Network) 이론 이 포스트는 Do it 딥러닝 교과서 (윤성진 저)를 참고하여 만들어졌음! RNN 시간 혹 공간적 순서 관계가 있는 데이터를 순차 데이터(sequence data)라고 부른다. 순차 데이터는 시공간의 순서 관계에 의해 문맥 혹은 context를 갖는다. 예를 들어 '나는', '밥이', '먹고싶다' 라는 텍스트 데이터는 '나는 밥이 먹고싶다'의 순서로 진행되는 한 문장이다. 하지만 각 세 데이터를 순방향 신경망에 차례대로 입력하는 경우 순방향 신경망은 세 단어 간 문맥을 파악하지 못하여 한 문장을 완성하지 못한다. 이러한 한계점을 돌파하여 데이터의 순차 구조를 인식하고 기억하도록 개발된 것이 바로 순환 신경망 (RNN: recurrent neural network)이다. RNN structure 기존 신경..