Введение

Добро пожаловать на испытание «Смены» — трек оценки мощности!

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

Задача оценки мощности состоит из двух этапов:

  • Этап 1 (этап разработки). Участники будут работать с синтетическими данными. После запуска соревнования выпускаются наборы данных для обучения и разработки, которые должны использоваться для разработки моделей. Наборы оценки и обобщения скрыты и используются для оценки представленных решений. Основываясь на таблице лидеров этапа 1, участники могут выбрать свои лучшие модели, которые являются хорошими кандидатами на реальные данные этапа 2.
  • Этап 2 (Этап оценки). На втором этапе выпускаются реальные наборы данных для обучения и разработки. Участники будут обучать свои лучшие модели (согласно результатам этапа 1) на реальных данных и будут оцениваться на представленном наборе реальных оценок. Окончательный рейтинг определяется положением в таблице лидеров оценки этапа 2. На этом этапе допускается ограниченное количество заявок.

Как использовать общедоступные данные?

  • Набор Train используется для обучения модели.
  • Dev_in состоит из данных в домене с набором поездов с точки зрения условий эксплуатации. Его следует использовать для настройки гиперпараметров.
  • Dev_out — набор данных, сдвинутый по времени и скорости ветра. Его можно использовать вместе с dev_in для оценки модели.

Dev_out не следует использовать для обучения и настройки гиперпараметров ваших моделей.

С этого момента мы сосредоточимся на синтетических данных фазы 1. Предоставленный код также применим к реальным данным фазы 2.

Настройте локальную среду

  1. Клонируйте репозиторий Shifts-Project, чтобы создать локальную копию на вашем компьютере (см. руководство Github Клонирование репозитория).
  2. Создайте виртуальную среду, используя файл requirements.txt проекта vpower.

Как создать виртуальную среду? Перейдите в каталог проекта vpower и выполните следующие команды:

Если вы используете virtualenv:
- virtualenv -p /usr/bin/python3.9 <env_name>
- source <env_name>/bin/activate
- pip install -r requirements.txt
- deactivate

Если вы используете conda:
- conda create -n <env_name> python=3.9
- conda activate <env_name>
- pip install -r requirements.txt
- conda deactivate

Получить общедоступные данные

Данные публикуются под лицензией CC BY-NC-SA 4.0. Скачивая данные, вы принимаете и соглашаетесь с условиями лицензии CC BY-NC-SA 4.0.

  • Загрузите данные с Zenodo.
  • Сохраните данные в локальном каталоге с именем наборы данных.

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

Загрузить данные

Начнем с загрузки данных. Мы создадим словарь data с парами имя раздела: данные раздела.

Доступные функции обучения:

Целевой особенностью является:

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

Давайте определим 2 параметра: input_features, который представляет собой список имен входных функций модели, и параметр target.

Предварительная обработка данных

Масштабирование данных выполняется на основе статистики набора поездов и включает два типа масштабирования:

  • Для функции времени timeSinceDryDock мы выполняем масштабирование с нулевым максимумом, используя глобальное время, поскольку максимум = 4324320 минут. Этот глобальный максимум соответствует временному интервалу около 8 лет между двумя мероприятиями по очистке в сухом доке.
  • Остальные входные признаки и цель стандартизированы (Z-масштабирование).

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

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

Обучение модели

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

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

Подробнее об обучении модели читайте в этом руководстве.

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

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

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

Кривые удержания

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

  • Кривые удержания ошибок

  • Кривые удержания F1

Для удержания F1 необходимо определить порог допустимой ошибки (подробнее здесь). Мы считаем приемлемыми прогнозы с MSE ‹ (500 кВт)². Порог 500 кВт является разумным верхним пределом ошибки прогнозирования мощности для исследуемого типа судна.

Метрики оценки

  • Прогнозируемая производительность

  • Производительность удержания

Создайте свой алгоритм докера

До сих пор вы узнали, как обучать и оценивать модель-кандидат локально. Следующий шаг — поместить обученную модель и код логического вывода в док-контейнер, который будет отправлен на платформу Grand Challenge.

Мы предоставляем полнофункциональный Контейнер алгоритмов в качестве шаблона для создания собственного контейнера. Шаблон совместим с кодом, представленным выше, и обрабатывает случай нашей базовой линии.

Как использовать шаблон?

  1. Клонируйте репозиторий algoritm_docker_power, чтобы создать локальную копию на вашем компьютере (см. руководство Github Клонирование репозитория)
  2. Настройте папку ./model:
    — перенесите сюда свою обученную модель. В нашем примере члены ансамбля
    (protobufs) хранятся в ./model/models.
     — Сохраните здесь статистику данных, которая будет использоваться для масштабирования данных, если это
    применимо в вашем случае. В нашем примере статистика данных хранится
    в папке ./model/stats.
    — включите в эту папку все зависимости для вашей модели с точки зрения
    источника. код и файлы.
  3. Чтобы создать докер для своего алгоритма, вам нужно написать собственный код в process.py. В частности, вы должны наследоваться от ShippingBaseAlgorithm и реализовывать методы шаблона load_model и predict. Вы также можете делать все, что захотите, в init класса. Не изменяйте исходный код ShippingBaseAlgorithm, так как на этапе отправки могут возникнуть проблемы. Докер шаблона работает с pandas DataFrame, что удобно для задач с табличными данными.

В репозитории algoritm_docker_power мы настроили папку ./model для нашего базового уровня.

  • load_model: В этом методе вы должны определить способ загрузки вашей модели. Обычно это зависит от библиотеки, которую вы используете для обучения модели, и от того, как вы сериализуете модель на этапе обучения. Вы можете использовать любую библиотеку Python для своей модели (включая библиотеки в файле ./requirements.txt).
  • predict: Напишите свой код, чтобы сделать вывод о модели. Как правило, на выходе должен быть кадр данных pandas, содержащий 3 столбца (time_id, power, uncertainty). Вы можете использовать self.form_outputs, чтобы убедиться, что ваши данные имеют правильный формат.

Советы

Докер учитывает определенные папки и файлы, как описано в файле Dockerfile. Таким образом, вы можете добавлять и изменять следующие папки или файлы:
- process.py (запишите процесс вывода)
- /utils (вы можете добавить столько файлов python, сколько хотите)
- /model (можно добавлять модели, статистику данных и скрипты python)

В случае, если шаблон не соответствует требованиям вашего метода, вы можете создать докер алгоритма с нуля, как описано в документации grand-challenge. Мы настоятельно рекомендуем вам изменить текущий шаблон для создания докера.

Существуют особые требования к пути ввода и вывода, а также к формату вывода: вы должны считывать ввод из /input/merchant-vessel-features.json и записывать вывод в /output/ мощность судна-оценки.json. Вы проверяете выходной формат в файле /test/expected_output.json.

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

На этапе разработки алгоритма Docker вы можете изменить следующие пути в файле /utils/eval_utils.py, чтобы они соответствовали вашему локальному пути.

DEFAULT_OUTPUT_PATH = Путь("/output")
DEFAULT_INPUT_PATH = Путь("/input")
DEFAULT_MODEL_PATH = Путь("/opt/алгоритм/модель")

Вы можете протестировать свой алгоритм, запустив файл ./test.sh. Образец тестовых входных данных хранится в папке ./test.

Экспортируйте контейнер вашего алгоритма

После создания контейнера алгоритма его можно экспортировать, запустив файл export.sh, который создает файл *.tar.gz, содержащий контейнер алгоритма.

Отправьте свой контейнер алгоритма

Последним шагом является отправка контейнера алгоритма на платформу Grand Challenge.

  • Нажмите на кнопку отправки

  • Перейдите на страницу отправки:
     – выберите параметр Power Estimation Phase I
     – если это ваш первый контейнер алгоритмов, этот параметр будет доступен в
    подразделе -tab Алгоритм, чтобы создать новый контейнер алгоритма. Нажмите на ссылку
    , чтобы загрузить контейнер алгоритма (см. рисунок ниже). Подготовка контейнера алгоритма займет
    некоторое время (максимум 1 час).
    – Когда контейнер будет готов, вернитесь на страницу отправки, чтобы
    отправить заявку, выбрав недавно загруженный контейнер на
    подвкладке Алгоритм.
    - Кроме того, у вас также есть возможность предоставить краткое описание
    вашего алгоритма в формате PDF или прикрепить публикации. появится вместе с
    вашим алгоритмом.

Это оно! Вы отправили контейнер с алгоритмом на наш вызов!

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

Полезные ссылки