LLM 24

LLM 파인튜닝 기법 LoRA에 대한 개념 이해

LoRA 파인튜닝 개념의 이해조대협 (http://bcho.tistory.com) LLM 모델에 대한 Fine tuning시에, 가장 기본적인 방법은 모델을 학습데이터로 새롭게 처음부터 학습하는 방법인데, 이 방법은 (GPU)비용이 너무 많이 들고 시간도 많이 걸린다. 그래서 대안으로 등장한것이 PEFT (Parameter-Efficient Fine-Tuning) 이라는 개념으로 , 원본 모델의 패러미터(Weight)값은 고정 시키고 작은 수의 파라미터만 훈련하거나 작은 모듈을 추가하여 학습 하는 방법으로, 과적합 (Overfitting)을 방지하고 연산량을 줄이 는 방식이다. AdapterPEFT 방법으로는 오늘 살펴볼 LoRA나 Adapter 등의 방식이 있다.Adapter 방식은 기존 모델 아키텍처..

로컬에서 LLM 모델을 실행하기 위한 Ollama, LMStudio

요즘 LLM이 유행하면서 로컬 환경에서 소형 LLM인 sLLM을 실행하는 경우가 많은데, sLLM은 종류도 많을뿐더라, 코드를 직접 실행하고, 런타임을 최적화하기가 매우 어렵다.이런 문제를 해결하기 위해서 sLLM을 손쉽게 실행할 수 있는 환경이 있는데, 가장 널리 사용되는 환경으로는 Ollama와 LMStudio가 있다.  Ollama는 아래와 같이 CLI환경에서 프롬프트를 입력할 수 있다. 또한, HTTP REST API를 제공하기 때문에 애플리케이션 개발에도 유용하게 사용할 수 있다.  개인적으로는 LMStudio를 좀 더 선호하는데, LMStudio는 아래와 같이 GUI 베이스로, 쳇봇 GUI를 지원하기 때문에 좀더 깔끔하게 사용할 수 있고, 히스토리 관리등이 가능하다.  맥북 PRO M1으로 실..

2024년 LLM 애플리케이션 아키텍쳐 및 2025년 전망

2024년 LLM 애플리케이션 아키텍쳐 및 2025년 전망조대협(http://bcho.tistory.com) Langchain은 LLM (ChatGPT등)을 이용하여 애플리케이션을 개발할 수 있는 프레임웍이다.Langchain은 LangSmith라는 이름으로 LLM 애플리케이션의 실행 내역을 추적할 수 있는 기능을 가지고 있는데, 이를 통해서 사용자들의 LLM Application의 구조를 예측할 수 있다.  이번에 2024년 Langchain의 사용량에 대한 리포트가 나왔는데, 이를 통해서 LLM application이 어떻게 변화하고 있는지를 유추해볼 수 있다.  블로그 소스 : https://blog.langchain.dev/langchain-state-of-ai-2024/?fbclid=IwZXh0..

LLM 애플리케이션 아키텍처 (1/2)

LLM 애플리케이션 아키텍처 (1/2) 조대협 (http://bcho.tistory.com) ChatGPT나, Gemini 모델과 같은 LLM 을 이용한 애플리케이션을 개발하는 형태를 보면, 보통 LLM에 프롬프트 엔지니어링을 사용한 프롬프트를 입력으로 사용하고, 리턴을 받아서 사용한다. 그리고 약간 발전된 형태의 경우에는 파인 튜닝을 사용하거나, 아주 발전된 형태는 외부 문서 저장소를 사용하는 형태 정도의 수준으로 개발한다. 즉 LLM을 한번 정도 호출하는 정도의 구조를 가지고 있다. 그러나 운영환경에 올라가는 LLM 기반의 애플리케이션의 구조는 이것보다 훨씬 복잡하다. 아래 그림은 LLM 애플리케이션의 아키텍처 예시이다. 단순하게 프롬프트를 작성해서 LLM을 한번만 호출하는 것이 아니라, 여러 예제를..

#18.LangSmith를 이용한 Langchain agent 내부 동작 구조 이해

앞의 예제는 agent를 생성할때 initialize_agent를 사용하는 방식으로 Langchain 0.1.0 까지는 지원하지만 deplicate 될 예정이고 새 버전의 create_react_agent 함수를 사용하기를 권장하고 있다. create_react_agent를 사용하려면 직접 agentExecutor도 선언해야 하고, 프롬프트도 정의해야하기 때문에 기존 방식에 비해서 다소 번거롭지만 좀 더 많은 컨트롤을 할 수 있다. 이번에는 create_react_agent를 이용하는 방식을 설명하면서 내부적으로 agent가 어떻게 동작하는지를 자세하게 살펴보고, 더불어서 langsmith 모니터링 툴을 이용하여, agent에서 내부의 동작을 어떻게 모니터링하고 추적하는지에 대해서 알아보록 한다. Lan..

Langchain을 이용한 LLM 애플리케이션 구현 #17-ChatGPT 구글 검색 엔진과 연동하기

Agent/Tool 을 이용하여 ChatGPT와 구글 검색엔진 연동하기 조대협 (http://bcho.tistory.com) LLM 모델은 기본적으로 학습 당시에 저장된 데이터만을 기반으로 답변을 한다. RAG를 이용하여 외부의 벡터 데이터 베이스에 있는 내용을 참고하여 지식 데이터를 확장할 수 있지만, 이 역시 저장한 문서에만 해당된다. LLM 애플리케이션을 데이터를 확장하고 싶다면? 예를 들어 LLM에 저장되지 않은 데이터를 구글 서치 엔진을 통해서 검색해서 참고하거나 유투브의 비디오 스크립트를 참고할 수 있다면? 아니면 회사내의 데이터베이스의 정보를 참고해서 답변을 할 수 있다면? 이러한 요구사항에 부합하여 LLM이 외부 정보를 참고하여 답변을 할 수 있도록 기능을 제공하는 컴포넌트가 langcha..

Langchain을 이용한 LLM 애플리케이션 구현 #15 - LCEL

LCEL (LangChain Expression Language) 조대협 (http://bcho.tistory.com) 앞에서 소개한 Chain은 개념적으로는 훌륭하지만, 코드양이 다소 많아지고, 병렬처리나 비동기 처리, 스트리밍 같은 고급 기능을 구현하기 어렵다. 이런 한계를 극복하기 위해서 2023년 8월에 LangChain Expression Language (이하 LCEL이 개발되었다.) Chain의 기능을 대처하는 컴포넌트로, 병렬,비동기,스트리밍 같은 고급 워크플로우 처리에서 부터 FallBack이나 Retry 와 같은 장애 처리 기능을 지원하며, 추후에 소개할 Langchain 모니터링/평가 솔루션인 LangSmith와 쉽게 연동이 된다. 이번장에서는 앞에서 구현한 LLMChain, Sequ..

Langchain을 이용한 LLM 애플리케이션의 구현 #14 - Chain을 이용한 워크 플로우 구현 #2

Chain을 이용한 복잡한 워크 플로우의 구현 조대협 (http://bcho.tistory.com) Advanced Sequential Chain 앞의 예제는 순차적으로 LLMChain을 간단한 워크 플로우를 구현해봤다. SequentialChain은 순차적인 실행뿐만 아니라, 병렬로 LLM 호출을 하는 흐름등을 구현이 가능하다. 이번 예제에서는 조금 더 발전된 Chain의 구조를 살펴보자. 아래 예제는 도시명{city}과 교통편{transport}를 입력하면, 유명 관광지를 추천해서 그곳까지 도착하기 위한 교통편과 식당에 대한 정보를 출력하는 Chain의 구조이다. 예제 코드를 살펴보기전에, 먼저 흐름을 보자. 애플리케이션에서 도시명{city}와 교통편{transport)를 입력받는다. chain1에서..

Langchain을 이용한 LLM 애플리케이션 개발 #13 - Chain을 이용한 워크 플로우 구현 #1

Chain을 이용한, LLM 워크 플로우 구현 #1 조대협 (http://bcho.tistory.com) LLM 기반 애플리케이션을 개발할때, 한번의 LLM 호출로 결과를 낼 수 도 있지만, 복잡한 LLM 애플리케이션의 경우, LLM의 출력을 다시 다음 LLM의 입력으로 넣어서 LLM을 여러개를 연결해서 답변을 낼 수 도 있고, 입력 프롬프트에 따라서 알맞은 LLM이나 프롬프트를 선택하도록 분기 할 수 있다. 예를 들어 Python Coding을 해주는 LLM에서 API 파이썬 코드를 생성한 후에, 이 코드에 맞는 Unit Test 코드를 생성하는 LLM을 호출하거나, 아래 그림과 같이 학교 학생의 공부를 도와주는 챗봇에서 질문의 종류에 따라서, 영어,과학,수학 LLM을 선택적으로 호출하는 구조를 예로 ..