paint-brush
LanceDB: ваш надежный помощник в борьбе со сложностью данныхк@minio
25,852 чтения
25,852 чтения

LanceDB: ваш надежный помощник в борьбе со сложностью данных

к MinIO8m2024/02/01
Read on Terminal Reader
Read this story w/o Javascript

Слишком долго; Читать

На базе, предложенной в этом руководстве, существует множество способов создания производительных, масштабируемых и перспективных архитектур машинного обучения и искусственного интеллекта с использованием MinIO и LanceDB.

People Mentioned

Mention Thumbnail
featured image - LanceDB: ваш надежный помощник в борьбе со сложностью данных
MinIO HackerNoon profile picture
0-item
1-item

Основанная на Lance, формате столбчатых данных с открытым исходным кодом, LanceDB имеет несколько интересных функций, которые делают ее привлекательной для AI/ML. Например, LanceDB поддерживает явную и неявную векторизацию с возможностью обработки различных типов данных. LanceDB интегрирован с ведущими платформами машинного обучения, такими как PyTorch и ТензорФлоу . Еще круче быстрый поиск соседей LanceDB, который позволяет эффективно находить похожие векторы с использованием приблизительных алгоритмов ближайшего соседа. Все это в совокупности создает векторную базу данных, которая является быстрой, простой в использовании и настолько легкой, что ее можно развернуть где угодно.


LanceDB способна запрашивать данные в S3-совместимом объектном хранилище. Эта комбинация оптимальна для создания высокопроизводительных, масштабируемых и облачных систем хранения и поиска данных машинного обучения. MinIO обеспечивает производительность и беспрецедентную гибкость при работе с разнообразным оборудованием, местоположениями и облачными средами, что делает его естественным выбором для таких развертываний.


По завершении этого руководства вы будете готовы использовать LanceDB и MinIO для решения любых задач, связанных с данными.

Что такое Лэнс?

Лэнс Формат файла — это формат столбчатых данных, оптимизированный для рабочих процессов и наборов данных машинного обучения. Он разработан таким образом, чтобы его можно было легко и быстро создавать, запрашивать и использовать для обучения, и он подходит для различных типов данных, включая изображения, видео, трехмерные облака точек, аудио и табличные данные. Кроме того, он поддерживает высокопроизводительный произвольный доступ: сКонтрольные показатели отчетности Lance в 100 раз быстрее Parquet в запросах. Скорость Lance отчасти является результатом реализации на Rust и его облачного дизайна, который включает в себя такие функции, как управление версиями с нулевым копированием и оптимизированные векторные операции.


Один из его ключевая особенность это возможность выполнять векторный поиск, позволяющий пользователям находить ближайшие соседи менее чем за 1 миллисекунду и объединить OLAP-запросы с векторным поиском. Другие производственные приложения для формата lance включают развертываемые на периферии векторные базы данных с малой задержкой для приложений машинного обучения, крупномасштабное хранение, извлечение и обработку мультимодальных данных в компаниях по производству беспилотных автомобилей, а также персонализированный поиск векторов в более чем миллиарде масштабов в электронном виде. -торговые компании. Частично привлекательность формата файла Lance заключается в его совместимости с популярными инструментами и платформами, такими как Pandas, ДакДБ , полярные и Пярроу . Даже если вы не используете LanceDB, вы все равно можете использовать формат файла Lance в своем стеке данных.

Создан для искусственного интеллекта и машинного обучения

Векторные базы данных, такие как LanceDB, предлагают явные преимущества для приложений искусственного интеллекта и машинного обучения благодаря своей эффективной отдельное хранилище а также вычислительные архитектуры и поиск многомерных векторных представлений данных. Вот несколько ключевых случаев использования:


Обработка естественного языка (НЛП):


Семантический поиск: находите документы или отрывки, похожие на запрос, по смыслу, а не только по ключевым словам. Это обеспечивает ответы чат-ботов, персонализированные рекомендации по контенту и системы поиска знаний.


Ответы на вопросы: Понимайте сложные вопросы и отвечайте на них, находя соответствующие отрывки текста на основе семантического сходства.


Моделирование тем: обнаруживайте скрытые темы в больших текстовых коллекциях, что полезно для кластеризации документов и анализа тенденций.


Компьютерное зрение:


Поиск изображений и видео: поиск похожих изображений или видео на основе визуального контента, что имеет решающее значение для поиска изображений на основе контента, поиска продуктов и анализа видео.


Обнаружение и классификация объектов. Повышайте точность моделей обнаружения и классификации объектов за счет эффективного получения аналогичных обучающих данных.


Видеорекомендация : рекомендуйте похожие видео на основе визуального содержания ранее просмотренных видео.


Среди множества векторных баз данных, представленных на рынке, LanceDB особенно хорошо подходит для искусственного интеллекта и машинного обучения, поскольку поддерживает запросы к S3-совместимому хранилищу. Ваши данные повсюду, ваша база данных тоже должна быть повсюду.

Архитектура для успеха

Использование MinIO с LanceDB дает ряд преимуществ, в том числе:


  • Масштабируемость и производительность : Облачный дизайн MinIO создан для масштабируемого и высокопроизводительного хранения и извлечения данных. Используя масштабируемость и производительность MinIO, LanceDB может эффективно обрабатывать большие объемы данных, что делает его хорошо подходящим для современных рабочих нагрузок машинного обучения.


  • Высокая доступность и отказоустойчивость : MinIO отличается высокой доступностью, неизменностью и высокой надежностью. Это гарантирует, что данные, хранящиеся в MinIO, защищены от аппаратных сбоев, а также обеспечивают высокую доступность и отказоустойчивость, которые имеют решающее значение для приложений с интенсивным использованием данных, таких как LanceDB.


  • Активно-активная репликация : Репликация «активный-активный» на нескольких площадках обеспечивает почти синхронную репликацию данных между несколькими развертываниями MinIO. Этот надежный процесс обеспечивает высокую надежность и резервирование, что делает его идеальным для защиты данных в критически важных производственных средах.


Комбинация MinIO и LanceDB обеспечивает высокопроизводительное масштабируемое облачное решение для управления и анализа крупномасштабных наборов данных машинного обучения.

Требования

Чтобы следовать этому руководству, вам нужно будет использовать Докер Составление . Вы можете установить двоичные файлы Docker Engine и Docker Compose отдельно или вместе с помощью Docker Desktop. Самый простой вариант — установить Docker Desktop.


Убедитесь, что Docker Compose установлен, выполнив следующую команду:


 docker compose version


Вам также потребуется установить Python. Вы можете скачать Python с здесь . Во время установки обязательно установите флажок добавить Python в PATH вашей системы.


При желании вы можете создать виртуальную среду. Хорошей практикой является создание виртуальной среды для изоляции зависимостей. Для этого откройте терминал и запустите:


 python -m venv venv


Чтобы активировать виртуальную среду:


В Windows:

 .\venv\Scripts\activate


В macOS/Linux:

 source venv/bin/activate

Начиная

Начните с клонирования проекта из здесь . После этого перейдите в папку, в которую вы загрузили файлы, в окне терминала и запустите:


 docker-compose up minio


Это запустит контейнер MinIO. Вы можете перейти к ' http://172.20.0.2:9001 ', чтобы взглянуть на консоль MinIO.


Консоль MinIO


Войдите в систему, используя имя пользователя и пароль minioadmin:minioadmin .


Затем выполните следующую команду, чтобы создать корзину MinIO под названием lance .


 docker compose up mc 


Ведро MinIO


Эта команда выполняет ряд Клиент MinIO (mc) команды внутри оболочки.


Вот разбивка каждой команды:


до тех пор, пока (/usr/bin/mc config хост не добавит minio http://minio:9000 minioadmin minioadmin) do echo '...waiting...' && Sleep 1; Done ;: Эта команда неоднократно пытается настроить хост MinIO с именем minio с указанными параметрами (конечная точка, ключ доступа и секретный ключ) до достижения успеха. Во время каждой попытки отображается ожидающее сообщение и делается пауза на 1 секунду.


/usr/bin/mc rm -r --force minio/lance;: Эта команда принудительно удаляет (удаляет) все содержимое в контейнере lance в MinIO.


/usr/bin/mc mb minio/lance; : эта команда создает в MinIO новую корзину с именем lance .


/usr/bin/mc установка политики public minio/lance; : эта команда устанавливает общедоступную политику lance корзины, разрешая публичный доступ для чтения.


выход 0; : Эта команда гарантирует, что сценарий завершит работу с кодом состояния 0, что указывает на успешное выполнение.

ЛансДБ

К сожалению, LanceDB не имеет встроенной поддержки S3, и в результате вам придется использовать что-то вроде boto3 для подключения к созданному вами контейнеру MinIO. По мере развития LanceDB мы с нетерпением ожидаем появления встроенной поддержки S3, которая сделает работу пользователя еще лучше.


Приведенный ниже пример сценария поможет вам начать.


Установите необходимые пакеты с помощью pip. Создайте файл с именем require.txt следующего содержания:


 lancedb~=0.4.1 boto3~=1.34.9 botocore~=1.34.9


Затем выполните следующую команду для установки пакетов:


 pip install -r requirements.txt


Вам потребуется изменить свои учетные данные, если ваш метод создания контейнера MinIO отличается от описанного выше.


Сохраните приведенный ниже сценарий в файл, например, lancedb_script.py .


 import lancedb import os import boto3 import botocore import random def generate_random_data(num_records): data = [] for _ in range(num_records): record = { "vector": [random.uniform(0, 10), random.uniform(0, 10)], "item": f"item_{random.randint(1, 100)}", "price": round(random.uniform(5, 100), 2) } data.append(record) return data def main(): # Set credentials and region as environment variables os.environ["AWS_ACCESS_KEY_ID"] = "minioadmin" os.environ["AWS_SECRET_ACCESS_KEY"] = "minioadmin" os.environ["AWS_ENDPOINT"] = "http://localhost:9000" os.environ["AWS_DEFAULT_REGION"] = "us-east-1" minio_bucket_name = "lance" # Create a boto3 session with path-style access session = boto3.Session() s3_client = session.client("s3", config=botocore.config.Config(s3={'addressing_style': 'path'})) # Connect to LanceDB using path-style URI and s3_client db_uri = f"s3://{minio_bucket_name}/" db = lancedb.connect(db_uri) # Create a table with more interesting data table = db.create_table("mytable", data=generate_random_data(100)) # Open the table and perform a search result = table.search([5, 5]).limit(5).to_pandas() print(result) if __name__ == "__main__": main()


Этот скрипт создаст таблицу Lance из случайно сгенерированных данных и добавит ее в корзину MinIO. Опять же, если вы не используете метод из предыдущего раздела для создания сегмента, вам нужно будет сделать это перед запуском сценария. Не забудьте изменить приведенный выше пример сценария, чтобы он соответствовал тому, как вы называете свою корзину MinIO.


Наконец, скрипт открывает таблицу, не перемещая ее из MinIO, и использует Pandas для поиска и печати результатов.


Результат работы скрипта должен выглядеть примерно так, как показано ниже. Помните, что сами данные каждый раз генерируются случайным образом.


 vector item price _distance 0 [5.1022754, 5.1069164] item_95 50.94 0.021891 1 [4.209107, 5.2760105] item_100 69.34 0.701694 2 [5.23562, 4.102992] item_96 99.86 0.860140 3 [5.7922664, 5.867489] item_47 56.25 1.380223 4 [4.458882, 3.934825] item_93 9.90 1.427407


Расширяйтесь самостоятельно

На основе этой основы, предложенной в этом руководстве, существует множество способов создания производительных, масштабируемых и ориентированных на будущее архитектур ML/AI. В вашем арсенале есть два передовых строительных блока с открытым исходным кодом — объектное хранилище MinIO и векторная база данных LanceDB — считайте это своим выигрышным билетом в области машинного обучения и искусственного интеллекта. турнир .


Не останавливайтесь здесь. LanceDB предлагает широкий спектр рецепты и учебные пособия, позволяющие расширить возможности того, что вы создали в этом руководстве, включая недавно анонсированный курс Udacity по Создание решений генеративного искусственного интеллекта с помощью векторных баз данных . Особый интерес представляет этот рецепт общения с вашими документами. Мы все за то, чтобы разрушить барьеры на пути к максимальному использованию ваших данных.


Пожалуйста, покажите нам, что вы создаете, и если вам понадобится помощь в вашем благородном поиске, не стесняйтесь, напишите нам по адресу [email protected] или присоединяйтесь к нашему круглому столу на Слабость .