OneFlow v0.6.0 официально выпущен

искусственный интеллект
OneFlow v0.6.0 официально выпущен

​Сегодня исполняется 529 дней с открытым исходным кодом OneFlow, официально выпущена версия OneFlow v0.6.0. Это обновление версии включает в себя три части: фреймворк, модель и OneFlow-ONNX, в основном:

  • Повышение производительности, включая статические графики, динамические графики, производительность оператора, использование памяти и т. д.
  • Добавьте много общих операторов
  • Улучшение статического графа и функций ConsistentTensor
  • Поддержка OneFlow в качестве серверной части Nvidia Triton для обеспечения функции обслуживания.
  • Внедрение предварительно обученных моделей расширенного видения в соответствии с torchvision, timm
  • Реализация более полной функции преобразования OneFlow-ONNX

Ниже приведены сведения об обновлении версии.

Оптимизация фреймворка

1. Глубоко оптимизировать производительность nn.Graph

  • По сравнению с версией 0.5.0, nn.Graph версии 0.6.0 обучается на 10 % быстрее на таких моделях, как ResNet AMP и WDL.
    • Производительность новой версии функции динамического и статического преобразования все еще нуждается в оптимизации.Недавно была оптимизирована производительность nn.Graph в высокочастотных итеративных сценариях обучения.
    • Переработаны и реализованы инструкции планирования nn.Graph, реорганизована логика взаимодействия между Actor Graph и Eager VM, а выполнение Graph и Python ввода/вывода Tensor во время выполнения стало максимально асинхронным и параллельным.

2. Глубоко оптимизировать производительность Eager

  • По сравнению с версией 0.5.0 скорость обучения OneFlow Eager версии 0.6.0 значительно улучшена в сценариях с небольшими партиями.
    • Глубоко оптимизировать логику планирования виртуальных машин
    • Оптимизация получения/установки элемента
    • Оптимизировать тензор.numel()
    • Оптимизировать oneflow.Size()

3. Глубокая оптимизация работы оператора

  • Сосредоточены на оптимизации некоторых операторов, которые влияют на узкое место в производительности новой модели, что значительно повышает скорость обучения связанных моделей.
    • Добавлен оператор серии сплавленных дропаутов
    • Добавлена ​​деконвекция группы версий ЦП и оптимизирована производительность.
    • Добавлены реализации версии на месте для следующих операторов: mul, hard_sigmoid, sin.
    • Производительность linalg.vector_norm оптимизирована при ord=2.0, что в 4 раза выше, чем раньше.
    • Глубоко оптимизированная операция LayerNorm, производительность которой значительно выше, чем у реализаций PyTorch и Apex.
    • Реализовать автоматическое продвижение типа данных op

4. Глубокая оптимизация использования памяти Eager

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

5. Добавлено много полезных функций в статический график nn.Graph

  • Абстракция статического графа nn.Graph добавляет множество новых функций, включая эффективность, отладку, полноту и простоту использования в дополнительных сценариях статических графов:
    • Для облегчения отладки статических графиков мы добавили:
    • режим отладки поддерживает graph.debug(1) для вывода дополнительной информации о составе
    • Укажите переменную среды: ONEFLOW_DEBUG_PASS, чтобы отобразить изменения в графе вычислений до и после оптимизации графа во время компиляции.
    • Добавьте удобочитаемую информацию об именах потоков в профиль Nsight, чтобы облегчить поиск и получение местоположений целевых ключевых потоков.
    • Расширенные тестовые примеры для большого количества статических графов: добавлены автоматические тесты nn.Graph, сопровождающие тесты Eager.
    • Для поддержки развертывания модели (обслуживания) с использованием nn.Graph предоставляются интерфейсы graph.save() и load().
    • Чтобы ускорить AMP на графических процессорах с использованием TensorCore, предоставляется переменная среды: ONEFLOW_ENABLE_NHWC используется для указания того, что операторы, связанные с CNN, выполняют последний расчет каналов.
    • Сделайте так, чтобы nn.Graph поддерживал больше сценариев использования:
    • Поддержка разреженного оптимизатора обновления для разреженного обновления параметров в сценариях WDL.
    • Поддержка использования Sequential, ModuleList, ModuleDict, ParameterList, ParameterDict этих контейнеров nn.Module в nn.Graph
    • Поддерживает создание оптимизатора в функции инициализации nn.Graph.
    • Поддержка нескольких параметров в nn.Graph для совместного использования одного и того же тензора.
    • Поддерживает сценарии использования, в которых фактическое количество процессов превышает количество устройств GPU.
    • Учитывайте Inplace при выводе SBP Consistent в nn.Graph и поддерживайте больше выполнения Inplace.

6. Добавлено большое количество операторов

  • Новые операторы: cumsum, meshgrid, linspace, диагональ, moveim, roialign, nms, arccos, roll
  • Новые операторы: masked_fill, floordiv, glu, pool1d, pool2d, pool3d
  • Добавлены операции разворачивания и складывания.
  • Реализовать автоматическое продвижение типа данных op
  • Реализовать операцию расширения и повторения
  • В настоящее время модель библиотеки torchvision можно переключать одним щелчком мыши, импортируя oneflow как torch.

7. Поддержка определяемого пользователем autograd.Function

  • Пользователь может настроить autograd.Function как Torch

8. Обеспечить основные функции обслуживания

  • Поддержка OneFlow в качестве серверной части Triton для обеспечения функции обслуживания модели.

9. Добавлены некоторые функции Тензора (ConsistentTensor)

  • Поддержка тензоров для использования 2-D SBP для представления произвольного гибридного параллелизма (например, линейная операция с параллелизмом данных в направлении строки матрицы устройства и параллелизмом модели в направлении столбца)
  • Поддерживает тензорное преобразование из произвольного 1-D SBP в 2-D SBP (сеть состоит из сочетания 1-D параллельных и 2-D параллельных)
  • Поддержка построения ConsistentTensor из numpy
  • Добавлен oneflow.from_numpy()
  • Добавлен oneflow.numel()
  • Добавлен тензор.expand_as() ###

Реализация модели

Выпуск потока 0.0.54

(Ссылка на сайт:GitHub.com/oneflow-Inc…

1. Реализована богатая визуальная модель предобучения

классификация изображений

  • Серия CNN: ResNet, DenseNet, VGG, ResNext, EfficientNet и т. д.
  • Серия Vision Transformer: ViT, PVT, Swin-Transformer и т. д.
  • Серия Vision MLP: Mlp-Mixer, Res-MLP, g-MLP и т. д.

Обнаружение цели

  • SSD, SSDLite
  • Faster R-CNN
  • RetinaNet

Сегментация изображения

  • FCN
  • DeepLabV3

передача стиля

  • StyleNet: поддерживает стили: эскиз, конфеты, мозаика, rain_princess, undie

undie2. Реализованы операции увеличения данных в соответствии с torchvision.

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

3. Согласована реализация расширенной аугментации данных в timm.

Расширенные операции по дополнению данных, реализованные в flowvision.data

  • Mixup
  • CutMix
  • Random-Erasing
  • AutoAugment
  • RandAugment
  • AugMix

4. Отделите модуль «Слои» отдельно и предоставьте блок plug-and-play при построении модели.

модуль flowvision.layers.attention

  • Реализованы модули внимания plug-and-play, такие как Non-Local, SELayer, CBAM, BAM, ECA и т. д.

модуль flowvision.layers.blocks

  • Предоставляет такие модули, как PatchEmb, Pooler, ConvBnAct, которые можно использовать при построении моделей.

модуль flowvision.layers.regularization

  • Модули регуляризации, такие как drop-path, drop-block и стохастическая глубина, предназначены для улучшения способности модели к обобщению.Кроме того, существуют отдельные файлы, такие как активация и weight_init, для предоставления таких компонентов, как функции активации и методы инициализации.

Преобразование OneFlow-ONNX

Набор инструментов для обновления OneFlow до формата модели ONNX

  • Модель OneFlow, поддерживающая режим ЦП и ГП, в модель onnx
  • Добавлены тестовые примеры операторов и моделей для согласования всех моделей классификации в библиотеке OneFlowVision.
  • Исправлены ошибки, связанные с onnx-runtime во время преобразования PReLU.
  • Совместимость с библиотекой onnx-runtime версии 1.9.0 и выше.
  • Выпустите версию 0.5.4 пакета oneflow-onnx, pip установите oneflow-onnx, чтобы испытать

Добро пожаловать, чтобы загрузить и испытать новое поколение среды глубокого обучения OneFlow с открытым исходным кодом:GitHub.com/oneflow-Inc…