-
랭체인으로 LLM 기반의 AI 서비스 개발하기 - 길벗 출판사도서 2024. 4. 30. 06:58
현업에서 개발하면서 OpenAI의 GPT-3, GPT-3.5, GPT-4를 사용해보았고,
구글의 GEMINI를 사용하면서 테스트 코드와
디버깅을 잡는데 유용하게 활용한 경험을 가지고 있었다.
하지만, 정작 툴을 사용하는 방법에만 그쳤었는데, 대화형 AI 툴의 API를 연동해
나만의 AI 챗봇 서비스를 개발할 수 있다는 취지의
'랭체인으로 LLM 기반의 AI 서비스 개발하기'
길벗 출판사의 도서를 좋은 기회로 받아보게 되었다.📌 목차
- 1장. LLM 훑어보기
- 2장. LLM 활용하기
- 3장. RAG 훑어보기
- 4장. 랭체인 익숙해지기
- 5장. 랭체인으로 RAG 구현하기
- 6장. LLM을 이용한 서비스 알아보기
- 부록. 코랩 사용법
전반적인 목차는 크게 위처럼 구성되어 있고, 세부적으로 각 LLM, RAG, 랭체인 등의 개념을 소개하고,
각 개념들의 특징과 종류, 생성과정, 활용방법, 주의 사항, 한계, 예제 코드들이 구성되어있다.
아래는 책을 학습하면서 LLM에 대해 정리한 내용을 간략하게 적어본다.
🔎 LLM : Large Language Model의 약자
- 인공지능의 한 분야, 대규모 데이터로 학습한 결과를 이용해서 인간의 언어를 처리하고, 생성하여 맥락을 이해하는데 사용
- 초기 언어는 통계적 방법에 기반
- 예시로 '나는 오늘 점심에' 라는 말을 했을 때, 컴퓨터는 '피자를 먹었다.' 혹은 '샐러드를 먹었다.' 와 같이 문장을 완성
- 이유는 과거에 '나는 오늘 점심에' 다음 문구로 피자나 샐러드가 많이 사용해 확률적으로 더 높은 문장을 완성하였음
- n-gram : 몇 개의 단어로 나누는지로 구분
- 1-gram(유니그램) : 전체 문장을 각각의 단어로 구분
- 2-gram(바이그램) : 전체 문장을 두 단어씩 구분
- 3-gram(트라이그램) : 전체 문장을 세 단어씩 구분
- n-gram 모델은 언어의 통계적 패턴을 학습해서 문장을 이해하고, 새로운 문장을 만들어내는데 도움을 줌
- 하지만, 위 방법은 모든 n-gram을 데이터베이스에 저장하고 있어야 하므로 사전에 DB를 생성해야된다는 단점
- n이 커질수록 문맥을 제대로 이해하지 못하는 경우가 많아 언어 모델로 활용하기에 한계가 있음
- 그래서 등장한 것이 신경망(뉴런)을 이용한 언어 모델
- 1-gram(유니그램) : 전체 문장을 각각의 단어로 구분
- 예시로 '나는 오늘 점심에' 라는 말을 했을 때, 컴퓨터는 '피자를 먹었다.' 혹은 '샐러드를 먹었다.' 와 같이 문장을 완성
🔎 신경망
- 입력층 : 외부로부터 데이터를 받아들임
- 은닉층 : 데이터를 처리하여 다양한 특성과 패턴을 학습
- 출력층 : 최종 결과를 생성
- 신경망 언어 모델
- RNN(Recurrent Neural Networks) : 시퀀스 데이터(데이터가 일정한 순서대로 정렬, 순서가 중요한 정보를 담고 있는 데이터) 처리에 적합, 과거의 정보가 현재의 결정에 영향을 미침
- 단점 : 과거의 데이터를 저장하기 위한 공간이 작기 때문에 매우 긴 데이터를 처리하는데 한계가 있음
- RNN(Recurrent Neural Networks) : 시퀀스 데이터(데이터가 일정한 순서대로 정렬, 순서가 중요한 정보를 담고 있는 데이터) 처리에 적합, 과거의 정보가 현재의 결정에 영향을 미침
- LSTM(Long Short-Term Memor Networks) : 긴 시퀀스 데이터 처리에 한계를 극복하기 위해 고안된 모델, 장기 기억을 위한 메모리를 하나 더 둠, 따라서 RNN보다 긴 문장을 기억하는데 수월
- 2017년, 트랜스포머 아키텍처가 도입, 이전 언어 모델은 각 단어를 개별적으로 이해하고 처리하는데 중점을 두었다면, 이후 문장과 단락 전체를 처리할 수 있음
- GPT-3 모델 학습 시 약 45TB 텍스트 데이터를 이용하여 학습
- 거대 언어 모델은 많은 양의 데이터를 가지고 학습하는 것 뿐만 아니라 모델의 크기도 커야함
- 각 의미의 연결이 언어 모델에서는 파라미터로 정의
- GPT-3는 약 1,750 억개의 파라미터를 가지고 있음
- GPT-2는 약 15억개의 파라미터를 가지고 있음
- GPT-3 이후로부터는 기하급수적으로 파라미터의 개수가 증가함
🔎 LLM 특징
- 인터넷의 방대한 양의 텍스트 데이터로부터 학습
- 언어를 이해하고, 생성하는데 특화되어있음
- 특정 작업을 위해 파인튜닝 가능
- 파인 튜닝이란, 챗 GPT와 같은 언어 모델을 나의 데이터로 추가 학습을 시키는 과정
- 특화된 분야에 더욱 정교하게 사용 가능
- 파인 튜닝이란, 챗 GPT와 같은 언어 모델을 나의 데이터로 추가 학습을 시키는 과정
- LLM을 훈련하고 운영하는데에는 상당한 컴퓨팅 자원 필요(주로 GPU, TPU)
- LLM에서 모델 설계는 매우 큰 신경망 아키텍처를 구축하는 것을 의미하는데, 주로 트랜스포머 모델을 기반
- LLM과 같이 언급되는 단어
- LLM : 거대 언어 모델, 텍스트를 기반으로 질문에 답하거나, 글을 작성하고 대화를 진행하는 등의 다양한 관련 작업 사용
- GAI : 입력 데이터를 기반으로 새로운 콘텐츠를 생성하는 인공지능, 예시로 Chat GPT의 이미지 생성하는 DALL-E
- GAI가 LLM을 포괄하는 더 큰 범주임
- SLM : LLM보다 상대적으로 적은 수의 파라미터, 더욱 단순하거나 특정 분야에 특화된 언어 작업 (예시로 과거의 기후 데이터를 분석하여 미래 날씨 예측)
- LLM : 거대 언어 모델, 텍스트를 기반으로 질문에 답하거나, 글을 작성하고 대화를 진행하는 등의 다양한 관련 작업 사용
🔎 LLM 활용 방법
- 파인 튜닝 : 기존의 LLM을 특정한 작업이나 상황에 맞게 조금 더 훈련시키는 과정
- RAG : 자연어 처리 분야에서 사용되는 기술, 정보 검색과 생성을 결합한 인공지능 모델
- RAG를 더 선호하는 편임
- LLM 훈련 성능과 정확도 검증이 어렵고, 학습을 위해 과도한 비용 발생, 해당 데이터 준비를 위해 IT 인력뿐 만 아니라 관련 서비스 분야 업무의 전문가도 필요하기 때문에 현식적으로 어려움
- LLM 훈련 성능과 정확도 검증이 어렵고, 학습을 위해 과도한 비용 발생, 해당 데이터 준비를 위해 IT 인력뿐 만 아니라 관련 서비스 분야 업무의 전문가도 필요하기 때문에 현식적으로 어려움
위 내용은 학습한 LLM의 개념 및 상세 설명들을 간략하게 정리한 일부 내용이다.다음은 실제 코드로 RAG 기반의 챗봇 만들기 실습을 구현한 내용이다. 먼저, 구동 환경은 아래와 같다.
💻 구동 환경
- OS : MAC
- HW : Apple Silicon M1 Macbook Air
랭체인을 사용하기 위해 먼저 환경 구성을 진행하였다.
파이썬을 실행시키기위해 아나콘다(Anaconda)를 MacOS 버전으로 설치하였고,
가상 환경으로 주피터 노트북을 설치해 접속하였다.
그 후, 필요한 라이브러리들을 설치를 하였다.마지막으로 LLM API를 사용하기 위해서는 해당 LLM에 대한 키를 발급받아야 하므로
오픈AI와 허깅페이스 API 키를 발급받아 진행하였다.
💾 랭체인 라이브러리 설치
[자연어 처리(NLP)와 관련된 다양한 기능을 제공하는 파이썬 라이브러리]
!pip install langchain==0.0.350
💾 openai 라이브러리 설치
[오픈AI에서 제공하는 모델의 API를 호출하는데 사용]
!pip install openai==1.4.0
💾 허깅페이스(Hugging Face) 라이브러리 설치
[인공지능 연구 및 개발을 위한 도구, 특히 자연어 처리 분야에 초점을 맞춘 회사로 거대 언어 모델과 이를 쉽게 사용할 수 있는 API, 그리고 관련 라이브러리 제공]
!pip install huggingface-hub==0.19.4
💾 스트림릿(streamlit) 라이브러리 설치
[파이썬으로 머신러닝을 위한 웹 애플리케이션을 빠르고 쉽게 개발할 수 있는 오픈 소스 라이브러리]
!pip install streamlit==1.29.0
▶️ RAG 기반의 챗봇 만들기
- RAG를 구현할 것이므로 나만의 데이터가 필요하다. AI 검색 결과를 텍스트로 저장해둔 파일(AI.txt)을 사용한다.
💻 실습 환경
- 라이브러리 : langchain, openai, unstructured, sentence-transformers, chromadb
- 언어 모델 : gpt-3.5-turbo
- 임베딩 모델 : all-MiniLM-L6-v2
- 벡터 데이터베이스 : 크로마(chroma)
▶️ 실습 구현
몇 줄 안되는 코드로 RAG 기반의 간단한 챗봇을 만들 수 있었다.
이렇게 간단하게 애플리케이션을 만들 수 있는 것은 랭체인과 스트림릿 덕분이다.
다른 LLM 모델도 직접 개발없이 이렇게 API 연동을 통해 구현하면 상당히 편리하다.
이 밖에도 PDF 요약 웹 사이트 만들기, 대화형 챗봇, 번역 서비스,
메일 작성기 만들기, CSV 파일 분석하기 등의 실습도 진행할 예정이다.
위 코드 기반의 실습을 따라하면서 어렴풋한 개념의 기억들을 다시 한 번 정립할 수 있었고,
자연어 처리와 인공지능 개발에 대한 지식을 확장시키고, 실제 프로젝트를 시작하고자 하는 독자들에게
굉장히 유용한 책으로 활용될 수 있을 것이라고 장담한다.
물론, 위 개념들과 코드들을 처음 마주하면 어려움에 봉착할 수 있는데 Github에 예제 코드들이 제시되어있고, 라이브러리 버전업과 제시된 코드들을 조금씩 수정하는 디버깅 과정을 통해
나만의 서비스를 구축할 수 있다는 것이 큰 메리트이다.
다른 개발 분야인 인공지능 AI에 대해서는 그저 막연하고, 쉽게 접근하지 못할 것이라고 생각했었는데,
초보자를 위해 작성된 책이고, 관련 AI 이론에 대해 핵심적인 내용 위주로 담았으며
사용하는 코드도 간편하니 이를 적극적으로 활용한다면 독자들이
자신만의 서비스를 만들어나갈 때 지속적으로 발전하고 성장할 수 있는
길잡이 역할을 톡톡히 할 수 있을 것이다.이 글은 길벗으로 부터 책을 증정받아 작성되었습니다.
'도서' 카테고리의 다른 글
스프링 코딩 공작소 - 길벗 출판사 (0) 2023.03.27 - 1장. LLM 훑어보기