Conversational AI / NLP

거대 언어 모델 맞춤 설정 기법 알아보기

Reading Time: 7 minutes

거대 언어 모델(LLM)은 기업이 운영, 고객 상호 작용 및 의사 결정 프로세스를 개선하는 데 필수적인 도구로 자리 잡고 있습니다. 그러나 기성 LLM은 산업별 용어, 도메인 전문성 또는 고유한 요구 사항으로 인해 기업의 특정 요구 사항을 충족하지 못하는 경우가 많습니다.

바로 이 점이 맞춤형 LLM이 필요한 이유입니다.

기업은 특정 사용 사례와 도메인 지식에 맞게 언어 처리 기능을 조정할 수 있는 맞춤형 모델이 필요합니다. 맞춤형 LLM을 통해 기업은 특정 산업 또는 조직 맥락에서 텍스트를 보다 효율적이고 정확하게 생성하고 이해할 수 있습니다.

맞춤형 모델을 통해 기업은 브랜드 보이스에 부합하는 개인화된 솔루션을 만들고, 워크플로우를 최적화하며, 보다 정확한 인사이트를 제공하고, 향상된 사용자 경험을 제공하여 궁극적으로 시장에서 경쟁 우위를 확보할 수 있습니다.

이 게시물에서는 다양한 모델 커스터마이징 기법과 사용 시기를 다룹니다. NVIDIA NeMo는 여러 가지 방법을 지원합니다.

NVIDIA NeMo는 어디서나 생성형 AI 모델을 빌드, 커스터마이징 및 배포할 수 있는 엔드투엔드 클라우드 네이티브 프레임워크입니다. 여기에는 트레이닝 및 추론 프레임워크, 가드레일 툴킷, 데이터 큐레이션 툴, 사전 트레이닝된 모델이 포함되어 있어 생성형 AI를 쉽고 비용 효율적이며 빠르게 도입할 수 있는 방법을 제공합니다.

LLM 사용자 지정 기법 선택

데이터 세트 크기 요구 사항과 사용자 지정 중 학습 노력 수준과 다운스트림 작업 정확도 요구 사항 간의 절충점을 기준으로 기법을 분류할 수 있습니다.

그림 1. NVIDIA NeMo에서 사용할 수 있는 LLM 커스터마이징 기법

그림 1은 다음과 같이 널리 사용되는 커스터마이징 기법을 보여줍니다:

  • 프롬프트 엔지니어링: LLM으로 전송되는 프롬프트를 조작하지만 LLM의 파라미터는 어떤 식으로든 변경하지 않습니다. 데이터 및 컴퓨팅 요구 사항이 가볍습니다.
  • 프롬프트 학습: 프롬프트와 완료 쌍을 사용하여 가상 토큰을 통해 작업별 지식을 LLM에 전달합니다. 이 프로세스는 더 많은 데이터와 컴퓨팅이 필요하지만 프롬프트 엔지니어링보다 더 나은 정확도를 제공합니다.
  • 매개변수 효율적 미세 조정(PEFT): 기존 LLM 아키텍처에 적은 수의 파라미터 또는 레이어를 도입하고 사용 사례별 데이터로 학습하여 프롬프트 엔지니어링 및 프롬프트 학습보다 높은 정확도를 제공하지만 더 많은 학습 데이터와 컴퓨팅이 필요합니다.
  • 미세 조정: 앞서 설명한 세 가지 유형의 사용자 지정 기법과 달리 사전 학습된 LLM 가중치를 업데이트하는 것으로, 가중치를 고정된 상태로 유지합니다. 즉, 미세 조정은 다른 기법에 비해 가장 많은 양의 학습 데이터와 연산이 필요합니다. 하지만 특정 사용 사례에 가장 높은 정확도를 제공하므로 비용과 복잡성을 정당화할 수 있습니다.

자세한 내용은 거대 언어 모델 소개: 프롬프트 엔지니어링 및 P-튜닝을 참조하세요.

프롬프트 엔지니어링

프롬프트 엔지니어링은 예제를 보여 주면서 추론할 때 사용자 지정하는 것입니다. LLM에는 예제 프롬프트 및 완성과 함께 원하는 완성을 생성하기 위해 새 프롬프트에 추가되는 자세한 지침이 제공됩니다. 모델의 매개변수는 변경되지 않습니다.

퓨 샷 프롬프트(Few-shot prompting): 이 접근 방식에서는 몇 가지 샘플 프롬프트와 완성 쌍을 프롬프트에 추가하여 LLM이 보이지 않는 새로운 프롬프트에 대한 응답을 생성하는 방법을 학습하도록 해야 합니다. 몇 개의 샘플 프롬프트는 다른 사용자 지정 기법에 비해 상대적으로 적은 양의 데이터가 필요하고 미세 조정이 필요하지 않지만 추론 지연 시간이 길어집니다.

연쇄 추론(Chain-of-thought reasoning): 인간이 큰 문제를 작은 문제로 분해하고 연쇄 추론을 적용하여 문제를 효과적으로 해결하는 것처럼, 연쇄 추론은 LLM이 다단계 작업에서 성능을 개선하는 데 도움이 되는 프롬프트 엔지니어링 기법입니다. 여기에는 문제를 더 간단한 단계로 나누고 각 단계마다 느리고 신중한 추론이 필요합니다. 이 접근 방식은 논리적, 산술적, 연역적 추론 작업에 적합합니다.

시스템 프롬프트: 이 접근 방식은 사용자 프롬프트에 시스템 수준 프롬프트를 추가하여 LLM이 의도한 대로 작동하도록 구체적이고 자세한 지침을 제공하는 것입니다. 시스템 프롬프트는 응답을 생성하기 위해 LLM에 입력하는 것으로 생각할 수 있습니다. 시스템 프롬프트의 품질과 구체성은 LLM 응답의 관련성과 정확성에 큰 영향을 미칠 수 있습니다.

프롬프트 학습

프롬프트 학습은 사전 학습된 모델의 전체 매개변수 세트를 조정할 필요 없이 많은 다운스트림 작업에 사전 학습된 LLM을 사용할 수 있게 해주는 효율적인 사용자 지정 방법입니다. 여기에는 p-튜닝과 프롬프트 튜닝이라는 미묘한 차이가 있는 두 가지 변형이 포함되며, 이 두 가지 방법을 통칭하여 프롬프트 학습이라고 부릅니다.

신속한 학습을 사용하면 모델이 이미 사전 학습된 이전 작업을 덮어쓰거나 중단하지 않고도 LLM에 새 작업을 추가할 수 있습니다. 원래 모델 매개변수가 고정되어 변경되지 않기 때문에 신속한 학습은 모델을 미세 조정할 때 자주 발생하는 치명적인 망각 문제도 방지합니다. 치명적인 망각은 LLM이 미세 조정 과정에서 새로운 동작을 학습할 때 발생하는데, 이때 LLM 사전 학습 중에 얻은 기초 지식이 희생됩니다.

그림 2. LLM에 적용된 프롬프트 학습

프롬프트 튜닝 및 p-튜닝은 수동 또는 자동화된 방식으로 개별 텍스트 프롬프트를 선택하는 대신 경사 하강을 통해 최적화할 수 있는 가상 프롬프트 임베딩을 사용합니다. 이러한 가상 토큰 임베딩은 모델의 어휘를 구성하는 불연속형, 하드 토큰 또는 실제 토큰과 대조적으로 존재합니다. 가상 토큰은 각 실제 토큰 임베딩과 동일한 차원을 가진 순수한 1D 벡터입니다. 학습 및 추론에서 연속 토큰 임베딩은 모델 구성에 제공된 템플릿에 따라 불연속 토큰 임베딩 사이에 삽입됩니다.

프롬프트 튜닝: 사전 학습된 LLM의 경우, 소프트 프롬프트 임베딩은 총가상토큰 Xhidden_size 크기의 2D 행렬로 초기화됩니다. 모델이 수행하도록 프롬프트 튜닝되는 각 작업에는 고유한 2D 임베딩 행렬이 연관되어 있습니다. 작업은 훈련 또는 추론 중에 매개 변수를 공유하지 않습니다. NeMo 프레임워크 프롬프트 튜닝 구현은 매개변수 효율적 프롬프트 튜닝을 위한 스케일의 힘에 기반합니다.

P-튜닝: 프롬프트 튜닝을 시작할 때 prompt_encoder 파라미터는 무작위로 초기화되며, prompt_encoder는 가상 토큰 임베딩을 예측하는 데 사용되는 LSTM 또는 MLP 모델입니다. 모든 기본 LLM 파라미터는 고정되어 있으며, 각 훈련 단계에서 prompt_encoder 가중치만 업데이트됩니다. p-튜닝이 완료되면 prompt_encoder에서 프롬프트 튜닝된 가상 토큰이 자동으로 모든 프롬프트 튜닝 및 p-튜닝된 소프트 프롬프트가 저장되는 prompt_table로 이동되고, 이후 모델에서 prompt_encoder가 제거됩니다. 이렇게 하면 이전에 p-튜닝된 소프트 프롬프트를 유지하면서 나중에 새로운 p-튜닝 또는 프롬프트-튜닝된 소프트 프롬프트를 추가하는 기능을 계속 유지할 수 있습니다.

prompt_table은 작업 이름을 키로 사용하여 지정된 작업에 대한 올바른 가상 토큰을 조회합니다. NeMo 프레임워크의 p-튜닝 구현은 GPT Understands, Too를 기반으로 합니다.

매개변수 효율적인 미세 조정

파라미터 효율적 미세 조정(PEFT) 기법은 영리한 최적화를 사용하여 원래 LLM 아키텍처에 몇 가지 파라미터 또는 레이어를 선택적으로 추가하고 업데이트합니다. PEFT를 사용하면 특정 사용 사례에 맞게 모델 파라미터가 학습됩니다. 사전 학습된 LLM 가중치는 고정된 상태로 유지되며, 도메인 및 작업별 데이터 세트를 사용하여 PEFT 중에 업데이트되는 파라미터의 수가 훨씬 적습니다. 이를 통해 학습된 작업에서 LLM이 높은 정확도를 달성할 수 있습니다.

사전 학습된 언어 모델을 미세 조정하는 데 널리 사용되는 몇 가지 매개변수 효율적인 대안이 있습니다. 프롬프트 학습과 달리 이러한 방법은 입력에 가상 프롬프트를 삽입하지 않습니다. 대신 작업별 학습을 위해 트랜스포머 아키텍처에 학습 가능한 레이어를 도입합니다. 이를 통해 미세 조정에 비해 학습 가능한 매개변수의 수를 몇 배(10,000배 가까이) 줄이면서 다운스트림 작업에서 강력한 성능을 달성할 수 있습니다.

  • 어댑터 학습
  • 내부 활성화 억제 및 증폭을 통한 인퓨즈드 어댑터(IA3)
  • 로우랭크 적응(LoRA)

어댑터 학습: 코어 트랜스포머 아키텍처의 레이어 사이에 작은 피드 포워드 레이어를 도입합니다. 이 레이어(어댑터)만 특정 다운스트림 작업에 대한 미세 조정 시간에 학습됩니다. 어댑터 레이어는 일반적으로 입력 h를 저차원 공간에 투영하기 위해 하향 투영을 사용한 다음 비선형 활성화 함수와 Wup을 사용한 상향 투영을 사용합니다. 잔여 연결은 이것의 출력을 입력에 추가하여 최종 형태로 이어집니다:

어댑터 모듈은 일반적으로 어댑터의 초기 출력이 항상 0이 되도록 초기화되어 이러한 모듈의 추가에 따른 원래 모델의 성능 저하를 방지합니다. NeMo 프레임워크 어댑터 구현은 NLP를 위한 파라미터 효율적인 전이 학습을 기반으로 합니다.

IA3: 학습된 벡터를 사용하여 트랜스포머 레이어의 숨겨진 표현을 단순히 스케일링하는 어댑터에 비해 훨씬 적은 수의 파라미터를 추가합니다. 이러한 스케일링 매개변수는 특정 다운스트림 작업에 맞게 학습할 수 있습니다. 학습된 벡터 lk, lv, lff는 각각 주의 메커니즘의 키와 값, 위치별 피드포워드 네트워크의 내부 활성화의 크기를 재조정합니다. 이 기술은 또한 배치의 각 활성화 시퀀스를 개별적으로 저렴하게 관련 학습된 작업 벡터로 곱할 수 있기 때문에 혼합 작업 배치를 가능하게 합니다. NeMo 프레임워크 IA3 구현은 인컨텍스트 학습보다 효율적인 미세 조정이 더 효과적이고 저렴한 몇 번의 파라미터를 기반으로 합니다.

그림 3. 효율적인 파라미터 미세 조정을 위한 LoRA

LoRA: 학습 가능한 낮은 순위의 행렬을 트랜스포머 레이어에 주입하여 대략적인 가중치 업데이트를 수행합니다. LoRA는 사전 학습된 전체 가중치 행렬 W를 업데이트하는 대신 낮은 순위의 분해를 업데이트하여 미세 조정에 비해 학습 가능한 매개변수 수를 10,000배, GPU 메모리 요구량을 3배 줄입니다. 이 업데이트는 멀티 헤드 주의 서브 레이어의 쿼리 및 값 투영 가중치 매트릭스에 적용됩니다. 전체 행렬 대신 낮은 순위 분해에 업데이트를 적용하면 모델 품질이 미세 조정과 동등하거나 더 나은 것으로 나타났으며, 추가 추론 대기 시간 없이 더 높은 훈련 처리량을 구현할 수 있습니다.

NeMo 프레임워크의 LoRA 구현은 거대 언어 모델의 로우랭크 적응을 기반으로 합니다. LoRa 모델을 추출 QA 작업에 적용하는 방법에 대한 자세한 내용은 LoRA 튜토리얼 노트북을 참조하세요.

미세 조정

데이터와 컴퓨팅 리소스에 큰 제약이 없는 경우, 감독형 미세 조정(SFT) 및 인간 피드백을 통한 강화 학습(RLHF)과 같은 사용자 지정 기법은 PEFT 및 신속한 엔지니어링에 대한 훌륭한 대안적 접근 방식입니다. 미세 조정은 다른 사용자 지정 접근 방식에 비해 다양한 사용 사례에서 최고의 정확도를 달성하는 데 도움이 될 수 있습니다.

감독 미세 조정 (Supervised Finetuning): SFT는 모델 도메인별 용어와 사용자 지정 지침을 따르는 방법을 모델에 학습시키는 레이블이 지정된 입력 및 출력 데이터에 대한 모든 모델 파라미터를 미세 조정하는 프로세스입니다. 이 작업은 일반적으로 모델 사전 학습 후에 수행됩니다. 사전 학습된 모델을 사용하면 처음부터 학습할 필요 없이 최신 모델을 사용할 수 있고, 계산 비용이 절감되며, 사전 학습 단계에 비해 데이터 수집 필요성이 줄어드는 등 많은 이점을 누릴 수 있습니다. SFT의 한 형태는 명령어를 통해 설명된 데이터 세트 모음에 대해 언어 모델을 미세 조정하는 것을 포함하므로 명령어 튜닝이라고 합니다.

그림 4. 레이블이 지정된 명령어 추종 데이터를 사용한 감독형 미세 조정

지침이 포함된 SFT는 “다음 기사를 세 문장으로 요약하세요.” 또는 “다가오는 학교 축제에 대해 스페인어로 이메일 작성”과 같은 자연어 지침을 통해 NLP 작업을 설명할 수 있다는 직관력을 활용합니다. 이 방법은 미세 조정과 프롬프트 패러다임의 강점을 성공적으로 결합하여 추론 시점에 LLM 제로 샷 성능을 개선합니다.

명령어 튜닝 프로세스에는 다양한 비율로 혼합된 자연어 명령어를 통해 표현된 여러 NLP 데이터 세트의 혼합물에 대해 사전 학습된 모델에 대한 미세 조정을 수행하는 작업이 포함됩니다. 추론 시에는 보이지 않는 작업에 대해 미세 조정된 모델을 평가하며, 이 프로세스는 보이지 않는 작업에 대한 제로 샷 성능을 크게 향상시키는 것으로 알려져 있습니다. SFT는 또한 다음에 설명하는 강화 학습을 사용하여 LLM 기능을 개선하는 과정에서 중요한 중간 단계입니다.

사람의 피드백을 통한 강화 학습: 사람의 피드백을 통한 강화 학습(RLHF)은 LLM이 사람의 가치와 선호도에 더 잘 부합할 수 있도록 하는 맞춤화 기법입니다. 이 기법은 강화 학습을 사용하여 모델이 수신한 피드백에 따라 행동을 조정할 수 있도록 합니다. 여기에는 인간의 선호도를 손실 함수로 사용하는 3단계 미세 조정 프로세스가 포함됩니다. 이전 섹션에서 설명한 대로 지침에 따라 미세 조정된 SFT 모델은 RLHF 기법의 첫 번째 단계로 간주됩니다.

그림 5. 강화 학습을 사용하여 사람의 선호도에 맞게 LLM 행동 조정하기

SFT 모델은 RLHF의 2단계에서 보상 모델(RM)로 훈련됩니다. 사람이 순위를 매긴 여러 응답이 포함된 프롬프트로 구성된 데이터 세트는 사람의 선호도를 예측하기 위해 RM을 훈련하는 데 사용됩니다.

RM이 학습된 후 RLHF의 3단계에서는 근위 정책 최적화(PPO) 알고리즘을 사용한 강화 학습을 통해 RM에 대한 초기 정책 모델을 미세 조정하는 데 중점을 둡니다. 반복적으로 수행되는 이 세 단계의 RLHF를 통해 LLM은 사람의 선호도에 더 부합하고 지시를 더 효과적으로 따를 수 있는 출력을 생성할 수 있습니다.

RLHF는 강력한 LLM을 생성하지만, 이 방법이 오용되어 바람직하지 않거나 유해한 콘텐츠를 생성하는 데 악용될 수 있다는 단점이 있습니다. NeMo는 PPO Value 네트워크를 비평 (Critic) 모델로 활용하여 LLM이 유해한 콘텐츠를 생성하지 않도록 유도합니다. 연구 커뮤니티에서는 LLM을 적절한 행동으로 유도하고 LLM이 사실을 구성하는 유해한 생성 또는 환각을 줄이기 위해 다른 접근 방식도 활발히 연구되고 있습니다.

LLM 사용자 지정

이 게시물에서는 다양한 모델 사용자 지정 기법과 그 사용 시기를 다루었습니다. 이러한 방법 중 다수는 NVIDIA NeMo에서 지원됩니다.

NeMo는 3D 병렬 처리 기법으로 트레이닝을 위한 가속화된 워크플로를 제공합니다. 여러 가지 커스터마이징 기법을 선택할 수 있으며 멀티 GPU 및 멀티 노드 구성을 통해 언어 및 이미지 애플리케이션을 위한 거대 모델 추론에 최적화되어 있습니다.

지금 NeMo 프레임워크를 다운로드하고 원하는 온프레미스 및 클라우드 플랫폼에서 사전 학습된 LLM을 커스터마이징하세요.

Discuss (0)

Tags