Представляем Data 2.0, при поддержке Hub.
Самый быстрый способ организации хранения, доступа и работы с датасетами с помощью контроля версий для работы с PyTorch/TensorFlow. Работает как локально, так и в облаке. Гибкие дата-пайплайны.
[ English | Français | 简体中文 | Türkçe | 한글 | Bahasa Indonesia] | Русский]
Примечание: данный перевод может обновляться не одновременно с основным. Для прочтения актуальной версии обращайтесь, пожалуйста, к README на английском языке.
Software 2.0 нуждается в Data 2.0, это обеспечивает Hub. Основную часть времени разработчики в области Data Science и ML занимаются обработкой и предподготовкой данных вместо тренировки моделей. С помощью Hub мы решаем эту проблему. Мы храним ваши датасеты (даже размером в петабайты данных) в виде отдельного numpy-подобного массива в облаке, поэтому вы можете легко получить их и работать на любом устройстве. Hub делает любой тип данных (графика, некстовые файлы, аудио или видео), хранимых в облаке, доступным, словно он хранится локально. С одинаковой версией датасета, работа вашей команды всегда будет синхронизирована.
Hub используется такими организациями как Waymo, Red Cross, World Resources Institute, Omdena, а также многих других.
- Сохраняйте и скачивайте огромные датасеты, используя контроль версий
- Работайте совместно как в Google Docs: Множество разработчиков работают с одноми и теми же синхронизированными данными, не мешая друг другу
- Одновременный доступ с множества различных устройств
- Выполнение деплоя кудв угодно - локально, в Google Cloud, S3, Azure, а также в Activeloop (по умолчанию и совершенно бесплатно!)
- Интегрируйте с такими вашими ML-инструментами как Numpy, Dask, Ray, PyTorch, or TensorFlow
- Создавайте настолько большие массивы, насколько пожелаете. Вы можете хранить графические изображения размером до 100k на 100k!
- Храните размер каждого образца динамически. Таким образом вы можете хранить большие и маленькие массивы в виде одного массива.
- Визуализация любая часть данных за секунды без лишних манипуляций
Визуализация загрузки датасета в Hub с помощью app.activeloop.ai (бесплатный инстрмент).
Работайте с доступными датасетами или со своим собственным локально или в любом облачном хранилище.
Чтобы плучить открытй датасет, необходимо писать десятки строк кода и тратить часы на получение доступа к API и его изучению, а также на загрузку данных. С помощью Hub потребуется всего 2 строчки кода и вы можете приступать к работе с датасетом втечение 3 минут.
pip3 install hub
Получайте доступ к публичным датасетам в Hub, следуя простым инструкциям и используя несколько строк кода. Запустите данный кусок кода чтобы получить первую тысячу изображений из датасета MNIST в виде numpy-массива:
from hub import Dataset
mnist = Dataset("activeloop/mnist") # ленивая загрузка данных MNIST
# экономьте время с помощью *compute* чтобы получить только нужные данные
mnist["image"][0:1000].compute()
Вы можете найти остальные популярные датасеты на app.activeloop.ai.
Загрузиите данные и обучите модель напрямую. Hub имеет интеграцию с PyTorch и TensorFlow, а также выполняет конвертацию между форматами в понятном виде. Посмотрите на пример с PyTorch ниже:
from hub import Dataset
import torch
mnist = Dataset("activeloop/mnist")
# конвертация MNIST в формат PyTorch
mnist = mnist.to_pytorch(lambda x: (x["image"], x["label"]))
train_loader = torch.utils.data.DataLoader(mnist, batch_size=1, num_workers=0)
for image, label in train_loader:
# Далее цикл обучения
Если вы хотите работать со своими данными локально, вы можете начать с создания датасета:
from hub import Dataset, schema
import numpy as np
ds = Dataset(
"./data/dataset_name", # путь к датасету
shape = (4,), # следует конвенции numpy shape
mode = "w+", # режим чтения и записи
schema = { # именованные части данных, которые могут определять формат
# Тензор является сгенерированной структурой, которая может хранить любой тип данных
"image": schema.Tensor((512, 512), dtype="float"),
"label": schema.Tensor((512, 512), dtype="float"),
}
)
# заполнение данных (в данном случае - нулями для инициализации)
ds["image"][:] = np.zeros((4, 512, 512))
ds["label"][:] = np.zeros((4, 512, 512))
ds.flush() # вызов создания датасета
Вы также можете указать s3://bucket/path
, gcs://bucket/path
или путь на azure. Здесь вы можете найти больше информации по хранению в облаке.
Также если вам нужен публичный датасет и вы не можете найти его в Hub, вы можете оставить заявку. Мы сделаем его доступным для всех как только сможем!
-
Пройдите бесплатную регистрацию в Activeloop и авторизируйтесь локально:
hub register hub login # При необходимости, укажите username и password в качестве аргументов (используется на таких платформах как Kaggle) hub login -u username -p password
В будущих релизах появится команда
activeloop
. Ниже представлен её синтаксис для использования:activeloop register activeloop login # При необходимости, укажите username и password в качестве аргументов (используется на таких платформах как Kaggle) activeloop login -u username -p password
-
Затем создайте датасет, укажите его название и загрузите в ваш аккаунт. Например:
from hub import Dataset, schema import numpy as np ds = Dataset( "username/dataset_name", shape = (4,), mode = "w+", schema = { "image": schema.Tensor((512, 512), dtype="float"), "label": schema.Tensor((512, 512), dtype="float"), } ) ds["image"][:] = np.zeros((4, 512, 512)) ds["label"][:] = np.zeros((4, 512, 512)) ds.flush()
-
Получайте доступ к нему где угодно, на любом устройстве, где есть командная строка:
from hub import Dataset ds = Dataset("username/dataset_name")
Для таких более продвинутых работ с данными как загрузка больших датасетов или выполнения различных преобразований, пожалйста обращайтесь к документации.
Данный каталог хранит ряд примеров и этот каталог примеры в ноутбуках. Некоторые ноутбуки представлены ниже.
Notebook | Описание | |
---|---|---|
Загрузка изображений | Показывает как загружать и хранить изображения в Hub | |
Загрузка датафреймов | Показывает как загружать датафреймы в Hub | |
Загрузка Audio | Объясняет как работать с аудио в Hub | |
Скачивание данных | Объясняет как скачивать данные в Hub | |
Преобразование данных | Краткое описание преобразований данных в Hub | |
Динамические тензоры | Работы с данными различной размерности в Hub | |
NLP с помощью Hub | Настройка Bert для CoLA |
- Снимки со спитников и дронов: Интеллектуальное сельское хозяйство с масштабируемыми воздушными трубопроводами, Составление карты экономического благополучия в Индии, Борьба с пустынной саранчой в Кении с помощью Красного Креста
- Медицинские снимки: Объемные изображения, такие как МРТ или рентгеновский снимок
- Самоходные автомобили: Radar, 3D LIDAR, Point Cloud, Semantic Segmentation, Video Objects
- Розничная торговля: Наборы данных для самообслуживания
- Медиа: Хранение изображений, видео, аудио
Существует довольно много библиотек управления наборами данных, которые предлагают функции, которые могут показаться похожими на Hub. Фактически, довольно много пользователей переносят данные из наборов данных PyTorch или Tensorflow в Hub. Вот несколько поразительных отличий, с которыми вы столкнетесь после перехода на Hub:
- данные предоставляются фрагментами, которые вы можете передавать из удаленного места, вместо того, чтобы загружать все сразу
- поскольку оценивается только необходимая часть набора данных, вы можете сразу же работать с данными
- вы можете хранить данные, которые не поместятся в вашей памяти целиком
- вы можете управлять версиями и сотрудничать с несколькими пользователями над вашими наборами данных на разных машинах
- у вас есть инструменты, которые за секунды улучшают ваше понимание данных, например, наш инструмент визуализации
- вы можете легко подготовить свои данные для нескольких обучающих библиотек одновременно (например, вы можете использовать один и тот же набор данных для обучения с PyTorch и Tensorflow)
Присоединяйтесь к нашему Slack сообществу чтобы получить помощь от команды Activeloop и других пользователей, а также быть в курсе лучших практик управления наборами данных и предварительной обработки.
Как всегда, спасибо нашим замечательным участникам!
Сделано с использованием contributors-img.
Пожалуйста прочтайте CONTRIBUTING.md чтобы узнать, как принимать участие в развитии Hub.
Формат Activeloop Hub позволяет добиться более быстрого вывода с меньшими затратами. У нас уже есть 30+ популярных наборов данных на нашей платформе. К ним относятся:
- COCO
- CIFAR-10
- PASCAL VOC
- Cars196
- KITTI
- EuroSAT
- Caltech-UCSD Birds 200
- Food101
Проверьте эти и многие другие популярные наборы данных в нашем веб-приложении визуализаторе и загрузите их напрямую для обучения модели!
Используете Hub? Добавьте README значок, чтобы все могли об этом узнать:
[![hub](https://img.shields.io/badge/powered%20by-hub%20-ff5a1f.svg)](https://github.com/activeloopai/Hub)
По умолчанию мы собираем анонимные данные по использованию нашего продукта с помощью Bugout (вот код, который это выполняет). Он регистрирует только собственные действия и параметры библиотеки Hub. Данные о пользователях и моделях не собираются.
Это помогает команде Activeloop понять, как используется инструмент и как принести максимальную пользу сообществу, создавая действительно полезный функцонал. Вы легко можете отказать от отслеживания использования во время своей авторизации.
По аналогии с другими системами управления датасетами, Hub
это служебная библиотека, которая загружает и подготавливает общедоступные наборы данных. Мы не размещаем и не распространяем эти наборы данных, не ручаемся за их качество или точность и не заявляем, что у вас есть лицензия на использование набора данных. Вы обязаны определить, есть ли у вас разрешение на использование датасета в соответствии с лицензией на датасет.
Если вы являетесь владельцем датасета и хотите обновить какую-либо его часть (описание, цитату и т.д.) или не хотите, чтобы ваш набор данных был включен в эту библиотеку, свяжитесь с нами через issue на GitHub. Спасибо за ваш вклад в сообщество машинного обучения!
Эта технология была вдохновлена нашим опытом в Принстонском университете, и я хотел бы поблагодарить Уильяма Сильверсмита @SeungLab за его потрясающий инструмент cloud-volume. Мы активно используем Zarr и хотели бы поблагодарить их сообщество за создание такого замечательного фундаментального блока.