나는 이전에 ~에 대해 썼습니다.
현대적 데이터 레이크는 때때로 데이터 레이크하우스라고도 불리며, 절반은 데이터 레이크이고 절반은 Open Table Format Specification(OTF) 기반 데이터 웨어하우스입니다. 둘 다 현대적 객체 스토리지에 구축되었습니다.
동시에, 우리는 조직이 모든 AI/ML 요구 사항을 지원할 수 있는 AI 데이터 인프라를 구축할 수 있는 방법에 대해 깊이 생각해 왔습니다. 단순히 훈련 세트, 검증 세트, 테스트 세트의 원시 저장소가 아닙니다. 즉, 대규모 언어 모델, MLOps 툴링, 분산 훈련 등을 훈련하는 데 필요한 컴퓨팅을 포함해야 합니다. 이러한 사고의 결과로, 우리는 최신 데이터 레이크를 사용하는 방법에 대한 또 다른 논문을 작성했습니다.
두 논문 모두 특정 공급업체나 도구를 언급하지 않습니다. 이제 현대적 데이터 레이크를 구축하는 데 필요한 공급업체와 도구에 대해 논의하고자 합니다. 이 상위 10개 목록에서 각 항목은 생성적 AI를 지원하는 데 필요한 기능입니다.
엔터프라이즈 데이터 레이크는 객체 스토리지에 구축됩니다. 저렴하고 심층적인 보관 사용 사례를 제공하던 구식 어플라이언스 기반 객체 스토리지가 아니라 최신 GenAI 스택의 초석인 현대적이고 성능이 뛰어난 소프트웨어 정의 및 Kubernetes 기본 객체 저장소입니다. 이러한 데이터 레이크는 서비스(AWS, GCP, Azure) 또는 온프레미스 또는 하이브리드/둘 다(예: MinIO)로 제공됩니다. 이러한 데이터 레이크는 스트리밍 워크로드를 지원해야 하고, 고효율 암호화 및 삭제 코딩이 있어야 하며, 객체와 함께 메타데이터를 원자적으로 저장해야 하며 Lambda 컴퓨팅과 같은 기술을 지원해야 합니다. 이러한 최신 대안은 클라우드 기본이므로 방화벽에서 관찰성, 사용자 및 액세스 관리에 이르기까지 다른 클라우드 기본 기술의 전체 스택과 바로 통합됩니다.
개체 스토리지는 또한 OTP 기반 데이터 웨어하우스의 기본 스토리지 솔루션입니다. 데이터 웨어하우스에 개체 스토리지를 사용하는 것은 이상하게 들릴 수 있지만, 이런 방식으로 구축된 데이터 웨어하우스는 차세대 데이터 웨어하우스를 나타냅니다. 이는 Netflix, Uber 및 Databricks가 작성한 OTF 사양을 통해 가능해졌으며, 이를 통해 데이터 웨어하우스 내에서 개체 스토리지를 원활하게 사용할 수 있습니다.
OTF(Apache Iceberg, Apache Hudi, Delta Lake)는 시중에 제작자의 데이터 요구를 처리할 수 있는 제품이 없었기 때문에 작성되었습니다. 기본적으로, 그것들이 모두 하는 일은(다른 방식으로) 객체 스토리지 위에 구축할 수 있는 데이터 웨어하우스를 정의하는 것입니다. 객체 스토리지는 다른 스토리지 솔루션이 제공할 수 없는 확장 가능한 용량과 고성능의 조합을 제공합니다. 이것들은 최신 사양이기 때문에 파티션 진화, 스키마 진화, 제로 카피 브랜칭과 같이 구식 데이터 웨어하우스에는 없는 고급 기능이 있습니다.
MinIO를 기반으로 OTF 기반 데이터 웨어하우스를 운영할 수 있는 두 가지 MinIO 파트너는 Dremio와 Starburst입니다.
MLOps는 머신 러닝에 있어서 DevOps가 기존 소프트웨어 개발에 있어서 하는 일과 같습니다. 둘 다 엔지니어링 팀(Dev 또는 ML)과 IT 운영(Ops) 팀 간의 협업을 개선하는 것을 목표로 하는 일련의 관행과 원칙입니다. 목표는 자동화를 사용하여 계획 및 개발에서 배포 및 운영에 이르기까지 개발 수명 주기를 간소화하는 것입니다. 이러한 접근 방식의 주요 이점 중 하나는 지속적인 개선입니다.
MLOps 기술과 기능은 끊임없이 진화하고 있습니다. 주요 플레이어가 지원하는 도구가 필요하며, 도구가 지속적으로 개발되고 개선되고 장기 지원을 제공할 수 있도록 해야 합니다. 이러한 각 도구는 모델의 수명 주기 동안 사용된 아티팩트를 저장하기 위해 후드 아래에서 MinIO를 사용합니다.
머신 러닝 프레임워크는 모델을 만들고 이를 훈련하는 코드를 작성하는 데 사용하는 라이브러리(일반적으로 Python용)입니다. 이러한 라이브러리는 다양한 손실 함수, 최적화 도구, 데이터 변환 도구 및 신경망을 위한 사전 구축된 레이어를 제공하므로 기능이 풍부합니다. 이 두 라이브러리가 제공하는 가장 중요한 기능은 텐서입니다. 텐서는 GPU로 옮길 수 있는 다차원 배열입니다. 또한 모델 훈련 중에 사용되는 자동 미분 기능이 있습니다.
오늘날 가장 인기 있는 머신 러닝 프레임워크 두 가지는 PyTorch(페이스북)와 Tensorflow(구글)입니다.
분산 모델 학습은 여러 계산 장치 또는 노드에서 동시에 머신 러닝 모델을 학습하는 프로세스입니다. 이 접근 방식은 특히 복잡한 모델을 학습하는 데 대규모 데이터 세트가 필요한 경우 학습 프로세스를 가속화합니다.
분산 모델 학습에서 데이터 세트는 더 작은 하위 집합으로 나뉘고, 각 하위 집합은 다른 노드에서 병렬로 처리됩니다. 이러한 노드는 클러스터 내의 개별 머신, 개별 프로세스 또는 Kubernetes 클러스터 내의 개별 포드일 수 있습니다. GPU에 액세스할 수 있습니다. 각 노드는 독립적으로 데이터 하위 집합을 처리하고 그에 따라 모델 매개변수를 업데이트합니다. 아래의 다섯 가지 라이브러리는 개발자를 분산 학습의 복잡성 대부분으로부터 보호합니다. 클러스터가 없으면 로컬에서 실행할 수 있지만 학습 시간을 크게 줄이려면 클러스터가 필요합니다.
모델 허브는 최신 데이터 레이크 참조 아키텍처의 일부가 아니지만 생성 AI를 빠르게 시작하는 데 중요하기 때문에 어쨌든 포함합니다. Hugging Face는 대규모 언어 모델을 찾는 곳이 되었습니다. Hugging Face는 엔지니어가 사전 학습된 모델을 다운로드하고 직접 만든 모델을 공유할 수 있는 모델 허브를 호스팅합니다. Hugging Face는 또한 대규모 언어 모델(LLM)과 이를 학습하고 미세 조정하는 데 사용되는 데이터와 함께 작동하는 Transformers 및 Datasets 라이브러리의 저자이기도 합니다.
다른 모델 허브도 있습니다. 모든 주요 클라우드 공급업체는 모델을 업로드하고 공유할 수 있는 방법을 가지고 있지만, 모델과 라이브러리를 모아놓은 Hugging Face가 이 분야의 선두주자가 되었습니다.
애플리케이션 프레임워크는 LLM을 애플리케이션에 통합하는 데 도움이 됩니다. LLM을 사용하는 것은 표준 API를 사용하는 것과 다릅니다. 사용자 요청을 LLM이 이해하고 처리할 수 있는 것으로 전환하려면 많은 작업을 해야 합니다. 예를 들어, 채팅 애플리케이션을 빌드하고 검색 증강 생성(RAG)을 사용하려는 경우 요청을 토큰화하고 토큰을 벡터로 전환하고 벡터 데이터베이스(아래 설명)와 통합하고 프롬프트를 만든 다음 LLM을 호출해야 합니다. 생성 AI용 애플리케이션 프레임워크를 사용하면 이러한 작업을 함께 연결할 수 있습니다. 오늘날 가장 널리 사용되는 애플리케이션 프레임워크는 LangChain입니다. Hugging Face Transformer 라이브러리 및 문서 처리를 위한 Unstructured 라이브러리와 같은 다른 기술과 통합되어 있습니다. 기능이 풍부하고 사용하기가 약간 복잡할 수 있으므로 복잡한 요구 사항이 없고 LangChain보다 간단한 것을 원하는 사람들을 위한 몇 가지 대안을 아래에 나열했습니다.
대부분의 조직은 깨끗하고 정확한 문서가 있는 단일 저장소가 없습니다. 오히려 문서는 여러 형식으로 다양한 팀 포털에 조직 전체에 분산됩니다. 생성 AI를 준비할 때 첫 번째 단계는 생성 AI에서 사용하도록 승인된 문서만 가져와 벡터 데이터베이스에 저장하는 파이프라인을 구축하는 것입니다. 이는 대규모 글로벌 조직을 위한 생성 AI 솔루션의 가장 어려운 작업이 될 수 있습니다.
문서 파이프라인은 문서를 텍스트로 변환하고, 문서를 청크로 나누고, 청크로 나눈 텍스트를 임베딩 모델을 통해 실행하여 벡터 표현을 벡터 데이터베이스에 저장할 수 있어야 합니다. 다행히도, 몇몇 오픈 소스 라이브러리가 일반적인 문서 형식 중 대부분에 대해 이를 수행할 수 있습니다. 몇 가지 라이브러리가 아래에 나열되어 있습니다. 이러한 라이브러리는 LangChain과 함께 사용하여 전체 문서 처리 파이프라인을 구축할 수 있습니다.
벡터 데이터베이스는 의미론적 검색을 용이하게 합니다. 이것이 어떻게 이루어지는지 이해하려면 많은 수학적 배경 지식이 필요하고 복잡합니다. 그러나 의미론적 검색은 개념적으로 이해하기 쉽습니다. "인공지능"과 관련된 모든 것을 논의하는 모든 문서를 찾고 싶다고 가정해 보겠습니다. 기존 데이터베이스에서 이를 수행하려면 "인공지능"의 모든 가능한 약어, 동의어 및 관련 용어를 검색해야 합니다. 쿼리는 다음과 같습니다.
SELECT snippet FROM MyCorpusTable WHERE (text like '%artificial intelligence%' OR text like '%ai%' OR text like '%machine learning%' OR text like '%ml%' OR ... and on and on ...
이 수동 유사성 검색은 힘들고 오류가 발생하기 쉬울 뿐만 아니라 검색 자체도 매우 느립니다. 벡터 데이터베이스는 아래와 같은 요청을 받아 더 빠르고 정확하게 쿼리를 실행할 수 있습니다. Retrieval Augmented Generation을 사용하려면 의미 쿼리를 빠르고 정확하게 실행할 수 있는 기능이 중요합니다.
{ Get { MyCorpusTable(nearText: {concepts: ["artificial intelligence"]}) {snippet} } }
인기 있는 벡터 데이터베이스 4개가 아래에 나와 있습니다.
데이터를 정리하고 다양한 방식으로 시각화할 수 있는 도구를 갖는 것은 항상 좋은 생각입니다. 아래에 나열된 Python 라이브러리는 데이터 조작 및 시각화 기능을 제공합니다. 이러한 도구는 기존 AI에만 필요한 것처럼 보일 수 있지만 생성 AI에도 유용합니다. 예를 들어, 감정 분석이나 감정 감지를 수행하는 경우 모든 클래스에 적절한 분포가 있는지 확인하기 위해 훈련, 검증 및 테스트 세트를 확인해야 합니다.
이제 현대적 데이터 레이크 참조 아키텍처에서 찾을 수 있는 10가지 기능과 각 기능에 대한 구체적인 공급업체 제품 및 라이브러리를 살펴보겠습니다. 아래는 이러한 도구를 요약한 표입니다.