Интересное что-то
625 subscribers
2.8K photos
255 videos
143 files
4.66K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Forwarded from эйай ньюз
Инженерные грейды в Big Tech (ч1)

Меня часто спрашиваю про грейды в Big Tech компаниях. В MAANG и прочих Биг-Техах существует четка иерархия инженерных уровней, которая определяет ваш карьерный рост и компенсацию. Чем выше ваш грейд, тем больший масштаб импакта от вас ожидается, и тем шире должно быть ваше влияние на коллег вокруг, то есть требуется больше лидерских качеств.

В этом посте поговорим только про инженеров (SWE) и иcследователей (RS), которые, как правило, прокачиваются по одной и той же лестнице грейдов.

Система уровней в Meta и в Google считается христоматийной - она у них почти идентичная. Ее мы и рассмотрим.

E3, Junior: Начальный уровень - это джун, которого наняли без опыта после бакалавра или магистратуры. От джуна ожидается выполнять назначенные таски без большой помощи извне и не бояться задавать вопросы, если застрял. В Мете дают 2 года, чтобы запромоутиться с E3 до E4, иначе на выход.

E4, Middle: Средний уровень, на который хайрят после 1-5 лет опыта либо свежих выпускников с PhD. Мидл берет на себя отдельные фичи в проекте (много тасок) и выполняет их с минимальным руководством извне. На этом уровне ставят жесткие рамки в 3 года, чтобы стать E5.

E5, Senior: Это независимая боевая единица в компании, эксперт в своей сфере. Синьор владеет целыми фичами или системами и успешно завершает свои проекты. Это терминальный уровень в том смысле, что на этом уровне можно оставаться до пенсии. Промоушен на E6 никто обещать не может, так как прыжок с E5 на E6 на порядок сложнее чем с E4 на E5.

Про E6+ расскажу в следующем посте.


#bigtechlevels #карьера

@ai_newz
Forwarded from эйай ньюз
Инженерные грейды в Big Tech (ч2)

Все инженеры глобально делятся на две категории: просто инженеры (E3-E5) и Стафф+ (E6+) инженеры. Тут под инженерами я также имею в виду и сайнтистов - их глобально не отделяют и грейды у них такие же.

Когда в компании говорят про "leadership" роли, то обычно подразумевают именно Стафф+. Количество E6+ инженеров и сайнтистов в компаниях всего примерно 10%-15% .

E6, Staff: С этого уровня начинается новая игра. Стафф обладает исключительным техническим мастерством, имплементирует самые сложные фичи, решает задачи, которые мало кто может решить. Кроме того от него ожидаются еще и серьезные коммуникативные и лидерские качества. Он сам предлагает новые проекты и лидит их, ставит цели своей команде и влияет на другие команды.

E7, Senior Staff: Тут ожидают все тоже самое, что и на E6, но с еще большим импактом и ценностью для организации. Синьор стафф драйвит идеи от появления до реализации, попутно правильно расставляя приоритеты, понимая стратегию и тренды на масштабе всей компании.

E8, Principal Engineer/RS: Ты признанный эксперт в одной или нескольких областях как внутри компании так и за ее пределами. Твои проекты и идеи имеют влияние на всю компанию, а также на людей из твоей сферы в индустрии. В случае с наукой — ты исключительный эксперт, статьи которого узнают на конференциях. Как пример — Kaiming He, автор ResNet, который был где-то на E8-E9, пока не ушел из Меты в MIT.

Сложность перехода на каждый следующий уровень после Синьора (E5) растет экспоненциально, и количество людей на каждом следующем уровне убывает тоже по экспоненте.

Начиная с E6 появляются архетипы инженеров, например "фиксер", "архитектор", "тех лид", "Coding Machine" и другие. Про это поговорим позже. Но если вам любопытно, то подробнее про E6+ можно почитать на staffeng.com, там собраны истории людей на E6+ из разных крупных компаний.

#bigtechlevels #карьера

@ai_newz
System Design
Learn how to design systems at scale and prepare for system design interviews

What is system design?
System design is the process of defining the architecture, interfaces, and data for a system that satisfies specific requirements. System design meets the needs of your business or organization through coherent and efficient systems. It requires a systematic approach to building and engineering systems. A good system design requires us to think about everything, from infrastructure all the way down to the data and how it's stored.

Table of contents

- Getting Started
What is system design?
- Chapter I
IP, OSI Model, TCP and UDP, Domain Name System (DNS), Load Balancing, Clustering, Caching, Content Delivery Network (CDN), Proxy, Availability, Scalability, Storage
- Chapter II
Databases and DBMS, SQL databases, NoSQL databases, SQL vs NoSQL databases, Database Replication, Indexes, Normalization and Denormalization, ACID and BASE consistency models, CAP theorem, PACELC Theorem, Transactions, Distributed Transactions, Sharding, Consistent Hashing, Database Federation
- Chapter III
N-tier architecture, Message Brokers, Message Queues, Publish-Subscribe, Enterprise Service Bus (ESB), Monoliths and Microservices, Event-Driven Architecture (EDA), Event Sourcing, Command and Query Responsibility Segregation (CQRS), API Gateway, REST, GraphQL, gRPC, Long polling, WebSockets, Server-Sent Events (SSE)
- Chapter IV
Geohashing and Quadtrees, Circuit breaker, Rate Limiting, Service Discovery, SLA, SLO, SLI, Disaster recovery, Virtual Machines (VMs) and Containers, OAuth 2.0 and OpenID Connect (OIDC), Single Sign-On (SSO), SSL, TLS, mTLS
- Chapter V
System Design Interviews, URL Shortener, WhatsApp, Twitter, Netflix, Uber
- Appendix
Next Steps, References

Links:
- Direct link to the site with the course
- Direct link to the repository for the course
- Content Guide link
- Topic Guide link

Navigational hashtags: #armknowledgesharing #armcourses
General hashtags: #systemdesign

@data_science_weekly
Forwarded from Dealer.AI
Балалайка, березка, Matryoshka.

Выпустили концептуальный гайд по эмбам матрехи на hf. Красивые картиносы матрех и схемы, концепты теории и примеры на sentence-transformers.

Ну че тут рассказывать? Все просто берем embs и вдоль dim нарезаем по нарастающей, сводим саб эмбы и эмбы в конвеере metric learning на нужной датке в NLI, STS или qa задачках. Хочешь сводишь все на одном и том же, хочешь каждому эмбу из нарезки сообщаешь свою таску.

В чем польза?
1. Меньше индекс - на поверхности.
2. Возможность строить быстрые каскадные пайпы ранжирования. Преранк, например, на full index с маленьким эмбом (так быстрее), далее сложные примеры на more big эмбах, итоговый реранк в топ1 на жирнючем.

Код в блоге присутствует. Поэтому дерзайте.
Forwarded from Start Career in DS
🐈 CatBoost - супер удобный градиентный бустинг
Градиентный бустинг
- это техника машинного обучения для задач классификации и регрессии, которая строит модель предсказания в форме ансамбля слабых предсказывающих моделей, обычно деревьев решений.
Каждая следующая модель в ансамбле уменьшает ошибку предыдущей модели


Про то, как работает градиентный бустинг можно почитать, например, в статье с обзором ансамблей машинного обучения или в хендбуке от Яндекса. Одна из самых лучших библиотек для градиентного бустинга над деревьями решений – CatBoost. С этой библиотекой побеждают в соревнованиях на kaggle, она используется для решения задач классификации в крупных компаниях

Её преимущества:
– Встроенная обработка категориальных данных (их не нужно предобрабатывать, просто выставить гиперпараметры)
– Уменьшенный риск переобучения
– Высокая скорость работы и эффективность на больших объемах данных
– Встроенная обработка пропущенных значений
– Классная визуализация

Чтобы разобраться с этой библиотекой, стоит:
– Почитать официальную документацию
– [ENG] Посмотреть тетрадку с обзором катбуста
– Почитать статью про катбуст
🦖[ENG] Посмотреть видео от StatQuest (часть 1 и часть 2)
🌶 Посмотреть видео от Computer Science Club

Ставьте огоньки 🔥 под этим постом, и пишите в комментариях, про что написать ещё)
Forwarded from Время Валеры
Пацаны из Майкрософта выпустили самую обсуждаемую статью месяца The Era of 1-bit LLMs:All Large Language Models are in 1.58 Bits
Пока остальные кряхтели и пытались отквантовать числа до 4 бит с большими потерями или до 8 бит с небольшими, челы из МС зашли с ноги: любой вес будем представлять как трит - 1.58 бита {-1; 0; 1} и покажем как это сделать не теряя перформанса! It matches the full-precision (i.e., FP16 or BF16) Transformer LLM with the same model size and training tokens in terms of both perplexity and end-task performance

Так же пишут: More profoundly, the 1.58-bit LLM defines a new scaling law and recipe for training new generations of LLMs that are both high-performance and cost-effective. Шортим Нвидию? Теперь вместо умножения - просто складываем (ведь умножение на 1, 0 или -1 это просто плюс, минус или пропуск). The new computation paradigm of BitNet b1.58 calls for actions to design new hardware optimized for 1-bit LLMs.

Что делают? Повторяют BitNet, то есть трансформер где nn.Linear заменен на BitLinear (ниже будет пост с описанием). It is trained from scratch, with 1.58-bit weights and 8-bit activations
Чтобы веса держать в диапазоне -1, 0, 1 - накидывают absmean quantization function (про нее тоже в посте ниже)

И это все
Результаты в посте ниже

Дальнейшее чтиво
https://t.me/hn_best_comments/21227
#ArticleReview
Neural Network Diffusion
Kai Wang, Zhaopan Xu, Yukun Zhou, Zelin Zang, Trevor Darrell, Zhuang Liu, Yang You
Статья: https://arxiv.org/abs/2402.13144
Код: https://github.com/NUS-HPC-AI-Lab/Neural-Network-Diffusion

Диффузионные модели сейчас рулят, создавая прекрасные картинки и не только. Авторы предложили, что они могут генерить и параметры нейросетей. Вообще, мне кажется, они изобрели hypernetwork (писали про них тут https://t.me/gonzo_ML/1696) через диффузию.

Для тех, кто не знает как работают диффузионные модели, совсем в двух словах и на пальцах. Прямой диффузионный процесс получает на вход картинку (вместо картинки может быть любой другой сигнал) и последовательно шаг за шагом добавляет в неё шум, пока она не превратится в совсем шумный сигнал. Прямой диффузионный процесс не очень интересен, интересен обратный -- он получает на вход шум и последовательно его убирает, “открывая” (создавая) скрывающуюся за ним картинку (как бы делая denoising). Примеры диффузионных моделей мы разбирали в лице DALLE 2 (https://t.me/gonzo_ML/919) и Imagen (https://t.me/gonzo_ML/980).

Обучение нейросети через SGD идейно похоже на обратный диффузионный процесс: стартуем с рандомной инициализации и последовательно обновляем веса, пока не достигнем высокого качества на заданной задачи. Свой подход авторы назвали neural network diffusion или p-diff (от parameter diffusion).

Идея и реализация просты и по-своему красивы.

Во-первых, мы собираем датасет с параметрами нейросетей, обученных SGD и обучаем на нём автоэнкодер, из которого потом возьмём latent representation (можем это делать не на полном наборе параметров, а на подмножестве). Вторым шагом мы обучаем диффузионную модель, которая из случайного шума сгенерит latent representation, который в свою очередь через декодер обученного на первом шаге автоэнкодера мы восстановим в сами веса. Теоретически можно было бы и обучить диффузию на самих весах сразу, но это требует сильно больше памяти.

Для автоэнкодера параметры преобразуются в одномерный вектор, также используется одновременная аугментация шумом входных параметров и латентного представления. Обучение диффузионной модели -- это классический DDPM (https://arxiv.org/abs/2006.11239). Использовались 4-слойные 1D CNN энкодер и декодер.

Проверяли на картиночных датасетах MNIST, CIFAR-10, CIFAR-100, STL-10, Flowers, Pets, F-101, ImageNet-1K и на сетях ResNet-18/50, ViT-Tiny/Base, ConvNeXt-T/B.

Для каждой архитектуры накапливали 200 точек для обучения (чекпойнты последней эпохи). Я не до конца уловил, что именно они сохраняли, говорят про два последних слоя нормализации (только параметры BatchNorm’а чтоли?) и фиксированные остальные параметры. В большинстве случаев обучение автоэнкодера и диффузионки требовало 1-3 часа на одной A100 40G.

На инференсе генерят 100 новых параметров, из них оставляют один с максимальным перформансом на training set, его оценивают на validation set и этот результат и репортят.

В качестве бейзлайнов выступают 1) оригинальные модели и 2) ансамбли в виде усреднённого супа файнтюненных моделей (“Model soups: averaging weights of multiple fine-tuned models improves accuracy without increasing inference time”, https://arxiv.org/abs/2203.05482).

Результат в большинстве случаев не хуже обоих бейзлайнов. То есть выучивается распределение high-performing параметров. Метод стабильно хорошо работает на разных датасетах.

Провели много абляций на ResNet-18 + CIFAR-100.

Чем больше моделей было в обучении, тем лучше. Метод генерит более качественные модели для слоёв на любой глубине. При этом на последних слоях результат самый высокий (предполагают, что это из-за меньшего накопления ошибок во время forward prop). Аугментация шумом в автоэнкодере очень важна, особенно для латентного состояния (а лучше одновременно и для входа тоже).

Это всё было для подмножества весов. Проверили также на генерации полного набора весов на маленьких сетях MLP-3 и ConvNet-3 и MNIST/CIFAR-10/100. Размеры сетей здесь 25-155к параметров. Также работает.
Большой пост про большой контекст

Размер контекста в современных моделях (то максимальное количество токенов, которое они могут переварить за один раз) неуклонно растёт. Сначала переход от двух или четырёх тысяч токенов к восьми казался большим достижением. Потом появились модели до 32k токенов, но они долго были ограниченно доступны, а когда вышли в массы, оказались уже безнадёжно устаревшими, потому что у одного из лидеров индустрии (Anthropic) были уже модели со 100k. Теперь лимиты публичных моделей в районе от 128k (GPT-4 Turbo) до 200k (Anthropic). Гугл отставал в этой гонке, его публичные модели максимум покрывали 32k (специальные версии PaLM 2 и все версии Gemini 1.0). Прорыв наметился с Gemini 1.5 (https://t.me/gonzo_ML/2350), у которой по дефолту те же типовые нынче 128k, но есть непубличная версия с 1M токенов, и research версия с 10M.

Отдельный интересный вопрос, как именно добились такого большого контекста, который ещё и работает. Есть разные свежие заходы с различных сторон, например, LongRoPE (https://arxiv.org/abs/2402.13753), LongNet с dilated attention (https://arxiv.org/abs/2307.02486), RingAttention (https://arxiv.org/abs/2310.01889) или там недавно упоминавшийся RMT-R (https://t.me/gonzo_ML/2377). Интересно, что именно сделал Гугл.

Такие новые лимиты скорее всего очень сильно поменяют практики работы с моделями. Хочется немного порассуждать про это ближайшее будущее.

1) Во-первых, старые техники RAG, отчасти призванные обойти ограничения малого окна контекста при необходимости работы с длинными документами, должны отмереть. Или по крайней мере остаться только для специальных случаев типа необходимости подтягивать свежие или какие-то другие особо релевантные материалы.

Всякие langchain’овские сплиттеры (https://python.langchain.com/docs/modules/data_connection/document_transformers/) режущие в основном по длине (ну с учётом более подходящих точек для разрезания в некоторых случаях) и раньше были УГ -- смотреть на эти порезанные абзацы без слёз было сложно, хотя как-то оно работало.

Даже при наличии способности к нормальному нарезанию на вменяемые куски, всё равно нужна эта разная обвязка, которая будет там что-то матчить и выбирать более подходящие куски, агрегировать результаты и прочее. Теперь этой хренью потенциально вообще не надо заниматься, и это хорошо.

Ну то есть в некоторых случаях оно всё равно конечно нужно и может повысить качество решения, но это надо смотреть. Я в целом верю в end-to-end решения и вытеснение со временем большинства этих костылей.

2) 1M токенов это прям реально дофига, теперь в контекст можно засунуть много статей, целые кодовые репозитории или большие книги. А с учётом мультимодальности и способности современных моделей обрабатывать ещё и картинки, видео и аудио (путём преобразования их в специальные нетекстовые токены), зугружать туда часы видео или речевых записей.

С учётом того, что модели хорошо проходят (https://t.me/gonzo_ML/2351) Needle In A Haystack тесты (https://github.com/gkamradt/LLMTest_NeedleInAHaystack), можно получать вполне релевантные ответы при работе с такими длинами. Реально можно найти конкретный кадр в видео (https://t.me/gonzo_ML/2357) или момент в книге (https://t.me/gonzo_ML/2356). И решать совершенно новые классы задач. Меня, например, впечатляют кейсы, когда модели скормили видео со скринкастом решения задачи (поиск жилья на Zillow) и попросили сгенерить код Selenium для решешия этой же задачи (https://www.facebook.com/DynamicWebPaige/videos/1422440318698615). Или тот же перевод на/с языка Kalamang по загруженному учебнику грамматики (https://t.me/gonzo_ML/2355, про то же от Джеффа Дина: https://twitter.com/JeffDean/status/1758149033473020081). Да, там в реальности есть ещё словарь и 400 параллельных предложений, но всё равно, In-context language learning -- это очень круто. Как и ответы на вопросы по длинному документу.
Что такое СУБД Greenplum? Зачем она нужна в больших проектах DWH? Чем отличается от ClickHouse?

Читать статью