Сегодня исполняется 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…