Skip to content

Latest commit

 

History

History
266 lines (195 loc) · 24.7 KB

README_RU.md

File metadata and controls

266 lines (195 loc) · 24.7 KB



Docs PyPI version PyPI version CircleCI GitHub issues codecov tweet


Представляем Data 2.0, при поддержке Hub.
Самый быстрый способ организации хранения, доступа и работы с датасетами с помощью контроля версий для работы с PyTorch/TensorFlow. Работает как локально, так и в облаке. Гибкие дата-пайплайны.


[ English | Français | 简体中文 | Türkçe | 한글 | Bahasa Indonesia] | Русский]

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

Для чего нужен Hub?

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, вы можете оставить заявку. Мы сделаем его доступным для всех как только сможем!

Загружайте свой датасет и получайте доступ к нему из любого места в 3 простых шага

  1. Пройдите бесплатную регистрацию в 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
  2. Затем создайте датасет, укажите его название и загрузите в ваш аккаунт. Например:

    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()
  3. Получайте доступ к нему где угодно, на любом устройстве, где есть командная строка:

    from hub import Dataset
    
    ds = Dataset("username/dataset_name")

Документация

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

Примеры в Notebooks

Данный каталог хранит ряд примеров и этот каталог примеры в ноутбуках. Некоторые ноутбуки представлены ниже.

Notebook Описание
Загрузка изображений Показывает как загружать и хранить изображения в Hub Открыть в Colab
Загрузка датафреймов Показывает как загружать датафреймы в Hub Открыть в Colab
Загрузка Audio Объясняет как работать с аудио в Hub Открыть в Colab
Скачивание данных Объясняет как скачивать данные в Hub Открыть в Colab
Преобразование данных Краткое описание преобразований данных в Hub Открыть в Colab
Динамические тензоры Работы с данными различной размерности в Hub Открыть в Colab
NLP с помощью Hub Настройка Bert для CoLA Открыть в Colab

Варианты использования

Что особенного в Hub?

Существует довольно много библиотек управления наборами данных, которые предлагают функции, которые могут показаться похожими на Hub. Фактически, довольно много пользователей переносят данные из наборов данных PyTorch или Tensorflow в Hub. Вот несколько поразительных отличий, с которыми вы столкнетесь после перехода на Hub:

  • данные предоставляются фрагментами, которые вы можете передавать из удаленного места, вместо того, чтобы загружать все сразу
  • поскольку оценивается только необходимая часть набора данных, вы можете сразу же работать с данными
  • вы можете хранить данные, которые не поместятся в вашей памяти целиком
  • вы можете управлять версиями и сотрудничать с несколькими пользователями над вашими наборами данных на разных машинах
  • у вас есть инструменты, которые за секунды улучшают ваше понимание данных, например, наш инструмент визуализации
  • вы можете легко подготовить свои данные для нескольких обучающих библиотек одновременно (например, вы можете использовать один и тот же набор данных для обучения с PyTorch и Tensorflow)

Сообщество

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

tweet в Twitter.

Как всегда, спасибо нашим замечательным участникам!

Сделано с использованием contributors-img.

Пожалуйста прочтайте CONTRIBUTING.md чтобы узнать, как принимать участие в развитии Hub.

Примеры

Формат Activeloop Hub позволяет добиться более быстрого вывода с меньшими затратами. У нас уже есть 30+ популярных наборов данных на нашей платформе. К ним относятся:

  • COCO
  • CIFAR-10
  • PASCAL VOC
  • Cars196
  • KITTI
  • EuroSAT
  • Caltech-UCSD Birds 200
  • Food101

Проверьте эти и многие другие популярные наборы данных в нашем веб-приложении визуализаторе и загрузите их напрямую для обучения модели!

README значок

Используете Hub? Добавьте README значок, чтобы все могли об этом узнать:

hub

[![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 и хотели бы поблагодарить их сообщество за создание такого замечательного фундаментального блока.