Будущее принадлежит искусственному интеллекту и облаку. Да, вы не ослышались !!. И облако, и искусственный интеллект меняют мир. Системы искусственного интеллекта будут лучше работать на серверах облачных вычислений. Это связано со следующими причинами - низкая стоимость операций, масштабируемость и огромная вычислительная мощность для анализа огромного количества данных. Таким образом, сочетание машинного обучения с облачными вычислениями выгодно для обеих технологий. Теперь давайте посмотрим, как машинное обучение и облачные вычисления меняют мир:

Здесь я взял службу машинного обучения Microsoft Azure, которая предоставит SDK и службы для быстрой подготовки данных, обучения и развертывания моделей машинного обучения. Повысьте производительность и затраты с помощью автомасштабирования вычислений и конвейеров.

В этом блоге я собираюсь реализовать службу машинного обучения Microsoft Azure локально, используя набор данных MNIST с Sklearn.

Сначала давайте посмотрим на основы машинного обучения.

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

Проблемы с обучением делятся на несколько категорий:

Контролируемое обучение, при котором к данным добавляются дополнительные атрибуты, которые мы хотим спрогнозировать. Эта проблема может быть либо:

Классификация: образцы принадлежат двум или более классам, и мы хотим узнать на основе уже помеченных данных, как предсказать класс немаркированных данных.

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

Обучение без учителя, при котором данные обучения состоят из набора входных векторов x без каких-либо соответствующих целевых значений.

Обучающий набор и набор для тестирования: - Машинное обучение - это изучение некоторых свойств набора данных и последующее тестирование этих свойств на другом наборе данных. Распространенной практикой в ​​машинном обучении является оценка алгоритма путем разделения набора данных на два. Мы называем один из этих наборов обучающим набором, на котором мы изучаем некоторые свойства; мы называем другой набор набором для тестирования, на котором мы проверяем изученные свойства.

Здесь я использовал набор данных MNIST, который легко доступен на их веб-сайте.

О наборе данных MNIST: - Набор данных был построен из ряда наборов данных отсканированных документов, доступных в Национальном институте стандартов и технологий (NIST). Отсюда и происходит название набора данных - модифицированный набор данных NIST или MNIST.

Изображения цифр были взяты из множества отсканированных документов, нормализованы по размеру и центрированы. Это делает его отличным набором данных для оценки моделей, позволяя разработчику сосредоточиться на машинном обучении с минимальными затратами на очистку или подготовку данных. Каждое изображение представляет собой квадрат размером 28 на 28 пикселей (всего 784 пикселя). Стандартное разделение набора данных используется для оценки и сравнения моделей, где 60 000 изображений используются для обучения модели, а отдельный набор из 10 000 изображений используется для ее тестирования.

Это задача распознавания цифр. Таким образом, есть 10 цифр (от 0 до 9) или 10 классов для прогнозирования. Результаты сообщаются с использованием ошибки прогноза, которая является не чем иным, как точностью обратной классификации.

Цифры Количество образцов

0 6903

1 7877

2 6990

3 7141

4 6824

5 6313

6 6876

7 7293

8 6825

9 6958

Алгоритм обучения: - в случае набора данных цифр задача состоит в том, чтобы с учетом изображения предсказать, какие цифры оно представляет. Нам даются выборки каждого из 10 возможных классов (цифры от нуля до девяти), на которые мы подбираем оценщик, чтобы иметь возможность предсказать классы, к которым принадлежат невидимые выборки.

В scikit-learn оценщик для классификации - это объект Python, который реализует методы fit (X, y) и прогноз (T).

Примером оценщика является класс sklearn.svm.SVC, который реализует поддержку векторной классификации. Конструктор оценщика принимает в качестве аргументов параметры модели.

Экземпляр оценщика clf (для классификатора) сначала подбирается к модели; то есть он должен учиться на модели. Это делается путем передачи нашего обучающего набора методу fit. Для обучающего набора мы будем использовать все изображения из нашего набора данных, за исключением последнего изображения, которое мы зарезервируем для нашего прогнозирования. Мы выбираем обучающий набор с помощью синтаксиса Python [: -1], который создает новый массив, содержащий все, кроме последнего элемента из digits.data.

Теперь вы можете предсказывать новые значения. В этом случае вы будете делать прогноз, используя последнее изображение из digits.data. Путем прогнозирования вы определите изображение из обучающей выборки, которое лучше всего соответствует последнему изображению.

Соответствующее изображение:

Рабочий процесс: - рабочий процесс машинного обучения обычно следует следующей последовательности:

1. Разработайте сценарии обучения машинному обучению на Python.

2. Создайте и настройте цель вычислений.

3. Отправьте сценарии в настроенную цель вычислений для запуска в этой среде. Во время обучения скрипты могут читать или записывать в хранилище данных. А записи выполнения сохраняются как запуски в рабочей области и группируются в экспериментах.

4. Запросите у эксперимента зарегистрированные показатели из текущего и прошлых запусков. Если показатели не указывают на желаемый результат, вернитесь к шагу 1 и повторите свои сценарии.

5. После обнаружения удовлетворительного выполнения зарегистрируйте сохраненную модель в реестре моделей.

6. Разработайте сценарий оценки, который использует модель и развертывает модель как веб-службу в Azure.

Предварительные требования: - создайте рабочее пространство с помощью Python SDK. Во-первых, вам нужно установить SDK.

Перед установкой SDK сначала создайте среду с помощью приглашения anaconda, вот шаги для создания среды:

1. Откройте Anaconda Prompt, затем создайте новую среду conda с именем myenv и затем активируйте среду.

- Conda create -n myenv

- активировать myenv

2. Теперь установите SDK.

- pip install - обновить azureml-sdk [записные книжки]

- pip install numpy

- pip install matplotlib

- pip install scikit-learn

Шаги по развитию окружающей среды.

1. Создайте рабочую область, чтобы ваш локальный компьютер мог связываться с удаленными ресурсами:

Создайте объект рабочей области из существующей рабочей области. Workspace.from_config () читает файл config.json и загружает детали в объект с именем ws:

2. Создайте среду для отслеживания всех ваших пробежек.

3. Создайте цель удаленных вычислений, используемую для обучения.

Перед обучением важно загрузить данные в локальную систему, даже если вы можете загрузить их в хранилище BLOB-объектов в Azure.

ИССЛЕДУЙТЕ ДАННЫЕ.

Перед обучением модели выполните следующие действия:

1 Загрузите набор данных MNIST.

2 Отобразите несколько образцов изображений.

3 Загрузите данные в облако.

Загрузите сжатые файлы в массивы numpy. Затем используйте matplotlib для построения 30 случайных изображений из набора данных с их метками над ними. Для этого шага требуется функция load_data, включенная в файл util.py. Этот файл находится в папке с образцами. Убедитесь, что он находится в той же папке, что и этот блокнот. Функция load_data просто разбирает сжатые файлы в массивы numpy.

Обучение в удаленном кластере: -

Теперь обучите свою модель на удаленном кластере с помощью сценария поезда, вот шаги для обучения модели.

1) Создайте каталог

2) Создайте сценарий обучения

3) Создайте объект оценщика

4) Отправить работу

После обучения модель будет создана и сохранена на локальном компьютере.

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

скачать данные. Вы также можете взаимодействовать с ним со своего удаленного компьютера. Он поддерживается учетной записью хранения BLOB-объектов Azure.

Разверните образ модели в экземпляре контейнера Azure.

  1. Получите модель из вашей рабочей области.

2. Протестируйте модель локально.

3. Разверните модель в экземплярах контейнера.

4. Протестируйте развернутую модель.

Настройте образ и разверните. Это следующие шаги, которые представляют цикл кода: -

1) Создайте образ, используя эти файлы:

ü Файл оценок, score.py.

ü Файл окружения myenv.yml.

ü Файл модели.

2) Зарегистрируйте изображение под рабочей областью.

3) Отправьте образ в контейнер экземпляров контейнера Azure (ACI).

4) Запустите контейнер в экземплярах контейнера Azure (ACI) с помощью образа.

5) Получите конечную точку HTTP веб-службы.

Код запуска выполняет следующие шаги:

1) Отправьте данные в виде массива JSON в веб-службу, размещенную в экземплярах контейнера.

2) Используйте API запуска SDK для вызова службы. Вы также можете выполнять необработанные вызовы с помощью любого инструмента HTTP, такого как curl.

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

После развертывания и тестирования удалите созданную вами группу ресурсов.