Въведение

Добре дошли в предизвикателството Shifts — песен за оценка на мощността!

Като участник ще трябва да изпълните няколко стъпки, за да подготвите подаване, които са описани в тази публикация. Ако все още не сте се регистрирали за предизвикателството, можете да го направите на тази връзка.

Предизвикателството за оценка на мощността се състои от две фази:

  • Фаза 1 (фаза на развитие): Участниците ще работят със синтетичните данни. При стартирането на състезанието се пускат наборите от данни за обучение и разработка, които ще се използват за разработване на модели. Комплектите за оценка и обобщение се пазят скрити и се използват за оценка на представените решения. Въз основа на класацията на фаза 1, участниците могат да изберат най-добрите си модели, които са добри кандидати за реалните данни на фаза 2.
  • Фаза 2 (Фаза на оценка): Във втората фаза се пускат реалните набори от данни за влак и разработка. Участниците ще обучат своите най-добри модели (както е завършено от фаза 1) върху реалните данни и ще бъдат оценени на базата на набора за реална оценка. Окончателното класиране се определя според позицията в класацията за оценка на фаза 2. В тази фаза е разрешен ограничен брой изпращания.

Как да използваме публични данни?

  • Комплектът Влак се използва за обучение на модели
  • 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 kW)². Прагът от 500kW е разумна горна граница за грешка при прогнозиране на мощността за типа кораб, който се изследва.

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

  • Предсказуемо представяне

  • Ефективност на задържане

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

Досега сте се научили как да обучавате и оценявате кандидат модел на местно ниво. Следващата стъпка е да опаковате вашия обучен модел и код за изводи в докер контейнер, който ще бъде изпратен на платформата 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 DataFrame, съдържащ 3 колони (time_id, power, uncertainty). Можете да използвате self.form_outputs, за да сте сигурни, че вашите данни са в правилния формат.

Съвети

Докерът взема предвид конкретни папки и файлове, както е описано в Dockerfile. Така че можете да добавите и модифицирате следната папка или файлове:
- process.py (напишете своя процес на извод)
- /utils (можете да добавите толкова файлове на Pythons, колкото искате)
- /модел (можете да добавяте модели, статистически данни и скриптове на Python)

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

Има специфични изисквания за входния и изходния път и изходния формат: Трябва да прочетете входа си от /input/merchant-vessel-features.json и да запишете изхода си в /output/ vessel-power-estimates.json. Проверявате изходния формат в /test/expected_output.json.

Тествайте вашия алгоритъм докер локално

За фазата на разработка на докера на алгоритъма можете да промените следните пътища в /utils/eval_utils.py, за да съответстват на вашия локален път.

DEFAULT_OUTPUT_PATH = Път (“/изход”)
DEFAULT_INPUT_PATH = Път (“/вход”)
DEFAULT_MODEL_PATH = Път (“/opt/алгоритъм/модел”)

Можете да тествате вашия алгоритъм, като стартирате файла ./test.sh. Извадката от тестови входни данни се съхранява в папката ./test.

Експортирайте контейнера на вашия алгоритъм

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

Изпратете вашия контейнер за алгоритъм

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

  • Кликнете върху бутона за изпращане

  • Отидете до страницата за изпращане:
    - Изберете опцията за оценка на мощността Фаза I
    - Ако това е първият ви контейнер за алгоритъм, ще имате опцията под
    под -tab Алгоритъм за създаване на нов контейнер за алгоритъм. Щракнете върху връзката
    , за да качите контейнера на своя алгоритъм (вижте фигурата по-долу). Ще отнеме
    известно време (максимум 1 час), докато контейнерът ви с алгоритъм бъде готов.
    - След като контейнерът ви е готов, върнете се обратно към страницата за изпращане, за да
    направите своето изпращане, като изберете своя новокачен контейнер в
    подраздела Алгоритъм.
    - Освен това имате също опции да предоставите кратко описание на
    вашия алгоритъм в PDF файл или да прикачите публикации да се появи заедно с
    вашия алгоритъм.

Това е то! Изпратихте своя контейнер с алгоритъм към нашето предизвикателство!

След като подаването на вашия контейнер с алгоритъм приключи успешно, оценката на вашия модел се задейства автоматично. Вашият модел се оценява на скрити данни, както е описано тук, и резултатите се показват в класацията.

Полезни връзки

  • „Измества уебсайта на проекта“
  • „Голямото предизвикателство“
  • „Измества GitHub“
  • Зенодо
  • „Документ за набори от данни и показатели“