Обучение visual studio 2018: Стратегия развития Visual Studio на 2018 г.

Содержание

Создание первой модели глубокого обучения Visual Studio IntelliCode: исследовательский путь / Хабр

С тех пор, как первая модель завершения кода IntelliCode была представлена в Visual Studio и Visual Studio Code в 2018 году, она стала важным помощником по кодингу для миллионов разработчиков по всему миру. В последние два года мы постоянно работали над тем, чтобы адаптировать IntelliCode для большего количества языков программирования, а в то же время изучали способы повышения точности и покрытия модели, чтобы обеспечить еще большее удовлетворение пользователей. Одним из наших основных исследовательских усилий было привнести последние достижения в области глубокого обучения для моделирования естественного языка в моделирование языков программирования. После использования таких технологий, как машинное обучение Azure и среда выполнения ONNX, мы успешно реализовали первую модель глубокого обучения для всех пользователей IntelliCode Python в Visual Studio Code.


Путешествие началось с исследования в области применения методов языкового моделирования в обработке естественного языка для изучения кода Python. Мы сосредоточились на текущем сценарии завершения IntelliCode, как показано на рисунке ниже.

Основная задача — найти наиболее вероятный фрагмент (member) типа с учетом фрагмента кода, предшествующего вызову фрагмента (member-а). Другими словами, учитывая исходный фрагмент кода C, словарь V и набор всех возможных методов M ⊂ V, мы хотели бы определить:


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

Предыдущие современные подходы на основе рекуррентных нейронных сетей (RNN) использовали только последовательную природу исходного кода, пытаясь передать методы естественного языка без использования уникальных характеристик синтаксиса языка программирования и семантики кода. Природа проблемы завершения кода сделала многообещающим кандидатом на использование сети с долговременной краткосрочной памятью (LSTM). Во время подготовки данных для обучения модели мы использовали частичное абстрактное синтаксическое дерево (AST), соответствующее фрагментам кода, содержащим выражения доступа к фрагментам (member) и вызовы функций модуля, с целью захвата семантики, переносимой удаленным кодом.

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


Мы выбрали производство с прогнозируемым внедрением из-за меньшего размера модели и повышения точности модели на 20% по сравнению с предыдущей производственной моделью во время автономной оценки модели; размер модели имеет решающее значение для развертывания в продакшене.

Архитектура модели показана на рисунке ниже:


Чтобы развернуть модель LSTM в проде, нам пришлось улучшить скорость вывода модели и объем памяти, чтобы удовлетворить требованиям завершения кода во время редактирования. Наш бюджет памяти составлял около 50 МБ, и нам нужно было поддерживать среднюю скорость вывода менее 50 миллисекунд. Модель IntelliCode LSTM была обучена с помощью TensorFlow, и мы выбрали ONNX Runtime для вывода, чтобы получить максимальную производительность. ONNX Runtime работает с популярными платформами глубокого обучения и упрощает интеграцию в различные обслуживающие среды, предоставляя API-интерфейсы, охватывающие множество языков, включая Python, C, C++, C#, Java и JavaScript — мы использовали API-интерфейсы C#, совместимые с .NET Core, чтобы интегрировать в Microsoft Python Language Server.

Квантование — это эффективный подход для уменьшения размера модели и повышения производительности, если допустимо падение точности, вызванное приближением чисел с малой разрядностью. С квантованием INT8 после обучения, обеспечиваемым ONNX Runtime, результирующее улучшение было значительным: объем памяти и время вывода были сокращены примерно до четверти предварительно квантованных значений по сравнению с исходной моделью с приемлемым сокращением на 3% точность модели. Вы можете найти подробную информацию о дизайне архитектуры модели, настройке гиперпараметров, точности и производительности в исследовательской статье, которую мы опубликовали на конференции KDD 2019.

Последним этапом выпуска в продакшн было проведение онлайн-экспериментов A/B, сравнивающих новую модель LSTM и предыдущую рабочую модель. Результаты онлайн-экспериментов A/B в таблице ниже показали примерно 25% улучшение точности рекомендаций первого уровня (точность первого рекомендованного элемента завершения в списке завершения) и 17% улучшение среднего обратного ранга (MRR), что убедило нас, что новая модель LSTM значительно лучше предыдущей модели.

Разработчики Python: попробуйте дополнения IntelliCode и отправьте нам свой отзыв!


Благодаря большим усилиям команды мы завершили поэтапное развертывание первой модели глубокого обучения для всех пользователей IntelliCode Python в Visual Studio Code. В последней версии расширения IntelliCode для Visual Studio Code мы также интегрировали среду выполнения ONNX и модель LSTM для работы с новым расширением Pylance, которое полностью написано на TypeScript. Если вы разработчик Python, установите расширение IntelliCode и поделитесь с нами своим мнением.

Visual Studio Tools for AI. Обучение модели

В этой статье мы рассмотрим на примере, как можно использовать Visual Tools for AI локально, у себя на компьютере, для тренировки моделей.

Для того, чтобы запустить пример, вам, предварительно, необходимо установить Visual Tools for AI и настроить окружение (установить необходимый набор дополнительных библиотек), о том как это сделать написано в здесь. Мы будем работать с примером, который предоставляют разработчики VS Tools for AI.

Загрузка примеров для VS Tools for AI

Загрузим примеры проектов для Visual Tools for AI, для этого откройте командную строку и введите в ней следующие команды.

> git clone https://github.com/Microsoft/samples-for-ai.git
> cd samples-for-ai
> cd installer
> python.exe install.py

Размер загружаемого набора чуть больше 250 МБ, в нем содержатся проекты для framwork’ов, поддерживаемых VS Tools for AI: CNTK, TensorFlow, Caffe2, Keras, MXNet, Chainer, Theano. Имейте ввиду, что работа скрипта install.py может занять достаточно большое время, это связано с тем, что в он проверят список инсталлированного на вашем компьютере программного обеспечения, которое нужно для работы с примерами, и установливает недостающие компоненты. Почти для всех библиотек есть пример решения задачи распознавания рукописных символов с использованием набора MNIST (http://yann.lecun.com/exdb/mnist/). В рамках данной статьи мы рассмотрим как решить эту задачу с использованием TensorFlow.

Тренировка модели с использованием

TensorFlow

Мы будем обучать модель с использованием TensorFlow, задача – распознавание рукописных символов (цифры). Для решения задачи будет использована база данных MNIST, которая содержит 60000 объектов для обучения и 10000 объектов для тестирования. Объект – это одна цифра, написанная рукой человека, представленная в виде вектора. Вектор строится следующим образом: берется изображение цифры, переводится в черно-белый вид и масштабируется под размер 27х27 пикселей. Это нам даст 27х27=729 пикселей, цвет (в градации серого) каждого пикселя кодируется цифрой от 0 до 255. Таким образом, мы получаем 729 элементов, составляющих один вектор. Обучающая выборка – это таблица размера 60000х729, тестовая выборка – 10000х729.

Для работы нам понадобится TensorFlow, Numpy и Scipy. Если они у вас ещё не установлены, то рекомендуем вам обратиться к статье “Visual Studio Tools for AI. Установка и Настройка”, там написано о том, как это сделать.

Приступим непосредственно к запуску примера.

1. Запустите Visual Studio.

2. Откройте проект samples-for-ai\examples\tensorflow\TensorflowExamples. sln

3. В окне Solution Explorer нажмите правой кнопкой мыши на проекте MNIST и в появившемся меню выберите Set as StartUp Project.

4. Нажмите на кнопку Start для запуска проекта.

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

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

Статья является вольным переводом страницы “Train a TensorFlow model locally” с официального github репозитория Visual Studio Tools for AI.

обучающих конференций и мероприятий для корпоративных разработчиков Microsoft .NET и Azure

#VSLIVE25

Отмечайте вчерашние технологии, пока мы готовим вас к будущему!

7-11 октября 2018 г.
Hilton Resort

Код снова в первый раз

ВПЕРВЫЕ за нашу 25-летнюю историю Visual Studio Live! направляется в солнечный Сан-Диего, штат Калифорния, где пройдет до 5 дней практического беспристрастного обучения разработчиков, включая НОВЫЕ интенсивные практические занятия. Присоединяйтесь к нам, чтобы узнать о новейших функциях Visual Studio 2017, ASP.NET Core, Angular, Xamarin, UWP и других. Программируйте вместе с отраслевыми экспертами, получайте практические ответы на свои текущие вопросы и погрузитесь в платформу Microsoft. Кроме того, помогите нам отпраздновать 25-летие инноваций в области кодирования, поскольку мы весело оглядываемся назад на технологии и обучение с 19 лет.93. Приходите испытать образование, обмен знаниями и нетворкинг на #VSLive25.

Доступна полная повестка дня: узнайте все подробности здесь!

Присоединяйтесь к нам в Сан-Диего в…

Места заполняются

ЗАРЕГИСТРИРОВАТЬСЯ!

#VSLIVE25

Кто должен посещать и почему

Мы работаем с 1993 года. В чем наш секрет? ТЫ! С момента нашей первой конференции (VBITS/VSLive!/Visual Studio Live!) в 1993 году десятки тысяч разработчиков, архитекторов программного обеспечения, программистов, инженеров, дизайнеров и многих других из года в год доверяют нам беспристрастное и передовое образование на платформе Microsoft.

8

ЯВЛЯЮСЬ

9

ЯВЛЯЮСЬ

10

ЯВЛЯЮСЬ

11

ЯВЛЯЮСЬ

12

ВЕЧЕРА

1

ВЕЧЕРА

2

ВЕЧЕРА

3

ВЕЧЕРА

4

ВЕЧЕРА

9

ЯВЛЯЮСЬ

10

ЯВЛЯЮСЬ

11

ЯВЛЯЮСЬ

12

ВЕЧЕРА

1

ВЕЧЕРА

2

ВЕЧЕРА

3

ВЕЧЕРА

4

ВЕЧЕРА

5

ВЕЧЕРА

8

ЯВЛЯЮСЬ

9ЯВЛЯЮСЬ

10

ЯВЛЯЮСЬ

11

ЯВЛЯЮСЬ

12

ВЕЧЕРА

1

ВЕЧЕРА

2

ВЕЧЕРА

8

ЯВЛЯЮСЬ

9

ЯВЛЯЮСЬ

10

ЯВЛЯЮСЬ

11

ЯВЛЯЮСЬ

12

ВЕЧЕРА

1

ВЕЧЕРА

2

ВЕЧЕРА

3

ВЕЧЕРА

4

ВЕЧЕРА

5

ВЕЧЕРА

8

ЯВЛЯЮСЬ

9ЯВЛЯЮСЬ

10

ЯВЛЯЮСЬ

11

ЯВЛЯЮСЬ

12

ВЕЧЕРА

1

ВЕЧЕРА

2

ВЕЧЕРА

  • Я возвращаюсь в Visual Studio Live! год за годом (это мой третий!) чтобы увидеть не только, какие передовые технологии внедряются, но и какие технологии уходят в прошлое; это помогает мне направить мою организацию в правильном направлении для наших потребностей в развитии. Так много идей, почерпнутых из VSLive!, от веб-API, взаимодействующих с клиентами SPA, до .NET Core, очень помогли мне!»
    — Джон Касарда, Accuquote

  • Не только VSLive! Конференция так же хороша или даже лучше, чем на других конференциях, но она проводится несколько раз в год в разных местах, поэтому я могу планировать ее по своему рабочему и личному графику. Возможность провести несколько дней, сосредоточившись на многих новых фреймворках и шаблонах, дает мне возможность решить, что исследовать дальше, а что отложить».
    — Джуд Якамавадж, Правительственный центр округа Лихай

  • Несколько лет я с нетерпением ждал возможности посетить это мероприятие и наконец-то смог приехать. Мне нужно поддерживать актуальность и безопасность моей компании. В результате посещения конференции я выступаю за разработку, основанную на тестировании, и использование большего количества асинхронности!»
    — Есения Фигероа, 1-800-Контакты

  • В прошлом году я многому научился на принципиальных сессиях SOLID — это дало мне отличный взгляд на эту тему. В этом году мне понравилось введение HoloLens. Я работаю в аэрокосмической компании и вижу, что в ближайшем будущем эта технология будет использоваться для сборки, 3D-дизайна, 3D-контроля и многих других приложений!»
    — Мани Назари, IT-системы автоматизации производства

Отслеживание тем для включения

  • DevOps в центре внимания
  • Облако, контейнеры и микросервисы
  • ИИ, данные и машинное обучение
  • Развитие нового опыта
  • Доставка и развертывание
  • .NET Core и многое другое
  • Полный стек веб-разработки
  • Практические лаборатории

Краткий обзор программы

  • вторник

    9 октября 2018 г.

    • Сеансы обсуждения

      8:00 – 9:15

    • Сеансы обсуждения

      9:30 – 10:45

    • Основной доклад

      11:00 – 12:00

    • Обед

      12:00 – 13:30

    • Сеансы обсуждения

      13:30 – 14:45

    • Сеансы обсуждения

      15:00   16:15

    • Приветственный прием

      16:15   17:30

  • Четверг

    11 октября 2018 г.

    • Сеансы обсуждения

      8:00   9:15

    • Сеансы обсуждения

      9:30   10:45

    • Сеансы обсуждения

      11:00   12:15

    • Обед

      12:15   13:15

    • Сеансы обсуждения

      13:15   14:30

    • Сеансы обсуждения

      14:45   16:00

ЗАРЕГИСТРИРОВАТЬСЯ!

  • Лас-Вегас

    11-16 марта 2018 г.

  • Остин

    30 апреля – 4 мая 2018 г.

  • Бостон

    10-14 июня 2018 г.

  • Штаб-квартира Майкрософт

    13-17 августа 2018 г.

  • Чикаго

    17-20 сентября 2018 г.

  • Сан-Диего

    7-11 октября 2018 г.

  • Орландо

    2-7 декабря 2018 г.

Обучающие конференции и мероприятия для корпоративных разработчиков Microsoft .NET и Azure

#VSLIVE25

Отмечайте вчерашние технологии, пока мы готовим вас к будущему!

30 апреля – 4 мая 2018 г.
Хаятт Ридженси

ПРЯМОЙ ЭФИР НА #VSLIVE25 ОСТИН
Смотрите нашу фотоленту в прямом эфире! с мероприятия, 30 апреля — 4 мая.

Присоединяйтесь к нам в Остине в…

 

ЗАРЕГИСТРИРУЙТЕСЬ СЕЙЧАС!

#VSLIVE25

Кто должен посещать и почему

Мы работаем с 1993 года. В чем наш секрет? ТЫ! Со времени нашей первой конференции (VBITS/VSLive!/Visual Studio Live!) в 1993 году десятки тысяч разработчиков, архитекторов программного обеспечения, программистов, инженеров, дизайнеров и многих других из года в год доверяют нам беспристрастное и передовое образование на платформе Microsoft.

9

ЯВЛЯЮСЬ

10

ЯВЛЯЮСЬ

11

ЯВЛЯЮСЬ

12

ВЕЧЕРА

1

ВЕЧЕРА

2

ВЕЧЕРА

3

ВЕЧЕРА

4

ВЕЧЕРА

5

ВЕЧЕРА

8

ЯВЛЯЮСЬ

9ЯВЛЯЮСЬ

10

ЯВЛЯЮСЬ

11

ЯВЛЯЮСЬ

12

ВЕЧЕРА

1

ВЕЧЕРА

2

ВЕЧЕРА

3

ВЕЧЕРА

4

ВЕЧЕРА

9

ЯВЛЯЮСЬ

10

ЯВЛЯЮСЬ

11

ЯВЛЯЮСЬ

12

ВЕЧЕРА

1

ВЕЧЕРА

2

ВЕЧЕРА

3

ВЕЧЕРА

8

ЯВЛЯЮСЬ

9

ЯВЛЯЮСЬ

10

ЯВЛЯЮСЬ

11

ЯВЛЯЮСЬ

12

ВЕЧЕРА

1

ВЕЧЕРА

2

ВЕЧЕРА

  • В прошлом году я многому научился на принципиальных сессиях SOLID — это дало мне отличный взгляд на эту тему. В этом году мне понравилось введение HoloLens. Я работаю в аэрокосмической компании и вижу, что в ближайшем будущем эта технология будет использоваться для сборки, 3D-дизайна, 3D-контроля и многих других приложений!»
    — Мани Назари, IT-системы автоматизации производства

  • Каждый раз, когда я посещал VSLive! (3 и больше!), я возвращаюсь в офис, чтобы рассказать о различных темах, таких как задолженность по программному обеспечению, принципы SOLID и Entity Framework. Я думаю, это помогло нашей команде лучше понять эти концепции и расширить наши знания в ключевых технологиях Microsoft».
    — Филипп Хьюстон, CCLI

  • Почему я продолжаю возвращаться к VSLive!? Чтобы быть в тонусе и оставаться в курсе. Мы проактивный, гибкий магазин стека Microsoft, использующий Azure, непрерывную интеграцию, работающий в «культуре обучения и преподавания», но так важно быть обновленным и вдохновленным евангелистами и лидерами».
    — Дэвид Леман, Международная христианская организация по лицензированию авторских прав

  • Я изначально пришел в Visual Studio Live! чтобы улучшить свои технические навыки, но я вернулся, чтобы пообщаться и познакомиться с другими разработчиками. На сегодняшний день самое большое изменение, которое я внес на работе, — это качество модульных тестов, что привело к значительному снижению количества сообщений об ошибках».
    — Джастин Критцер, Правительственный центр округа Лихай

Отслеживание тем для включения

  • ALM/DevOps
  • Облачные вычисления
  • База данных/Аналитика
  • Веб/Клиент
  • Программное обеспечение/практики
  • VS/.NET
  • Окна
  • Мобильный
  • Веб сервер
  • Практические лаборатории

Краткий обзор программы

  • вторник

    1 мая 2018 г.

    • Сеансы обсуждения

      8:00 – 9:15

    • Сеансы обсуждения

      9:30 – 10:45

    • Основной доклад

      11:00 – 12:00

    • Обед

      12:00 – 13:30

    • Сеансы обсуждения

      13:30 – 14:45

    • Сеансы обсуждения

      15:00 – 16:15

    • Приветственный прием

      16:15 – 17:30

  • Четверг

    3 мая 2018 г.

    • Сеансы обсуждения

      8:00 – 9:15

    • Сеансы обсуждения

      9:30 – 10:45

    • Сеансы обсуждения

      11:00 – 12:15

    • Обед

      12:15 – 13:15

    • Сеансы обсуждения

      13:15 – 14:30

    • Сеансы обсуждения

      14:45 – 16:00

ЗАРЕГИСТРИРОВАТЬСЯ!

  • Лас-Вегас

    11-16 марта 2018 г.