Aspiring Data Science – Telegram
Aspiring Data Science
385 subscribers
465 photos
12 videos
12 files
2.15K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
Не знаю, кем мир видит меня; в своих же собственных глазах я просто мальчик, играющий на берегу, отвлекающий себя от забот жизни поиском самых гладких галек и красивых ракушек, выброшенных из простирающегося передо мной величественного и неизведанного океана истины.


размышления сэра Исаака Ньютона
3
#pytorch #lightning

Понравился пример из доки Monte Carlo Dropout for predictions

class LitMCdropoutModel(L.LightningModule):
def __init__(self, model, mc_iteration):
super().__init__()
self.model = model
self.dropout = nn.Dropout()
self.mc_iteration = mc_iteration

def predict_step(self, batch, batch_idx):
# enable Monte Carlo Dropout
self.dropout.train()

# take average of `self.mc_iteration` iterations
pred = [self.dropout(self.model(x)).unsqueeze(0) for _ in range(self.mc_iteration)]
pred = torch.vstack(pred).mean(dim=0)
return pred


Статья
Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning.
👍1
#pytorch #lightning

В Лайтнинге обнаружился параметр тренера Trainer(benchmark=True)

Дока туманно намекает, что это некая оптимизация алгоритмов Куды. Удалось найти, каких именно:

static const algo_t algos[] = {
CUDNN_CONVOLUTION_FWD_ALGO_GEMM,
CUDNN_CONVOLUTION_FWD_ALGO_FFT,
CUDNN_CONVOLUTION_FWD_ALGO_FFT_TILING,
CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_GEMM,
CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_PRECOMP_GEMM,
CUDNN_CONVOLUTION_FWD_ALGO_DIRECT,
CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD,
CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD_NONFUSED,
}

Говорят, иногда хорошо ускоряет:


Oli
Olof Harrysson
Apr 2019

I find that torch.backends.cudnn.benchmark increases the speed for my YOLOv3 model by a lot, like 30-40%. Furthermore, it lowers the memory footprint after it completes the benchmark.

It even works when my input images vary in size between each batch, neat! I was thinking about having the network optimize on a few smaller torch.randn(...) to benchmark on, and then start the training. I hope that this could allow me to increase the batch size since the memory footprint is lower after the bechmark. What do you guys thing?


https://github.com/pytorch/pytorch/blob/1848cad10802db9fa0aa066d9de195958120d863/aten/src/ATen/native/cudnn/Conv.cpp#L486-L494
👍1
#pytorch #lightning #swa

А кто пробовал SWA?

Stochastic Weight Averaging (SWA) can make your models generalize better at virtually no additional cost. This can be used with both non-trained and trained models. The SWA procedure smooths the loss landscape thus making it harder to end up in a local minimum during optimization.

For a more detailed explanation of SWA and how it works, read this post by the PyTorch team.
#dl #gpu #hpu

Прикольно, Intel Gaudi1 заруливают NVIDIA A100 по цена/производительность. Вот бы ещё для IPU (Graphcore Intelligence Processing Unit ) такое сравнение найти.

8 NVIDIA A100 --> $0.98 / COCO epoch
8 Intel Gaudi1 HPU --> $0.73 / COCO epoch

Намекают, что Gaudi2 (уже вышли) вчетверо быстрее Gaudi1.

https://blog.roboflow.com/gpu-vs-hpu/
Про современные сетки, косты на их обучение и альтернативу стандарным методам обучения

Не буду даже писать про то почему обучение больших сеток это важно. В инфополе каждого думаю 4-5 постов, подводящих к этой мысли.
Но обучение современных сеток сопряжено с нюансом.
Чтобы обучить GPT-3 на 175 миллиардов параметров нужно было потратить 5 млн долларов (3,640 petaflop/s-days ).
Чтобы обучить GPT-4 на более 1.76 триллионов параметров и больше 100 миллионов долларов
По слухам в GPT-5 будет 10-20 триллионов параментров. Мы не знаем, сколько на это потратит денег OpenAI, но я думаю больше 2-х миллиардов.

Собственно к проблемам
Кроме OpenAI свои большие модели сделали-делают Google, Microsoft, Amazon, Meta, NVIDIA (Megatron, 500 млрд параметров). Конечно же еще индусы, китайцы ну и россияне. В мире сейчас 20 триллионов денежной массы циркулирует. Если все будет идти в том же темпе (гиганты будут обучать сетки сопоставимые с OpenAI и число параметров прогрессировать с той же скоростью) вероятно уже в этом году компании уже могут потратить суммарно больше 100 млрд долларов. Что на минутку уже около 0.5 процента всей циркулирующей денежной масссы в мире (!!). И это только начало и это мы еще молчим про инференс этих моделей.

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

Пример с Intel.
В 2019 году выручка intel была 72 bln, а nvidia 12 bln. В 2023 году выручка intel была 54 bln, а nvidia 27 bln. Динамика сильная даже если не брать оценки, а взять просто выручку, факт. Почему так происходит? Потому что мир быстро меняется и сейчас большой спрос на GPU и TPU, и nvidia смогла приспобится быстрее. И еще начать делать свои ИИ решения сверху. В целом вероятно что с ростом NVIDIA произойдет то же самое и найдется компания, которая ее обгонит, но nvidia быстро итерируется и делает альтернативные технологии. Забавно что Intel тоже в свое время в 90-е на поворотах обогнал много конкурентов, среди которых была даже моторола. History repeats itself.

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

Какие есть альтернативы
Хинтон, который написал нашумевшую статью (а вы видели еще статью с 16к цитирований) собственно про backprop в 1986 году активно критикует свой же собственный метод в 2024. Предлагает капсульные сети, которые я даже как-то раньше тут разбирала. Правда он пока не работает, но очень интересный.
Глобально инновации могут быть на трех уровнях - алгоритмическом (делаем инновации в способе обучения как капсулы), железа - проектируем новые способы вычислений (например BrainChip — с нейроморфным процессором Akida, который имитирует мозг человека и может считать сети на девайсе), сервисном (компании которые помогают менеджерить модели, например Bright Computing который NVIDIA купила в 2022 году), и даже физическом (я недавно познакомилась с профессором теорфизики из Кэмбриджа, который делает очень интересный способ на уровне именно физических процессов перестроить обучение)
Есть еще много разной альтернативы, но уже не влезает пост. Полайкайте, если хотите пост про альтернативы, тема очень будоражащая.
#fantasy #gemmel

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

Бэйн не мог поверить своим глазам.

— Почему? — прошептал он. Потянувшись вперед, он вцепился в перила балкона. Да, он знал все ответы. Свирепый делал это ради него. Слова старшего друга всплыли в памяти Бэйна, словно высеченные из огня.

«У тебя нет отца, а у меня — сына. Мне кажется, мы стали почти родственниками, и, как любому отцу, мне не хочется, чтобы мой сын губил себя по собственной глупости».

Бэйну стало стыдно и страшно. Ради его эгоистичной мечты о мести жизнью рисковал его единственный настоящий друг. Его мозг не выдерживал напряжения, и вся горечь и ненависть его детства и юности начала таять вместе с тоской и одиночеством, обидами и разочарованиями. Все стало казаться мелким и ничтожным по сравнению с жертвой, которую ради него собирался принести этот человек. Свирепый знал, что Бэйну не одолеть Волтана, и понимал, что, несмотря на собственный возраст, он все еще может ослабить Волтана, растратить его силы на себя, может, даже ранить, чтобы у Бэйна появилось больше шансов выжить. — Я не хотел… — шептал Бэйн.

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

Скорость поединка была просто невероятной, и само сражение немного напоминало танец. Бэйн смотрел не отрываясь, во рту у него пересохло, дыхание сбилось, вцепившиеся в перила пальцы побелели. Как бы ни закончился поединок, он знал, что поступок Свирепого навсегда изменил его жизнь. Никогда больше он не станет жаловаться на несправедливость. Подарок, который он получил сегодня, с лихвой покрыл все обиды и неприятности, которые с ним случались."
Forwarded from DLStories
В продолжение поста о Google Vizer:

Google представляет OptFormer: первую нейронную модель для black-box оптимизации
#paper

Работал, значит, в Гугле Vizer несколько лет, работал, и накопил достаточно много логов оптимизации разных ML-моделей. И у рисерчеров возникла идея: что если на этих логах обучить нейросеть? И тогда с помощью этой нейросети можно будет оптимизировать параметры других ML-моделей. Так и родился OptFormer.

Устройство OptFormer простое. Архитектура — обычный T5-Трансформер. На вход модель принимает информацию о нейросети и о задаче, под которую нейросеть нужно оптимизировать (на гифке ниже это info: нейросеть обучается под CIFAR-10) Эта информация подается на вход в виде набора текстовых токенов. Например, если мы хотим найти гиперпараметры для сверточной нейросети для решения задачи CIFAR, и наша метрика — accuracy, то на вход модели подаем следующее:

"name": "convnet on cifar10",
"metric": "accuracy",
"goal": "MAXIMIZE"

Также на вход нужно подать список параметров, которые нужно оптимизировать (search space на гифке под постом). Например, вот так можно задать, что лучший оптимизатор нужно искать среди SGD и Adam:

"parameter": {
"name": "opt_type",
"type": "CATEGORICAL",
"categories": ["SGD", "Adam"],
}

После этого начинается процесс подбора гиперпараметров. На каждом шаге OptFormer выдает значение каждого из настраеваемых параметров. Например, “Adam, 1e-3”. Далее нужно обучить нейросеть с этими параметрами, получить результат (значение лосс-функции/метрики качества), и подать это значение обратно в OptFormer. После этого начинается следующий шаг оптимизации: OptFormer видит, какой результат получился с текущими значениями гиперпараметров, и на основе этой инфы пытается подобрать новые гиперпараметры, которые дадут лучший результат.

Короче, user interface как у стандартных байесовских оптимизаторов. Но у OptFormer несколько серьезных преимуществ:
✔️ В OptFormer можно задать, какой алгоритм оптимизации имитировать. Как я писала в посте выше, для black-box оптимизации есть много разных алгоритмов. OptFormer учился на логах всех из них, поэтому может имитировать процесс подбора параметров разными алгоритмами. Чтобы заставить OptFormer имитировать grid search, к примеру, нужно на вход подать еще один параметр: "algorithm": "random_search”. Результаты экспериментов показывают, что OptFormer достаточно хорошо прикидывается различными алгоритмами.
✔️ Кроме значений параметров на каждом шаге OptFormer также выдает ожидаемую метрику качества, которая должна получиться у нейросети с такими параметрами. Причем выдает весьма неплохо, как пишут в статье.
Эта фича — предсказание значения метрики качества для набора параметров — позволяет OptFormer работать даже лучше, чем стандартные алгоритмы (и даже лучше, чем Vizer). Дело в том, что на каждом шаге работы алгоритма можно семплировать сразу несколько значений параметров, а затем выбрать из них лучший, основываясь на предсказаниях метрики качества для каждого из набора параметров. По результатам экспериментов OptFormer действительн могёт: оптимизация ResNet-50 на CIFAR-10 у него заняла меньшее количество итераций, чем у Vizer, и итоговый достигнутый accuracy получился даже лучше.

Ссылки:
Блогпост Google AI
Статья на arxiv
🔥1
Forwarded from asisakov
А что если данные закончатся?

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

Когда минимум 40 часов в неделю занимаешься прогнозированием, то автоматом через секунду в голове возникает вопрос - а что дальше? Что будет, когда закончатся все данные, до которых мы можем дотянуться?

Вообще, на вопросы про возможные ограничения ресурсов (например, нехватка GPU) уже отвечали тут, тут и тут. Ну и ещё пара предпосылок тут и тут.

Как их можно объединить в контексте данных:

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

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

Каким можно увидеть развитие ситуации?
(Что-то из этого уже реализуется)

1. Генерация синтетических данных и получение новых:
1.1. Создание продвинутых моделей и сред (environment) для генерации реалистичных данных на основе ограниченных исходных выборок, с учетом особенностей имеющихся данных.
1.2. Использование генеративных моделей для создания синтетических данных, неотличимых от реальных примеров.
1.3. Привлечение экспертов для валидации и улучшения качества синтетически сгенерированных данных - особо важно на старте замкнутых систем с генерациями данных.

2. Улучшение эффективного переноса знаний (transfer learning) для LLM:
2.1. Обучение одной универсальной модели как учителя для других более маленьких и узконаправленных моделей. Может выступать как маршрутизатор к нужной модели. Мб реализуемо и через RAG.
2.2. Разработка более эффективных архитектур и алгоритмов - очевидно. Например, чтобы было меньше забывания.
2.3. Переход к новой парадигме передачи и хранения информации в LLM.

3. Инкрементальное обучение и генерация/разметка данных человеком:
3.1. Запрос у пользователей недостающей по их мнению информации в ответе, обработка обратной связи в процессе работы с моделью.
3.2. Активное обучение, где LLM самостоятельно выбирает наиболее информативные примеры для обогащения данных из потока пользовательских логов.

Возможные проблемы:

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

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

3. Монополизация данных.
Крупные корпорации, обладающие гигантскими датасетами, получат подавляющее преимущество. Конечно, многие прорывы в области LLM были совершены некоммерческими организациями вроде OpenAI (которая перестала быть некоммерческой) или StabilityAI.

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

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

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

#llm #thoughts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3