23 июня

Подкаст: Build 2020 глазами инсайдера — ИИ, суперкомпьютеры, нейросети и Linux на Windows

ПрограммированиеРазработка под WindowsИскусственный интеллект
В новом выпуске подкаста Habr Special — Дмитрий Сошников, облачный адвокат Microsoft, который расскажет все о прошедшей мегаконференции айтишников Build 2020

Запись подкаста вы можете послушать здесь.
Тайм-коды:
Для тех, кто предпочитает читать, мы подготовили расшифровку.

Дима, кто такой облачный адвокат? И как ты оказался в Microsoft?
Microsoft — большая компания в Америке, где сидят какие-то люди, разрабатывают продукты. Моя задача — обеспечивать этим людям обратную связь с разработчиками в России. И доносить до российских разработчиков, что технологии Microsoft — замечательные, прекрасные, вдохновлять на использование этих технологий.
Вообще, в Microsoft я уже 13 лет. Раньше моя позиция называлась «евангелист». Это почти то же, что облачный адвокат, еще одно модное слово. В перерыве между адвокатурой и евангелизмом занимался разработками в области искусственного интеллекта. Мы делали пилотные проекты для больших европейских компаний, приезжали на неделю и создавали какой-то proof of concept.
Еще одно модное слово вверну. Получается, что ты такой особенный деврел?
Да, это то же самое, от английского developer relations. То есть человек, отвечающий за связи компании с разработчиками. Моя задача — чтобы все разработчики в России были счастливы, используя технологии Microsoft. Под разработчиками имеются в виду и студенты, и программисты в компаниях, и сами компании, и ученые. Я, например, много работаю с университетами, со студентами.
Круто, мы тут любим, когда все на пальцах нам объясняют, самыми простыми словами. Давай перейдем к Build 2020. В этом году конференция впервые прошла полностью в онлайн-формате. Как вы на это решились, что по посещаемости, как вы это увидели изнутри?
Ситуация была сложная, многие крупные компании начали отменять конференции из-за коронавируса. Но Microsoft пошел другим путем. Мы решили перевести мероприятие в онлайн-формат — и не зря. С точки зрения посещений цифра, естественно, увеличилась: Build стал более доступным, в нем смогли поучаствовать все желающие.
Бесплатно?
Да, бесплатно. Виртуальных участников было очень много. К тому же они могли участвовать не только как слушатели, но и как докладчики. Не уверен, что поехал бы на большой, глобальный Build. А так мне удалось сделать два доклада, рассказать про российские разработки в области искусственного интеллекта. Онлайн-формат пошел всем на пользу.
Какова была общая посещаемость в цифрах?
Не очень хорошо знаком с официальной статистикой. Проблема оценки посещаемости таких онлайн-мероприятий достаточно серьезная: нам важно понять, что человек это действительно прослушал, осознал, а не просто включил фоном и ушел готовить себе ужин. Как правило, цифры очень большие, но к ним нужно относиться аккуратно. Я больше доверяю отзывам конкретных людей, которые сказали: «Да, мы были, нам понравилось, мы бы никогда не смогли поучаствовать в этой конференции, если бы не онлайн-формат». И таких отзывов я слышал достаточно много.
Есть некоторые сложности в таком формате — это понятно, он не совсем привычен. Было что-то, что не удалось? Или, наоборот, получилось особенно хорошо?
Иногда после доклада за кружкой пива человек может сказать что-то более интересное, чем-то, что он рассказывал под запись многомиллионной аудитории. Но неформальное общение сложно перенести в онлайн-формат. Видимо, в рамках Build такая задача не ставилась: конференция большая, сложно создать условия для камерных бесед. Хотя некоторые попытки были. Например, в специальной секции, посвященной Восточной Европе и России, проводили круглые столы с разработчиками и организациями, которые с помощью технологий помогают бороться с эпидемией. Получился чуть более камерный формат, потому что участников было 50 или 100, между ними возможен какой-то диалог. Но это, конечно, не диалог за чашкой чая после доклада. Наверное, выстраивание такого диалога — задача более мелких, региональных конференций.
Какова вероятность, что в будущем у Microsoft и у других компаний конференции плавно перетекут в онлайн? Или это не так живо, не так остро, «химии» не возникает, о которой ты говорил?
«Химии» не возникает, это правда. Вообще, я думаю, что в онлайн могут перетечь многие процессы. Например, образование: сейчас все студенты слушают лекции дома. Иногда вместо своих преподавателей они идут слушать курсы на Coursera, и не исключено, что они там останутся. С конференциями примерно такая же ситуация: возможно, это действительно останется с нами надолго. Build показал, что можно эффективно донести информацию в онлайн-формате. Конечно, что-то потерялось, и нужно понять, как это можно восполнить. Или со временем люди привыкнут к онлайн-форматам и уже не будут ожидать такого теплого общения? Сложно говорить только с позиции Microsoft, все общество движется в направлении онлайн. В этом плане очень хорошо, что наш эксперимент прошел успешно. При этом времени на подготовку было мало: за полтора месяца нам удалось перестроить и конференцию, и все продуктовые анонсы.
Да, вынужденная изоляция показала нам, что онлайн не такой страшный и все мы — живые люди. Вот ко мне кот периодически забегает, если будет внезапное «мяу» — ну что поделать, такова жизнь. Не нужно вылизывать до полнейшего блеска такие мероприятия. Это самое классное, как мне кажется.
На Build специально спикеров предупредили: если вдруг у вас кот бегает или дети входят в комнату — это хорошо, это создает human touch, не надо с этим бороться. Более того, в некоторые из ключевых докладов, которые были предзаписаны, вставляли такие моменты с входившими детьми — в виде шутки, для создания атмосферы, для более теплого общения. Это такой спонтанно возникший элемент онлайн-культуры, который позволяет сделать ее более человечной.
Ты говорил, что фидбэк — самый адекватный способ понять, успешно ли все прошло. Расскажешь о самых ярких комментариях по итогам Build?
Это отзывы тех, кто иначе не мог бы попасть на Build. Многие никогда бы не поехали в США. А теперь для людей из всех регионов России стало возможным полноценное участие в программе. Build и раньше в каком-то виде транслировался, но теперь, когда стало понятно, что все находятся в одинаковой ситуации, у всех появились равные шансы на общение, на полноценное участие. Это очень важно, такие отзывы я слышал.
Еще хотел бы добавить, что огромная нагрузка легла на Microsoft Teams, где велись все трансляции. При этом все клиенты Teams тоже спешно переходили в онлайн, но платформа справилась с нагрузкой. Она продолжает справляться, туда оперативно добавляются новые фичи. Это показывает, насколько быстро Microsoft удалось отреагировать на ситуацию.
Перейдем к техническим штукам. Самым интересным из показанного на Build с точки зрения такого дилетанта, как я, стал суперкомпьютер для обучения ИИ. Что это за комп с 285 тыс. процессорных ядер и 10 тыс. графических карт, для чего он Microsoft?
Этот суперкомпьютер создан в сотрудничестве с OpenAI — компанией, которая занимается искусственным интеллектом. Машину разрабатывали для reinforcement learning. Это обучение с подкреплением, обучение на каких-то симуляциях. В таких задачах очень много данных, потому что данные создаются по ходу экспериментов. Другое направление — модели, связанные с созданием общего искусственного интеллекта, AGI (artificial general intelligence). В отличие от традиционных моделей, которые обучаются для конкретной небольшой задачи вроде распознавания изображения, AGI — сложные модели, состоящие из цепочки более простых. Для обучения artificial general intelligence требуется на порядок больше ресурсов — таких, как этот суперкомпьютер. В облаке Microsoft и так сосредоточены гигантские вычислительные возможности, но это опыт позволяет понимать, как правильно использовать эти ресурсы, в том числе для распределенного обучения, для решения таких сложных задач. Полученная в результате экспертиза будет использоваться для cutting edge исследований, самых передовых в области ИИ.
В какой момент Microsoft поймет, что проект успешный, что он свои задачи выполняет?
У проекта есть две составляющие. С одной стороны, некая исследовательская, направленная на понимание, — насколько умными мы можем делать модели artificial general intelligence. С другой стороны, от подобных исследований всегда есть практическая польза. Например, в последние годы был сделан очень большой прорыв в области естественного языка. Модели типа BERT или Microsoft Turing — это нейросетевая модель языка, она требует больших вычислительных ресурсов для обучения и при этом может использоваться для кучи практических задач, не только для general intelligence. Скорее не для этого, а для решения любых задач, связанных с пониманием естественного языка: выделение сущностей, классификация или генерация текста, ответы на вопросы. Microsoft может продуктизировать эти модели, вставлять в состав своих приложений. Например, есть когнитивные сервисы, которые предоставляют собой уже решенные языковые задачи, готовые предобученные модели. В этом смысле суперкомпьютер явно полезен. Во-первых, на нем тренируются реальные модели, которые потом можно внедрять в продукты. Во-вторых, ведутся исследования, благодаря которым мы начинаем больше понимать и о себе, и об искусственном интеллекте. Так что какой-то точки отсечения здесь нет. Исследования не могут быть неудачными, мы в любом случае больше узнаем о мире.
У партнера в этом проекте, OpenAI, есть своего рода витрина — Dota 2, в которой искусственный интеллект обыгрывает реальных игроков. У Microsoft создание подобной витрины планируется?
Reinforcement learning — очень интересное направление. Многие задачи, которые видны на поверхности, — игровые: Dota 2, шахматы, го… У нас есть Project Malmo в Microsoft Research, где агенты тренируются на прохождении уровней в Minecraft. Это некая открытая платформа для reinforcement learning, с которой можно экспериментировать. На базе этой платформы, например, проводятся соревнования на конференциях для изучения качества моделей. С другой стороны, reinforcement learning постепенно находит применение и в промышленных областях. Возьмем некий конвейер: он управляется сложной системой управления, которую можно сделать более точной и компактной, обучив нейросетевой элемент управления вместо какого-то алгоритмического или запрограммированного. Machine Teaching — похожее направление, которое активно развивается в Microsoft Research. Вместо того чтобы собирать данные для обучения модели, мы генерируем эти данные в ходе работы какого-то запрограммированного симулятора. Обученная на таких данных модель позволяет какому-то устройству функционировать более эффективно в реальной жизни. Обучив модель на симуляторе, мы можем встроить ее в управление какой-то промышленной роботизированной системы. Таких задач возникает все больше. Это достаточно молодое направление исследований, оно находится в рамках того, что делает OpenAI, и близко к reinforcement learning.
Можешь рассказать подробнее о Microsoft Turing и естественных языках?
Почему языки — очень привлекательная область для исследования? Дело в том, что в ИИ всегда не хватает данных для обучения: если сделать модель больше с вычислительной точки зрения, то понадобится больше данных, чтобы ее эффективно обучить. Данные мы либо размечаем руками — тогда это колоссальный человеческий труд, который все тормозит, либо мы берем что-то из свободного доступа. А текст лежит свободно, в интернете его много! Microsoft Turing — языковая модель, то есть нейросеть, которая понимает структуру языка. ИИ понимает, какие слова должны быть вместе, какие смыслы они несут, пытается выделять из этого текста смыслы.
Дальше эту модель можно использовать для очень разных прикладных задач. Простейшая — классификация текста: мы смотрим на письмо и понимаем, спам это или нет. Сложные модели позволяют делать это намного лучше, чем простые, основанные только на статистике ключевых слов. Или мы можем по письму сформировать ответ — это генерация текста. Задачи по генерации текста решаются достаточно хорошо: несколько лет назад сгенерировали математическую статью, которая прошла в престижный научный журнал. Следующая задача — понимание и интерпретация теста. Пример — беседа с искусственными ассистентами, с Кортаной от Microsoft или с Алисой от «Яндекса». Наконец, интеллектуальный поиск, который дает возможность автоматически просматривать некие текстовые документы и делать выводы. Например, сейчас на Kaggle, сайте дата-сайентистов, проходят соревнования: требуется обработать дата-сет с информацией по коронавирусу, несколько десятков тысяч статей. Ученым были бы очень полезны автоматические методы понимания такого объема текста. Здесь могут помочь модели типа Microsoft Turing.
Кстати, один из моих докладов на Build был посвящен использованию российской библиотеки DeepPavlov для извлечения смысла из набора статей о коронавирусе и автоматического ответа на вопросы. Вот такие интересные задачи сейчас решаются.
У меня тоже есть одна забавная задача. У друга на открытый балкон постоянно прилетают голуби. Мы подумали: а что, если запрограммировать штуку, которая будет стрелять в них чем-то безопасным вроде пинг-понговых шариков? Но для начала надо ее научить распознавать голубя. Вопрос: когда снизится порог входа в область машинного обучения, чтобы я — дилетант, который что-то понимает, но далеко не дата-сайентист, — мог использовать какой-то сервис для подобных задач? Типа: «Ребзя, научите мой аппарат распознавать голубя или и дайте мне модельку, чтобы я ее использовал». Такое возможно в ближайшем будущем?
Такое уже есть сейчас. Microsoft уже несколько лет говорит о демократизации искусственного интеллекта. В том числе чтобы типовые задачи решать из неких строительных блоков, которые в облаке уже есть. Задача по распознаванию голубя не совсем типовая, в бизнесе она возникает нечасто. Зато распознавание человека решается «из коробки», сразу. А для твоей задачи есть сервис Custom Vision, он позволяет обучить модельку через веб-интерфейс. Нужно будет обвести голубей, понадобится не так много фотографий. Точность такого решения не самая высокая, не такая, как при самостоятельном обучении с нуля. Но при этом достаточно хорошая, чтобы эту задачу начать делать. Мне кажется, основная проблема возникнет с «боеприпасами»: шарики же будут улетать за балкон. А распознать голубя несложно.
Я ожидал более сложную задачу: понять голубя или перевести какую-то фразу на язык птиц. Подобное пытались делать. Год или два назад на международный студенческий конкурс Imagine Cup греческая команда представила переводчик с языка детей: они пытались понять, что ребенок хочет сказать своим криком.
Ого! И у них получалось?
Что-то получалось, но насколько правильно? Не спросишь же ребенка спустя 10 лет: «Что ты имел в виду, когда кричал такого-то числа?» И как они получали дата-сет? Специально ребенка мучили, чтобы записать крик, который соответствует боли?..
Еще в России есть группа художников, которые занимаются похожей задачей — интерпретацией пения птиц. Это уже близко: голубь не поет, но тоже издает какие-то звуки.
Хотел бы я оказаться в мире, где можно понимать своего кота! К слову, о животных и интерпретациях: на конференции был кейс про различия между хаски и волком. Насколько я понял, выяснилось, что нейросеть опирается при определении хаски не на самих собак, а на окружение с фотографии. Летние фотографии она воспринимала скорее как изображения с хаски, а фото со снегом — с волками. Выходит, мы по-прежнему не до конца понимаем, что происходит внутри нейросети?
Это одна из самых сложных задача дата-сайентиста — понять, что именно делает модель. Нейросеть — способ приблизить некую математическую функцию. Если мы показываем зимние фото с хаски и летние с волками, то не очень понятно, какую часть картинки нейросеть берет за основу при классификации. Можно подсветить те места, за которые нейросеть цеплялась при принятии решения. Но это достаточно сложно, почти все придется делать руками в процессе исследования модели. Это важные задачи, поэтому им уделяется много внимания. И уже есть разные приемы, позволяющие сбалансировать дата-сет в задачах с компьютерным зрением: мы можем подсунуть разные картинки и посмотреть, что получается.
Гораздо сложнее решать задачи с наборами данных. Например, банк хочет понять, кому выдавать кредит. Обучаем на наборе данных людей, которым бы мы кредит выдавали. Какие из данных возьмет за основу система? Скорее всего, кредит чаще выдается белым людям — просто потому, что они чаще обращаются в банки и таких данных будет значительно больше. Модель может взять в качестве критерия расу или пол, но очевидно, что это неправильный подход. Инструменты, которые были представлены на Build, позволяют изучать такого рода модели — в данной задаче, например, посмотреть, насколько меньше вероятность выдачи кредита женщине. Мы можем проверить эту зависимость статистически, чтобы соответствующим образом скорректировать нашу модель.
Корректировка проводится в процессе? Или это крупные итерации, когда мы обучаем, смотрим, подкручиваем и переобучаем? Можно ли делать небольшие твики?
Скорее крупные итерации. Нам нужно понимать, что делать и куда смотреть. Эти инструменты позволяют увидеть, какие фичи являются более значимыми. В результате мы можем избежать дата-сдвига, если хотим удалить из рассмотрения какие-то из этих фич или перебалансировать входные данные. Есть разные подходы, которые все равно выбирает дата-сайентист. Инструмент просто позволяет все очень хорошо увидеть и сделать обратную связь, наладить цикл переобучения до тех пор, пока мы не получим качественный сбалансированный результат.
Был еще пример, когда авиакомпания использовала искусственный интеллект для борьбы с мошенниками, которые накручивают баллы по премиальной программе с полетными милями. Есть ли обратные кейсы, когда решение нейросети, наоборот, отменяли? Может быть, обучили ее неправильно и она выдавала некорректные результаты?
Бизнес-кейсы в голову не приходят. У нас был один из пилотных проектов, когда мы пытались распознать гол в футболе. По видеотрансляции понять, когда вероятность гола максимальная. Задача относится к достаточно сложным, это state-of-the-art, распознавание событий на видео. Мяч слишком маленький, поэтому мы перебирали другие входные фичи. Первое обучение показало, что модель цепляется за наличие ворот в кадре: когда ворота в кадре, вероятность гола возрастает. Нам пришлось долго думать над тем, как срежиссировать данные, чтобы модель начала видеть предголовую ситуацию. Выяснилось, что в такие моменты игроки группируются вокруг ворот. Именно такие скопления являются определяющими, а не картинка с воротами.
Если бы все так рассказывали об обучении искусственного интеллекта, то эта область стала бы более популярной. Сейчас со стороны кажется, что это область с высоким порогом входа, что туда очень сложно залезть. А такие задачи и интересные подробности меня наверняка подстегнули бы.
Наплевать на порог. Есть правило 20/80: почти всегда 20% усилий дают 80% результата. 80% задач — типовые, они уже решены. Но остаются нерешенными самые сложные и интересные задачи, state-of-the-art. Найти себя можно на любом уровне, даже без каких-то продвинутых математических знаний можно начать использовать инструменты и достигать результатов.
Сейчас логика нейросетей искусственного интеллекта понятна и управляема? Или это скорее черный ящик?
ИИ, основанный на нейросетях, — всегда черный ящик. Мы пытаемся его исследовать: подавая специальные сигналы на вход и наблюдая за реакцией, можно понять, на что он смотрит. Но внутри нейросети очень много чисел, поэтому ее поведение не всегда понятно.
Есть другие модели машинного обучения. Простейший пример — линейная, или логистическая, регрессия. Это просто набор коэффициентов, которые мы умножаем на входные данные и получаем выходное значение. Тогда по коэффициентам сразу видно, что именно делает модель.
Часть инструментов, которые были показаны на Build, — модели glass box, прозрачные, когда мы именно по структуре модели понимаем, а что же она делает. Другая часть — black box. Черных ящиков сейчас большинство, но их тоже можно исследовать.
Расскажи, пожалуйста, про безопасность в сфере обучения ИИ. Сейчас это проникает в такие области, которые критически важны. Скажем, автопилот в той же Tesla: его решения могут повлиять на жизнь человека. Как это все происходит у больших ребят?
Это действительно серьезный вопрос. Только об автопилоте Tesla можно говорить часами: проблемы начинаются уже с того, на каких данных его обучать. Потому что возникают этические проблемы, а это очень серьезная область. Безопасность обеспечивается рядом вещей. Первое — та же самая interpret ability, то есть «понимабельность» модели: мы хотим понимать, как она устроена, чтобы на нее влиять. Автопилоты в автомобилях вряд ли построены по принципу черного ящика. Да, там есть ИИ, который занимается базовыми задачами типа распознавания изображений, понимания кадра и ситуации на дороге. Но дальше решение принимает некоторый запрограммированный алгоритм, и мы понимаем, как он устроен. Второе — ансамбли моделей: если одна модель ошибается, другая может выдать правильный ответ. Как нейросеть выделяет объекты на видео? Например, на трех кадрах объект виден, на четвертом он выпадает, на пятом снова виден. Здесь можно применить сглаживание по времени, чтобы обнаруживать более стабильные объекты. А можно использовать разные модели.
Зная архитектуру нейросети, можно подобрать такую атаку, которая испортит распознавание. Например, adversarial attack: на дорожном знаке клеим какие-то специальные кусочки скотча, и машина уже распознает другой знак. Но если использовать параллельно несколько архитектур сетей, то к такой атаке уязвима только одна из них, другие продолжат этот знак видеть правильно.
Еще момент, который на Build отмечался, — данные для обучения модели. Если мы хотим постоянно улучшать модель, требуются новые данные от пользователей. Старые данные нам тоже нужны: переобучение модели — всегда прогон по полному объему данных. Некоторые пользователи против того, чтобы их личные данные оставались у больших компаний, это вполне законное желание. Понятно, что имена можно не хранить. Но иногда по данным можно четко идентифицировать человека. Эту проблему решает один из проектов — White Noise. Суть в том, чтобы добавить шум, сделать конкретные индивидуальные данные нераспознаваемыми, сохранив их обучающую способность. То есть мы можем хранить не данные, а некий синтетический набор, полученный на их основе.
И сразу стало как-то спокойнее. Следующий вопрос наверняка всплывет в комментариях. И OpenAI, и Илон Маск, который там участвует, постоянно твердят: бойтесь искусственного интеллекта! Стоит ли бояться? Будут терминаторы или нет?
Конечно, надо бояться ИИ. А еще электричества и воды, потому что они приучают нас к комфортной жизни. Вот исчезнет вода, и мы все умрем у себя в квартирах. Это сарказм, но любая технология в некотором смысле опасна, потому что мы к ней привыкаем и что-то отдаем ей на откуп. Например, сейчас на бирже порядка 80% торгующих агентов — роботы, которые торгуют автоматически и не всегда понятно, по каким алгоритмам. В этом смысле мы вверили принятие решений ИИ. К сожалению, не вверить тоже не могли, потому что торговать без роботов уже неэффективно экономически. Ситуация не очень хорошая: были случаи, когда на бирже внезапно происходил крах — и никто не понимал почему. Потом, правда, все восстанавливалось, но была какая-то флуктуация в матрице. В этом смысле наша зависимость от ИИ опасна.
Будет ли у ИИ возникать самосознание, будет ли он, зловредный, восставать против людей? Пока мы очень далеко от понимания этой проблемы: самосознания и сверхчеловеческого интеллекта нет, когда это появится и появился ли, пока неизвестно.
Безусловно, все технологии влияют на рынок труда. Отсюда вытекает еще одно опасение: роботы лишат нас работы. Безусловно, на рынке труда будут изменения. Но давайте вспомним, как появление автомобилей сделало ненужной целую кучу профессий, связанных с уходом за лошадьми. Все профессии ушли, но появились другие, например психотерапевты, которых раньше не было. Перераспределения на рынке будут, но это не значит, что все останутся без работы.
Раз речь об этом зашла: что мешает создать модель человеческого мозга, которая бы думала как человек?
Во-первых, мы сами точно не знаем, как устроен человеческий мозг. Пытаемся, конечно, его изучать, нейробиология в этом сильно продвинулась. Но те нейросети, которые мы сейчас используем, лишь немного походят на человеческий мозг, они целиком его не моделируют. Наивно полагать, что мы сделаем одну супербольшую нейросеть и все само собой заработает. К тому же недавние открытия показывают, что мы могли заблуждаться относительно устройства мозга, идти не совсем в том направлении. Во-вторых, требуются огромные вычислительные мощности. Мозг очень компактно устроен, в нем заложено очень много вычислительных мощностей. Пока что мы ничего подобного воссоздать не можем. Можно сделать мозг небольшого животного, но, прямо скажем, не очень глубоко мыслящего.
Есть и математические проблемы. Сейчас глубокое обучение — это любая нейросеть, в которой больше трех слоев. Когда слоев становится много, при обучении возникают математические проблемы. С ним борются, и борются успешно: у нейросетей уже сотни тысяч слоев и миллионы параметров. При этом сделать еще в 10 раз больше просто так нельзя.
И наконец, нехватка данных для обучения. Увеличение нейросети условно в два раза ведет к тому, что объем данных для обучения необходимо увеличить больше чем в два раза. Этих данных никогда не бывает достаточно. Поэтому reinforcement learning и тексты — очень привлекательные направления: там хотя бы есть данные.
Давай перейдем к разработке, там тоже много интересного. Расскажи о Visual Studio Code Spaces: тренд на разработку «откуда угодно» просто совпал с пандемией? Это было решение, которое уже давно разрабатывается?
На самом деле решение с Visual Studio Code Spaces существует давно. Раньше оно называлось Visual Studio Online, а еще до этого была платформа под названием Visual Studio Code Remote. Решение наклевывалось, потому что программисты работают над разными проектами, и для каждого проекта, как правило, нужна какая-то своя конфигурация, своя среда выполнения. Каждый раз воссоздавать все это у себя на машине неудобно. Я занимаюсь ИИ, мы почти всегда работали на какой-то виртуальной машине в облаке. Это один из подходов — делаем там Remote Desktop или заходим по SSH, если это Linux. Но нам же хочется редактировать комфортно у себя на компьютере. Поэтому редактор Visual Studio Code и стал суперпопулярным. Сейчас это самый популярный текстовый редактор для программистов в мире.
В него изначально была заложена гениальная идея — разнесение клиентской и серверной частей. Часть этого редактора может работать на клиентском компьютере, а другая часть ставится на сервер и обеспечивает работу с самим кодом. Мы же хотим от редактора автодополнений как понимания структуры кода. Если у нас среда разработки не стоит локально, то эти автодополнения должен давать серверный кусочек. За счет разнесения этих двух вещей Visual Studio Code, которая работает у нас на компьютере, позволяет быстро и комфортно подключаться к удаленному серверу, иметь автодополнения и полное понимание нашего проекта, а также удаленную отладку. Это все можно делать прозрачным образом.
Суть Visual Studio Code — возможность создавать это окружение в один клик из облака. По сути, платформа позволяет нам начать с кода. Например, взять репозиторий на GitHub и сказать: хочу открыть этот репозиторий в виртуальном work space. Облако автоматически создаст виртуальную машину, развернет на ней все необходимое, подключит туда нашу Visual Studio Code — и мы можем с этим работать. Это суперудобно, особенно в open source, когда у нас есть репозиторий на GitHub, и мы хотим в нем исправить что-то маленькое. Нам не нужно ставить на свой компьютер все расширения, мы просто говорим: «Открыть». После чего получаем работающее окружение, исправляем что-то — и потом можем это окружение уничтожить.
Странно, что в интернете мало об этом пишут после Build. Понятно, что суперкомпьютер — та вещь, которая сразу приковывает внимание. Но это же тоже круто! Почему комфорт привлекает меньше внимания?
Многое зависит от культуры разработки. Возьмем типичную небольшую компанию, у которой задача — сделать свой веб-сайт или интернет-магазин. Там пять человек, которые работают над своим проектом, у них все установлено. И зачем им переходить в облако? Когда культура только зарождается, всегда есть early adopters, которым это интересно. Они начинают так работать, а потом это становится мейнстримом. Пишут об этом действительно мало. Хотя я на Habr видел переводную статью.
Habr — суперпрофильный ресурс. Но если посмотреть в целом, если погуглить и нажать на кнопку «Новости», то не так много найдется.
Разработчиков меньше, чем людей, которые способны понять слово «суперкомпьютер». С Code Spaces интересная история, потому что параллельно же запустилось еще GitHub Code Spaces. Microsoft и GitHub — это вроде бы как одно и то же, но не совсем: брендинг у них различный. Идея Code Spaces пришла на GitHub. Одновременно за несколько дней до Build мы объявили о переименовании Visual Studio Online в Visual Studio Code Spaces и GitHub Code Spaces. Эта функциональность пришла в и GitHub — пока что в режиме закрытого бета-тестирования. Жду, когда мне дадут туда доступ: хочу посмотреть, как это будет со стороны GitHub. Обещают, что все будет еще удобнее интегрировано, прямо в workflow самого GitHub.
Расскажи о Microsoft Learn. Тема обучения сейчас суперактуальна, особенно бесплатного. Что у вас есть интересного?
Microsoft Learn существует уже более года. Он не на Build появился, это наша платформа для обучающих тьюториалов. Я не назову их полноценными курсами: если человек хочет научиться программировать или изучить deep learning, ему лучше пойти на Coursera или другую платформу, дающую фундаментальные знания. Microsoft Learn дает практические знания, направленные на решение конкретной задачи. Хотите создать чат-бота — на Microsoft Learn можно этому научиться. Традиционно Microsoft Learn содержал материалы для разработчиков. Эти курсы очень удобны, они по шагам показывают, что нужно делать. А самая удобная фича Microsoft Learn — наличие встроенной песочницы. Например, студенту или разработчику, который хочет попрактиковаться в каких-то облачных технологиях, не нужно иметь свою подписку, не нужно за нее платить. Да, есть бесплатные триальные подписки, но они когда-то заканчиваются. А в песочнице можно опробовать все технологии совершенно бесплатно.
На Build было объявлено, что Microsoft Learn становится более ориентированным на студентов. Поэтому сейчас создаются курсы, которые направлены на обучение технологиям именно с нуля. Многие курсы разрабатываются совместно с ведущими американскими университетами — Беркли, Оксфордом, Карнеги-Меллоном. Уже есть три вводных курса, которые ориентированы на такое обучение начального уровня. Их будет становиться все больше. Например, перед Build я разработал курс по созданию responsible chatbots — чат-ботов «с человеческим лицом». Это тоже пошаговая инструкция: как сделать так, чтобы человеку было приятно общаться с чат-ботом. Правда, этот курс пока что доступен только на английском языке.
Продолжая тему обучения: на что бы ты посоветовал обратить внимание начинающим? Что сейчас котируется, что будет котироваться в будущем? Как вообще подступиться к разработке?
Общий совет: подступиться проще всего, поставив себе какую-то задачу. Учиться абстрактным технологиям практически бесполезно. Технологии быстро устаревают, а задачи остаются теми же самыми: сделать веб-сайт, решить какую-то проблему бизнеса, наладить разработку в команде. Я бы подумал: а что мне самому интересно? Есть много интересных направлений: вы можете создать игру, веб-сайт или нейросеть, которая будет рисовать картины. Задавайтесь целью и смотрите, какие технологии помогут ее решить.
В плане технологий важно не упустить две вещи. Во-первых, облачные технологии. В университетах не всегда прямо говорят, что скоро все будет в облаках, а это действительно так. Надо понимать, что облака уже с нами, учиться с ними работать. К счастью, студенты все больше сами к этому приходят. Во-вторых, не надо бояться искусственного интеллекта. Стоит изучать эту область, смотреть, какие задачи уже решены и что можно интересного сделать.
А квантовые технологии? Стоит туда смотреть?
Квантовые технологии находятся в стадии зарождения. Смотреть на них стоит, если смотреть в будущее. Microsoft уже создал язык и среду программирования для квантовых вычислений, все это доступно. Поэтому можно пытаться писать программы для квантовых компьютеров, хотя пока еще в широком доступе в облаке их нет. Но не думаю, что с этого стоит начинать изучение программирования: это непростые технологии, тут нужно понимать не только программирование и математику, но и физические принципы, идею квантовых вычислений. Microsoft Learn — неплохая отправная точка: там есть курсы по языку Q# и квантовым вычислениям.
На Build объявили о запуске Learn TV. Что это такое?
Microsoft Learn — это в основном текстовые курсы, когда мы можем прочитать, увидеть фрагмент кода, скопировать его к себе, запустить и проверить. Для программиста это удобно. Но многие любят смотреть видеотьюториалы, где-то же самое какой-то человек делает. Поэтому популярны форматы типа стриминга, когда человек кодит и показывает, как он это делает. На Twitch много таких каналов, там и у нас есть свой канал — Microsoft Developer. Мы решили объединить эти потоки видеоконтента вместе, создав некую единую входную точку, куда можно будет подключиться и все время что-то смотреть. Отсюда как раз родилась идея Learn TV: его можно включить, как телевизор, и посмотреть что-то, связанное с технологиями, с программированием. Какие-то передачи в записи, какие-то — живая трансляция. Наверное, большая часть идет в записи: сложно делать живую трансляцию 24 часа, никто так не делает, кроме новостных каналов. У нас ресурсов меньше, чем у новостного канала типа CNN, поэтому много тьюториалов идет в записи и есть повторы. Но тот, кто любит видеоконтент, всегда найдет что-то интересное.
Речь идет исключительно о контенте, который произведен Microsoft, или там можно как-то поучаствовать?
Пока что это контент, созданный внутри Microsoft. Но я думаю, что он будет расширяться за счет контента от технических специалистов, которые так или иначе к нам близки, — от сообщества, близкого к Microsoft. Во-первых, нам изнутри не так хорошо видны наши продукты, как нашим пользователям со стороны. Поэтому, конечно, нам будет интересен и такой контент, и какие-то истории успеха. Думаю, это все будет появляться, но пока что это очень молодая площадка, где нет четко прописанных правил.
Конечно, если кому-то вдруг хочется в это дело вскочить и сказать: «Я готов про технологии Microsoft делать передачу на русском языке раз в неделю», то самое время написать мне, попробуем протолкнуть эту идею. Пока это находится в стадии становления, мы можем сказать: «Хотим русскоязычный канал на Learn TV!» Ну или «русскоязычную передачу, которая будет каждый четверг выходить по 1,5 часа». Я сам вряд ли за такое возьмусь, но, если будет много желающих-энтузиастов, мы можем это реализовать.
Ребята, вы знаете, что делать: Дима есть на Habr, пишите!
Можно писать мне еще по одному приятному поводу. На Build объявили, что Microsoft запускает программу студентов-амбассадоров — Microsoft Learn Student Ambassadors. Она рассчитана на активных студентов, которым хочется у себя в вузе создавать движуху вокруг изучения технологий. Это такое логическое продолжение программы студентов-партнеров, которая у Microsoft уже была много лет, только сейчас ее хотят привязать к обучению технологиям. Если вы студент и у вас в вузе есть тусовка, которая интересуется технологиями, или вы хотите делать что-то, связанное с технологиями Microsoft, об этом тоже мне пишите.
А что даст студенту такое сотрудничество?
Идея не в том, что мы студенту будем что-то давать или обучать его специально. Мы хотим создать сообщество людей, которым это интересно. Практика показывает: создав правильную структуру, можно добиться больших успехов. У нас уже есть сообщество студентов-партнеров, порядка 100 человек в России. Они между собой общаются, занимаются разными интересными вещами — от обучения школьников до создания видеороликов и кодстриминга. Присоединившись, вы сможете контактировать и с ними, и с Microsoft: мы регулярно с этими ребятами созваниваемся, обсуждаем новости, помогаем какие-то вещи сделать лучше, если есть возможность. Например, если вы хотите сделать какой-то контент, то можно попытаться пропихнуть его на Learn TV, чтобы он стал доступен во всем мире, а не только в России. Мы не платим зарплату, но есть другие виды поощрения, например можем бесплатно выделить облако. Когда мы понимаем, что человек уже организовал движуху, когда он становится legible для таких поощрений вещей, — соответствующая структура у нас выстроена.
То есть речь идет о менторинге, о Microsoft в образе старшего товарища, к которому можно обратиться за советом?
Да, примерно так. Мы открываем еще одну точку входа для активных ребят, которые хотят что-то делать. Они понимают, куда можно прийти, а мы можем чуть-чуть подсказать, как какую-то активность сделать более масштабной, интересной.
Самый главный вопрос: будет ли Build 2021?
Пока рано об этом говорить, поживем — увидим. Microsoft наверняка продолжит сообщать разработчикам свои новости, вопрос лишь, в каком формате.
Чего нам ждать в течение этого года? Чем Microsoft сможет поделиться в ближайшее время?
Думаю, сейчас никто не даст четкого ответа на этот вопрос. Направление задали на Build 2020, где для разработчиков было очень много интересного, даже Linux на Windows.
Можно подробнее об этом?
Уже больше года существует Windows Subsystem for Linux — такое маленькое подъядро внутри Windows, которое позволяет запускать линуксовые программы на той же машине. Первоначально эта подсистема транслировала все вызовы из API Linux в Windows и тем самым эмулировала все системные вызовы. Так все работало относительно неплохо, но не всегда достаточно быстро и не всегда с полной достоверностью: все-таки это было сильно модифицированное ядро. Сейчас же появилась вторая версия, Windows Subsystem for Linux 2, на которой ядро Linux уже работает полноценно. Сейчас вместо эмуляции вызовов такая, условно, очень компактная виртуальная машина Hyper-V, которая полностью воссоздает окружение Linux. Это позволяет добиться в том числе полной бинарной совместимости. Сейчас можно запускать откомпилированные бинарники Linux, а также приложения с графическим интерфейсом непосредственно в среде Windows в том же оконном менеджере. Прямо не знаю, чего еще можно хотеть. Разве только поддержки GPU, которая тоже появится через несколько месяцев. Сейчас, сидя на Windows, мы получаем преимущества обоих миров. Необходимость в Linux-компьютере для дома практически отпала.
Неистово плюсую! Спасибо большое за такой простой и подробный разбор итогов Build. Было много интересного — суперкомпьютеры, квантовые вычисления и даже Linux практически полноценный на Windows, я и не знал.
Я бы хотел добавить, что если вы пропустили что-то на Build 2020, то материалы по-прежнему доступны онлайн. Можно потихонечку посмотреть все те часы контента по интересующим темам, во всем разобраться, приобщиться к новостям. Спасибо всем, было приятно побеседовать! Надеюсь, в ближайшее время мы увидим еще много нового и интересного от Microsoft.
Оставляйте комментарии, заходите в наш чатик, рассказывайте, что вам было интересно на Build 2020. По-прежнему можете писать нам в соцсетях. Всего хорошего, пока!
Теги:подкастпрограммистыразработчикиMicrosoft
Хабы: Программирование Разработка под Windows Искусственный интеллект
+14
16,5k 16
Комментарии 6