LLM 18

GPU 학습(5)

※ 'LLM을 활용한 실전 AI 애플리케이션 개발' 책을 정리한 내용입니다.  QLoRA 16비트로 모델을 저장하고 있는 LoRA와 달리 4비트 형식으로 모델을 저장하는 형태로 세가지 핵심 요소로 이루어져있다.양자화 : 기존 데이터를 더 적은 메모리를 사용하는 데이터 형식으로 변환하는 방법저차원 적응 : 파라미터 효율성을 높이기 위해 모델의 전체 파라미터를 업데이트하는 대신, 작은 저차원 행렬을 학습하여 원래의 큰 행렬을 근사합니다.효율적인 메모리 사용 및 계산 최적화 만약 기존 데이터의 분포를 알고 있다면 많은 연산이나 메모리 사용 없이도 빠르게 데이터의 순위를 정할 수 있다. 예를 들어, 입력 데이터가 정규 분포를 따른다는 것을 알고 있다면 데이터를 균등하게 분리하기위해 사용할 경계값을 쉽게 계산할 ..

LLM 2024.08.22

GPU 학습(4)

※ 'LLM을 활용한 실전 AI 애플리케이션 개발' 책을 정리한 내용입니다. LLM과 같은 기반 모델의 크기가 커지면서 하나의 GPU를 사용해 모든 파라미터를 학습하는 전체 미세 조정(full fine-tuning)을 수행하기 어려워졌다. 하지만 대부분의 개인과 조직은 여러 GPU를 사용해 모델을 학습시키기 어렵기 때문에 일부 파라미터만 학습하는 PEFT(Parameter Efficient Fine-Tuning) 방법 연구가 확발히 이뤄지고 있다. LoRA(Low-Rank Adaptation)모델 파라미터를 재구성(reparameterization)해 더 적은 파라미터를 학습함으로써 GPU 메모리 사용량을 줄인다. LoRA에서 파라미터 재구성은 행렬을 더 작은 2개의 행렬의 곱으로 표현해 전체 파라미터를..

LLM 2024.08.21

GPU 학습(3)

※ 'LLM을 활용한 실전 AI 애플리케이션 개발' 책을 정리한 내용입니다. 분산학습GPU를 여러 개 활용해 딥러닝 모델을 학습시키는 것을 말한다. 분산 학습의 목적은 모델 학습 속도를 높이는 것과 1개의 GPU로 학습이 어려운 모델을 다루는 것이다. 모델이 작아 하나의 GPU에 올릴 수 있는 경우 여러 GPU에 각각 모델을 올리고 학습 데이터를 병렬로 처리해 학습 속도를 높일 수 있다. 이를 데이터 병렬화(data parallelism)이라고 한다. 하나의 GPU에 올리기 어려운 큰 모델의 경우 모델을 여러 개의 GPU에 나눠서 올리는 모델 병렬화(model parallelism)을 사용하는데,  딥러닝 모델의 층(layer) 별로 나눠 GPU에 올리는 파이프라인 병렬화(pipeline parallel..

LLM 2024.08.20

GPU 학습(2)

※ 'LLM을 활용한 실전 AI 애플리케이션 개발' 책을 정리한 내용입니다.  GPU 메모리에 저장되는 데이터모델 파라미터그레이디언트(gradient)옵티마이저 상태(optimizer state)순전파 상태(forward activation)립러닝 학습 과정을 요약하면, 먼저 순전파를 수행하고 그때 계산한 손실로부터 역전파를 수행하고 마지막으로 옵티마이저를 통해 모델을 업데이트한다.※순전파 : Neural Network 모델의 입력층부터 출력층까지 순서대로 변수들을 계산하고 저장하는 것※역전파 : 순전파의 과정을 역행하는 것  그레이디언트 누적 (gradient accumulation)그레이디언트 누적 방법은 미니 배치를 통해 구해진 gradient를 n번의 step동안 Global gradients에 ..

LLM 2024.08.19

GPU 학습(1)

※ 'LLM을 활용한 실전 AI 애플리케이션 개발' 책을 정리한 내용입니다.  GPU(Graphic Processing Unit)단순한 곱셈을 동시에 여러 개 처리하는 데 특화된 처리 장치 GPU는 한정된 메모리를 갖고 있는데, 최근 LLM의 등장과 함께 모델의 크기가 커지면서 하나의 GPU에 모델을 올리지 못하는 등 더 많은 GPU가 필요해지고 있다. 하지만 GPU는 가격이 비싸기 때문에 풍부하게 사용하기에는 금전적인 문제가 발생한다. 그래서 이러한 문제를 해결하기 위한 연구가 많이 진행되고 있다. 딥러닝 모델을 학습시키고 추론하기 위해 GPU를 사용할 때 가장 자주 만나는 에러 중 하나는 OOM(out of memory)이다. 컴퓨터에서는 일반적으로 소수 연산을 위해 32비트 부동소수점(32float..

LLM 2024.08.18

LLM 모델 만들기(3)

※ 'LLM을 활용한 실전 AI 애플리케이션 개발' 책을 정리한 내용입니다.  사용자들은 직접 여러 번의 시행 착오를 겪으며 더 높은 점수를 받을 수 있는 방법을 찾아야 한다. 하지만 만약 2가지 행동을 했을 때, 점수가 높아진다면, 정확히 어떤 행동으로 인해 점수가 높아졌는지 파악이 힘들고 여러 행동이 복합적으로 점수에 영향을 미친다면 사용자는 혼란에 빠질 수 있다. 이 문제를 해결하기 위해서 생성 결과 중 리워드 모델이 가장 높은 점수를 준 결과를 LLM의 지도 미세 조정에 사용하는 기각 샘플링(rejection sampling) 과 선호 데이터셋을 직접 LLM이 학습하는 방식으로 변경한 직접 선호 최적화(Direct Preference Optimization) 두 가지 방법이 있다. 기각 샘플링기각..

LLM 2024.08.17

LLM 모델 만들기(2)

※ 'LLM을 활용한 실전 AI 애플리케이션 개발' 책을 정리한 내용입니다.  선호 데이터셋(preference dataset) : 두 데이터 중 사람이 더 선호하는 데이터를 선택하는 데이터셋 어떤 물건의 선호도를 판단한다고 가정을 해보자. A와 B 두개의 물건이 존재하는데, A와 B 각각을 판단하는 방법과 A,B 를 비교해서 더 좋은 것을 판단하는 방법이 존재한다. 물론 두 방법 다 구현이 가능하지만, 수 많은 데이터를 가지고 있다는 가정하면 각각의 선호도를 판단하는 것은 생각보다 어렵다. 하지만 두 개를 비교하는 것은 바로바로 비교를 통해서 결과를 도출해낼 수 있기 때문에 보통 후자를 선택한다고 한다. 강화 학습(Reinforcement Learning from Human Feedback)강화 학습에..

LLM 2024.08.16

LLM 모델 만들기(1)

※ 'LLM을 활용한 실전 AI 애플리케이션 개발' 책을 정리한 내용입니다. 어떻게 GPT-3은 CHAT GPT가 될 수 있었을까?!OPENAI는 두 단계를 거쳤는데, 요청(또는 질문)과 답변 형식으로 된 지시 데이터셋(insturction dataset)을 통해 GPT-3가 사용자의 요청에 응답할 수 있도록 학습시켰다. 그리고 사용자가 더 좋아하고 사용자에게 더 도움이 되는 답변을 생성할 수 있도록 추가 학습을 시켰다. LLM은 사용자의 요청에 적절히 응답하기 위해서 추가 학습하는 것을 지도 미세 조정(supervised fine-tuning)이라고 한다. 지도(supervised)란 학습 데이터에 정답이 포함되어 있다는 의미이다. 지도 미세 조정에 사용하는 데이터셋을 지시 데이터셋(unstructio..

LLM 2024.08.15

허깅페이스 트랜스포머 라이브러리(1)

※ 'LLM을 활용한 실전 AI 애플리케이션 개발' 책을 정리한 내용입니다.  허깅페이스 트랜스포머다양한 트랜스포머 모델이 통일된 인터페이스로 사용할 수 있도록 지원하는 오픈소스 라이브러리다. 허깅페이스는 트랜스포머 모델과 토크나이저를 활용할 때 사용하는 transformers 라이브러리와 데이터셋을 공개하고 쉽게 가져다 쓸 수 있도록 지원하는 datasets 라이브러리를 제공해 트랜스포머 모델을 쉽게 학습하고 추론에 활용할 수 있도록 돕는다.※토크나이저(tokenizer) : 자연어 처리(NLP)에서 텍스트를 단어, 부분 단어, 문장, 하위 단위 등으로 분할하는 도구 또는 알고리즘 허깅페이스 허브에서는 다양한 사전 학습 모델과 데이터셋을 탐색하고 사용할 수 있는 온라인 플렛폼이다.(https://hug..

LLM 2024.08.14

트랜스포머 아키텍처(6)

※ 'LLM을 활용한 실전 AI 애플리케이션 개발' 책을 정리한 내용입니다. 트랜스포머 아키텍처를 활용한 모델은 크게 세 가지 그룹으로 나눌 수 있다.인코더만 활용해 자연어 이해(Natural Language Understanding, NLU) 작업에 집중한 그룹디코더만 활용해 자연어 생성(Natural Language Generation, NLG) 작업에 집중한 그룹인코더 디코더를 모두 활용해 더 넓은 범위의 작업을 수행할 수 있도록 한 그룹각 그룹의 장단점 인코더(구글의 BERT)장점 양방향 이해를 통해 자연어 이해에서 일반적으로 디코더 모델 대비 높은 성능을 보임입력에 대해 병렬 연산이 가능하므로 빠른 학습과 추론이 가능다양한 작업에 대한 다운스트림 성능이 뛰어남단점자연어 생성 작업에 부적합한 형태..

LLM 2024.08.13