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

Это ключевая причина, по которой несколько лет назад машинное обучение было добавлено в экосистему .NET путем создания среды с открытым исходным кодом (ML.NET), которая позволяет разработчикам обучать, создавать и поставлять пользовательские модели машинного обучения для широкого спектра задач. сценариев (анализ настроений, прогнозирование, рекомендации и многое другое). С тех пор инфраструктура претерпела значительные изменения, в нее были включены новые функции, а предварительный выпуск последней версии (ML.NET 3.0) был объявлен несколько недель назад.

Теперь вы можете возразить, что существует множество платформ машинного обучения, так в чем же разница между ML.NET и наиболее распространенными платформами для специалистов по данным (такими как scikit-learn, PyTorch или tidyverse)?

  • ML.NET предназначен не только для специалистов по данным: люди с разным уровнем понимания ML могут дополнить свои решения .NET каким-либо видом ИИ. И это сразу становится ясно, если подумать о языках, используемых для разработки моделей машинного обучения в этой среде (C# и F#), которые являются стандартными языками для экосистема .NET, но не языки, традиционно используемые для науки о данных и моделирования — Python и R.
  • Еще одной характеристикой этой платформы, которая делает явной миссию демократизации искусства ML, является доступность графического пользовательского интерфейса в качестве компонента Visual Studio (называемого построителем моделей) для создания и развертывания моделей ML в несколько кликов.
  • Кроме того, ключевая цель этой платформы — сделать машинное обучение расходным материалом, предоставляя инструменты для автоматизации не только процесса обучения модели, но и некоторых классических задач MLOps, таких как обслуживание модели (переобучение) и интеграция модель в клиентском приложении.

Конструктор моделей

Мы упоминали, что одним из ключевых отличий этого фреймворка является функция Visual Studio Model Builder. И это также лучшее место для новичков в машинном обучении, которые хотят обучить пользовательскую модель на своем сценарии и данных, а затем использовать ее в своем приложении.

После установки компонента Model Builder вы можете открыть его пользовательский интерфейс (UI) из Visual Studio, щелкнув правой кнопкой мыши элемент проекта вашего решения в обозревателе решений и выбрав Добавить -> Машинное обучение.

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

Вы можете выбирать между различными типами сценариев, в том числе:

  • Случаи использования классического машинного обучения, такие как классификация или регрессия. Построитель моделей использует автоматизированное машинное обучение для параллельного обучения нескольких моделей на основе ваших данных, а затем выбирает лучшую из них в соответствии с заранее определенными показателями оценки.
  • Примеры использования Глубокого обучения — например, классификация изображений или текста. Построитель моделей использует ваши данные для точной настройки предварительно обученных моделей глубокого обучения (например, NAS-BERT или Inception).

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

ML.NET API и AutoML

API ML.NET позволяет интегрировать машинное обучение в ваши новые или существующие приложения .NET, установив пакет NuGet Microsoft.ML. Этот вариант может подойти вам, если вы знакомы с ML и ищете способы оптимального использования ML в своем приложении, знакомые с платформой .NET на C# или F#.

ML.NET поддерживается на:

  • .СЕТЬ
  • .NET Core 2.0 и выше
  • .NET Framework 4.6.1 и выше.

Вы также можете автоматизировать процесс применения машинного обучения, известный как AutoML, через API. Типичный рабочий процесс машинного обучения включает в себя повторяющиеся этапы предварительной обработки, обучения и оценки, которые повторяются до тех пор, пока не будут достигнуты желаемые результаты. С каждой итерацией методы оптимизации, применяемые на этапах обучения и оценки, выбирают лучший алгоритм и гиперпараметры. Если вы новичок в ML, но хотите использовать AutoML в своем приложении, вы можете использовать значения по умолчанию, предоставленные в API, а AutoML сделает все остальное. API также позволяет опытным пользователям расширять значения по умолчанию и настраивать модель. API AutoML можно найти в пакете Microsoft.ML.AutoML на NuGet.

Развертывание модели

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

Использование обученной модели начинается с ее сохранения и экспорта. Экспортированную модель можно использовать с любым приложением .NET или функцией Azure через API ML.NET на C# или F#. Чтобы использовать его, вы сначала добавите экспортированную модель в проект, затем используете API для импорта и загрузки модели и, наконец, добавите входные данные для прогнозирования. Обратитесь к документации по параметрам и руководствам о том, как экспортировать и загружать модели с помощью ML.NET Model Builder или ML.NET API.

В приложении ASP.NET, будь то веб-приложение, такое как Razor Pages или API, вы должны использовать класс контроллера для доступа к вашей обученной модели, чтобы использовать любые входные данные из HTTP-запроса или возвращать прогнозы в ответ, в дополнение к другому контроллеру. задания. Чтобы развернуть приложение ASP.NET в Azure, сначала создайте его локально в Visual Studio, а затем разверните в Службе приложений или Приложении-контейнере Azure с помощью рабочей нагрузки разработки Azure Visual Studio.

С помощью функций Azure вы можете запускать небольшие фрагменты кода в бессерверной среде в облаке с помощью триггеров, которые будут запускать код функции и определять, как она вызывается. Это экономичный вариант использования модели в различных приложениях. Одним из вариантов интеграции модели в функцию является триггер HTTP, который вызывает функцию через HTTP-запрос, где ваша обученная модель может использовать входные данные из HTTP-запроса и отправлять прогнозы в ответ. Благодаря рабочей нагрузке разработки Azure в Visual Studio вы можете создать и протестировать локальную функцию с помощью обученной модели и, наконец, развернуть свою функцию в Azure.

С чего начать?

ML.NET позволяет всем разработчикам .NET с любым уровнем знаний в области обработки данных создавать модели машинного обучения с помощью известных им инструментов и платформ. Имея на выбор множество сценариев, вы загружаете данные для построения модели с помощью построителя моделей в Visual Studio или API ML.Net. Вы можете создавать конвейеры машинного обучения, которые автоматизируют повторяющиеся шаги рабочего процесса, создавая лучшую версию вашей модели. Проекты на основе машинного обучения можно развертывать на различных платформах, в том числе в облаке, где развернутая модель ML.NET может получать новые данные и возвращать результаты, позволяя конечным пользователям использовать машинное обучение в вашем приложении.

Первоначально опубликовано на OpenDataScience.com

Читайте другие статьи по науке о данных на OpenDataScience.com, включая учебные пособия и руководства от начального до продвинутого уровня! Подпишитесь на нашу еженедельную рассылку здесь и получайте последние новости каждый четверг. Вы также можете пройти обучение по науке о данных по запросу, где бы вы ни находились, с нашей платформой Ai+ Training. Подпишитесь также на нашу быстрорастущую публикацию на Medium, ODSC Journal, и узнайте, как стать писателем.