Сделал (пока что) мини библиотеку - https://github.com/vad13irt/data-collators, где собираюсь сделать батчинг данных и дополнительно собрать pretrain техники в единую гибкую библиотеку, которая будет совместима с любыми входами, а не как сделано в 🤗 Transformers, где объект должен иметь определенный формат.
Пока разработка в самой ранней стадии, но с каждым днем будет все лучше, удобнее и быстрее! Если хотите предложить идеи или помощь, то можете написать мне в личку @vad13irt или сделать Pull Request!
Опубликовал статью (скоро добавлю код) про методы предобучения языковых моделей. Оцените и обязательно поставьте лайк!
https://www.kaggle.com/code/vad13irt/language-models-pre-training
Всем привет!
Я только что опубликовал ноутбук "EDA + Generate" с использованием Stable Difussion для нового Kaggle соревнования.
Вот ссылка:
https://kaggle.com/code/vad13irt/sdip-eda-generating
Не забудьте проголосовать, если считаете это полезным!
P.S. Я собираюсь делать ноутбуки для обучения и инференса. Следите за обновлениями!
Я только что опубликовал свой блокнот по исследовательскому анализу данных для нового конкурса #kaggle «Предсказать успеваемость учащихся из игры». Он охватывает некоторые анализы, которые не были охвачены другими общедоступными блокнотами.
https://www.kaggle.com/code/vad13irt/pspfgp-exploratory-data-analysis/notebook
Не забудьте проголосовать :)
Всем привет! Если кто-то не знает, у меня есть twitter аккаунт, куда я опубликовываю практически все что со мной происходит, поэтому кому интересно следить за мной не только о участиях в каких то соревнованиях или проектах, то можете подписаться. Каждому новому подписчику буду рад!
https://twitter.com/vad13irt
P.S. К сожалению, многие из подписчиков этого канала не смогут даже зайти в twitter, так как РФ заблокировала его.
Всем привет! Сегодня хочу с вами поделиться документом, которым я пользовался на протяжение всего Feedback Prize 3.0 соревнования, где мы получили серебро. Там какую-ту часть информации я удалил, потому что оно было связано больше с данными из соревнования, но все названия статей и соответственно к ним ссылки приложены.
Пусть это для вас будет как методичка или шпаргалка! Удачи на будущих NLP соревнованиях!
https://docs.google.com/document/d/11Kq3XbYCgYKB3sgHlntNDyF6pCD_Smn6pMbfQl-vuAU
Спустя долго время (~3 месяца) без действия на Kaggle платформе, я наконец-то сумел выложить что-то прикольное.
Как я уже упоминал, одна из моих целей в этом году - стать Kaggle Notebooks Grandmaster, для этого потребуется делать качественные и информативные ноутбуки.
Поэтому я разработал свой дизайн ноутбука, дизайн визуализаций, и манеру подношения информации. Конечно, это еще не окончательная версия и требуется еще достаточно количества времени, чтобы исправить все косяки в текстах, дизайне, и т.п, а самое главное - написать качественный и читабельный код.
Но с первыми результатами вы можете ознакомится перейдя по этой ссылке - https://www.kaggle.com/code/vad13irt/ps-s03e02-eda-baseline/notebook.
Готов выслушать любые пожелания и критику! Спасибо.
Днепр 16.12.2022 (1ое изображение) против 17.12.2022 (2ое изображение) вид с моей квартиры.
Не смотря, что на других улица появилось электричество, у меня в доме его до сих пор нету (почти двое суток). Также связь и интернет очень плохие или медленные.
Это я к тому, из-за чего я не могу нормально заниматься любым соревнованиями или просто математикой.
А самое главное, что это ещё раз показывает, что Россия терроризирует обычных мирных жителей.
P.S. #1
Этот канал никак не связан с политикой, но я просто хочу, чтобы это получило хоть какой-то огласки и люди знали, что вообще происходит.
P.S. #2
Когда появится возможность нормально провести время с интернетом и с электричеством, планирую порадовать вас материалами для нового NLP соревнования, который возможно поможет улучшить ваше решение и появится шанс выиграть медальку. Этот материал собирался на протяжении нескольких предыдущих соревнований из разных источников (форум kaggle, arXiv и др.).
Мои ошибки на Kaggle соревнованиях 2022!
Делайте правильное разбиение кросс-валидации и доверяйте ему. Данная проблема возникла с нами, мы не один раз спорили какое разбиение лучше всего выбрать на соревнование U.S. Patent Phrase to Phrase Matching, я топил за разбиение с учетом групп (например, GroupKFold), а мои товарищи - за обычное разбиение (например, KFold). Спор был из-за того, что два разных разбиений при одинаковых сидах, гиперпараметров и другими настройками, давали максимально разные результаты: мое разбиение ~0.83, моих товарищей: ~0.85 на таблице лидеров и кросс-валидации! Согласитесь, результаты очень сильно отличаются даже по меркам бизнес задач. В итоге, я не смог переубедить моих товарищей и мы вылетели из золотой медали, я не отрицаю, что возможно проблема могла быть не в этом, но после окончания соревнования некоторые люди сделали сравнение и как раз получили то самое отличие между золотой и серебряной зонами. Тем не менее, я благодарен им за их вклад и за то, что многому научился.
Никогда не усложняйте и начинайте с банального! Этот урок, как и предыдущий, я извлек из U.S. Patent Phrase to Phrase Matching. Идея была очень простая - учитывать схожести других объектов из группы для определения оценки для данного объекта. Моя идея: извлечь представления (embedding) из всех объектов группы, объединить их в один большой тензор и подать на вход CNN или RNN модели, где количество каналов/последовательностей - количество объектов в группе. Данного “монстра” очень сложно обучить и требует невероятные ресурсы, да и опыта с работой сверточнных сетей у меня было немного, в итоге забил на это.
Идея из самых лучших решение: просто-напросто добавить важную информацию (с кем сравнивалось и схожесть) в текст! Данных подход только увеличивал входную последовательность, тем не менее, инференс и обучение было значительно быстрым нежели у меня.
При Semi-Supervised Learning начинайте с soft предсказаниях. Это уже была для нас с моим напарником (/channel/kaggle_fucker) новой проблемой, мы решили добить Feedback Prize - Predicting Effective Arguments на последней недели, у нас до этого были какие-то наработки, но мы решили действовать с новым подходом, который выложили на форуме. Мы все обучили, сделали несколько разных моделей (diversity всегда помогает прыгать по таблице лидеров), в итоге за 1-3 дня допрыгали до ~80ого места. В конце решили сделать Pseudo Labeling, так как он казался многообещающим. Он нам ничего не улучшил, а чтобы попробовать soft предсказания времени толком не было (на генерацию и на обучение уходило ~24 часа). В конце концов, после прочтения лучших решений выяснилось, что мы могли легко войти в топ 50 и получить серебренную практически за одну неделю.
Возможно, это не все мои ошибки, которые были в этом году, но они мне запомнились больше всего, так как они так или иначе могли очень сильно прибавить в результатах и уже возможно мог быть Kaggle Competitions Master (не слишком ли оптимистично звучало?). Ну ничего, на ошибках учатся, поэтому я не сдаюсь!
POV: Когда включили электричество и твои социальные сети разрываются от уведомлений. Нет слов, просто одни эмоции.
P.S.
Спасибо Валерию Бабушкину!
The Feedback Prize 3.0 is completed! My team finished 49th.
I'm very grateful to my teammates for their hard work during the last month of the competition when I had (I will) problems with electricity in my city (e.g yesterday I hadn't electricity for 10+ hours.)
The top 50 teams: Kaggle-branded swag (t-shirt or water bottle) for every team member
Думаю стоит сделать небольшой анонс. Если кто-то здесь ожидает каких-то ежедневных анонсов, то я вас расстрою, так как здесь в общем будет посты связанны с интересными дискусиями, подходами и т.п с соревнованиями.
Читать полностью…U.S. Patent Phrase to Phrase Matching ended 1 week ago. We (Me, Lukasz Borecki, and Remek Kinas) we're participating there for almost 2 months, and we were able to get 14th place (first position on the silver medal zone) on Public Leaderboard, but unfortunately, then we took only 26th place (after disqualifying some teams) on Private Leaderboard of 1850+ teams! This is my first ever competition medal in Kaggle!
The task was to predict semantic similarity between two sequences but based on some CPC contexts (e.g. Math, Engineering, Chemistry, Science, Physics, etc.). For example, "car" and "washing machine" in the context of "Engineering" are quite semantic similar sequences, but in the context of "Driving," they are different.
We tried various approaches: Pseudo-Labeling (creating new pairs), Pretraining (since most of the BERT-like architectures weren't pretrained on scientific texts), Adversarial Training (to improve model generalization ability), Siamese Networks (to process two input sequences independently), Contrastive Learning (to increase/decrease distances between two embeddings), however, most of the approaches worked worse, so we just ended with an ensemble of different model architectures (bert-for-patents, deberta-v3-large, roberta-large, deberta-v3-small, etc.), some of the models had custom heads, and additionally we did strong post-processing. Also, I would like to emphasize that we did a custom warmup, we freeze some model's layers for a certain number of epochs, and then unfreeze them and change the learning rate. Such training setup gave significant improvement.
Despite this, even such a pipeline was very far from top places, so now I am going to tell you about some interesting approaches, that were used by top participants in the competition:
1. Adversarial Training. We tried it, but Adversarial Training methods require careful tuning of its parameters, e.g epsilon.
2. Prompt Learning. This is a new methodology in NLP, here model trains on Language Modeling (LM) tasks to predict some tokens, which are labels.
Generally, I am very happy with our final results. My advice, try everything that you thought! Competitions are experience, experience is more expensive than any money!
Good luck!
Ничего не буду писать просто скопирую текст из ODS kaggle_crackers от Владислава Крамаренко.
"Раз ниша не занята, и в честь моего выхода на первое место в Kaggle Stable Diffusion публикую пробную запись с разбором и идеями, которые сейчас дают минимум серебро. Впереди еще 2 месяца, надеюсь увидеть и вас в топе https://www.youtube.com/watch?v=GIttFpRVg8w. Так же завел канал, где иногда, буду делиться идеями, чтобы тут не спамить. /channel/kaggme"
Всем советую!
Exciting news! I just published an article on Kaggle describing some of the most popular and powerful Semi-Supervised Learning approaches, including Pseudo Labeling, Meta Pseudo Labels, and Noisy Student.
https://www.kaggle.com/code/vad13irt/semi-supervised-learning
Украине открыли доступ к ChatGPT. Это означает, то, что я смогу более эффективно создавать какие-то ноутбуки и дискуссии под Kaggle соревнованием. Раньше мне требовалась около 2-3 дней для этого, а теперь возможно максимум 1 день или вообще максимум пару часов!
Читать полностью…Ух ты ж емае! Что за лютая имба!
https://www.kaggle.com/competitions/stable-diffusion-image-to-prompts
The goal of this competition is to reverse the typical direction of a generative text-to-image model: instead of generating an image from a text prompt, can you create a model which can predict the text prompt given a generated image? You will make predictions on a dataset containing a wide variety of (prompt, image) pairs generated by Stable Diffusion 2.0, in order to understand how reversible the latent relationship is.
Кстати! MTS запустила новое соревнование на просторах ODS.
https://ods.ai/competitions/mtsmlcup
Краткие сведения
Тип данных: табличные
Размер данных: 1+ GB
Задача: предсказать пол и диапазон возраста пользователя.
Тем, кто будут принимать участие желаю удачи! Trust CV! Beware of overfitting!
Один из моих друзей недавно создал телеграмм канал /channel/radmirkazhere. Он также является школьником, он даже моложе меня, но это ему не мешает показывать потрясающие результаты не только на kaggle соревнованиях, поэтому можете подписаться на него и следить за его успехами 🏆!
P.S Это ни в кое случае не реклама (он даже не подозревает об этом посте 👀).
Это мой город! Я там ходил, гулял один час назад! И это находится в 3 минутах ходьбы от меня. Я очень сильно испугался из-за взрыва. А теперь я понимаю, что мог умереть если бы я с друзьями задержался на пару минут там.
Вот вам гребанный, ссаный русский мир.
Наконец-то получил футболку от Kaggle за топ 50 в таблице лидеров. Футболка классная, а самое главное - удобная. Но, дорога футболки была тяжелая, так как в Украине ведутся боевые действия => закрыто воздушное пространство, то прямой отправки из США нету, пришлось отправлять в Германию, а затем прямо в Украину, поэтому футболка обошлась в ~200грн за доставку (сразу вспомнил случай из AliExpress, когда доставка в несколько раз дороже чем товар, хотя в моем случае, умножать на 0 будет 0 😂).
В общем, все классно. Кстати, там были еще некоторые варианты (пожалуйста, посмотрите на изображение выше). Напишите, что вы бы выбрали!
Новое NLP соревнование на Kaggle! Кстати, организаторы этого соревнования также организовывали Feedback Prize (извините за тавтологию).
The goal of this competition is to streamline the process of matching educational content to specific topics in a curriculum.Читать полностью…
Слепил себе нового напарника для Kaggle соревнований!
Он мне шепнул, что хочет принять участие в Novozymes Enzyme Stability Prediction.
Если вы желаете ознакомиться с решениями, то прошу вас перейти по нижеприведенным ссылкам.
Основное описание - https://www.kaggle.com/competitions/feedback-prize-english-language-learning/discussion/369664
Мое описание как было реализован сбор данных и Semi-Supervised Learning часть - https://www.kaggle.com/competitions/feedback-prize-english-language-learning/discussion/369881
I published the second part of my previous study for optimizing Deep Learning models, especially for NLP tasks. Here, I discovered 5 approaches, which can additionally reduce training and inference time by a factor of 1.5-2!
https://www.kaggle.com/code/vad13irt/optimization-approaches-for-transformers-part-2/notebook
Enjoy reading and using!
Заняли 88 место на Feedback Prize соревнование на Kaggle.
Описание: https://www.kaggle.com/competitions/feedback-prize-effectiveness/discussion/347456
Sebastian Raschka considered some experiments testing one popular hypothesis about batch size "Does batch size must be the power of 2?" in his new paper "No, We Don't Have to Choose Batch Sizes As Powers Of 2" (https://sebastianraschka.com/blog/2022/batch-size-2.html). He concluded that setting batch size as powers of 2 is not necessary, because it doesn't slow down the training or inference significantly. However, the batch size is still a hyperparameter, which depends on many factors: model architecture, loss function, learning rate, etc, so we should spend some time tuning it carefully despite some arguments, which recommend increasing or decreasing batch size.
Читать полностью…Recently, I published an article about optimization approaches to speed up training and reduce memory consumption during training large-scale (parameters scale) NLP models such as Transformers.
There are explanations of each approach and additionally, most of the proposed approaches were implemented via PyTorch and HuggingFace API.
Firstly, the article describes basic methods such as Gradient Accumulation, Automatic Mixed Precision, Freezing, etc., and then goes throw more NLP-specific approaches such as Dynamic Padding, Uniform Dynamic Padding, and Fast Tokenizers.
Thereby, there is no need to have powerful GPUs or buy expensive clusters to train Transformers!
Enjoy!
https://www.kaggle.com/code/vad13irt/optimization-approaches-for-transformers