Говоря об IR в глубоком обучении (1): концепции

глубокое обучение
  • предисловие

Термин IR часто используется в рамках глубокого обучения. Полное название IR Intermediate Representation, что в переводе с китайского означает промежуточное представительство. Середина означает, что четыре символа можно понять, если их разобрать.Что они означают, когда они объединены? На самом деле эту тему препарировали и обсуждали во многих отличных статьях, но здесь я хочу рассказать о своем понимании IR в глубоком обучении по-другому, без технического жаргона. Может быть, каких-то взаимопониманий нет, и даже могут быть отклонения.

  • определение

Сначала посмотрите определение в вики:

"Промежуточное представление (ПП) — это структура данных или код, используемый внутри компилятора или виртуальной машины для представления исходного кода. ПП предназначен для дальнейшей обработки, такой как оптимизация и перевод. "Хорошее" ПП должно быть accurate - способны представлять исходный код без потери информации - и independent какого-либо конкретного источника или целевого языка. ИК может принимать одну из нескольких форм: структуру данных в памяти или специальный код на основе кортежей или стека, читаемый программой. В последнем случае он также называется промежуточным языком " - Wikipedia

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

  1. Существует также множество IR-структур, в глубоком обучении это Graph-based IR, что связано со спецификой структуры фреймворка глубокого обучения. По сути, среда глубокого обучения представлена ​​графом расчета DAG, поэтому IR на основе графа может в основном удовлетворить потребности.
  1. ИР может иметь несколько стадий, так называемую многостадийность. Также упоминается ниже. Как правило, пользователю отображается IR на уровне графика.

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

  • интерпретировать

ИР - это язык. Язык используется для выражения идей, ИО используется для описания процесса исполнения. Каждый кадр представлен как отдельная страна в мире. Все мы знаем, что в каждой стране есть свой официальный язык, поэтому у каждого фреймворка есть свой набор языков, то есть IR. Упомянутый здесь IR находится на уровне графа, который считается языком высокого уровня. Если есть высокий уровень, будет и низкий уровень, о котором мы поговорим позже. Высокий уровень и низкий уровень здесь — это не то, что мы имеем в виду в нашей жизни, и это не значит, что низкий уровень — это плохо. Расширенный можно понимать как универсальный и простой для понимания. Чем дальше вниз, тем абстрактнее, тем выше стоимость обучения. «Высокий уровень и низкий уровень относительны, и их необходимо рассматривать в сочетании с конкретными сценариями использования».

  • Переводчик: Инструмент преобразования

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

Кажется, что инструмент преобразования как мост связи является очень важным инструментом. Но опять возникла проблема.В мире много языков.Перевести их все невозможно.Нагрузка резко увеличилась. И может быть необходимо постоянно добавлять новые языки, поскольку новые языки продолжают появляться. В это время кто-то предложил нам разработать единый и общий язык.Все будут приходить ко мне, и я сделаю для вас единый перевод.Достаточно, чтобы каждый мог понять мои слова, типа ONNX(Open Neural Network Exchange). Это то же самое, что английский язык является международным языком. Хотя мы не знаем своих языков, мы можем общаться на английском языке. "Некоторые фреймворки напрямую используют onnx в качестве собственного представления без изменения языка". Поэтому большинство инструментов преобразования фреймворков будут поддерживать ONNX в первую очередь и поддерживать onnx. По сути, большинству других фреймворков нужен только onnx. Любая поддержка может быть переведена.

  • Лингвист: Оптимизатор графиков

Инструмент преобразования завершает переход между языками, а оптимизатор графов предназначен для родного языка. Так для чего его нужно оптимизировать? Напомним, что при написании сводного отчета и написании документа первый вариант часто не очень устраивает. Либо содержание избыточно, либо некоторые абзацы не имеют четкого смысла и не отражают суть. Возможно, автор действительно постарался, и даже если он переделывает несколько вариантов, общий вид получается не очень лаконичным и изящным. В это время мы можем попросить профессионалов отполировать его. В это время в дело вступает оптимизатор графа, для входящего описания расчета следует упростить некоторые места, а лишние части удалить. После одной операции вы получаете то, что, по мнению экспертов, является лучшим результатом на данный момент. Но, в конце концов, этот оптимизатор графов все же реализован на основе шаблонов, и он может быть псевдоэкспертом. Все методы оптимизации имеют фиксированные шаблоны. Пока они соответствуют шаблону, определенному самими собой, будут внесены соответствующие изменения. Такой подход может привести к двум ситуациям (это предложение бессмысленно): 1. Результат довольно хороший, 2: Часть выглядит хорошо, а вся статья выглядит неряшливо. На что это похоже? Проведем не очень уместную аналогию: вы отправляете написанный вами документ в магазин модификаций статей, который вы нашли на xbao. На самом деле, это не совсем ручная работа, чтобы помочь вам изменить его. Магазин напрямую загружает его в систему замены шаблонов, разработанную кем-то, кто не знает, кто его разработал. Нажмите три кнопки загрузки, полировки и сохранения. Тогда независимо от того, что будет сохранено, оно будет отправлено непосредственно вам. Конечный результат похож на открытие слепого ящика, я не знаю, сюрприз это или шок.

  • Версия языка: версия IR

Язык предназначен для использования, и по мере того, как он развивается в процессе использования, он нуждается в соответствующей корректировке. Например, в древней поэмеНаложница верхом на красной пыли улыбнулась,этопоездкаКакой звук вы произносите? По крайней мере, когда я был в школе, я научился читатьДжи, но позже был изменен наЦи. "Здесь мы не исследуем причины этого. Нужно ли сообщать всем после внесения изменения? Я изменил это здесь, и я буду использовать это в будущем. Как авторитетный словарь китайского языка, он будет исправлен, и при публикации он будет помечен номером редакции. То же самое верно и для языков в глубоком обучении. Возможно, какая-то семантика больше не применяется и ее нужно удалить. После изменения вы должны сообщить пользователю, какие изменения были сделаны в этой версии и что, наконец, поддерживается.Внешний дисплей — это версия x.x. В то же время новая версия должна быть совместима. Что совместимо? Или тот пример, что упоминался в начале, тогда я его сейчас изучуНаложница Ици (дзи) Хунчэнь смеетсяХорошо? Как правило, не предполагается, что вы ошибаетесь (избегайте сценария экзамена, ориентированного на тестирование). Тогда это совместимо. Совместимость обусловлена ​​соображениями большинства основных пользователей в настоящее время, и многие люди временно принимают и конвертируют их. Но сигнал, принятый новым поколением педагогов, - последний, и постепенно никто не будет использовать старый метод чтения, и, естественно, от него откажутся.

  • Многоступенчатый ИК

Основная цель многоуровневого IR состоит в том, чтобы разбить проблему на несколько шагов для решения, затем сложная проблема разбивается на несколько подзадач для решения. «Когда IR оптимизирован от Graph IR до внутреннего IR, его можно рассматривать как связь компилятора. Поэтому TVM, MLIR и другие фреймворки называют себя компиляторами глубокого обучения». решение подзадач. Проблема с такой идеей решения проблем заключается в том, что все локальные оптимальные решения складываются в глобальное оптимальное решение? ответ отрицательный. Эта проблема была упомянута в статье, опубликованной TVM некоторое время назад об исследовании новых направлений для компиляторов глубокого обучения.

Из-за необратимой частичной потери информации после послойной трансляции возникает граничная проблема между слоями. Подчиненный может принять результат от восходящего потока только одним способом и потерять глобальную информацию. Поэтому для обеспечения глобальной информации требуется взаимодействие между уровнями. Что это обозначает? Вот еще один неуместный пример:

Теперь есть французский текст, пожалуйста, переведите его на китайский.Самый прямой способ, безусловно, - это перевод напрямую с французского на китайский, без посредников для общения и в максимально возможной степени для обеспечения отсутствия искажений. Теперь используйте инструмент перевода и добавьте процесс для перевода, французский-->английский-->китайский (просто играть?). В процессе перевода с французского на английский может быть потеряна некоторая семантика, и результат, полученный при переводе с английского на китайский, может не соответствовать исходному значению. Неуместная часть этого примера заключается в том, что нет понятия высокого уровня и низкого уровня, но тот же момент заключается в том, что этот переводчик поддерживает преобразование только между двумя языками одновременно. То есть, когда вы переходите с английского на китайский, вы не знаете, что такое исходный французский текст.

  • Важность ИК

IR — это правило связи, настроенное фреймворком глубокого обучения, и все общаются через это правило. Без таких правил не может быть общения. И напомним, что большинство компонентов работает по ИК. Статус IR очевиден. Когда фреймворк широко используется, это означает, что его настроенный IR используется массами, поэтому любые изменения в нем могут иметь большое значение.

Когда вам нужно создать новый язык, вам нужно тщательно подумать над следующими вопросами:

  1. Что такое хороший ИК?

    Умение четко и лаконично представить то, что вы хотите выразить, и достичь поставленных целей — это хороший НП.

  1. Как спроектировать ИР?

    1. После рассмотрения IR как языка проблема проектирования IR трансформировалась в вопрос о том, как разработать язык. Нелегко разработать язык хорошо.

    2. Подумайте, почему вам нужно перепроектировать набор IR и какие проблемы вы пытаетесь решить.

    3. Тщательно обдумав это, уточните цель, может ли она быть понята большим количеством людей или требуется более подробное и точное описание.

      Обычно, чем больше вещей вы хотите выразить, тем сложнее будет ИР (это тоже литература по ерунде).

    4. Поймите текущую основную языковую систему и сформируйте общее представление. «Оторваться от существующей системы вряд ли удастся».

    5. Обратитесь к дизайну основных языков, и вам нужно подумать о том, почему они разработаны таким образом, и какое вдохновение они могут вам принести.