Большой брат прокомментировал Tsinghua Jittor, что это за структура глубокого обучения?

глубокое обучение

Нажмите выше"Машинное обучение и генеративно-состязательные сети", обратите внимание на "звездочку"

Получите удовольствие, удовольствие, передовые галантерейные товары!

Как оценить самостоятельно разработанную среду глубокого обучения — Jittor, выпущенную Университетом Цинхуа?\

20 марта 2020 года среда глубокого обучения, разработанная Университетом Цинхуа, была официально открыта. Произведено Лабораторией графики факультета компьютерных наук Университета Цинхуа под названием Jittor, китайское название Jitu. - Знать проблему

Ууху. Call.com/question/38…


Автор: Цзя Янцин

Ссылка на сайт:Ууху. Call.com/question/38…

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

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

Некоторые инженерные моменты, которые можно увидеть:

  • Реализован более классический граф DAG, выполнено слияние и различные проходы по графу.

  • Из реализации op выбираются мелкозернистые ops, такие как bcast, reduce и т. д., а затем таким образом формируются метаops, например свертка:GitHub.com/JIT Tor/Ji Tingting…

  • Стоит отметить, что на заре XLA также проводилось исследование гранулярности операций.В настоящее время некоторые выводы заключаются в том, что общие операции, такие как свертка и гемм, если они реализованы с помощью мелкозернистых операций, то эти мелкие -зернистые операции Выполнение jit в операционном графе будет большой проблемой для производительности (за исключением встраивания константного значения, переупорядочения циклов и т.д. в код), теряется много подробной информации о вычислении, что повлияет на последующие Fusion Pass имеет большие проблемы.

    В настоящее время общий метод выбора платформы автоматической компиляции фактически состоит в выборе двух слоев IR, один для вычисления графа DAG, а другой для математического выражения (например, bcast, reduce, наиболее типичным является Halide). Может стоит посмотреть.

  • Компиляция выполняется путем маршрутизации двоичных вызовов, таких как nvcc и gcc, и последующего чтения вывода компилятора (GitHub.com/JIT Tor/Ji Tingting…library — это относительно короткий и быстрый способ перехода от внешнего интерфейса к компиляции.

  • Небольшой совет: на самом деле в С++ есть несколько утилит demangle (GitHub.com/py torch/Пак Ючон…Строка помещается в код (https://github.com/Jittor/jittor/blob/85d9ccc004b83ad2d83769ffd1803fb038a17264/src/jit_compiler.cc#L59)

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

Некоторые приятные инженерные детали:

  • Есть дизайн логов и флагов (надо ли изучать google glog и gflags?), и в коде сделано больше логов, что является очень важной частью реализации проекта.GitHub.com/JIT Tor/Ji Tingting…
  • Поскольку время компиляции относительно велико, я подумал о кэшировании:GitHub.com/JIT Tor/Ji Tingting…
  • Небольшая изюминка: код для установки цвета через спецсимвол терминаGitHub.com/JIT Tor/Ji Tingting…Напоминает мне время, когда BBS заливала воду для написания файлов подписи, ха-ха.

Фигурка из пиратов Мизуки

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


Автор: Ян Цзюнь

Ссылка на сайт:Ууху. Call.com/question/38…

Связанные с полем, также присоединяйтесь к веселью. Я очень рад видеть эту работу.Что касается технологии искусственного интеллекта, отечественные и китайские круги уже предпринимают все более и более активные усилия.

С точки зрения аппаратного обеспечения, есть Da Vinci от HiSilicon, IPU Suiyuan, Cambrian Китайской академии наук (и Hanguang нашей компании) и т. д. В программном обеспечении есть TVM, BytePS, сотрудничающие с Toutiao & Hong Kong University, и команда оптимизации производительности SenseTime (это хорошо, за исключением того, что это не открытый исходный код) основная работа по оптимизации (кажется, что ручная оптимизация не совсем подходит, или более подходит ручная оптимизация + полуручная оптимизация + оптимизация компиляции AI ^-^ ), работа Huawei над программным обеспечением, лежащим в основе ИИ (с точки зрения компиляторов ИИ, Huawei является одной из первых компаний, инвестировавших в Китай), а также на этот раз работа Jittor (и не отставайте от работы Oneflow брата Цзиньхуи). , очень важно иметь возможность упорствовать в хардкорном направлении AI Infra в течение многих лет. Респектабельные усилия), конечно, мы не будем избегать членов семьи. Наша команда Ali PAI также много вложила в направление Ядро ИИ, распространение, оптимизация ресурсов, оптимизация компиляции, сжатие модели, структура обучения с подкреплением, платформа обучения миграции, инструменты помощи в моделировании и т. д. Заинтересованные студенты могут присоединиться, я могу помочь найти нужную команду (здесь полно подозрения в вербовке ^-^).

Вернуться к теме.

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

  • единая память
  • Слияние итераций
  • И попытка создания нового фреймворка для компиляции ИИ

Для унифицированной памяти мы сделали аналогичную функцию в рабочем кластере в прошлом году для оптимизации ресурсов кластера (@SunMinmin), а в учебном задании мы обнаружили, что некоторые пользователи предпочитают эту функцию (мама, мне не нужно беспокоиться о моем больше не работает).Недостаточно видеопамяти, она просто может быть медленнее ^-^).

Кросс-итерационное слияние не поддерживается в известных мне пока ИИ-фреймворках (конечно, такого эффекта можно добиться, взломав существующий фреймворк), а отсутствие функции кросс-итерационного слияния приведет к потере некоторых интер -возможности минибатч-оптимизации, о которых, если я правильно помню, вроде бы специально упоминалось в работах BytePS в прошлом году (упоминается ли в P3, что образ не глубокий, но по сути родственный).

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

В целом, это ценится. Далее я выскажу некоторые другие комментарии:

  1. С точки зрения технологических инноваций, возможно, еще предстоит пройти долгий путь. Мое текущее наблюдение за Jittor заключается в том, что я проделал большую работу по системному проектированию.Если я смогу разбить различия в производительности по сравнению с некоторыми существующими эталонными тестами фреймворка на конкретные точки инноваций в системе, другим студентам может быть более полезно понять Jittor. предоставленные различия, которые находятся на уровне реализации системы и на уровне принципов проектирования, также могут лучше расширить его влияние;

  2. У Operator Fusion есть некоторая поддержка, но все же есть некоторые ограничения, и он должен работать лучше. Например, в текущей реализации кода видно, что при встрече с такими инструкциями, как редукция/трансляция, не отвечающими характеристикам досадно-параллельных, слияние будет прерываться, для более сложных расчетных графов это существенно повлияет на гранулярность слияние. Если студенты Jittor R&D заинтересованы, приглашаем прийти и пообщаться.Мы проделали определенную работу в этом отношении (@龙国平) и достигли определенных результатов в производственной среде.

  3. Что касается разделения генерации исследования расписания и описания оператора, я все еще ценю вкус, который команда Jittor переработала набор универсального языка описания вычислений.Когда мы занимались компиляцией и оптимизацией ИИ, мы хотели сделать что-то вроде Проблема все еще ограничено давлением промышленного интерфейса на производственную среду, и это не так радикально Я по-прежнему предпочитаю разрабатывать набор упрощенных правил описания расписания для операторов, интенсивно использующих память, и напрямую следовать TVM/Halide для операторов, интенсивно использующих вычислительные ресурсы. система. Но в то же время я хотел бы отметить, что стоимость создания колеса с нуля — это много инженерно-строительных работ, которые требуют относительно крутой кривой роста. Например, если взять в качестве примера общую операцию сокращения в глубоком обучении, то в CUDA есть по крайней мере три различных исполнения (атомарное/деформационное перемешивание/общая память), которые подходят для реализации разных контекстов. естественно описано в Jittor? И если вы хотите поддерживать специальные аппаратные вычислительные блоки, такие как TensorCore, как покрыть описание вычислений?

  4. Кое-что о JIT-компиляции. Если я правильно понимаю, в концепции дизайна Jittor, учитывая проблему динамической формы (пожалуйста, укажите, если это не точно), я думаю, что это довольно хорошо. Поскольку одной из проблем JIT является накладные расходы времени компиляции, потому что, в отличие от AoT, накладные расходы компиляции JIT будут напрямую отражаться на выполняющемся процессе.Если проблема динамической формы не обрабатывается должным образом, легко съесть накладные расходы на JIT-компиляцию. В связи с этим мы также предприняли несколько интересных попыток, исходя из потребностей производственной среды, что является хорошим решением данной проблемы.Если вам интересно, милости просим к общению :)

  5. В качестве ИИ-фреймворка есть много вещей, которые нужно учитывать, помимо реализации некоторых интересных идей и примеров прогона процесса выборки модели, есть еще много деталей. Как поддерживать распределенный? В распределенных есть разные варианты, как поддерживать Data-parallelism, Model-parallelism., Pipeline-parallelism? Как поддерживать эффективную связь обучения и вывода (удаление лишних узлов, гарантия экспорта динамической семантики вычислительных графов и т. д.)? Как поддерживать некоторые работы по оптимизации модели (например, квантование, обрезку и т. д.) в этой структуре? Что же касается связанного с этим экологического строительства, то это большая работа.

  6. Здесь есть несколько хороших идей. Если мы сможем расширить существующую работу, мы сможем оказать большее влияние. Я имею в виду как фактическое влияние приложений, так и влияние исследований. Например, функция унифицированной памяти, добавленная в ядро ​​TF или PyTorch, будет очень приятной фишкой. Интеграция между итерациями немного сложна.Для сильного сообщества нелегко быть принятым, но у меня есть некоторые оговорки относительно сквозных преимуществ, которые может принести интеграция между итерациями (исправления также приветствуются). Что касается попытки скомпилировать фреймворк с JIT, то лично я считаю, что идеи Джиттера перекликаются с TVM, и в фреймворке нет принципиального противоречия. TVM (например, добавление некоторых систем описания вычислений/графика вклада, я лично чувствую

    ???

    Это вклад приветствия, такой как ^-^), который может создать эффективное столкновение с коллегами в этой области и может привести к более впечатляющим результатам. И, возможно, в процессе внесения этого вклада вы обнаружите, что некоторые проблемы были решены лучше в существующей работе, поэтому вы можете потратить свою энергию на более интересные и инновационные проблемы.

В конце концов, я все еще ценю работу команды Jittor и с нетерпением жду ее лучшего будущего.


Публичный аккаунт недавно рекомендовал прочитать:

GAN существует уже 6 лет! Пришло время для инсульта! 

Обзор руководства для начинающих | Слишком много моделей GAN, не знаете, какую выбрать?\

Были загружены сотни документов GAN! С недавним обзором генеративно-состязательных сетей!

MSG-GAN CVPR2020: простая и эффективная SOTA\

Преобразование позы CVPR2020 GAN: кто может разделить изображение?\

Немного преувеличено, немного искажено! Взгляните на то, как эти GAN преувеличивают и карикатурно изображают лица!\

Взгляните на ГАН тонкого знания сверхвысокого разрешения! С более чем 70 статей для загрузки!\

В небе дождь, а у меня его нет! Как насчет GAN для удаления дождя?\

Исправьте свое лицо! Сможет ли ГАН сделать так, чтобы убийце профиля и свинке Пеппе действительно негде было спрятаться?\

Угасание! ГАН прогнозировать?\

Надежные данные — это сложно! Как насчет SSL (полуконтролируемое обучение) в сочетании с GAN?\

Руошуй три тысячи, только бери свою отметку! Как насчет AL (активного обучения) в сочетании с GAN?\

Обнаружение аномалий, как работает GAN?

Виртуальная переодевание! Взгляните на то, что делают эти последние газеты!\

Миграция макияжа лица! Краткий обзор нескольких статей с использованием GAN

[1] Как насчет генерации GAN на медицинских изображениях?

01-Краткий принцип формулы GAN - Маленькие сокровища в железной броне


GAN&CV группа обмена , будь вы новичок или большой парень, сердечно приглашаем вас присоединиться!\

Обсуждайте и общайтесь вместе! Нажмите и удерживайте заметку [Присоединиться к группе], чтобы присоединиться:

Чтобы больше поделиться, нажмите и удерживайте, чтобы подписаться на эту официальную учетную запись:\