Skip to main content
원문: Announcing the General Availability of Unity Catalog Volumes (2024-02-22)
작성자: Adriana Ispas, Adrian Ionescu, Bogdan Raducanu, Ina Koleva, Sachin Thakur, Jeff Fletcher, Sean Smith
오늘 Unity Catalog Volumes가 AWS, Azure, GCP에서 정식 출시(GA)되었음을 기쁘게 알려드립니다. Unity Catalog는 Databricks Data Intelligence Platform에 네이티브로 내장된 통합 거버넌스 솔루션을 제공합니다. Unity Catalog Volumes를 통해 데이터 및 AI 팀은 비정형, 반정형, 정형 데이터를 포함한 모든 유형의 비테이블(non-tabular) 데이터를 테이블 데이터 및 ML 모델과 함께 중앙에서 카탈로깅하고, 보안을 적용하고, 관리하고, 공유하고, 리니지를 추적할 수 있습니다. 이 블로그에서는 Unity Catalog Volumes의 핵심 기능을 정리하고, 다양한 파일 유형에서 데이터를 로드하는 확장 가능한 AI 및 수집(ingestion) 애플리케이션을 구축하는 실용적인 예제를 제공하며, GA 릴리스에서 도입된 개선 사항을 살펴봅니다.

Unity Catalog Volumes로 비테이블 데이터 관리하기

Volumes는 비테이블 데이터의 거버넌스와 관리를 위해 설계된 Unity Catalog의 객체 유형입니다. 각 Volume은 Unity Catalog 내의 디렉토리 및 파일 모음으로, 클라우드 오브젝트 스토리지 위치에 있는 논리적 스토리지 단위 역할을 합니다. 정형, 반정형, 비정형어떤 포맷의 데이터든 접근, 저장, 관리할 수 있는 기능을 제공합니다. 레이크하우스 아키텍처에서 애플리케이션은 보통 파일로부터 데이터를 임포트하는 것에서 시작합니다. 이는 디렉토리를 읽고, 기존 파일을 열어 읽고, 새 파일을 생성해 쓰고, 각 사용 사례에 맞는 다양한 도구와 라이브러리로 파일 내용을 처리하는 과정을 포함합니다. Volumes를 사용하면 포맷에 관계없이 클라우드 스토리지 성능으로 대규모 비테이블 데이터 컬렉션을 읽고 처리하는 다양한 파일 기반 애플리케이션을 구축할 수 있습니다. Unity Catalog Volumes는 Databricks 워크스페이스 UI, Spark API, Databricks 파일 시스템 유틸리티(dbutils.fs), REST API, Python의 os 모듈과 같은 언어 네이티브 파일 라이브러리, SQL 커넥터, Databricks CLI, Databricks SDK, Terraform 등 원하는 도구로 파일을 다룰 수 있게 해줍니다.
“데이터 민주화의 여정에서 사용자에게 제공되는 도구를 간소화하는 것은 매우 중요한 단계입니다. Unity Catalog Volumes 덕분에 사용자가 비정형 데이터에 접근하는 방식을 Databricks Volumes만으로 단순화할 수 있었습니다. Unity Catalog Volumes를 통해 스토리지 계정 접근을 위한 복잡한 RBAC 방식을 정형 데이터와 비정형 데이터에 대한 Unity Catalog 통합 접근 모델로 대체할 수 있었습니다. 사용자들은 여러 번의 클릭과 다양한 접근 방식에서 벗어나, 더 정교하면서도 관리가 간편한 UX를 보장하는 단일 직접 접근 모델로 전환했으며, 이를 통해 위험을 줄이고 전반적인 환경을 강화했습니다.” — Sergio Leoni, Head of Data Engineering & Data Platform, Plenitude
Public Preview 블로그 포스트에서 Volumes와 이를 통해 구현할 수 있는 사용 사례에 대한 상세한 개요를 제공했습니다. 이어지는 내용에서는 GA 릴리스에서 제공되는 새로운 기능을 포함한 Volumes의 다양한 기능을 시연합니다. 파일에서 데이터를 로드하는 두 가지 실제 시나리오를 통해 이를 보여드리겠습니다. 이 단계는 AI 애플리케이션을 구축하거나 데이터를 수집할 때 필수적입니다.

AI 애플리케이션에 Volumes 활용하기

AI 애플리케이션은 PDF, 이미지, 동영상, 오디오 파일, 기타 문서 등 대량의 비테이블 데이터를 다루는 경우가 많습니다. 이는 특히 컴퓨터 비전이나 자연어 처리와 같은 머신러닝 시나리오에서 두드러집니다. 생성형 AI 애플리케이션도 이 범주에 속하며, RAG(Retrieval Augmented Generation)와 같은 기법을 사용하여 비테이블 데이터 소스에서 인사이트를 추출합니다. 이러한 인사이트는 챗봇 인터페이스, 고객 지원 애플리케이션, 콘텐츠 생성 등을 구동하는 데 핵심적인 역할을 합니다. Volumes를 사용하면 AI 애플리케이션에 다양한 이점을 제공합니다:
  • 테이블 및 비테이블 AI 데이터셋에 대한 통합 거버넌스: AI 애플리케이션에 관련된 모든 데이터가 — Volumes를 통해 관리되는 비테이블 데이터든 테이블 데이터든 — 이제 동일한 Unity Catalog 우산 아래에 통합됩니다.
  • AI 애플리케이션 전반에 걸친 End-to-End 리니지: AI 애플리케이션의 리니지가 이제 Unity Catalog Volumes와 테이블로 구성된 엔터프라이즈 지식 베이스에서 시작하여, 데이터 파이프라인, 모델 파인튜닝 및 기타 커스터마이징을 거쳐, 생성형 AI의 모델 서빙 엔드포인트나 RAG 체인을 호스팅하는 엔드포인트에 이르기까지 전 구간을 아우릅니다. 이를 통해 AI 애플리케이션의 완전한 추적 가능성, 감사 가능성, 그리고 근본 원인 분석 가속화가 가능해집니다.
  • 간소화된 개발자 경험: 많은 AI 라이브러리와 프레임워크는 클라우드 오브젝트 스토리지 API를 네이티브로 지원하지 않고, 대신 로컬 파일 시스템의 파일을 기대합니다. Volumes의 내장 FUSE 지원 덕분에 사용자는 익숙한 방식으로 파일을 다루면서 이러한 라이브러리를 원활하게 활용할 수 있습니다.
  • AI 애플리케이션 응답과 소스 데이터셋의 간소화된 동기화: Job 파일 도착 트리거나 Auto Loader의 파일 감지 기능(이제 Volumes 지원이 강화됨)을 활용하면, Volume에 추가되는 최신 파일로 AI 애플리케이션 응답을 자동으로 업데이트하여 항상 최신 상태를 유지할 수 있습니다.
예를 들어 RAG 애플리케이션을 생각해 봅시다. 엔터프라이즈 데이터를 이러한 AI 애플리케이션에 통합할 때, 초기 단계 중 하나는 문서를 업로드하고 처리하는 것입니다. 이 과정은 Volumes를 사용하면 간소화됩니다. 원시 파일이 Volume에 추가되면, 소스 데이터는 더 작은 청크로 분할되고, 임베딩을 통해 숫자 형식으로 변환된 후 벡터 데이터베이스에 저장됩니다. Vector Search와 대규모 언어 모델(LLM)을 활용하면, RAG 애플리케이션은 사용자가 데이터를 쿼리할 때 관련성 높은 응답을 제공하게 됩니다. 이어지는 내용에서는 로컬 컴퓨터에 저장된 PDF 파일 컬렉션에서 시작하여 RAG 애플리케이션을 만드는 초기 단계를 시연합니다. 전체 RAG 애플리케이션은 관련 블로그 포스트데모를 참고하세요. 먼저 zip 파일로 압축된 PDF 파일을 업로드하는 것으로 시작합니다. 간단히 설명하기 위해 CLI를 사용하여 PDF를 업로드하지만, REST API나 Databricks SDK 같은 다른 도구를 사용해도 비슷한 단계를 수행할 수 있습니다. Volume 목록을 확인하여 업로드 대상을 결정하고, 파일용 디렉토리를 생성한 다음, 이 새 디렉토리에 아카이브를 업로드합니다. 이제 Databricks 노트북에서 아카이브의 압축을 풉니다. Volumes의 내장 FUSE 지원 덕분에, Volume 내 파일이 위치한 곳에서 직접 명령을 실행할 수 있습니다. Python UDF를 사용하여 PDF 텍스트를 추출하고, 청크로 나누고, 임베딩을 생성합니다. gen_chunks UDF는 Volume 경로를 받아 텍스트 청크를 출력합니다. gen_embedding UDF는 텍스트 청크를 처리하여 벡터 임베딩을 반환합니다. 그 다음, UDF와 Auto Loader를 결합하여 아래와 같이 청크를 Delta 테이블에 로드합니다. 이 Delta 테이블은 RAG 애플리케이션의 필수 구성 요소인 Vector Search 인덱스와 연결되어야 합니다. 간결함을 위해 인덱스 구성에 필요한 단계는 관련 튜토리얼을 참고하시기 바랍니다. 프로덕션 환경에서 RAG 애플리케이션은 끊임없이 변화하는 대규모 비테이블 데이터의 지식 베이스에 의존하는 경우가 많습니다. 따라서 최신 데이터로 Vector Search 인덱스 업데이트를 자동화하여 애플리케이션 응답을 최신 상태로 유지하고 데이터 중복을 방지하는 것이 중요합니다. 이를 위해 앞서 설명한 코드 로직을 사용하여 소스 파일 처리를 자동화하는 Databricks Workflows 파이프라인을 생성할 수 있습니다. 추가로 Volume을 파일 도착 트리거의 모니터링 위치로 구성하면, Volume에 새 파일이 추가될 때 파이프라인이 자동으로 새 파일을 처리합니다. CLI 명령어, UI, REST API, SDK 등 다양한 방법으로 이러한 파일을 정기적으로 업로드할 수 있습니다. 내부 데이터 외에도, 기업은 큐레이팅된 데이터셋이나 파트너/벤더로부터 구매한 데이터와 같은 외부 제공 데이터를 활용할 수 있습니다. Volume Sharing을 사용하면 데이터를 먼저 복사할 필요 없이 이러한 데이터셋을 RAG 애플리케이션에 통합할 수 있습니다.

수집 파이프라인의 시작점에서 Volumes 활용하기

이전 섹션에서는 Volume에 저장된 비정형 파일 포맷에서 데이터를 로드하는 방법을 시연했습니다. Volumes는 JSON이나 CSV 같은 반정형 포맷이나 Parquet 같은 정형 포맷에서 데이터를 로드하는 데도 동일하게 사용할 수 있으며, 이는 수집 및 ETL 작업의 일반적인 첫 번째 단계입니다. Auto Loader, Delta Live Tables(DLT), COPY INTO, CTAS 명령 실행 등 선호하는 수집 도구를 사용하여 Volumes에서 테이블로 데이터를 로드할 수 있습니다. 또한 Job 파일 도착 트리거나 Auto Loader 파일 감지 같은 기능을 활용하여 Volume에 새 파일이 추가될 때 테이블이 자동으로 업데이트되도록 할 수 있습니다. Volumes를 포함한 수집 워크로드는 Databricks 워크스페이스나 SQL 커넥터에서 실행할 수 있습니다. 다음은 Volumes를 CTAS, COPY INTO, DLT 명령에서 사용하는 몇 가지 예입니다. Auto Loader 사용법은 이전 섹션에서 다룬 코드 샘플과 매우 유사합니다. UI에서도 새로 도입된 Volumes용 테이블 생성 마법사를 사용하여 Volumes의 데이터를 테이블로 빠르게 로드할 수 있습니다. 이는 코드를 작성하지 않고 UI를 사용하여 빠르게 테이블을 생성하고 싶은 임시(ad-hoc) 데이터 사이언스 작업에 특히 유용합니다.

Unity Catalog Volumes GA 릴리스 요약

Volumes의 정식 출시(GA) 릴리스에는 이전 섹션에서 일부 시연한 여러 새로운 기능과 개선 사항이 포함됩니다. GA 릴리스의 주요 내용을 요약하면 다음과 같습니다:
  • Delta Sharing을 통한 Volume Sharing 및 Databricks Marketplace의 Volumes: 이제 Delta Sharing을 통해 Volumes를 공유할 수 있습니다. 이를 통해 고객은 PDF, 이미지, 동영상, 오디오 파일, 기타 문서 및 자산과 같은 대규모 비테이블 데이터 컬렉션을 테이블, 노트북, AI 모델과 함께 클라우드, 리전, 계정 경계를 넘어 안전하게 공유할 수 있습니다. 또한 비즈니스 유닛이나 파트너 간의 협업과 새로운 협력자의 온보딩을 간소화합니다. 추가로 고객은 Databricks Marketplace에서 Volumes 공유를 활용하여 데이터 제공자가 비테이블 데이터를 데이터 소비자와 쉽게 공유할 수 있습니다. Volume Sharing은 현재 AWS, Azure, GCP에서 Public Preview로 제공됩니다.
  • 원하는 도구로 파일 관리: Databricks CLI, Files REST API(현재 Public Preview), Databricks SDK를 사용하여 업로드, 다운로드, 삭제, 디렉토리 관리, 파일 목록 확인 등의 파일 관리 작업을 수행할 수 있습니다. 또한 Python, Go, Node.js, JDBC Databricks SQL 커넥터는 Volume에 저장된 파일의 업로드, 다운로드, 삭제를 위한 PUT, GET, REMOVE SQL 명령을 제공하며, ODBC 지원도 곧 제공될 예정입니다.
  • Scala 및 Python UDF와 Scala IO에서의 Volumes 지원: 이제 모든 컴퓨트 액세스 모드에서 UDF로부터 Volume 경로에 접근하고 Scala로 IO 작업을 실행할 수 있습니다.
  • Volumes에 대한 Job 파일 도착 트리거 지원: 이제 Volumes를 통해 접근하는 스토리지에 대해 Job 파일 도착 트리거를 구성할 수 있으며, 이는 Volume에 새 파일이 추가될 때 복잡한 파이프라인을 실행하는 편리한 방법입니다.
  • 클라우드 스토리지 URI를 사용한 파일 접근: 이제 Databricks Volume 경로 외에 클라우드 스토리지 URI를 사용하여 External Volumes의 데이터에 접근할 수 있습니다. 이를 통해 Volumes 도입 시 기존 코드를 더 쉽게 활용할 수 있습니다.
  • 클러스터 라이브러리, Job 의존성, 초기화 스크립트에서의 Volumes 지원: Volumes가 이제 UI와 API 모두에서 클러스터 라이브러리, Job 의존성, 초기화 스크립트의 소스로 지원됩니다. 자세한 내용은 관련 블로그 포스트를 참조하세요.
  • Discovery Tags: 이제 UI, SQL 명령, Information Schema를 사용하여 Volume 수준의 태깅을 정의하고 관리할 수 있습니다.
  • Volumes UI 개선: Volumes UI가 파일에서 테이블 생성, 여러 파일 동시 다운로드 및 삭제 등 다양한 파일 관리 작업을 지원하도록 업그레이드되었습니다. 또한 업로드 및 다운로드의 최대 파일 크기가 2GB에서 5GB로 늘어났습니다.

Volumes 시작하기

Volumes를 시작하려면 주요 Volume 기능을 빠르게 둘러볼 수 있는 종합 단계별 가이드를 따라해 보세요. 첫 번째 Volume 생성에 대한 자세한 안내는 공식 문서를 참고하세요. Volume을 생성한 후에는 Catalog Explorer를 활용하여 내용을 탐색하거나, Volume 관리를 위한 SQL 구문을 사용하거나, 다른 협력자와 Volumes를 공유할 수 있습니다. 또한 Volumes를 최대한 활용하기 위한 모범 사례를 검토하시길 권장합니다.

참고 자료