Aspiring Data Science
275 subscribers
348 photos
9 videos
5 files
1.14K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
Forwarded from DevFM
Очереди – что сложного то?

Знание и понимание очередей очень важно для разработчика. Очереди обеспечивают распределение ресурсов, репликацию сообщений, отказоустойчивость, надёжность передачи, гарантию доставки и коммуникацию микросервисов.

Подождите, очередь – это когда с одной с стороны положили, а с другой стороны кто-то забрал? Почти, но всё немного сложнее. Особенно в распределённых системах, особенно когда сообщений десятки тысяч в секунду.

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

Начинается всё с базовых понятий, какие вообще бывают способы организации очередей: put/take, pub/sub, request/response.

Для применения очередей существует множество инструментов.
– Apache Kafka реплицируемый шардируемый лог сообщений для стриминга. Мы кафку очень любим, и о ней были отдельные посты (раз, два)
– RabbitMQ – традиционный pub/sub broker. В отличие от Kafka, у кролика нет ограничений на количество потребителей. Кролик часто используется как шина данных между сервисами
– NATS обеспечивает быстрый неперсистентный обмен сообщениями, высокую производительность и масштабируемость
– Tarantool – это in-memory db, которая может быть использована для организации очередей. Примечателен тем, что можно написать свою очередь на стероидах, со своим процессингом, логикой и приоритетами

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

Напишите в комментариях, какие системы очередей вы знаете или используете на практике. За что их любите или не любите?

Говоря о проблемах – они у очередей есть.
– на уровне алгоритма важно решить, что делать при отказе консьюмера, который уже взял сообщение. Best Effort – просто вернуть сообщение обратно. Но не во всех брокерах так можно. В таком случае можно настроить dead letter queue – отдельную очередь со своей логикой обработки таких сообщений.
– а ещё бывают проблемы приоритизации, когда из-за множества задач с высоким приоритетом консьюмер может никогда не добраться до задач с низким.
– на сетевом уровне существует undefined behavior, то есть сообщение отправлено, но мы не знаем, оно дошло и получено или потерялось
– помимо сети есть диск, который влияет на пропускную способность и задержку в обработке, которая может оказаться не предсказуемой

Чтобы обеспечить доступность (avalability) и надёжность (durability) применяются разные топологии:
– single instance – самый простой вариант. Один брокер, одна очередь, продюсер и консьюмер. Немасштабируемо, низкая доступность и надежность.
– multi instance – можно масштабировать и ставить столько очередей сколько нужно. С надежностью и доступностью получше, но если одна из очередей грохнется, то данные из нее потеряются.
– идём дальше и дублируем уже сами очереди
– автор не останавливается на этом и рассказывает о реплицировании, реплика-сетах, кворумах, кворумных очередях.

Познакомившись с различными сложностями понимаешь, что хорошо бы всё это мониторить. Существуют следующие метрики: размер очереди, время обработки сообщения, количество потерь и отказов.

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

Напоследок ценная мысель: если вы не знаете, как ваша система падает и поднимается, быстро вы её не поднимите.

#skills
#biglanguagemodels

"Хотя Google и Microsoft активно соперничают, пытаясь доказать превосходство своих чат-ботов, технология «человекоподобных» ИИ-инструментов — не единственная сфера применения машинного обучения и языковых моделей.

Наряду со слухами о планах представить более 20 инструментов на базе алгоритмов ИИ в ходе конференции I/O этого года, Google продолжает работать над языковой моделью, поддерживающей 1000 языков. В понедельник компания поделилась новой информацией о своей универсальной речевой модели, которую в Google описывают как «критический первый шаг» в реализации своих планов на этом поприще.

Ещё в прошлом ноябре компания анонсировала планы создания языковой модели, поддерживающей 1000 наиболее распространённых языков, рассказав об USM. Google описывает её как «семейство ультрасовременных речевых моделей» с 2 млрд параметров. При тренировке использовались 12 млн часов речи и 28 млрд предложений из более чем 300 языков.

USM уже используется Google для создания субтитров на YouTube, модель уже поддерживает автоматическое распознавание речи. Это позволяет автоматически определять и распознавать различные языки, от распространённых вроде английского или мандаринского диалекта китайского до амхарского или ассамского. По данным Google, уже сейчас USM поддерживает более 100 языков и послужит основой для строительства ещё более масштабной системы. Известно, что над аналогичной технологией ИИ-перевода уже работает Meta."

https://3dnews.ru/1082990/noviy-variant-rechevoy-iimodeli-google-usm-pozvolit-obrabativat-bolee-1000-yazikov
#hardware #cpu

А между тем полупроводниковый техпроцесс входит уже в зону 2 нанометров, кто бы мог подумать об этом десять лет тому? Разве что Мур.

"В рамках Intel 20A будет применена новая структура транзисторов RibbonFET с круговым затвором Gate-All-Around (GAA), а также новая схема питания Back Side Power Delivery (BSPD). Одновременное внедрение транзисторов меньшего размера, новой архитектуры транзисторов и новой схемы их питания является рискованным шагом со стороны Intel, однако компания ожидает, что техпроцесс Intel 20A позволит ей обогнать конкурентов в лице TSMC и Samsung. Компания Intel планирует начать использовать указанный техпроцесс уже в первой половине 2024 года. Последующий техпроцесс Intel 18A, как предполагается, будет внедрён до конца того же года и позволит поднять эффективность полупроводниковых устройств ещё на 10 %. Изначально компания планировала использовать для производства 1,8-нм полупроводников сканеры Twinscan EXE нидерландской компании ASML с оптикой, обладающей числовой апертурой 0,55 NA. Но поскольку она решила вывести указанный техпроцесс на рынок раньше, то ей придётся полагаться на менее передовые нынешние сканеры Twinscan NXE с апертурой 0,33 NA, а также на EUV-сканеры с последовательной сменой двух фотошаблонов. Intel считает, что её 1,8-нм техпроцесс производства станет самым передовым на рынке."

https://3dnews.ru/1082983/intel-zavershila-razrabotku-tehprotsessov-intel-18a-i-intel-20a
Придумайте заголовок )
Мой фреймворк для проектов с DL-экспериментами

Начиная новый проект, я представляю, что вокруг меня прогружается мир в игре. Взаимодействуя с ним я лучше понимаю задачу и как хорошо я могу ее выполнить. И что вообще значит "хорошо"

👉🏻 Формулирую задачу в первом приближении
Что хотим на вход, а что — на выход. Какие есть ограничения? По мере взаимодействия с миром проекта формулировка может уточняться

👀 Смотрю по сторонам.
Что уже было сделано до меня, куда можно потыкать палкой? Какие есть статьи по этой теме, на кого они ссылаются? С какими конфами/соревнованиями ассоциированы? Метрики? Здесь не нужно фиксировать метрику и архитектуру — это про насмотренность чтобы в процессе решения задачи быстрее ориентироваться

🚴Создаю бейзлайн-решение.
Это может быть опенсорс из коробки, главное, чтобы работало. Фраза с физтеха — "лучше иметь велосипед, чем дверь от ламборгини"

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

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

📚 Data
В первых итерациях — опенсорс, выявили сложные места и итеративно добавляем пачки. Почти всегда данные придется собирать дополнительно

♻️ После того как была получена модель с ok качеством, ее можно оптимизировать. Ускорять, уменьшать без значительных проигрышей в точности

📲 Куда поедем?
На сервер — стоит убедиться, что не течет память. Если модель будет жить на девайсе — стоит быть готовым к тому, что она не спортируется с пол-пинка. Особенно, если там есть какие-то нетривиальные слои. Я сталкивалась с ситуациями, когда приходилось повозиться с coremltools/tfjs и даже безобидным onnx

🛫 Taking off!
Все спортировано, с инфраструктурой помержено. АВ тесты прошли успешно. Посматриваем мониторинг и перемещаемся в следующую локацию 🧙🏻‍♂️
кто узнал игру? 😏
Изучаем байесовскую оптимизацию

https://bayesoptbook.com/book/bayesoptbook.pdf
#timeseries #ml #competition #electricity

Тот момент, когда организаторы ML сорева с валидацией в реальном времени задают странные вопросы о том, где ты взял OOS данные...
#chess #stats

Нашёл свою старую шахматную аналитику по рейтингам FIDE, вдруг кому надо подобное. Цель была в определении "восходящих звёзд" и особенно "подозрительно быстро восходящих звёзд".

https://github.com/fingoldo/FideRatings/blob/master/FideRatings.ipynb
#ml #featureengineering #geofeatures #advicewanted

Есть задачка на генерацию геофичей. Юзер логинится в приложение в разных точках города, Известны его координаты при логине и метки времени. Какие бы интересные фичи построить из графа его перемещений?

Пока что нашел вот такую прекрасную серию статей

https://towardsdatascience.com/graph-machine-learning-with-python-pt-1-basics-metrics-and-algorithms-cc40972de113

https://towardsdatascience.com/graph-machine-learning-with-python-part-3-unsupervised-learning-aa2854fe0ff2

https://towardsdatascience.com/graph-machine-learning-with-python-part-4-supervised-semi-supervised-learning-d66878161b79
#surverys

Кто может посоветовать сервис для проведения опросов? Гугл формс, конечно, бесплатный, но по ссылке нельзя передать параметры (например, хэш юзера или кампании), и он не собирает ip, а если бы собирал, можно было бы у респондента не спрашивать страну.
СурвейМанки, с другой стороны, задирает цены, $34/mo и это только при оплате сразу за год, а так ещё выше.
#ml #graphs #convolution #templatematching #spectral #laplacian #fourier #gcn #chebyshev #chebnets #cayleynets #graphsage #gin

Оказывается, ну почти всё в нашей жизни можно представить как граф. Так вот внезапно ты становишься объктом исследования науки и учёных, о которых ничего и не знал.

https://youtu.be/Iiv9R6BjxHM
#recommendations

Попробовал трипадвизор, он советует кафешки, которые тупо не работают. Ну зато хоть размял свои мощные мышцы.
#payments

Уважаемые подписчики из России, мне удалось открыть карту в зарубежном банке, если у вас из-за войны/санкций такая же аховая ситуация с оплатой зарубежных облачных сервисов (AWS, GCP, etc), какая была у меня недавно, но очень надо, можете написать в личку для помощи с оплатой. По себе знаю, что фиг кто поможет.
#ml #geofeatures #python

Отличная глава о подготовке геофичей

https://geographicdata.science/book/notebooks/12_feature_engineering.html