?

Log in

No account? Create an account
Лабораторный журнал -- Day [entries|friends|calendar]
Anatoly Levenchuk

[ website | Лабораторный журнал ]
[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Движение как воспроизведение телесных ощущений [25 Apr 2018|12:52pm]
У Антона Климата появился новый текст, в котором он рассказывает о выходе кинестетического/телесного мышления в мышечное действие -- https://vk.com/wall7236650_5456.

В телесном мышлении он разделяет стороны рациональную и чувственную (кинестетическую, Антон намеренно избегает "профессиональных терминов", его заботит дидактика и снижение порога восприятия даже теоретических построений). Особенность тут в том, что движение генерируется из намерения реализовать то или иное ощущение, уже запомненное ранее. И тело приходит в положение, при котором повторяется ранее запомненное ощущение быстро и надёжно -- минуя стадию рационализации. Последовательно разворачивающаяся рациональная мысль для работы с телом медленна. Поэтому с телом работает тот же цикл развития мышления на полном его спектре от формального до образного (только в данном случае образы чувственные, телесные, кинестетические), что прописан в https://ailev.livejournal.com/1390318.html со слов "это в целом соответствует...":
-- тело формальными указаниями приводят в те положения, при которых можно ощутить целевой чувственный паттерн.
-- упражнениями-повторениями это происходит несколько раз, закрепляя связь между формальным языком и чувственным языком
-- далее намерение движения приводит тело в заданное состояние просто при попытке одномоментно (мгновенно, гештальтно) вспомнить ощущение. И тело быстро (в танце, в единоборствах, просто в быту) приходит в желаемое состояние, задействуя все свои несколько сотен мышц. Понятно, что эта скорость недостижима в случае задействования формального мышления и длинных описаний.

Для программистов будет понятней считать, что тело работает на машинном языке телесного ощущения. Команды -- это намереваемые ощущения натяжения кожи, проприорецепции (положения рук-ног-корпуса-головы относительно друг друга), распределения веса на точках опоры. Сначала команды формируются: тело приводится в нужное состояние длинными формальными инструкциями на языке текста, а в сложных случаях тренер просто руками доводит тело до нужных точек или тычет пальцем в те мышцы, которые нужно расслабить. Формирование команды происходит сначала запоминанием конечного набора ощущений в теле -- идёт ли речь о статике-позе, или о динамике смены набора поз -- телесном движении, а потом несколькими циклами повторений приведения тела в нужное состояние до воспроизведения ощущений. Всё, внешний язык задания движения (прежде всего слова, описывающие требуемое движение) стали внутренним языком мнгновенного выполнения, они "откомпилировались", перевелись с "текстового людей" на "телесный мой собственный". После этого можно пользоваться выученным: движение будет точным, заучиваться будет правильное движение, повторений для заучивания будет немного. Скорость обучения при таком подходе потихоньку растёт по мере того, как мышление привыкает обращать внимание на гештальты-ощущения вместо разворачивания традиционного медленного "внутреннего диалога". Любые "голоса" или последовательные разворачивания крайне медленны для управления движениями, нужно привыкать "думать в ощущениях". Тренинг тела оказывается тренингом внимания и контринтуитивного мышления, телесное действие оказывается искусством намеревания ощущений.

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

В лаборатории Антона в AfroFusion (она идёт по понедельникам и средам с 22 часов) мы продолжаем развивать материал курса двигательного фитнеса. В понедельник мы отрабатывали мгновенное обмякание (слово "расслабление" обычно означает не слишком большую степень обмякания) буквально по хлопку, со "стеканием" тела на пол по безопасным траекториям. Ключевое -- "по хлопку", нужно мгновенно вызвать обмякание во всём теле, запомнить это ощущение.

Но самое интересное было потом: когда тело привыкло обмякать с последующим падением, нужно было обмякать точно так же всем телом, но удерживая заданную позу. И оказалось, что в любой позе у нас огромное число лишних напряжений, абсолютно ненужных. И обнаруживаются они легко -- достаточно дать намерение своему телу расслабиться, и оно мгновенно расслабляет ненужное. Удивительное ощущение, когда ты освобождаешься от лишних усилий. Сгибатели перестают работать против разгибателей, и наоборот. Движения становятся легче, энергии тратится меньше, но амплитуда движений после этого растёт. Все эти "зажимы в теле" действительно есть, и они действительно мешают двигаться. Будь я Антоном, я бы давал это упражнение на расслабление всего тела в первый же час тренинга, уж больно оно показательно в плане обнаружения лишних "зажимов". Без этого упражнения пытаешься расслабить не все зажимы, а только вокруг напряжений, которые хорошо ощущаешь. А с этим упражнением вдруг расслабляются те места, о которых и не думал -- но хорошо замечаешь вдруг, насколько они расслабляются, насколько были напряжены мышцы, которые ты просто не замечал до этого момента.

Конечно, профессионально двигающиеся люди после десятка лет практики приручают своё тело к экономному расслабленному движению, доходят до этого своим умом (в том числе своим телесным умом). Но фишка в том, чтобы такое же качество движения получить и непрофессионалам, получить быстрее чем за десять лет -- за год-два. И потом просто пользоваться. Два потока тренинга двигательного фитнеса прошли более чем успешно. Третий поток начнётся уже 12 мая 2018, не прозевайте начало: http://system-school.ru/event/kurs-dvigatelnyi-fitness-2018-05-12/.
post comment

Сервировка моделей (model serving) [25 Apr 2018|07:38pm]
Сервировка моделей (model serving) заставляет ещё раз внимательно поглядеть на происходящее в интеллект-стеке:
-- в deep learning озаботились выдачей моделей внешним потребителям
-- в GPU неминуемо создание чего-то типа "многозадачной и многопользовательской операционной системы для GPU".
-- в системное мышление нужно срочно добавлять работу с коннективистскими моделями, вплоть до заимствования терминологии

Речь идёт об ещё одном специфическом уровне интеллект-стека: model server (сервер модели) как программный слой, предоставляющий доступ к обученной модели со стороны других модулей когнитивной архитектуры. Коннективистскую модель нужно сначала обучить, потом компилировать для какой-то аппаратной архитектуры (например, использовав NVIDIA TensorRT), потом её нужно сделать доступной извне для запросов на исполнение -- сервировать. Об этом уже появился ряд статей и презентаций: январская 2018 "The Rise of the Model Servers. New Tools for Deploying Machine Learning Models to Production" (https://medium.com/@vikati/the-rise-of-the-model-servers-9395522b6c58), мартовская 2018 презентация Model Serving for Deep Learning от AWS (https://www.slideshare.net/hornsby/model-serving-for-deep-learning) и т.п.. Это очень хороший тренд, он крайне радует. Его появление означает, что обученные нейронные сети/коннективистские модели стали полезными и нужно выдавать внешним пользователям (а не только самим разработчикам, обучающим модели) интерфейс сервиса по запуску этих моделей на исполнение. Нейросетки выходят в люди, буквально. Ешьте ваши модели, сервировано.

Пикантность ситуации задаёт то, что в deep learning для сервировки моделей набирают силу serverless architectures (коротко в https://martinfowler.com/bliki/Serverless.html и более глубоко в https://martinfowler.com/articles/serverless.html). Так что по факту речь идёт о serverless model serving (мне это напомнает ещё один такой же странный термин про model-free learning и результирующим model-free models).

Термины были известны давно, но всплеск использования терминологии пришёл от сотрудников Amazon, которые занялись проблемой в октябре-ноябре 2017 -- использование Lambda на AWS для нейронных сеток. Вот "Serving deep learning models in a serverless platform" (октябрь 2017, апдейт февраль 2018), https://arxiv.org/abs/1710.08460. Вот пример типичной работы октября 2017, Serving PyTorch Models on AWS Lambda with Caffe2 & ONNX, https://machinelearnings.co/serving-pytorch-models-on-aws-lambda-with-caffe2-onnx-7b096806cfac. Вот буквально через месяц в ноябре 2017, Serverless serving of TensorFlow models with AWS lambda, https://github.com/Vetal1977/tf_aws_lambda. Сервировка моделей и сегодня активно продвигается специалистами Amazon, так что этот термин не забудется. Вот самое свежее их выступление по model serving, от 24 апреля 2018 -- https://www.youtube.com/watch?v=x1yvKogYAB4

Конечно, ключевая (enabling) тут технология -- ONNX (и, возможно, когда-нибудь будет и NNEF, но о нём что-то последнее время не слышно -- https://ailev.livejournal.com/1395131.html). Сервировка моделей в глубоком обучении -- это как раз и есть оформление массового доступа к откомпилированной сетке-модели. Если есть стандарт, в котором можно передать модель с серверов, на которых она обучалась на сервера, где она будет сервирована, то дальше всё просто -- речь идёт о хорошо оформленном уровне технологического интеллект-стека.

Важная технологическая задача тут -- погружение model serving на современную аппаратуру, то есть в GPU. В связи с особенностями GPU, там можно запускать сразу много моделей, и model serving должно это учитывать. Оригинальная статья от Amazon AWS как раз затрагивает этот вопрос, рассматривая возможные пути развития бессерверной сервировки моделей -- https://arxiv.org/abs/1710.08460. Текущая задача, похоже, научиться использовать одну железку GPU как для обучения, так и для сервировки множества моделей. Вот только парочка работ из этой области:
-- обучение через нейроэволюцию: все игры Атари за 4 часа на декстоп-компьютере с видеокартой (нейроэволюционеры из Uber продолжают жечь: https://eng.uber.com/accelerated-neuroevolution/, прошлая серия этого приключения была в "Эра глубокой нейроэволюции, с 2017г" https://ailev.livejournal.com/1395639.html). Рецепт один и тот же: сначала сажаем вычисления на GPU уж как можем, а потом оптимизируем эту посадку: подхакиваем весь технологический стек, чтобы он лучше учитывал особенность аппаратуры самого нижнего уровня. Результат: на одной видеокарточке NVIDIA обучается сразу множество моделей. Всё это уже в opensource.
-- Nv-Wavenet, отданная NVIDIA в open source reference implementation of a CUDA-enabled autoregressive WaveNet inference engine, https://devblogs.nvidia.com/nv-wavenet-gpu-speech-synthesis/. Результат -- речь с частотой дискретизации 24kHz может одновременно (партией, batch) генерироваться в одном GPU на 26 моделях. Это работа такого же типа, что и по предыдущей ссылке на разгон нейроэволюции: просто адаптация к нижележащему аппаратному уровню.

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

Системный подход -- это прежде всего работа с разнородными моделями. Чтобы из дисциплины он стал практикой, нужно поддержать его инструментарием. Инструмент системного мыслителя -- это моделер, и чаще всего это связывалось с "классическими" системными моделями:
-- системная динамика, system dynamics (упрощённый язык моделирования систем, в которых много откликов/feedbacks с задержками -- а соответствующие дифуры решает компьютер), https://en.wikipedia.org/wiki/System_dynamics.
-- системное моделирование как имитационное моделирование (simulation) мультифизики на акаузальных языках вроде Modelica (http://modelica.org/). Мультифизика это и есть "системность": множество разных моделей одной системы, все модели работают взаимосвязанно. Акаузальность означает, что каждая разная "физика" (и прочие view) на систему моделируются своим набором дифуров, а компьютер решает получающуюся систему дифуров. Тем самым в моделях возможны модули, в которых разрабатываются отдельные "физики" (электрические, механические модели как системы дифуров), и полную мульти-модель из всех систем дифуров сделает компьютер. Ограничение системной динамики на виды дифуров тут снято, появился полнотьюринговый универсальный язык моделирования, который включает в себя работу со временем -- важнейшее свойство для системного моделирования. Этот подход продолжает развиваться в направлении как отказа от Modelica и постепенному переходу к программированию на обычных расширяемых языках программирования -- Julia (https://ailev.livejournal.com/1366789.html), так и наоборот -- использованию "системных моделей" на Modelica из обычного языка, например Wolfram (с версии 11.3, см. раздел "системное моделирование" в https://habr.com/company/wolfram/blog/353972/). Первый подход снимает ограничение по языку, второй подход позволяет использовать множество уже наработанных в Modelica инженерных/физических библиотек.
-- моделирование MBSE, которое сводится к архитектурному моделированию на языках прежде всего SysML и AADL, а далее Capella и даже ArchiMate 3.0 (https://ailev.livejournal.com/1422923.html). Чтобы не держать основные архитектурные решения в голове, их оформляют как графические или текстовые (AADL имеет штатное текстовое представление, не только графическое!) модели. Правда, в отличие от системной динамики и системного моделирования на Modelica, эти модели нельзя передать на исполнение -- их нельзя сервировать (model serving). Много лет разговоры про "исполняемые архитектуры" остаются разговорами, а хотелки -- хотелками.

Вот эта сервировка моделей, которая недоступна для моделей MBSE и является предметом бурного развития на ещё одном сорте моделей -- коннективистских моделей из deep learning. В отличие от "системных моделей" любого сорта их не разрабатывают/программируют/составляют/моделируют, а их "выучивают" (train). А затем их задействуют в выводе (inference). Для обеспечения запросов к модели её нужно засунуть в какой-то сервер (server), чтобы она смогла выдать полезное поведение на внешнем интерфейсе -- это и есть "сервировка модели", буквально "подача на блюдечке с голубой каёмочкой". Как написано в Oxford dictionary, serving -- a quantity of food suitable for or served to one person. И хотя в model serving явно отглагольное существительное, обозначающее обёртку модели в какой-то сервер, все эти значения связаны: одно вычисление с моделью может быть отгружено/сервировано для кого-то одного запросившего это вычисление.

У меня был когда-то список критериев оценки софта для моделирования http://ailev.livejournal.com/1041274.html. Его давно пора бы обновить, ибо современные моделеры уже более-менее полно этим критериям соответствуют (см., например, https://www.visual-paradigm.com/editions/). Но вот можно начинать добавлять к этим критериям возможности по сервировке моделей -- и отнюдь не только публикацию текстовых или графических моделей в интернете, но и какой-то запуск моделей на исполнение (в простейшем случае -- проверка корректности модели, в более сложных случаях какие-то другие вычисления по модели -- при этом для одной модели возможно ведь много разных запросов, много разных вычислений, плюс вычисления делаются с какими-то входными параметрами).

Итого:
-- терминология моделирования (обучение, компиляция моделей), понимание исполнимости моделей (разделение работ по model training и compilation от работ по inference), инструментарий для обеспечения модульности моделей (доступа к исполнимым моделям как к сервисам, т.е. model serving) сегодня развиваются быстрее всего в machine/deep learning.
-- когнитивные архитектуры будут не столько монолитными сервисами, сколько реализуемыми по бессерверной архитектуре, но с активным использованием концепции model serving. Всяческие lifelong learning и multitask learning никак этого не меняют, хотя и привносят свои нюансы.
-- новая вычислительная архитектура с GPU (https://ailev.livejournal.com/1416697.html) потребует перетряхивания всего софтверного стека, придётся подумать о многозадачной многопользовательской операционной системе -- хотя не факт, что это именно так будет называться.
-- в системном мышлении и системной инженерии нужно всячески заимствовать эти современные наработки по моделированию. Опора только на работы группы AtlanMod/Model-driven engineering (http://web.imt-atlantique.fr/x-info/atlanmod/index.php?title=Main_Page) и прочих любителей "формального моделирования" с игнорированием новых коннективистских моделей -- это путь в тупик истории. Напомню, что я уже писал про коннекционистскую проблематизацию системного подхода https://ailev.livejournal.com/1252230.html, и понимание происходящего с модульностью коннекционистских моделей (а сервировка модели-модуля имеет к этому непосредственное отношение) ключевое для становления очередной версии системного подхода. Ну, или системные мыслители в ближайшую пару лет хлопнут ушами, и очередная версия мышления с использованием многомасштабного (уровни системы) мегамоделирования (мета-модели -- это использование priors, http://ailev.livejournal.com/1305176.html, мультимоделирование -- это междисциплинарность с merge онтологий в многомерном пространстве смыслов) на всём спектре мышления (https://thpectrum.livejournal.com/8785.html, https://ailev.livejournal.com/1390318.html) уже будет называться не системным подходом, а как-нибудь иначе. Ну, мы за термины не держимся, просто нужно понимать, где фронтир мыслительных практик. И этот фронтир не в хитрых способах мышления человека, в хитрых способах мышления коллектива людей и машин. Жизнь опять поменялась.
6 comments|post comment

navigation
[ viewing | April 25th, 2018 ]
[ go | previous day|next day ]