Базовая модель Пример компании CDN, которая хочет добавить ML для улучшения процесса принятия решений

Это была моя тестовая оценка на собеседовании для компании CDN

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

Доступные точки данных:

  • Расположение дата-центров
  • Информация о задержке пользователя и т. д.

Цель должна заключаться в том, чтобы для решения требовался минимально возможный набор функций.

Ожидаемые результаты

  • Концепция
  • Выполнение

Концепции:

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

Алгоритм кластеризации:

Предложить решение:

  1. Для этой концепции мы будем использовать алгоритм кластеризации для разработки службы расширения сети с дополнительными серверами, размещенными в центре обработки данных. Алгоритм кластеризации будет группировать пользователей в кластеры на основе их задержек до центров обработки данных. Расположение дополнительных серверов затем можно выбрать на основе центров этих кластеров, гарантируя, что они будут размещены в местах, близких к пользователям, которые испытывают большие задержки.

Шаги:

Во-первых, я собирал данные о расположении центров обработки данных по всему миру и средней задержке пользователей в каждом центре обработки данных. Эти данные могут быть представлены в виде матрицы, где строки представляют пользователей, а столбцы — центры обработки данных.

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

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

Аргумент:

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

Выполнение

Инструменты:

  • Kmeans от sklearn
  • Euclidean_distances от sklearn
  • Нампи
  • Панды
  • Развертывание, оркестровка и мониторинг (Flask, Docker, AWS Lambda serverless, Gantry, Prefect)

Образец/схема набора данных:

  • Количество серверов в дата-центре
  • Средние задержки пользователей в каждом из этих центров обработки данных

Сначала я буду использовать **elbow technique**, чтобы получить оптимальное количество K центроидов для кластеризации, затем я буду использовать класс KMeans для инициализации центров кластера, используя расположение существующих серверов. Затем я бы использовал метод fit_predict, чтобы назначить каждого пользователя кластеру на основе их задержек в центрах обработки данных.

Далее мы напишем итерацию, которая определит центры обработки данных с высокой производительностью задержки и высокой задержкой пользователей как потенциальные места для дополнительных серверов.

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

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

Коэффициент силуэта: для этой оценки мы будем использовать метрику sklearn.metrics.silhouette_score для измерения компактности и разделения кластеров, созданных алгоритмом. Более высокий коэффициент силуэта указывает на то, что кластеры четко определены и отличаются друг от друга. Индекс Калински-Харабаса. Для этой оценки мы будем использовать показатель sklearn.metrics.calinski_harabasz_score, который измеряет компактность и разделение кластеров с учетом количества кластеров и размера набора данных. Более высокий индекс Калински-Харабаса указывает на то, что кластеры четко определены и отличаются друг от друга. Показатели Фаулкса-Мэллоуза. Для этой оценки мы будем использовать **sklearn.metrics.fowlkes_mallows_score**Эта метрика измеряет присвоение образцов истинного класса. Он вычисляет среднее геометрическое попарной точности и полноты.

Конечный результат:

Конечным результатом использования кластерного подхода, такого как k-means, для решения проблемы улучшения показателей глобальных задержек будет определение потенциальных местоположений для дополнительных серверов. Группируя центры обработки данных в кластеры на основе их производительности по задержке и пользовательских данных, мы можем определить центры обработки данных с наибольшим потенциалом для улучшения глобальной производительности по задержке.

Регрессионный подход

Предложить решение:

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

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

Шаги:

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

  1. Используйте регрессионный анализ, чтобы определить факторы, наиболее сильно коррелирующие с глобальной задержкой.
  2. Используйте эти данные для обучения регрессионной модели, которая может прогнозировать влияние добавления дополнительных серверов в центр обработки данных на глобальную производительность задержки.
  3. Используйте обученную модель, чтобы определить, какие центры обработки данных больше всего выиграют от дополнительных серверов, и сколько серверов следует добавить в каждый центр, чтобы максимально снизить глобальную задержку.
  4. Разверните дополнительные серверы в указанных центрах обработки данных.
  5. Отслеживайте производительность сети после развертывания дополнительных серверов и используйте эту информацию для точной настройки модели и повышения ее точности.
  6. Повторяйте описанные выше шаги по мере необходимости, чтобы постоянно улучшать общую производительность задержки.

Аргументы:

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

Другой пример, предположим, что у нас есть центр обработки данных со 100 серверами, средняя задержка пользователя 50 миллисекунд и среднее расстояние пользователя 1000 километров. Если мы добавим 10 дополнительных серверов в этот центр обработки данных, наша регрессионная модель может предсказать, что глобальная задержка улучшится на 3%. Этот прогноз может помочь нам решить, стоит ли добавлять дополнительные серверы, и сколько серверов мы должны добавить, чтобы максимизировать улучшение показателей глобальной задержки.

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

Выполнение:

Инструменты:

  • Склеарн
  • Линейная регрессия и стохастический градиентный спуск
  • Нампи
  • Панды
  • Развертывание, оркестровка и мониторинг (Flask, Docker, AWSEc2, Gantry, Prefect)

Образец/схема набора данных:

  • Расположение центров обработки данных (координаты широты и долготы)
  • Количество серверов в каждом дата-центре
  • Среднее расстояние пользователей от каждого центра обработки данных (в милях или километрах)
  • Количество пользователей в каждом центре обработки данных
  • Средняя задержка пользователей в каждом центре обработки данных (в миллисекундах)

Псевдокод:

Сначала я предварительно обработаю данные, чтобы очистить их и подготовить к анализу. Это может включать такие шаги, как удаление отсутствующих или нерелевантных данных с помощью df.dropna() и стандартизация числовых значений путем преобразования типа данных в int с помощью df.astype(int).

во-вторых, я бы использовал статистический подход, такой как scipy.stats.pearsonr Пирсона и scipy.stats.spearmanr ****, чтобы определить факторы, которые наиболее сильно коррелируют с глобальными показателями задержки.

затем, как только эти факторы будут идентифицированы, я буду использовать sklearn.model_selection.train_test_split набор данных для обучения и тестирования, а затем я буду использовать ****sklearn.linear_model.LinearRegression**** и sklearn.linear_model.SGDRegressor fit() для обучения модели делать прогнозы относительно глобальной задержки на основе выявленных факторов и sklearn.linear_model.SGDRegressor predict() для прогнозирования производительность глобальных задержек.

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

Дополнительно:

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

Оценка модели:

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

Конечный результат:

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

Оценка продукта:

Чтобы оценить производительность продукта модели в производстве, я бы использовал комбинацию показателей оценки продукта. Это могут быть такие показатели, как:

  • Удовлетворенность пользователей: это можно измерить с помощью опросов или других форм обратной связи от пользователей, чтобы оценить их общую удовлетворенность моделью и ее влияние на общую производительность задержки.
  • Использование серверов: это можно измерить, отслеживая количество используемых серверов, а также уровни их использования, чтобы оценить, эффективно ли инструмент определяет центры обработки данных, которые получат наибольшую выгоду от дополнительных серверов.
  • Глобальная задержка: ее можно измерить, отслеживая среднюю глобальную задержку до и после реализации модели, чтобы оценить, достигает ли модель желаемого воздействия на глобальную задержку.
  • Окупаемость инвестиций: ее можно рассчитать, сравнив затраты на внедрение модели и добавление дополнительных серверов с преимуществами с точки зрения улучшенной глобальной задержки и удовлетворенности пользователей.