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

Указанные действия не являются ресерчем, поскольку:
а) Мы не ученые;
б) Оно работает.
@transformerslovedeatch по всем вопросам
Все ситуации вымышлены, любые совпадения с реальности плот вашей фантазии.
Download Telegram
2😁276❤‍🔥47🍓1412🔥10👍4🤗42😍1
This media is not supported in your browser
VIEW IN TELEGRAM
2😁33🍓2💩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
В принципе объясняет почему курсор такая хуйня. Видете стулья на фоне? Как на них вообще крутится лол
👍80😁44🗿2915😐6💯4🤷‍♂3👏1💩1
трогать снег надо лицом предвартильно потрогав камни шлемом
🔥10425❤‍🔥12💋31👍1
https://claude.com/blog/cowork-research-preview

Короче, claude теперь работает не только для кода, но и для всего остального, что будет ща я не представля/
😁9618🔥5🤔4👍1
people think that earning 10k USD a month is freedom

$1,500 Rent
$200 utilities
$750 food
$3,200 girlfriend tickets
$4,150 girlfriend shopping
$50 gifts for me

congratulations. You saved $150

with 10k USD a month you don't live, you survive
😁216💯23🍓20👍11💅1010😭6🔥2💋1
спасибо папаша
3😁327🔥37❤‍🔥11🌚3👏2🤔2👍1
we live in society
40😁944🥴1
метрики конечно... интересные, еще не лучше чем gpt3 175b в целом, но на отдельных бенчах - да.


В целом довольно любопытный блог про обучение очень маленьких моделей с целью выбить перф на бенчах
15😁13💩4
tldr: Rust backend engineer, $80k-$150k + equity, relocation to Paris

Ищем rust-бекендера в White Circle – перекладывать JSONы в Postgres, перекладывать в ClickHouse, перекладывать в воркеры в RedPanda, которые потом снова перекладывают в базы + перекладывать в Redis, чтобы потом быстро перекладывать на фронт. Короч делать все, чтобы продукт двигался вперед.

Мы занимаемся AI Security & Observability: представьте себе Datadog/Sentry, но для AI/LLM/Агентов. Мы нормальный-AI-стартап-не-ChatGPT-враппер: свои LLMки, куча бенчмарков, куча данных + есть клиенты: обрабатываем сотни миллионов запросов в месяц, получаем revenue. Зарейзили $11mln на cиде, среди наших инвесторов ко-фаундеры HuggingFace, Mistral и C-level из OpenAI, Datadog, Senty, Anthropic и других крутых компаний.

Откликаться – сюда

У нас вообще еще пачка вакансий есть. Ищем:
Продакт инженера на фронт (next.js)
Продакт инженера на бекенд (раст)
Аудио-инженера
MLE / MLOps / Inference Engineer
Data Scientist
34😁30💩15👍4❤‍🔥1🔥1💋1
Cuclaude chair
😁21413👍8🔥4