본문 바로가기

verdantjuly/Today I Learned

TIL 20231026

728x90

이번 주 목표

응답하라 추억시대 코드 수정

미륵관심법 코드 수정

LLM 공부

실행 컨텍스트 (execution context) 공부

기업 하루에 3개 이상 지원

오늘 목표

응답하라 추억시대 코드 수정

LLM 공부

실행 컨텍스트 (execution context) 공부

오늘 한 것

실행 컨텍스트 (execution context) 공부

LLM 공부

응답하라 추억시대 코드 수정

1. 실행 컨텍스트 스택 (call stack, execution context stack)

execution context 실행 컨텍스트

call stack = 실행 컨텍스트가 추가/삭제되는 자료구조

 

자바스크립트 엔진은 먼저 

1. 전역 코드를 평가하여 전역 실행 컨텍스트를 생성한다. 실행 컨텍스트 스택에 전역 실행 컨텍스트를 푸시한다.

이때 변수에 값이 할당된다.

2. 함수가 호출되면 함수 코드를 평가하여 함수 실행 컨텍스트를 생성한다. 실행 컨텍스트 스택에 함수 실행 컨텍스트를 푸시한다.

함수 코드가 실행된다. 함수 안의 변수에 값이 할당된다. 중첩함수가 실행된다.  

 

2. LLM 거대 언어 모델 (대형 언어 모델)

LLM이란?

 

대형 언어 모델(Large language model, LLM) 또는 거대 언어 모델

수많은 파라미터(보통 수십억 웨이트 이상)를 보유한 인공신경망으로 구성되는 언어 모델이다.

자기 지도 학습이나 반자기지도학습을 사용하여 레이블링되지 않은 상당한 양의 텍스트로 훈련된다.

 

LLM은 2018년 즈음에 모습을 드러냈으며 다양한 작업을 위해 수행된다.

이전의 특정 작업의 특수한 지도 학습 모델의 훈련 패러다임에서 벗어나 자연어 처리 연구로 초점이 옮겨졌다.

대규모 언어 모델(LLM) 은 AI 챗봇 기술을 가능하게 하는 요소이며 많은 화제를 불러일으키고 있는 주제 중 하나다.

대규모 언어 모델(LLM)의 작동 방식은 크게 3가지 로 나뉘고 있다. 토큰화, 트랜스포머 모델, 프롬프트 등. 

 

LLM의 작동 방식

 

토큰화 자연어 처리의 일부로 일반 인간 언어를 저수준 기계 시스템(LLMS)가 이해할 수 있는 시퀀스로 변환하는 작업을 말하며

여기에는 섹션에 숫자 값을 할당하고 빠른 분석을 위해 인코딩하는 작업이 수반된다.

이는 음성학의 AI 버전과 같으며 토큰화의 목적은 인공지능이 문장의 구조를 예측하기 위한 학습 가이드 또는

공식과 같은 컨텍스트 백터를 생성하는 것이 목적.

언어를 더 많이 연구하고 문장이 어떻게 구성되는지 이해할수록

특정 유형의 문장에서 다음 언어에 대한 예측이 더 정확 해진다.

이로 인해 온라인에서 사람들이 사용하는 다양한 커뮤니케이션 스타일을 재현하는 모델을 개발할 수 있다.

 

트랜스포머 모델은 순차적 데이터를 검사하여 어떤 단어가 서로 뒤따를 가능성이 높은지 관련 패턴을 식별하는

신경망의 일종으로 각각 다른 분석을 수행하여 어떤 단어가 호환되는지 결정하는 계층으로 구성된다.

이러한 모델은 언어를 학습하지 않고 알고리즘에 의존하여 사람이 쓴 단어를 이해하고 예를들어,

힙스터 커피 블로그를 제공함으로써 커피에 대한 표준 글을 작성하도록 학습 시킨다.

이 트랜스포머 모델이 대규모 언어 모델 LLM 언어 생성의 기초.

 

프롬프트는 개발자가 정보를 분석하고 토큰화하기 위해 대규모 언어 모델 LLM에 제공하는 정보로

프롬프트는 기본적으로 다양한 사용 사례에서 LLM에 도움이 되는 학습 데이터 입니다.

더 정확한 프롬프트를 받을수록 LLM은 다음 단어를 더 잘 예측하고 정확한 문장을 구성할 수 있습니다.

따라서 딥러닝 AI의 적절한 학습을 위해서는 적절한 프롬프트를 선택하는 것이 중요하다.

 

 

LLM 학습 모델

  • 제로샷 학습: 기본 LLM은 응답 정확도는 다르지만 대개 프롬프트를 통해 명시적인 훈련 없이 광범위한 요청에 응답할 수 있습니다.
  • 퓨샷 학습: 몇 가지 관련 훈련 예제를 제공하면 해당 영역에서 기본 모델 성능이 크게 향상됩니다.
  • 미세 조정: 이는 데이터 사이언티스트과 특정 애플리케이션과 관련된 추가 데이터로 파라미터를 조정하도록 기본 모델을 훈련한다는 점에서 퓨샷 학습의 연장입니다.

 

LLM 주요 용어

  • 단어 임베딩: 단어들을 고차원 벡터로 표현하여 각 단어 간의 유사성과 관계를 캡처하는 기술
  • 주의 메커니즘: 입력 시퀀스의 다양한 부분에 가중치를 부여하여 모델이 중요한 정보에게 집중할 수 있도록 하는 기술
  • 트랜스포머: 주의 메커니즘을 기반으로 한 인코더와 디코더 구조의 신경망 모델로, 길이가 다른 시퀀스를 처리하는 데 탁월한 성능
  • Fine-tuning LLMs: 사전 학습된 대규모 언어 모델을 특정 작업에 적용하기 위해 추가 학습하는 과정
  • 프롬프트 엔지니어링 :  모델에 입력하는 질문이나 명령을 구조화하여 모델의 성능을 향상시키는 과정
  • Bias (편향): 모델이 학습 데이터의 불균형이나 잘못된 패턴을 포착하여 실제 세계의 현실과 일치하지 않는 결과를 내놓는 경향
  • 해석 가능성: LLM이 가진 복잡성을 극복하고 AI 시스템의 결과와 결정을 이해하고 설명할 수 있는 능력

 

LLM 핵심 기술

스케일링

확장(Scaling up)은 대규모 데이터셋과 컴퓨팅 리소스를 활용하여 언어 모델의 성능을 더욱 향상시키는 것을 의미합니다.
대규모 데이터셋을 사용하면 모델이 더 많은 언어 정보를 습득하고, 더 정확하게 예측할 수 있습니다.
대표적으로 LLM의 확장은 두 가지 방법이 있습니다.

첫째는 모델의 크기를 늘리는 방법으로 더 많은 계산 능력과 메모리를 필요로 합니다.


두번째는 데이터 증강(Data augmentation)을 통해 모델을 확장하는 방법입니다.
데이터 증강은 기존 데이터를 변형시켜 더 많은 데이터를 만드는 방법으로, 모델이 다양한 언어 패턴을 습득할 수 있도록 돕습니다.

 

LLM의 모델 확장은 다양한 NLP 작업에 적용할 수 있도록 성능을 향상시킬 수 있다는 장점이 있지만, 컴퓨팅 리소스와 계산 복잡도가 증가한다는 점에서 유의해야 합니다. 또한 사전 학습 데이터의 품질은 좋은 성능을 달성하는 데에 핵심적인 역할을 하므로, 사전 학습 코퍼스를 확장할 때 데이터 수집 및 정리 전략을 고려하는 것이 중요합니다.

학습

다양한 병렬 전략이 공동으로 활용되는 LLM의 네트워크 파라미터를 학습시키기 위해서는 분산 훈련 알고리즘이 필요합니다.

분산 학습을 지원하기 위해 DeepSpeed 및 Megatron-LM과 같은 병렬 알고리즘의 구현 및 배포를 용이하게 하는, 여러 최적화 프레임워크가 출시되었죠.

 

또한 훈련 손실 급증을 극복하기 위해 재시작 및 혼합 정밀도 훈련과 같은 최적화 트릭도 훈련 안정성과 모델 성능에 핵심적인 역할을 합니다.

 

최근에는 GPT-4에서 훨씬 작은 모델로 대규모 모델의 성능을 안정적으로 예측할 수 있는 특수 인프라와 최적화 방법이 개발 화두에 올라있습니다.

능력 도출

대규모 말뭉치에 대한 사전 학습을 마친 LLM은 다양한 작업을 수행할 수 있습니다.

하지만 LLM이 어디까지 할 수 있는지 명시적으로 알 수 있는 방법이 없기 때문에, 적절한 작업 지침이나 특정 상황에 맞는 학습 전략을 제시해야 합니다. 예를 들어, 연쇄적 사고 프롬프트는 중간 추론 단계를 포함함으로써 복잡한 추론 과제를 해결하는 데에 유용하다고 밝혀졌습니다. LLM에 대한 인스트럭션 튜닝을 수행하면, 보이지 않는 과제에 대한 LLM의 일반화 가능성을 향상시킬 수 있다는 연구 결과가 있었죠.

정렬 튜닝(Alignment Tuning)

Alignment tuning은 입력 문장과 레퍼런스 문장 간의 정렬 정보를 모델 학습에 이용하는 방법입니다.

기존의 Fine-tuning 방식은 입력 문장과 해당하는 레이블로 이루어진 데이터셋을 기반으로 모델을 학습시키는 반면,

정렬 튜닝은 입력 문장과 레퍼런스 문장 간의 정렬 정보도 함께 이용합니다.

정렬 튜닝은 fine-tuning 방식과 함께 사용할 수도 있습니다.

 

Alignment tuning은 언어 번역과 같은 작업에서 유용하게 활용할 수 있습니다.

예를 들어, "나는 사과를 먹는다"와 "I eat an apple"이라는 레퍼런스 문장이 있다고 가정해보겠습니다.

정렬 정보를 이용하여 "나는"과 "I", "사과를"과 "an apple"을 서로 매핑하여 입력 문장에서 적절한 위치에 배치할 수 있습니다.

이러한 정렬 정보를 활용하면 모델이 문장의 의미와 문법적 구조를 보다 정확하게 이해하고,

더욱 자연스러운 번역 결과를 제공할 수 있습니다.

도구 조작

본질적으로 LLM은 방대한 일반 텍스트 말뭉치를 가지고 훈련되었기 때문에,

텍스트 형태로 잘 표현되지 않는 작업에 대해서는 성능이 떨어질 수 있습니다.

또한 사전 학습 데이터에 한정되어 있어 최신 정보를 캡처할 수 없는 한계도 가지고 있었죠.

이러한 문제를 해결하기 위해 최근, 외부 도구를 사용하여 LLM의 결함을 보완하는 이론이 주목 받고 있습니다.

최근에는 ChatGPT가 외부 플러그인을 사용하는 메커니즘을 활성화했는데,

이는 LLM의 ‘눈과 귀’가 되어주면서 용량 범위를 광범위하게 확장하는 역할을 해주었습니다.

 

 

자료 출처 : https://ko.wikipedia.org/wiki/%EB%8C%80%ED%98%95_%EC%96%B8%EC%96%B4_%EB%AA%A8%EB%8D%B8

https://www.thedatahunt.com/trend-insight/what-is-llm

https://aws.amazon.com/ko/what-is/large-language-model/

 

3.  응답하라 추억시대 - Thumbnail 등록

 

기존에 주희 님께서 만들어 두신 imageManager 안의 imageUpload를 복제한

imageThumbnail 함수를 생성하여 썸네일 생성에 성공하였다. 

 

이후로 글 수정시에도 썸네일이 같이 수정되게 만들면 될 것 같다. 

임시로 썸네일을 본문에 삽입하였다. 


정리 

1. 실행 컨텍스트 스택 (call stack, execution context stack)

execution context 실행 컨텍스트

call stack = 실행 컨텍스트가 추가/삭제되는 자료구조

 

자바스크립트 엔진은 먼저 

1. 전역 코드를 평가하여 전역 실행 컨텍스트를 생성한다. 실행 컨텍스트 스택에 전역 실행 컨텍스트를 푸시한다.

이때 변수에 값이 할당된다.

2. 함수가 호출되면 함수 코드를 평가하여 함수 실행 컨텍스트를 생성한다. 실행 컨텍스트 스택에 함수 실행 컨텍스트를 푸시한다.

함수 코드가 실행된다. 함수 안의 변수에 값이 할당된다. 중첩함수가 실행된다.  

 

2. 대형 언어 모델(Large language model, LLM) 거대 언어 모델

수많은 파라미터(보통 수십억 웨이트 이상)를 보유한 인공신경망으로 구성되는 언어 모델이다.

AI 챗봇 기술을 가능하게 하는 요소

 

< 대표적 학습 모델 >

  • 제로샷 학습: 기본 LLM은 응답 정확도는 다르지만 대개 프롬프트를 통해 명시적인 훈련 없이 광범위한 요청에 응답할 수 있습니다.
  • 퓨샷 학습: 몇 가지 관련 훈련 예제를 제공하면 해당 영역에서 기본 모델 성능이 크게 향상됩니다.
  • 미세 조정: 이는 데이터 사이언티스트과 특정 애플리케이션과 관련된 추가 데이터로 파라미터를 조정하도록 기본 모델을 훈련한다는 점에서 퓨샷 학습의 연장입니다.

 

KPT

Keep

아침에 일찍 일어나서 시간을 활용하는 것

Problem

조금 더 밀도있게 시간 활용하지 못하는 것

Try

촘촘하게 계획하고 실천하기

소감

독립을 하니 조금 더 부지런해지는 것 같다.

집에 있을 때 보다 긴장해서 잠도 줄어서 좋다.

 

 

 

 

'verdantjuly > Today I Learned' 카테고리의 다른 글

TIL 20231031  (0) 2023.10.31
TIL 20231030  (0) 2023.10.30
TIL 20231023  (1) 2023.10.23
TIL 20231022  (0) 2023.10.23
TIL 20231021  (0) 2023.10.21