본문 바로가기
Bigdata

랭체인/Langchain - 프로덕션에 사용해서는 않되는 이유, 주의점

by 올엠 2024. 2. 17.
반응형

오랫만에 좋은 글이 있어서 오늘 시간이 가능해 정리해 본다.

글 제목은 상당히 자극적인데, 내용을 보면, 제품에서 중요한 부분들이 무엇인지를 잘 이해할 수 있도록 작성되어 있어서 필자에게도 상당히 인상적이였던 글이였다.

Langchain/랭체인(아하 Langchain)은 2023년 초에 상당히 유명해지면서 많은 Bigdata/AI 개발자들이 사용하였고, 편의성으로 인해서 많은 사용차층은 만든 LLM Framework라고 할 수 있다.

Langchain은 유명한 모델들과 데이처 전처리 및 프롬프트 엔지니어링을 도와줌으로써, 초기 진입하는 개발자들에게 큰 도움을 주었다.

실제로 Langchain을 무기 파트 처럼 묘샤하면서 그 가능성을 높이 평가한 유명 엔지니어도 많을 정도 이다.

Langchaing 설명은 이쯤하고, 왜 프로덕션(제품)에서 사용하는 것을 조심해야 하는지에 대해서 정리해 보도록 하겠다.

원문 글은 아래 내용을 참고 하면 좋겠다.

Langchain is NOT for production use. Here is why .. | by Alden Do Rosario | Medium

원문에서는 Langchain은 프로덕션(제품)용이 아닌 개인이 개발시 편의성을 위한 것이라고 하면서 다음 3가지를 조심하라고 한다. 우리 역시 이부분에 대해서 대비하고 검증해보면 어떨까?

 

1. 환각

LLM 모델을 개발하다보면, 가장 기본적으로 환각에 대한 우려가 많다. 이를 저자는 Langchain으로 인해 우리가 볼 수 있는 부분들을 저해한다고 한다.

즉 프롬프트 엔지니어링 및 각 부품들을 Langchain을 이용할 경우, 어디에서 이러한 답을 만들어냈는지를 온전히 확인하기는 어렵다는 것이다. 

만약 우리가 직접 개발했다면, 모델에 넣는 입력 부분의 튜닝이라거나 데이터를 세밀하게 가공하는게 가능하지만, Langchain에서 제공하는 라이브러리로 인해 어떤 부분에서 잘못된 답을 얻게 되었는지 상당히 난해해 진다는 것이다.

링체인에서 제공하는 기능 중 from langchain.prompts import PromptTemplate 과 같은 부분에 대한 우려라고 할 수 있다.

from langchain import PromptTemplate

 

demo_template='''I want you to act as a acting financial advisor for people.

In an easy way, explain the basics of {financial_concept}.'''

 

prompt=PromptTemplate(

    input_variables=['financial_concept'],

    template=demo_template

    )

 

prompt.format(financial_concept='income tax')

위 내용은 Langchain의 프롬프트 템플릿을 이용하는 것인데, 편의성에서는 좋을 수 있지만, 실제 데이터 입력 부분에 대한 완전한 튜닝을 할 수 있다고 할 수 는 없을 것이다.

2. 데이터 전처리

이 부분도 필자도 약간의 우려가 있다. 실제 대부분의 데이터는 전처리 과정이 필요하다. 이때 전처리 과정을 Langchain에 의존하게 된다면, 데이터의 정밀도에 대해서 검증하는 부분이 상당히 어려워 질 것이다. 하나의 예를 들어서 Langchain에서 제공하는 PDF를 이용해서 전처리를 진행한다면, 실제 여러 PDF 문서 라이브러리들도 온전히 PDF를 읽어들일 수 없는 경우가 있는데, Langchain 라이브러리는 괜찮을지 라는 의문이 든다.

예를 든 from langchain.document_loaders import PyPDFLoader 로 읽어 들인다면, 전처리를 쉽게 구성할 수 있지만, 이후 전처리를 보정하는 부분에 대한 기술 부채가 남을 것이라는 의미로 Langchain을 사용할 때 이부분은 검증하고 확인해야 할 주요 내용이겠다.

3. 유지보수 부분

위 얘기한 것들로 인해 언어모델을 제대로 이해하지 못한 상황으로 빠르게 구성할 수 있는 Langchain을 제품에 도입했다면, 이후 발생할 수 있는 기술적인 문제들은 온전히 엔지니어에게 귀속되고, 유지 보수의 어려움이 발생할 것이다.

즉 "어떻게 해결 할 수 있지?" 라는 질문에 "Langchain에서 해결해 줘야 해요"라는 답해야 하는 상황이 발생할 요소들이 많아지는 것이다.

특히 모델이 일부 업데이트 되었거나, 다양한 모델과 전처리 데이터를 활용하는 상황에서는 더욱 문제가 많이 발생할 수 있고, 이는 제품의 불안정 운영상황을 지속적으로 만들어 낼 수 있다.

 

마치며,

위 글에서 저자가 지적하는 부분들은 언어 모델의 성숙도가 아직 높지 않고, 계속 올라가고 있는 상황에서 Langchain 역시 하루가 멀다하고 업데이트를 하면서 나타나는 다양한 버그들과 안정성에 대한 문제를 지적하는 것으로 보인다. OpenSSH과 같은 몇몇 오픈 소스 라이브러리들을 보면, 안정화까지 가는데 상당한 시간이 걸린다는 것을 이해하면 당연한 이슈일 수 있다.

다만, 언어 모델은 상당히 거대하고, 다양한 언어의 환경과 데이터 전처리 부분은 Langchain이 작은 환경에서는 괜찮을 수 있지만, 대형 환경에서는 오히려 불안정성을 높일 수 있으므로, 본인이 구축을 한다면 이러한 기술 부채를 어떻게 할지 한번쯤은 생각해 보도록 하자.

 

 

반응형