데이터 레이크가 AI 및 머신러닝의 기반이 되는 방식을 살펴보세요. Ultralytics 훈련을 위한 원시 데이터 활용 방법과 컴퓨터 비전 워크플로우 간소화 기법을 익히세요.
데이터 레이크는 방대한 양의 원시 데이터를 원본 형식으로 저장하는 중앙 집중식 저장소로, 필요할 때까지 그대로 보관합니다. 기존 저장 시스템이 데이터 입력 전 구조화를 요구하는 것과 달리, 데이터 레이크는 구조화 데이터(행과 열), 반구조화 데이터(CSV, 로그, XML, JSON), 비구조화 데이터(이메일, 문서, PDF) 및 바이너리 데이터(이미지, 오디오, 비디오)를 포함한 데이터를 "있는 그대로" 수용합니다. 이러한 아키텍처 유연성 덕분에 데이터 레이크는 현대적 빅데이터 전략의 핵심으로 자리매김하게 합니다. 특히 인공지능(AI) 과 기계학습(ML)을 활용하는 조직에게 더욱 그렇습니다. 데이터 수집과 데이터 활용을 분리함으로써, 조직은 방대한 정보 풀을 상대적으로 저렴하게 저장하고 구체적인 분석 질문은 나중에 해결할 수 있습니다.
인공지능 개발 맥락에서 데이터 레이크의 주요 가치는 딥 러닝(DL) 워크플로우를 지원하는 능력에 있다. 고급 신경망은 높은 정확도를 달성하기 위해 다양하고 방대한 훈련 데이터가 필요합니다. 데이터 레이크는 컴퓨터 비전(CV) 용 수백만 장의 고해상도 이미지나 음성 인식용수천 시간 분량의 오디오와 같은 원시 자산이 처리되기 전에 저장되는 중간 저장소 역할을 합니다.
데이터 과학자들은 데이터 레이크 내에서 "스키마 온 리드(schema-on-read)" 방법론을 사용합니다. 이는 데이터가 저장소에 기록될 때가 아닌, 처리 목적으로 읽힐 때에만 구조가 적용됨을 의미합니다. 이는 엄청난 유연성을 제공하여 동일한 원시 데이터셋을 원본 소스를 변경하지 않고도 다양한 예측 모델링 작업을 위해 여러 방식으로 처리할 수 있게 합니다. 또한 견고한 데이터 레이크는 Amazon S3나 Azure Blob Storage 같은 클라우드 컴퓨팅 서비스와 통합되는 경우가 많아 YOLO26 같은 대규모 모델 훈련에 필요한 확장 가능한 병렬 처리를 가능하게 합니다.
데이터 레이크는 종종 혼동되지만 데이터 웨어하우스와는 구별됩니다. 데이터 웨어하우스는 구조화된 테이블에 데이터를 저장하며 빠른 SQL 쿼리와 비즈니스 인텔리전스 보고를 위해 최적화되어 있습니다. 이는 "쓰기 시 스키마 적용(schema-on-write)" 방식을 사용하는데, 이는 데이터가 시스템에 입력되기 전에 ETL(추출, 변환, 로드) 프로세스를 통해 정제 및 변환되어야 함을 의미합니다.
반대로 데이터 레이크는 저장 용량과 다양성에 최적화되어 있습니다. 목표가 아직 정의되지 않은 경우에도 비지도 학습과 탐색적 분석을 지원합니다. 예를 들어, 데이터 웨어하우스는 지난달 판매된 제품 수를 알려줄 수 있지만, 데이터 레이크는 AI 모델이 판매 이유를 이해하는 데 도움이 되는 고객 감정 로그와 이미지 데이터 같은 원시 데이터를 보관합니다.
데이터 레이크는 자동화의 한계를 넓혀가는 다양한 산업 전반에 걸쳐 핵심적인 역할을 수행합니다:
Ultralytics 사용할 때 사용자는 종종 조직의 데이터 레이크에서 원시 데이터의 하위 집합을 추출하여 훈련용 주석이 달린 데이터 세트를 생성합니다. 원시 이미지가 검색되고 라벨링되면 이를 활용하여 최신 모델을 훈련시킬 수 있습니다.
다음 예시는 개발자가 로컬 데이터셋(데이터 레이크에서 가져오는 것을 모방)을 로드하여 탐지 작업을 위한 YOLO26 모델을 훈련하는 방법을 보여줍니다.
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train the model using a dataset configuration file
# In a production pipeline, this data might be streamed or downloaded
# from a cloud-based data lake prior to this step.
results = model.train(data="coco8.yaml", epochs=5, imgsz=640)
# Run inference on a new image to verify performance
predictions = model("https://ultralytics.com/images/bus.jpg")