ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [책 리뷰] GPT-4를 활용한 인공지능 앱 개발
    BOOK 2024. 2. 20. 16:22
    반응형

    GPT-4를 활용한 인공지능 앱 개발 / 올리비에 케일린 외 / 한빛미디어 (2023)

     

    총평

    이 책은 LLM(Large Language Model)에 입문하고자 하는 개발자에게 아주 적합한 책이다-심지어 머신러닝, NLP 백그라운드가 없어도!-. OpenAI에서 제공하는 MaaS(Model as a Service) API를 활용한 간단한 프로젝트부터, 프롬프트 엔지니어링, Few-shot, Fine-Tuning, RAG 등 활용에 대한 전반적인 부분을 다루어 아이디어와 방법론들을 많이 얻어갈 수 있다. 서론에서 기존의 NLP 흐름과 transformer를 간략하면서도 핵심 내용만 전달하고 다양한 활용 사례로 시작하는 부분도 좋았다. 책의 분량 자체는 179 페이지 정도로 짧지만 빠르게 입문하기에 좋은 책이다.

    개인적인 요즘의 LLM 흐름에 대한 인사이트를 공유하자면, 최근 대규모 언어 모델로 넘어오고 나서는 이전에 존재했던 Pre-trained Model 기반으로 Fine-Tuning하는 기법은 일반 기업, 개인에게, 심지어 기존의 대기업에게도 리소스의 부담이 있다. 엔비디아 주가는 매년 천장을 뚫고 올라가고 있고, 나날이 비싸지는 GPU 비용과 촉각을 다투는 기술 개발의 속도, 최근 줄어든 IT호황의 분위기 등으로 순수한 연구로서의 AI연구는 소수에게만 열려 있는 분위기인듯 하다. 이제는 인공지능을 어떻게 활용하여 사업에 적용할 것인지, AI를 활용한 비즈니스 모델과 함께 모델을 최적화하여 기존 산업과 결합하는 분야로 정착하는 양상을 보인다. 그래서 최근에는 PEFT(Parameter-Efficient Fine-Tuning) 기법을 활용하여 LLM을 FT하거나, RAG시스템을 결합하여 hallucination을 해소하고 풍부한 답변을 얻는 등의 연구개발이 활발히 이루어 진다. 

    또한 최근 LLM 프로젝트를 하면서 개인적으로 prompt engineernig에 대한 기술적인 회의감이 있었다. 멋지게(?) 모델링을 하기 보다는 전처리와 프롬프트 튜닝이라는, 꼭 머신러닝 엔지니어가 아니어도 할 수 있는 듯한 기술적인 부분이 부족한 분야라는 약간의 선입견을 갖고 있었다. 하지만 LLM의 추론 원리와 작동 방식을 기반으로 한 설명을 읽으니 이 부분도 연구 분야로써의 가치가 충분하겠다-라는 인사이트를 얻을 수 있었다. (책갈피#2 참고)

     

    책갈피

    #1 Prompt Engineering

    프롬프트 엔지니어링(Prompt Engineering)은 프로그래밍의 한 방식으로, LLM이 최대한 적합한 출력을 생성할 수 있도록 최적의 입력 형태와 사례를 개발하는 데 중점을 둔 새로운 분야입니다. (중략) 일반적으로 프롬프트에 role, context, job이라는 세 가지 요소를 정의합니다. 세 가지 요소가 항상 필요하지는 않으며 순서도 변경할 수 있습니다. 프롬프트를 잘 구성하고 요소를 잘 정의한다면 좋은 결과를 얻을 수 있습니다. 이 세 가지 요소를 사용하더라도 복잡한 작업에는 제로샷 러닝, 퓨샷 러닝, 파인 튜닝 등을 사용해야 할 수도 있습니다.

    GPT-4는 연산에 적합하지 않습니다. 숫자를 텍스트 토큰처럼 간주할 뿐이며 수학적 논리가 없습니다.
    LLM의 추론 능력을 높이는 비결이 있습니다. 예를 들어 모델이 369 * 1,235를 풀라는 요청을 받으면 한 번에 답을 찾으려고 시도하는데, 사실 사람이 직접 계산할 때는 연필과 종이를 사용해 여러 단계를 거쳐 정답에 이를 때가 많습니다. 이처럼 LLM도 프롬프트를 통해 중간 추론을 하도록 유도할 수 있습니다. 연필과 종이를 사용해 계산하는 사람처럼 모델도 추론할 시간을 주면 좀 더 복잡한 문제를 해결할 수 있습니다.
    프롬프트 끝에 'Let's think step by step'을 추가하면 모델이 더 복잡한 추론 문제를 해결할 수 있다는 점이 경험적으로 입증됐습니다. Large Language Models are Zero-Shot Reasoners [Takeshi Kojima et al, 2023]

    #2 Fine-Tuning vs Few-shot Learning

    파인 튜닝은 특정 도메인에 특화된 데이터셋으로 기존 모델을 추가적으로 학습시킴으로써 성능을 개선하고 답변을 더 정확하게 만드는 프로세스입니다. 즉, 파인 튜닝으로 모델의 내부 파라미터를 업데이트합니다. 앞서 살펴봤듯이 퓨샷 러닝은 입력 프롬프트를 활용해 모델에 제한된 개수의 예시를 제공하고, 모델은 이 예시를 기반으로 원하는 결과를 생성합니다. 퓨샷 러닝에서 모델의 내부 파라미터는 수정되지 않습니다.

    파인 튜닝과 퓨샷 러닝 모두 GPT 모델의 성능 개선에 도움이 됩니다. 파인 튜닝은 추가한 데이터가 많을 때 이상적인 성능 개선 방법으로, 출력값이 대상 도메인의 전문 용어나 패턴, 어조에 더욱 적합해집니다. 퓨샷 러닝은 모델 자체를 다시 학습시키지 않아도 되므로 더 유연하고 데이터 및 비용 효율적인 접근 방식입니다. 이 기술은 제한된 예시만 안내하면 되거나 다양한 작업에 빠르게 적응해야 할 때 유용합니다. 파인 튜닝과 퓨샷 러닝 중 하나를 선택해야 할 때 비용이 중요한 요소가 될 수 있는데, 파인 튜닝은 모델을 다시 학습시키는 작업이므로 비용이 발생합니다.

    #3 프로젝트: <젤다의 전설> 전문가 만들기

    https://github.com/lee-monster/developing-apps-with-GPT-4/blob/main/Chapter3/03_QuestionAnsweringOnPDF.py

    #4 LangChain과 Plugin으로 LLM 기능 향상하기

    https://github.com/malywut/gpt_examples/blob/main/Chap5_01_LangChain/run.py

     

    목차

    Chapter 1) GPT-4와 챗GPT의 핵심 요소
    _1.1 LLM 소개
    __1.1.1 언어 모델과 NLP 기초
    __1.1.2 트랜스포머 아키텍처와 LLM에서의 역할
    __1.1.3 GPT 모델의 토큰화 및 예측 단계
    _1.2 GPT 모델의 역사
    __1.2.1 GPT-1
    __1.2.2 GPT-2
    __1.2.3 GPT-3
    __1.2.4 GPT-3, 인스트럭트GPT
    __1.2.5 GPT-3.5, 코덱스, 챗GPT
    __1.2.6 GPT-4
    _1.3 LLM 사용 사례
    __1.3.1 비마이아이즈
    __1.3.2 모건 스탠리
    __1.3.3 칸 아카데미
    __1.3.4 듀오링고
    __1.3.5 야블
    __1.3.6 웨이마크
    __1.3.7 인월드 AI
    _1.4 AI 할루시네이션
    _1.5 GPT 모델 최적화
    _1.6 정리

    Chapter 2) GPT-4와 챗GPT의 API
    _2.1 필수 개념
    _2.2 오픈AI API에서 사용 가능한 모델
    _2.3 오픈AI 플레이그라운드로 GPT 모델 사용하기
    _2.4 시작하기: 오픈AI 파이썬 라이브러리
    __2.4.1 오픈AI 접근 및 API 키
    __2.4.2 ‘Hello World’ 예제
    _2.5 GPT- 4와 챗GPT 사용하기
    __2.5.1 채팅 완성 엔드포인트의 입력 옵션
    __2.5.2 채팅 완성 엔드포인트의 결과 출력 형식
    __2.5.3 텍스트 완성에서 함수까지
    _2.6 다른 텍스트 완성 모델 사용하기
    __2.6.1 텍스트 완성 엔드포인트의 입력 옵션
    __2.6.2 텍스트 완성 엔드포인트의 출력 결과 형식
    _2.7 고려 사항
    __2.7.1 사용료와 토큰 한도
    __2.7.2 보안과 개인 정보 보호
    _2.8 기타 오픈AI API 및 기능
    __2.8.1 임베딩
    __2.8.2 모더레이션 모델
    __2.8.3 위스퍼와 DALL-E
    _2.9 정리 및 치트 시트

    Chapter 3) GPT-4와 챗GPT로 애플리케이션 구축하기
    _3.1 애플리케이션 개발 개요
    __3.1.1 API 키 관리
    __3.1.2 보안 및 데이터 개인 정보 보호
    _3.2 소프트웨어 아키텍처 설계 원칙
    _3.3 LLM 기반 애플리케이션 취약점
    __3.3.1 입출력 분석하기
    __3.3.2 프롬프트 인젝션의 불가피성
    _3.4 프로젝트 예제
    __3.4.1 프로젝트 1: 뉴스 생성 솔루션 구축
    __3.4.2 프로젝트 2: 유튜브 동영상 요약
    __3.4.3 프로젝트 3: 〈젤다의 전설〉 전문가 만들기
    __3.4.4 프로젝트 4: 음성 제어
    _3.5 정리

    Chapter 4) GPT-4와 챗GPT의 고급 기법
    _4.1 프롬프트 엔지니어링
    __4.1.1 효과적인 프롬프트 설계
    __4.1.2 단계별 사고
    __4.1.3 퓨샷 러닝 구현
    __4.1.4 프롬프트 효과 향상
    _4.2 파인 튜닝
    __4.2.1 시작하기
    __4.2.2 오픈AI API로 파인 튜닝하기
    __4.2.3 파인 튜닝을 활용한 애플리케이션
    __4.2.4 파인 튜닝 예제
    __4.2.5 파인 튜닝 비용
    _4.3 정리

    Chapter 5) 랭체인과 플러그인으로 LLM 기능 향상하기
    _5.1 랭체인 프레임워크
    __5.1.1 다이내믹 프롬프트
    __5.1.2 에이전트와 도구
    __5.1.3 메모리
    __5.1.4 임베딩
    _5.2 GPT-4 플러그인
    __5.2.1 개요
    __5.2.2 API
    __5.2.3 플러그인 매니페스트
    __5.2.4 OpenAPI 사양
    __5.2.5 설명
    _5.3 정리
    _5.4 결론

    부록 A) GPT의 새로운 기능과 개선 사항(OpenAI DevDay)
    A.1 신규 모델 공개
    A.2 어시스턴트API 공개
    A.3 신규 모달리티가 가능한 API
    A.4 모델 커스터마이징 지원
    A.5 사용료 및 지원 정책 변경
    A.6 GPTs

     

    한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 제공 받아 작성된 서평입니다.
    반응형

    댓글

Written by Emily.