Если вы не используете conda, то вам придется. Перед непосредственным созданием среды вам нужно залезть в файл environment.yml и отредактировать в нем следующие строчки:
- cudatoolkit=11.6 -> cudatoolkit=??
- -f https://data.pyg.org/whl/torch-1.12.0+cu116.html -> -f ???
Строчки редактриуется в соотвествии с подходящей для вас версии куды. Конкретные значения для подстановки можно узнать на сайтах Pytorch и PyG.
Как поддерживаемую версию cuda?
С помощью вот этой команды (информация в шапке таблицы):
nvidia-smi
Устанавливать версию с поддержкой cuda не обязательно, но это позволит обучать модели гораздо быстрее
После редактирования файла envrionment.yml используйте следующую команду, что создать новую среду из файла конфигурации:
conda env create -f environment.yml
После этого у вас появится среда ml-graphs
, хранящая все необходимые зависимости.
Участникам хакатона предстоит спрогнозировать склонность пользователя VK к благотворительной деятельности.
Кейс представляет собой задачу бинарной классификации. Командам будет необходимо изучить последовательность пользовательских состояний, набор вещественных признаков и топ близких ему пользователей с тем же признаковым описанием.
Решение кейса представляет собой модель, которая определяет, интересуется ли пользователь благотворительностью. При оценке будет учитываться не только объективное качество модели, но и обоснование решения. Также обязательным пунктом является обучения модели на графах и извлечение признаков из них.
//
- Графовые нейронные сети
- Gentel intro to GNN и Understanding Convolutions on Graphs
- How to get started with ML on graphs - классная небольшая вводная статья без сложной математики
База статей по всему и вся: https://github.com/thunlp/GNNPapers
- PyG (PyTorch Geometric) - основной фреймворк для обучения на графах
- NetworkX - библиотека для визуализации графов
- TorchMetrics - удобная библиотека с кучей реализаций стандартных метрик
Краткое изложение ориентировочного плана действий
- Загрузка и предобработка данных - здесь могут возникуть любые форматы и данные любой степени грязности (а могут и не возникнуть).
- Какие данные являются лишними для поставленной задачи?
- Как работать с пропусками в данных?
- Как превратить .csv/.json/.xyz в объект Dataset?
- Анализ данных, выдвижение гипотез, еще предобработка - здесь важно сделать правильные предположения относительно применимых методов решения
- Построение модели и пайплайна обучения - тривиальная часть, но нужно много кода.
- Обучение => Тюнинг => Обучение => Тюнинг... - долго, нудно, борьба за +1e-5 в качестве, возможно круто будет применить что-то вроде GraphGym (а может это и слишком)
- Упаковка модели и анализ (Explainatory AI, см. пункт про анализ)
- Презентация - просто рассказать краткую историю решения + анализ результатов
Модели стоит протестировать на различных датасетах, получив информацию о их результативности в зависимости от данных.
- Генируемые данные - в качестве параметра
name
указывать"PATTERN"
или"CLUSTER"
, данные моделируют взаимосвязь между некоторыми сообществами в социаьлных сетях. Может быть актуально, т.к. люди, занимающиеся благотворительностью, часто занимаются ей в рамках каких-то некоммерческих объединений. - GitHub Social Network - пользователи гитхаба, поставившие звездочку каким-то репозиториям и имеющие связи между друг другом (взаимные подпсики). Требуется научиться предсказывать, к какому типу относится разраб - веб или ML. (Тоже есть в PyG, вот тут)
- Twitch Social Network - пользователи платформы Twitch, связи соответствуют взаимным подпискам (ненаправленные). Фичи у пользователей - просматриваемые игры, локация и привычки (?). Датасет многозадачный, бинарная классификация на нем сводится к предсказанию оттока пользователя (churn prediction), но могу быть неправ (тоже есть в PyG, вот тут)
Несмотря на то, что все эти датасеты есть в PyG в виде классов для загрузки, обязательно нужно потренироваться в ручном преобразовании данных в датасет, потому что именно это придется делать на хакатоне.
sources: Explainability in Graph Neural Networks: An Experimental Survey, GNNExplainer: Generating Explanations for Graph Neural Networks
Кроме того, что обученная модель будет выдавать какие-то предсказания, которые можно будет качественно оценить с помощью целевой метрики, важным пунктом является объяснение и интерпретация результатов работы модели.
Вообще есть целая область, называемая Exaplainable AI, главной задачей которой является извлечение скрытой информации из моделей, анализ принципов ее работы и "мышления". Это важно, т.к. в сыром виде модели глубокого обучения представляют собой черные ящики, волшебным образом выдающие результат.
В PyG реализован класс специально для объяснения предсказаний любых графовых моделей: GNNExplainer. В документации есть код с примером использования, будет круто использовать его для обоснования работы модели.
Очень много и подробно. Не для всех, но потенциально нужно.
- Курс от Standford про GNN
- Network Science - книга про графы/сети и их применение - здесь нет ничего про графовые модели обучения, но много чего просто интересного про графы, короче знание предметной области