메인 콘텐츠로 건너뛰기
블로그데이터베이스LLM 시작하기 데이터 수집 관리

LLM 시작하기: 데이터 수집 관리

시작하기 (1) (1) (1)

특히 최근 OpenAI의 개발로 인해 대규모 언어 모델(LLM)이 대세로 떠오르고 있습니다. LLM의 매력은 인간의 전유물로 여겨졌던 인간의 언어를 이해하고, 해석하고, 생성하는 능력에서 비롯됩니다. CoPilot과 같은 도구는 개발자의 일상 생활에 빠르게 통합되고 있으며 ChatGPT 기반 애플리케이션은 점점 더 주류가 되어가고 있습니다.

LLM의 인기는 일반 개발자가 쉽게 접근할 수 있다는 점에서도 비롯됩니다. 많은 오픈 소스 모델을 사용할 수 있기 때문에 매일 새로운 기술 스타트업이 LLM 기반 문제 해결책을 내놓고 등장합니다. 

데이터는 "새로운 석유"라고 불립니다. 머신러닝에서 데이터는 모델을 훈련, 테스트, 검증하는 데 사용되는 원재료 역할을 합니다. 정확하고 신뢰할 수 있으며 강력한 LLM을 만들기 위해서는 고품질의 다양하고 대표성 있는 데이터가 필수적입니다.

특히 데이터를 수집하고 저장하는 데 있어서는 자체적인 LLM을 구축하는 것이 어려울 수 있습니다. 대량의 비정형 데이터를 처리하고 저장 및 액세스를 관리하는 것은 여러분이 직면할 수 있는 몇 가지 문제일 뿐입니다. 이 글에서는 이러한 데이터 관리 문제를 살펴보겠습니다. 구체적으로 살펴볼 내용은 다음과 같습니다:

저희의 목표는 LLM에서 데이터가 수행하는 중요한 역할을 명확하게 이해하여 자체 LLM 프로젝트에서 데이터를 효과적으로 관리할 수 있는 지식을 갖추도록 하는 것입니다.

시작하기 전에 LLM에 대한 기본적인 이해의 토대를 마련하겠습니다.

LLM의 작동 방식 및 기존 모델에서 선택하는 방법

높은 수준에서 LLM은 단어(또는 문장)를 임베딩이라는 숫자 표현으로 변환하는 방식으로 작동합니다. 이러한 임베딩은 단어 간의 의미론적 의미와 관계를 포착하여 모델이 언어를 이해할 수 있도록 합니다. 예를 들어, LLM은 '개'와 '강아지'라는 단어가 서로 연관되어 있다는 것을 학습하여 숫자 공간에서 두 단어를 더 가깝게 배치하고 '나무'라는 단어는 더 멀리 배치할 수 있습니다.

LLM용 데이터 관리

LLM에서 가장 중요한 부분은 인간의 두뇌 기능에서 영감을 얻은 컴퓨팅 모델인 신경망입니다. 신경망은 학습된 데이터를 통해 이러한 임베딩과 그 관계를 학습할 수 있습니다. 대부분의 머신 러닝 애플리케이션과 마찬가지로 LLM 모델도 많은 양의 데이터가 필요합니다. 일반적으로 모델 학습을 위해 더 많은 데이터와 더 높은 품질의 데이터를 사용할수록 모델의 정확도가 높아지므로 LLM의 데이터를 관리할 수 있는 좋은 방법이 필요합니다.

기존 모델의 무게 측정 시 고려 사항

다행히도 개발자에게는 현재 상업적으로 사용할 수 있는 몇 가지 인기 있는 옵션을 포함하여 많은 LLM용 오픈 소스 옵션이 제공됩니다:

선택할 수 있는 목록이 너무 방대하기 때문에 적합한 오픈 소스 LLM 모델을 선택하는 것은 까다로울 수 있습니다. LLM 모델에 필요한 컴퓨팅 및 메모리 리소스를 이해하는 것이 중요합니다. 모델 크기(예: 30억 개의 입력 매개변수와 70억 개의 매개변수)는 모델을 실행하고 실행하는 데 필요한 리소스의 양에 영향을 미칩니다. 이를 자신의 역량과 비교하여 고려하세요. 예를 들어, 고비용의 클라우드 리소스를 필요로 하지 않고 노트북에서 실행할 수 있도록 특별히 제작된 DLite 모델이 몇 가지 있습니다.

각 LLM을 조사할 때는 모델이 어떻게 훈련되었는지, 일반적으로 어떤 종류의 업무에 맞춰져 있는지 살펴보는 것이 중요합니다. 이러한 차이점은 선택에도 영향을 미칩니다. LLM 작업을 계획하려면 오픈 소스 모델 옵션을 살펴보고, 각 모델이 가장 뛰어난 분야를 파악하고, 각 모델에 필요한 리소스를 예상해야 합니다.

LLM이 필요한 애플리케이션이나 상황에 따라 기존 LLM으로 시작할 수도 있고, 처음부터 LLM을 학습시킬 수도 있습니다. 기존 LLM을 그대로 사용하거나 염두에 두고 있는 작업을 대표하는 추가 데이터로 모델을 미세 조정할 수 있습니다.

필요에 가장 적합한 접근 방식을 선택하려면 LLM 교육에 사용되는 데이터를 잘 이해해야 합니다.

LLM에서 사용되는 데이터 유형

LLM 학습에 사용되는 데이터는 일반적으로 텍스트 데이터입니다. 그러나 이러한 텍스트 데이터의 특성은 매우 다양할 수 있으므로 다양한 유형의 데이터를 이해하는 것이 필수적입니다. 일반적으로 LLM 데이터는 반정형 데이터와 비정형 데이터의 두 가지 유형으로 분류할 수 있습니다. 표 형식의 데이터 집합으로 표현되는 데이터인 정형 데이터는 LLM에서 사용되지 않을 가능성이 높습니다.

반정형 데이터

반정형 데이터는 미리 정의된 방식으로 구성되며 특정 모델을 따릅니다. 이러한 구성을 통해 데이터를 간단하게 검색하고 쿼리할 수 있습니다. LLM의 맥락에서 반정형 데이터의 예로는 각 항목이 특정 태그 또는 메타데이터와 연관된 텍스트 말뭉치를 들 수 있습니다. 반정형 데이터의 예는 다음과 같습니다:

  • 뉴스 기사는 카테고리(예: 스포츠, 정치, 기술)와 연관되어 있습니다.
  • 각 리뷰가 평점 및 제품 정보와 연결된 고객 리뷰입니다.
  • 소셜 미디어 게시물, 게시한 사용자, 게시 시간 및 기타 메타데이터와 관련된 각 게시물.

이러한 경우 LLM은 뉴스 기사를 기반으로 카테고리를 예측하거나, 리뷰 텍스트를 기반으로 평점을 예측하거나, 소셜 미디어 게시물의 콘텐츠를 기반으로 감성을 예측하는 방법을 학습할 수 있습니다.

비정형 데이터

반면에 비정형 데이터는 미리 정의된 조직이나 모델이 없습니다. 이러한 데이터는 텍스트가 많고 날짜, 숫자, 사실도 포함할 수 있어 처리와 분석이 더 복잡합니다. LLM의 맥락에서 비정형 데이터는 매우 일반적입니다. 비정형 데이터의 예는 다음과 같습니다:

  • 책, 기사 및 기타 긴 형식의 콘텐츠
  • 인터뷰 또는 팟캐스트에서 발췌한 녹취록
  • 웹 페이지 또는 문서

명시적인 레이블이나 조직 태그가 없는 비정형 데이터는 LLM 학습에 더 어렵습니다. 하지만 보다 일반적인 모델을 생성할 수도 있습니다. 예를 들어, 대규모 도서 코퍼스로 훈련된 모델은 GPT-3의 경우처럼 사실적인 산문을 생성하는 방법을 학습할 수 있습니다.

LLM용 데이터 관리

데이터가 LLM의 핵심이라는 것을 살펴봤는데, 이 데이터가 원시 상태에서 LLM이 사용할 수 있는 형식으로 변환되는 과정은 어떻게 이루어질까요? 이제 초점을 전환하여 관련된 주요 프로세스를 고려해 보겠습니다.

LLM을 위한 데이터 파이프라인 및 수집

LLM을 위한 데이터 수집 및 처리의 기본 구성 요소는 데이터 파이프라인과 데이터 수집의 개념에 있습니다.

데이터 파이프라인이란 무엇인가요?

데이터 파이프라인은 원시, 비정형 데이터와 완전히 학습된 LLM 사이의 통로를 형성합니다. 데이터가 적절하게 수집, 처리 및 준비되도록 하여 LLM 구축 프로세스의 학습 및 검증 단계에 대비할 수 있도록 합니다. 

데이터 파이프라인은 데이터를 소스에서 저장 및 분석할 수 있는 대상으로 이동시키는 일련의 프로세스입니다. 일반적으로 여기에는 다음이 포함됩니다:

  • 데이터 추출: 데이터베이스, 데이터 웨어하우스 또는 외부 API 등 소스에서 데이터를 추출합니다.
  • 데이터 변환: 원시 데이터를 정리하고 분석에 적합한 형식으로 변환해야 합니다. 변환에는 누락된 값 처리, 일관되지 않은 데이터 수정, 데이터 유형 변환 또는 범주형 변수의 원핫 인코딩이 포함됩니다.
  • 데이터 로드: 변환된 데이터는 데이터베이스나 데이터 웨어하우스와 같은 스토리지 시스템에 로드됩니다. 그러면 이 데이터를 머신 러닝 모델에서 바로 사용할 수 있습니다.

데이터 수집이란 이러한 파이프라인 프로세스의 프론트엔드에서 데이터를 수집하고 사용하기 위한 준비를 하는 것을 말합니다.

LLM의 맥락에서 데이터 파이프라인은 어떤 모습일까요?

LLM을 위한 데이터 파이프라인은 일반적으로 데이터 팀에서 사용하는 대부분의 파이프라인과 겹칠 수 있지만, LLM을 위한 데이터 관리에는 몇 가지 고유한 문제가 있습니다. 예를 들어

  • 데이터 추출: LLM을 위한 데이터 추출은 종종 더 복잡하고 다양하며 컴퓨팅 부하가 높습니다. 데이터 소스는 웹사이트, 서적, 성적표, 소셜 미디어 등 다양하기 때문에 각 소스마다 고유한 뉘앙스가 있으며 고유한 접근 방식이 필요합니다.
  • 데이터 변환: 광범위한 LLM 데이터 소스를 사용하면 각 데이터 유형에 대한 모든 변환 단계가 달라지므로 데이터를 학습에 사용할 수 있는 보다 표준화된 형식으로 처리하려면 고유한 로직이 필요합니다.
  • 데이터 로딩: 많은 경우, 데이터 로딩의 마지막 단계에는 일반적인 데이터 저장 기술이 필요하지 않을 수 있습니다. 비정형 텍스트 데이터는 많은 데이터 파이프라인에서 사용하는 관계형 데이터 저장소와 달리 NoSQL 데이터베이스를 사용해야 할 수 있습니다.
LLM용 데이터 관리

LLM의 데이터 변환 프로세스에는 자연어 처리(NLP)에서 볼 수 있는 것과 유사한 기술이 포함되어 있습니다:

  • 토큰화: 텍스트를 개별 단어 또는 "토큰"으로 나누기.
  • 단어 제거 중지: "and", "the", "is"와 같이 일반적으로 사용되는 단어를 제거합니다. 그러나 LLM이 학습된 작업에 따라 중요한 구문 및 의미 정보를 보존하기 위해 중지 단어가 유지될 수 있습니다.
  • 어근화: 단어를 기본 또는 어근 형태로 축소하는 작업입니다.

다양한 소스에서 방대한 양의 데이터를 수집하기 위해 이러한 모든 단계를 결합하면 엄청나게 복잡하고 큰 데이터 파이프라인이 될 수 있습니다. 이러한 작업을 지원하려면 좋은 도구와 리소스가 필요합니다.

데이터 수집에 사용되는 일반적인 도구

데이터 엔지니어링 분야에서 매우 인기 있는 몇 가지 도구는 데이터 파이프라인의 일부를 구성하는 복잡한 데이터 수집 프로세스에 도움을 줄 수 있습니다. 자체 LLM을 구축하는 경우, 개발 시간의 대부분은 학습에 사용되는 데이터를 수집, 정리 및 저장하는 데 소요됩니다. LLM의 데이터 관리에 도움이 되는 도구는 다음과 같이 분류할 수 있습니다:

  1. 파이프라인 오케스트레이션: 데이터 파이프라인의 프로세스를 모니터링하고 관리하기 위한 플랫폼입니다.
  2. 컴퓨팅: 대규모 데이터 처리를 위한 리소스
  3. 스토리지: 데이터베이스: 효과적인 LLM 교육에 필요한 대량의 데이터를 저장하는 데이터베이스입니다.

각각에 대해 자세히 살펴보겠습니다.

파이프라인 오케스트레이션

Apache Airflow는 데이터 워크플로우를 프로그래밍 방식으로 작성, 예약 및 모니터링하는 데 널리 사용되는 오픈 소스 플랫폼입니다. Python 기반 코딩 인터페이스를 통해 복잡한 데이터 파이프라인을 만들 수 있으며, 다재다능하고 작업하기 쉽습니다. Airflow의 작업은 각 노드가 작업을 나타내고 에지는 작업 간의 종속성을 나타내는 방향성 비순환 그래프(DAG)로 구성됩니다.

Airflow는 데이터 추출, 변환, 로드 작업에 널리 사용되며 데이터 수집 프로세스에서 유용한 도구입니다. Linode의 Marketplace 에서 Apache Airflow를 쉽게 설정하고 사용할 수 있습니다.

컴퓨팅

Airflow와 같은 도구를 사용한 파이프라인 관리 외에도 대규모로 안정적으로 실행할 수 있는 적절한 컴퓨팅 리소스가 필요합니다. 대량의 텍스트 데이터를 수집하고 여러 소스에서 다운스트림 처리를 수행하려면 필요에 따라 확장할 수 있는 컴퓨팅 리소스(이상적으로는 수평적 방식)가 필요합니다.

확장 가능한 컴퓨팅을 위한 인기 있는 선택 중 하나는 Kubernetes입니다. Kubernetes는 유연성을 제공하며 Airflow를 비롯한 많은 도구와 잘 통합됩니다. 관리형 Kubernetes를 활용하면 유연한 컴퓨팅 리소스를 빠르고 간단하게 스핀업할 수 있습니다.

스토리지

데이터베이스는 데이터 수집 프로세스의 필수 요소로, 수집된 데이터를 정리하고 변환한 후 수집된 데이터의 주요 목적지 역할을 합니다. 다양한 유형의 데이터베이스를 사용할 수 있습니다. 어떤 유형을 사용할지는 데이터의 특성과 사용 사례의 특정 요구 사항에 따라 달라집니다:

  • 관계형 데이터베이스는 표 형식의 구조를 사용하여 데이터를 저장하고 표현합니다. 관계형 데이터베이스는 관계가 명확하고 데이터 무결성이 중요한 데이터에 적합한 선택입니다. LLM은 비정형 데이터에 의존하지만 PostgreSQL과 같은 관계형 데이터베이스는 비정형 데이터 유형에서도 작동할 수 있습니다.
  • NoSQL 데이터베이스: NoSQL 데이터베이스에는 데이터를 저장할 때 테이블 구조를 사용하지 않는 문서 지향 데이터베이스가 포함됩니다. 대량의 비정형 데이터를 처리하는 데 적합하며 고성능, 고가용성, 손쉬운 확장성을 제공합니다.

LLM 데이터 저장을 위한 데이터베이스의 대안으로 일부 엔지니어는 분산 파일 시스템을 선호합니다. 예를 들면 AWS S3 또는 Hadoop이 있습니다. 분산 파일 시스템은 대량의 비정형 데이터를 저장하는 데 좋은 옵션이 될 수 있지만, 대용량 데이터 세트를 구성하고 관리하는 데 추가적인 노력이 필요합니다.

Marketplace 에서 스토리지 옵션으로 관리형 PostgreSQL과 관리형 MySQL을 찾을 수 있습니다. 두 옵션 모두 쉽게 설정하고 LLM 데이터 파이프라인에 연결할 수 있습니다.

소규모 LLM은 더 적은 데이터로 학습하고 더 작은 데이터베이스(예: 단일 PostgreSQL 노드)로도 충분하지만, 대규모 사용 사례는 매우 많은 양의 데이터로 작업하게 됩니다. 이러한 경우에는 작업할 데이터의 양을 지원하고, LLM의 데이터를 관리하고, 해당 데이터를 안정적으로 제공하기 위해 PostgreSQL 클러스터와 같은 것이 필요할 것입니다.

LLM용 데이터를 관리할 데이터베이스를 선택할 때는 데이터의 성격과 사례의 요구 사항을 고려하세요. 수집하는 데이터의 유형에 따라 어떤 종류의 데이터베이스가 가장 적합한지 결정됩니다. 성능, 가용성, 확장성 등 사용 사례 요구 사항도 중요한 고려 사항이 될 것입니다.

데이터를 효과적이고 정확하게 수집하는 것은 LLM의 성공을 위해 매우 중요합니다. 도구를 적절히 사용하면 파이프라인을 위한 안정적이고 효율적인 데이터 수집 프로세스를 구축하여 대량의 데이터를 처리하고 LLM이 학습하고 정확한 결과를 제공하는 데 필요한 것을 확보할 수 있습니다.

마무리하기

LLM의 인기가 급상승하면서 기술 업계에 새로운 문이 열렸습니다. 개발자는 이 기술에 쉽게 접근할 수 있지만, LLM의 데이터를 관리하고 데이터를 활용하여 새로운 LLM을 학습시키거나 기존 LLM을 미세 조정하는 능력에 따라 장기적인 성공 여부가 결정될 것입니다.

LLM 프로젝트를 시작하는 경우, 본격적인 작업에 뛰어들기 전에 기본 사항을 먼저 이해해야 합니다. LLM이 가장 효과적이려면 소스에서 추출, 전처리, 변환, 가져오기 등의 프로세스를 포함하는 대량의 비정형 데이터를 수집해야 합니다. 이러한 작업을 수행하려면 파이프라인 오케스트레이션과 확장 가능한 컴퓨팅 리소스를 위한 Airflow 및 Kubernetes와 같은 도구가 필요합니다. 또한 LLM 학습에 일반적으로 사용되는 데이터의 비정형적 특성으로 인해 클러스터를 통해 대규모로 안정적으로 사용할 수 있는 PostgreSQL과 같은 데이터 스토리지 옵션이 필요합니다.


내용

댓글 남기기

이메일 주소는 게시되지 않습니다. 필수 필드가 표시됩니다 *