Love. Death. Transformers.
22.5K subscribers
4.28K photos
499 videos
76 files
2.79K links
❤️☠️🤗

Указанные действия не являются ресерчем, поскольку:
а) Мы не ученые;
б) Оно работает.
@transformerslovedeatch по всем вопросам
Все ситуации вымышлены, любые совпадения с реальности плот вашей фантазии.
Download Telegram
Media is too big
VIEW IN TELEGRAM
ИИ ОТНИМАЕТ У НАС САМОЕ ДОРОГОЕ

Майнкрафт на новогодних. Чел подключил Майнкрафт к opencode и теперь ллм играет в Майнкрафт.

Github
😭60👍10🔥5🤔4🌭4💋1🗿1
Судя по stack overflow через лет эдак 50 когда зумеры начнут активно умирать мы будем жить в чем то среднем между пелевиным и wh40k, с одной стороны есть возможность крутить ultra advanced технологии умнее людей, с другой стороны они не то чтобы дают бонусы для простого обывателя (скорее наоборот)
🤔96🔥13💯9🫡5🥴43
Если сранивать онлифанщиц и ML/AI phd, то с одной стороны у нас хуесосы, с другой стороны люди которые реально приносят деньги


https://archive.ph/Lsk2Z
😁20536👍12🫡2
Блин какой красивый changelog
67🥴2312👍5🔥2💋1💊1
70% задач в некоторых vlm бенчах решаются через common sense (знания текстовой тушки) и без использования картинок.

Paper
59😁17🔥2💋2
😁1468👍3
О, ты пишешь CUDA-ядра? Все уже давно на Triton. Шучу, мы все на Mojo. Мы используем cuTile. Мы используем ROCm. У нас внутренний DSL-компилятор, для NVGPU MLIR dialect, но, только что вышел Tile IR, так что теперь мы будем
использовать его. Наш PM сидит на TileLang. Тимлид была на CuTe, но теперь она снова пишет PTX вручную. Наш интерн строит на TT-Metalium для наших Wormhole’ов. Наш CFO одобрил заказ на здоровенные wafer-scale чипы, так что теперь мы портируем наши ядра на CSL. Наш CTO работает над kernel-less graph compiler’ом, так что скоро нам вообще не нужно будет писать ядра. Наш CEO думает, что мы говорим про ядро Linux. Кстати мы делаем Cursor для собак.​​​​​​​​​​​​​​​​
1😁211181411💊6💋5🤪5
Очень красивая (глаза болят потом) штука про архитектуру железок от Modal(это такой провайдер карт)

blog
57🔥213🥱2🌭1
2😁276❤‍🔥47🍓1412🔥10👍4🤗42😍1
This media is not supported in your browser
VIEW IN TELEGRAM
2😁33💩1🍓1
Если вы знаете вы знаете.
62💊25💯3🤔1
Forwarded from download more GPUs
Full BF16 трейны и при чём здесь Stochastic Rounding

А помните не очень далёкие времена, когда учить что-то в сырой низкой точности никто даже не пробовал? Заводили Mixed Precision, хранили параметры модели в двух точностях - в FP32 и в FP16, смотрели на потребление видеопамяти и немного грустили, ну а что делать, зато работало.
Сейчас, благо, многие уже ставят свои эксперименты в full BF16, - и многие из этих экспериментов даже сходятся из коробки. Но иногда не сходятся. Возникает вопрос, - что же делать в таком случае.

В целом, есть довольно стандартные инженерные трюки, чтобы сделать чуть лучше

* аккумулировать и хранить градиенты в FP32 (и в рамках DP-группы, и в рамках последовательных forward-backward-ов); кстати, ребятишки из PyTorch в следующем релизе 2.10 (во всяком случае это уже есть в nightly сборке 2.10) добавят поддержку раздельного dtype для параметра и для градиента, связанного с этим параметром, - очень ждём 🫶
* кастить состояния оптимизатора, градиенты и параметры в FP32 во время обновления (не эквивалентно тому чтобы хранить их в FP32), - многие реализации оптимизаторов уже так делают, см например оптимизаторы в torchao (ТЫК)

Есть ли какие-то академические работы, которые исследуют феномен проблем, связанных с BF16 трейнами?

Есть! Вот, например, довольно старая, но классная работа (ТЫК), в которой авторы описывают, что проблемы возникают в первую очередь из-за ошибок округления при обновлении параметров модели, а ошибки округления во время расчёта градиентов (forward/backward) имеют минимальное влияние. Авторы предлагают использовать в том числе Stochastic Rounding для того, чтобы исправить эту проблему. Есть ещё одна работа (ТЫК), в которой авторы на практике проверяют full BF16 рецепт со Stochastic Rounding'ом, связывают SR и регуляризацию, а также предлагают реализацию AdamW с SR.

Как работает Stochastic Rounding?

Идея проста и лежит в противовес стандартному округлению. Стандартное округление даёт меньшую ошибку точечно, однако это округление является смещённым. Суть Stochastic Rounding в том, что вероятность округления числа вверх или вниз зависит от того, насколько близко оно к границам сетки точности. В результате математическое ожидание округленного значения равно исходному точному числу (E[SR(x)]=x). Это делает округление несмещенным.

Как реализовать?

Реализация самого SR на pytorch довольно проста. Однако убедитесь, что все ваши процессы в распределённом сетапе имеют одинаковый источник RNG, чтобы обновления были одинаковыми по всему вашему world.

@torch.compile
def copy_fp32_to_bf16_stochastic_(
target: torch.Tensor, source: torch.Tensor
):
result = torch.randint(
0, 1 << 16, source.shape, device=source.device, dtype=torch.int32
)
# add the random number to the lower 16 bit of the mantissa
result.add_(source.view(dtype=torch.int32))
# mask off the lower 16 bit of the mantissa
result.bitwise_and_(-65536) # -65536 = FFFF0000 as a signed int32
# copy the higher 16 bit into the target tensor
target.copy_(result.view(dtype=torch.float32))


А полный код оптимизатора, который использует SR, можно подсмотреть в torchao - ТЫК.

В нём авторы кастят параметры, состояния и градиенты в FP32, следовательно делают расчёт обновления в FP32, а затем делают обновление параметров модели уже в BF16, опционально используя Stochastic Rounding.
🔥44👍1041
В принципе объясняет почему курсор такая хуйня. Видете стулья на фоне? Как на них вообще крутится лол
👍79😁44🗿2915😐6💯4🤷‍♂3👏1💩1
трогать снег надо лицом предвартильно потрогав камни шлемом
🔥10425❤‍🔥12💋31👍1