내 인생을 코딩

데이터 엔지니어링 데브코스 2주차 - 금요일 본문

데이터 엔지니어링/TIL

데이터 엔지니어링 데브코스 2주차 - 금요일

Big_circle 2023. 4. 17. 13:58
학습주제
[특강] 한기용 멘토님 : ChatGPT 활용하기
[수업] DFS, BFS





주요내용
최근 핫한 이슈인 'ChatGPT'와 관련하여 개발자로써 어떠한 관점에서 바라봐야 할지 고민이 많았다. ChatGPT가 코드도 직접 작성해준다는데, 과연 개발자 직군은 사장될 것인가? 또, Prompt Engineering 등 다양한 직군들이 빠르게 생겨나고 있는데 어떻게 적응해야할까? 등 수많은 고민을 가지고 있던 찰나에 한기용 멘토님의 ChatGPT 관련 강의를 들을 수 있었다. 강의를 통해 가지고 있던 일부 의문점을 해결할 수 있었고, ChatGPT에 대한 인식을 긍정적으로 바꿀 수 있는 계기가 됐다. 지금부터 그 내용을 간략히 정리해보고자 한다.



LM(Language Model)이란?

  • GPT의 근간이 되는 LM은 문장의 일부를 보고 비어있는 단어를 확률적으로 맞추는 모델을 말한다.
  • 비지도 학습을 통해 언어 모델을 생성한다는 특징이 있다.
  • GPT는 Temperature이라 불리는 자유도를 줄 수 있는데, 0~100까지이며 100에 가까울수록 더 랜덤한 결과를 도출한다.

LM의 훈련방법

  • Unsupervised Learning
  • 웹 상에서 존재하는 문서들이 모델의 훈련 데이터가 되므로, 데이터의 품질이 좋은 위키피디아가 학습 데이터로 가장 많이 활용된다.
  • 많은 데이터를 context-window로 나눠서 특정 개수의 토큰을 보고 1개의 토큰을 예측하는 과정을 훈련한다. 이때, context-window의 크기가 결국 모델의 메모리를 결정하게 된다.
    • context-window : 언어 모델에 입력되는 고정된 단어 또는 토큰의 개수를 의미한다. 간단한 예로, context-window가 5로 설정되어 있다면, 모델은 현재 단어의 왼쪽에 있는 5개의 단어 또는 토큰과 오른쪽에 있는 5개의 단어 또는 토큰을 모두 고려하여 총 11개를 입력으로 사용한다.
  • 언어 학습 방식을 코드에 적용하여 학습하기도 한다.
cf. Word to Vector
언어를 수학적으로 표현하고 계산하기 위한 방법이다. 단어를 그대로 사용하면 컴퓨터가 이해할 수 없기 때문에 이를 숫자로 변환하고 다시 N차원 공간의 벡터로 변환한다. 이러한 과정을 워드 임베딩이라고 부른다. 워드 임베딩을 통해 데이터의 크기를 줄이고 단어 간의 유사도 측정 등 수학적 계산을 가능케 한다.

GPT(Generative Pre-trained Transformer)

  • GPT가 나오기 전에는 구글의 BERT가 각광받고 있었다.
  • OpenAI에서 Transformer 모델을 기반으로 만든 거대 언어 모델이다.
  • Word Completion, Code Completion 두가지 모델을 제공한다
  • Completion, Fine-Tuning, Whisper API, ChatGPT API 등 다양한 종류의 api가 유료로 제공되고 있다.

GPT model Fine-Tuning

  • 이미 만들어진 초거대 언어 모델 위에 새로운 레이어를 얹고 다른 용도의 데이터로 훈련하는 방법을 말한다.
  • Fine-Tuning을 통해 기본 언어 모델 위에 나만의 모델을 생성가능하다.

ChatGPT

  • 2022년 11월 30일에 발표되었다.
  • GPT를 챗봇의 형태로 Fine-Tuning한 프로그램이다.
    • RLHF : Reinforcement Learning from Human Feedback
  • 어떻게 질문을 하고, 지속적으로 대화를 이끌어나갈 수 있을지 연구하고 업무를 수행하는 Prompts 엔지니어링이 생겨났다.

개발자로써 바라봐야 하는 관점

  • 기존 업무에서도 필요한 내용을 구글에 검색하는 것과 같이, ChatGPT를 하나의 수단으로써 적극 활용해야 한다.
  • Code completion 기능도 제공하기 때문에 기존 검색 방식에 비해 코딩 생산성을 확실히 증대시켜줄 것이다.
    • 코드 리뷰, 주석 추가, 테스트 코드 추가 등
  • 어떻게 질문하냐(Prompt)에 따라 다른 답변을 주기 때문에 명확하고 정확한 질문을 하는 것이 중요하다.
  • ChatGPT 외에도 다른 Fine-Tuning 툴이나, Gen AI 툴 등을 열심히 활용해봐라.