논문은 23년 11월에 학회지에 발표된 내용을 정리한 것으로, 빠르게 진화하는 기술을 고려하면 조금 진부할 수 있지만, 국내에서 한국어기반으로 제작한 업체들의 '접근법'을 파악할 수 있습니다. 더불어 국내업체들도 국외업체들을 참조할 수 밖에 없으니 자연스럽게 국제 추세 또는 기반기술에 대한 이해에 도움이 될 것입니다. AI에 대한 중상급 이상의 독자에게 도움을 줄 수 있는 형태로 개조식으로 정리하였습니다. 도움이 되길 바랍니다.^^
LLM 용어
우선 과거에 초거대, 인공모델 등 다소 과장하여 표현된 것은 원래대로 제대로 돌아온 것 같습니다.
단순하게 '거대언어모델'로 학회에서 불려지고 있습니다. 즉, 언어모델(Language Model)이죠.
Large는 한국어로 어떻게 호칭할지 아직(2024.04.09)도 정해지지 않은 것 같습니다.
Large = "대규모", "거대", "초거대", "초대규모",
LLM 태생
"Transformer 모델의 아키텍처에 파라미터 수를 늘려보니( Layer 또는 Node ) NLP의 여러 기능을 하더라."가 태생인가?
이것을 '창발 능력'(Emergent Ability)'이라고 부르는가? (역으로, 대용량의 지식과 많은 수의 파라미터를 요구)
Zero-Shot(In-Context Learning) 능력. ( 학습하지 않는 새로운 작업을 수행하는 능력, 사전학습과정에서 내재적으로 다중 태스크 학습을 수행하고, 이를 통해 새로운 작업을 수행하는 능력을 습득(거저 주었다?)할 수 있음을 시사)
Few-Shot Learing 능력.
즉, 몇 장의 사진(shot)만 보고 전체 줄거리를 쫙 읊을 수 있다?
Transformer 모델 기반
인코더와 디코더로 구성
인코더는 주어진 텍스트를 이해하는 역할 ( 글자를 벡터화, Embedding Words , Word Vector)
디코더는 이해한 텍스트를 기반으로 언어를 생성해 내는 역할.( 번역문(생성) )
인코더만 사용, Google의 BERT( Bidirectional Encoder Representation from Transformers) :: 임의의 토큰을 마스킹하고 마스킹된 토큰이 무엇인지 예측하는 MLM(Masked Language Modeling) 방식으로 학습
디코더만를 기반, OpenAI의 GPT( Generative Pretrained Transformer)::이전텍스트를 기반으로 다음에 나올 토큰이 무엇인지 예측(Prediction)하는 NTP(Next Token Prediction) 방식으로 학습, 레이블이 없는 말뭉치.
인코더-디코더 사용, Googlem의 다중언어(multilingual) T5 모델, span corruption objectve, 문자 외 음성데이터 등 다른 형태의 입력도 처리, VIT모델(이미지분야), 전통적인 CNN구조를 대체, LG AI: EXAONE모델
Bert, RoBERTa, XLM, ALBERT, ELECTRA
TS, BART, B2m-100, BigBird
GPT-x, InstructGPT, charGPT
LLM을 다소 낮은 사양의 GPU 서버 3-4장으로, 단일 서버에서 운영할 수 있는가? ( Low Resources )
양자화(Quantization) 또는 숫자 표현(Representation)의 배정도(Precision)를 조절한다.
훈련단계에서도 가능하다는 내용이 있는 것 같음.
Pre-Training ( Full-Training , All-Data) 방법
Foundation Model을 만듦.
T5 : 웹페이지
GTP-3 : 웹페이지, 책, 뉴스
OpenAI
Generative(다음언어를 예측) + Pre-Trained + Transformer
자동 회귀적 ( auto-regressive) 생성 구조
175B 파라미터 ( 1조 7천억 개)
모델 입력에 few-shot 예시를 주는 in-context learning을 통해 다양한 NLP 태스크에서 미세조정 없이도 좋은 성능
어려운 점 : 풍부한 데이터셋이 필요, 그에 따른 다양한 인스트럭션이 필요, cross-lingual instruction tuning (즉 번역),
예시 ( squad_kor_v1 from HuggingFace )
Alpaca : GPT-3.5에서 생성된 52만 개의 지시어 데이터셋( instruction-following dataset)을 활용
Vicuna : ChatGPT와 사용자 사이에 공유된 7만 개의 대화 세트로 구성된 약 700만 개의 지시어 데이터셋을 활용
주로 영어와 중국어...
지시어 데이터셋( Instruction Dataset )
Natural Instruction : 61개의 NLP Task, 193,000개, 인간 주석자가 직접 만듦. 영어기반. { 지시어, 인스턴스 : { 입력, 출력 }}
P3 (Public Pool of Prompt): 170개 영어 NLP 데이터셋, 2,052개의 영어 프롬프트, { 입력, 답변선택지, 타겟 }
FLAB : 62개의 널리 사용되는 NLP 벤치마크를 입력-출력 쌍으로 변환, 영어, {입력, 타겟}
Self-Instruct : InstructGPT를 사용하여 구축된 5만 개 지시어 + 252개의 평가 지시서, 영어,
Alpaca : Self-Instruct 데이터셋의 일부를 시드 데이터로 사용하여 GPT-3.5-Turbo를 사용하여 답변을 생성 ( Alpaca모델은 구축한 지시어 데이터셋에 LLaM-7B를 미세조정(Fine-Tuning)하여 학습된 언어모델 )
Vicuna: ShareGPT 홈페이지에서 사용자가 공유한 ChatGPT대화를 수집 후, 70K의 대화 기록을 학습데이터로 사용( Vicuna모델은 구축한 데이털에서 LLaMa-13B를 미세조정(Fine-Tuning)하여 훈련된 언어모델임)
GPT-4-LLM: Alpace의 지시어를 GPT-4를 통해 출력하여 수집, 52만 개의 지시어와 출력 쌍으로 구성
Dolly: Databricks에서 제작, 15만 개의 데이터( 행동 커테고리 :: 브레인스토밍, 분류, 폐쇄형 QA, 생성, 정보추출, 요약, 개방형 QA 등)
ShareGPT: 90만 개의 데이터, ChatGPT와 사용자 간의 대화를 수집, 필터링 도구( langid ), 10자 미만을 필터링
인간의 피드백( Human Alignment )
인간의 가치와 기준에 부합하도록 조정하는 접근법
사용자 만족도 정렬(Human Preference Alignment) < ChatGPT의 상업적인 성공요소, Bradley-Terry모델(사용자 만족도 우선순위를 표현), Chatbot Arena 방식, LLaMa-2의 경우 약 142만 건의 사용자 선호도 데이터
LLM의 의도치 않은 행동을 방지하기 위한 방법론
고품질의 human feedback 수집이 필수적이라, 상대적으로 많은 비용이 소모
Reinforcement Learning from Human Feedback(RLHF) :: 강화학습법 중의 하나, InstructionGPT, ChatGPT에 적용됨. SFT, RM(Reward Model), PPO(Proximal Policy Optiomization) Algirithm
부작용 :: 인간의 주관적인 alignment criteria의 특성에 의한, 기본능력을 감소, alignment tax
Resource-Efficient Fine-Tuning ( or Parameter Efficient Tuning)
큰 규모의 모델 파라미터를 갖는 LLM의 효율적인 학습을 위한 방법론(들)
Parameter-Efficient Fine-Tuning(PEFT) :: 원래의 언어모델의 파라미터는 고정 후, 특정 계층(Layer)만
Adaptor Tuning
Prefix Tuning
Prompt Tuning
Low-Rank Adaptation(LoRA) : low-rank approximation, 메모리 및 스토리지 비용 절감, 모델의 일부분을 학습, GTP-3 175B의 경우, 파라미터 수를 10,000배, GPU 메모리 사용량 3배 줄임.
LLaMa-Adapter : 7B의 파라미터 수 > 1.2M 개만의 학습 파라미터로..... 52K 개의 지시어 사용, 지시어를 따르는 모델, Transformer 레이어 상당에서 학습 가능한 Adaptation 프롬프트를 단어 토큰 앞에 붙인다. zero gating, zero-initialized attention.... fully-tunned Alpaca보다 품질이 좋은 답변 생성
Flash Attention : 모델 구조를 효율적으로 변경, 읽기 및 쓰기에 대한 정로를 GPU메모리 단계에서 보다 효율적으로 고려. 기존 Transformer의 attention에 비해 GPT-2 모델 기준 약 3배 빠른 속도로 처리
Memory-Efficient Fine-Tuning
양자화(quantization) 등의 모델 압축(compression)
** 참조 :: FlexGen :: 1개의 GPU에 큰 모델을 탑재
활용/사용
ICL(In-Context Learning) ::인컨텍스트 러닝
프롬프팅 방법 중의 하나
태스크 설명문과 태스크 질문 및 정답 쌍으로 구성된 예시들(examples), 질문으로 이루어진 프롬프트(prompt)를 자연어 형태로 입력하면, 주어진 입력 정보를 참고하여 모델이 답변을 생성하는 방법
몇 가지 예시만으로 언어모델이 태스크를 학습
Training-free learning(추가학습 없이 해결)
GPT-3는 여러 태스크에서 인컨텍스트 러닝으로 기존 미세조정된 모델들을 뛰어넘는 성능을 달성
Scalable
어떤 원리로 작동하는 것일까? 규명을 위한 여러 가지 가설...을 기반으로 연구된 자료 존재
CoT(Chain-of-Thought)
입력과 출력 사이의 중간 추론단계(intermediate reasoning steps)를 시연형태로 추가
재귀적 프롬프팅
compositional generalization 능력
특수활용
LaMDA : 대화 애플리케이션, 검색모듈, 계산기 및 번역기, 외부도구 호출 기능
WebGPT : 웹 브라우저와 상호작용
PAL : Python 인터프리터를 통한 복잡한 기호추론 기능 제공
다양한 종류의 API 호출 기능( 계산기, 달력, 검색, QA, 번역)
LangChain 프로젝트
ChatGPT Plugin 프로젝트
국내, CLOVA X, 네이버 내부 및 제휴사 API만 연동..
Augmented LLM
Augmented Data와는 조금 다르다?
LLM을 추론(reasoning) 및 도구사용(use tools) 관점에서 강화한 모델을 칭함
Retrieval Augmented Generation(RAG) : Information Retrieval, retriever/generator , LG AI센터, Naver, KT
환각 문제를 해결하고자...
단순 텍스트 형성이 아닌 정보검색(IR : Information Retrieval) 차원으로 확장
검색 문서 기반으로 응답을 생성
사용된 문서를 참고 문헌으로 표현하는 기술
신뢰성 향상, 출처 인용
New Bing, Perplexity.ai, Google 검색
Evaluation Data, 평가 데이터
언어생성 능력 : LAMBADA(문장을 완성), XSum(문서를 요약)
지식활용능력 : Closed-book QA 태스크(사전에 학습한 지식만을 이용해 답변):: Natural Questions, ARC, Truthful, Open-book QA 테스트(외부 지식을 활용해 답변) ::Wikipedia
추론 능력 : 일반상식 추론:: PiQA, HellaSwag, WinoGrande, 수학적 논리테스트:: GSM8K
모델경량화
양자화( quantization ) :: numerical precision, integer quantization.... 실제 추론 시에는 integer값, scale값, zero값을 저장해 놓고 이를 원해 실숫값으로 복원해서 사용
ONNX Runtime : Open Neural Network Exchange, Miscosoft and FaceBook(Meta), run on device or on browser, also support custom model,
OpenNMT 사이트에서는 다양한 Transformer모델 기반의 모델을 converting 및 loading하는 샘플 코드가 있음. 기계번역모델 뿐만 아니라, 음성인식 등 multimodal LM을 사용할 수 있음. 아마도 최초는 Huggingface에 있는 듯합니다.
LangChain a framework for developing applications powered by language models.
LangSmith
Fabric build AI agents with its drag-and-drop interface
ETL tools Extranction, Transform and Load process. such as
Talend Open Studio(TOS)
Integrate.io
Hevo Data
Fivetran
Stitch
AWS Glue
Azure Data Factory
IBM DataStage
Informatica PowerCenter
Apache Airflow
고려 대학교 NLP&AI 연구실의 실험환경
기본 모델 : Eleuther에서 공개한 Ployglot-Ko 5.8B, 12.8B 한국어 LLM모델 ( 868GB의 한국어 데이터, 블로그, 모두의 말뭉치, 위키 등 다양한 도메인)
지시어 데이터셋 : GTP-4-LLM, Dolly, ShareGTP를 한국어로 번역
학습 기법 : SFT(Supervised Fine-Tuning)
파라미터 효율적인(parameter-efficient) 학습 : LoRA를 query key value attention 레이어에 적용.
외부 요소 : A100 GPU( 80GB VRAM) x 4장, 5 epoch...
LoRA 학습 : PEFT 라이브러리 사용
학습 과정의 메모리 효율성 최적화 : BitsandBytes를 활용
Criterion : AdamW optimizer
Learning Rate : 최대치를 3e-4
Warm-up 코사인 스케줄러 : 5%
Gradient explosion 완화 : grandient clipping 적용
Batch 사이즈 : 256 ( 128, 256, 512 중에서 )
LoRA Rank : 16
LoRA Alpha : 32
Decoder : temperature=0.1, top k=40, p=0.75, do sample=False, num beams=4, repetition penalty=1.4 max new tokens=400
사업적 측면에서 Large AI
요구사항
맞춤형
우리회사의 데이터를 잘 이해하는 모델
우리가 필요한 몇 가지 기능이 우선 잘되었으면...
오랜 구축시간이 필요하지 않고 빠르게 구축되었으면...
우리 데이터가 외부에 노출되지 않도록 내부에서 구축...
효율성
빠른 속도의 응답이 필요
높은 성능이 필요
몇 가지 기능만을 적은 비용으로 구축이 가능하였으면...
신뢰성
우리 데이터에서는 환각현상이 없이 정확한 정답만을 제공하였으면...
국민을 대상으로 하는 서비스를 만들 것이므로 비윤리적인 응답은 제공하지 않아야...
편리성
AI를 잘 모르는 우리 직원들도 쉽게 서비스를 개발할 수 있었으면....
Fast Adaptation :: 빠르게 고객 특화 모델을, 성능을 확보하면서 만드는 방법론
일반적인 AI의 학습 방법 : 해당 영역의 어휘나 지식을 포함하는 적응학습용 데이터, Full Fine-tuning... 수많은 GPU... 몇 달 이상의 오랜 학습시간..
효율적인 학습밥법 : PEFT(Parameter-efficient Fine Tuning)..
더 효율적인 방법 : Prompt engineering기법, zero-short/few-shot/instruction/in-context learning/
초경량화 기술 :: 추론에 소요되는 비용을 최적화... 운용 비용 절감..
경량화 방법 : 지식증류(Knowledge Distillation), 양자화(Quantization), 가지치기(Pruning).... 1/10로 축소 가능..
유효성, 신뢰성, 윤리성 :: 정확성 이외에도 갖추어야 할 소양 항목
멀티 태스크 학습( 다양한 질문 유형 대응 가능하도록) :: FLAN 데이터셋, Super Natural Instruction.
강화학습( 사용자가 좀 더 원하는 형태의 응답으로 ):: CharGPT, Bard, Claude 데이터셋과 같은 실제 대화형... 또는 합성데이터
FCC(Factual Consistency Checker) 기술 :: 사실적 일관성 여부 검토
RAG(Retrieval Augmented Generation) 기법 :: 검색 증강형 생성.
강화학습을 위한 평가지표, 윤리성 정의 분류 체계
Reference
초거대 언어모델 연구 동향, 업스테이지 박찬준 외, 정보과학회지, 2023.11
생성형 AI시대 거대언어모델의 기술동향, LG AI연구원, 김소연 외, 정보과학회지, 2023.11
코난 LLM : 한국어 대규모 언어모델, 코난테크놀로지, 양승현 외, 정보과학회지, 2023.11.
한국어를 위한 지시어 튜닝 조사 연구: 거대 언어모델 학습 및 적용, 고려대학교, 이승준외, 정보과학회지, 2023.11
Large AI to Everywehre, 초거대 AI 믿:음, KT융합기술원, 장두성 외, 정보과학회지, 2023.11
LLM 기반의 네이버 검색 서비스 Cue: , Naver 유홍연 외, 정보과학회지, 2023.11
인코더(Encoder)만 :: BERT가 대표. Cotinuous vector representations, downstream tasks( text classification, sentimental analysis, named entiry recognition), converting raw text into a sequence of tokens and generating contextual embeddings of each tokens, feature extraction. self-attention mechanism, capture long-range dependencies and learn contextual representation. Word-like tokens( e.g. WordPiece, SentencePiece ). NOT traditional word vectores. initial embeddings in GPT are not fixed and can be further refined....
1. Tokenization :: Convert input text into a sequence of word-like tokens( words or subword units ) using an appropriate tokenizer
2. Embedding :: Map each tokens to its initial embedding using an embedding matrix learned during training
3. Postional encodeing :: Add postional encodeings to these embeddings to capture information about their positions within sequences
4. Transformer layers :: Process these position-aware embeddings through multiple self-attention and feed-forward layers, refining contextual relationships between tokens at each layer.
At the output layer, the decoder produces logits for all the possible tokens in its vocabulary.
5. Softmax activation :: apply softmax activation on logits to obtrain probability distributions over all potential tokens for predicting the next token in a sequence
The ‘decoding’ process essentially refers to generating output text based on thisestimated probability distributionconditioned on preceding tokens and context information provided as input to the model.
As a result, GPT generates contextualized representations for each token in the sequence by capturing bothlocalandlong-range dependenciesacross tokens. This approach allows GPT and other Transformer-based LLMs to better understand linguistic patterns and relationships compared tofixed-word vectormethods.
디코더(Decoder)만 :: GPT, Bard, LaMDA, generate output text based on the givien context( e.g., a prompt ), text generation tasks( story generation, conversation modeling, or completing sentences )
인코더-디코더:: T5, BART가 대표, machine translation, summarization and question-answering
특정사이트에서 전파/확장하는 스케일을 어느 정도까지 할지? 즉, 타도타기의 깊이를 제한하는 용도입니다.
By default there is no limit on the depth of crawling. But you can limit the depth of crawling. For example, assume that you have a seed page "A", which links to "B", which links to "C", which links to "D". So, we have the following link structure:
A -> B -> C -> D
Since, "A" is a seed page, it will have a depth of 0. "B" will have depth of 1 and so on. You can set a limit on the depth of pages that crawler4j crawls. For example, if you set this limit to 2, it won't crawl page "D".