Aspiring Data Science
318 subscribers
386 photos
10 videos
6 files
1.41K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
https://3dnews.ru/1082821/mozgovie-implanti-ilona-maska-neuralink-zapretili-testirovat-na-lyudyah

#neuralink

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

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

Neuralink занялась исправлением проблем, обозначенных FDA. Однако имеются серьёзные сомнения, что компания сможет быстро их решить, и осуществить обещание Маска начать испытания на людях весной. По статистике FDA, агентство одобряет в среднем только 66 % заявок испытаний на людях с первой попытки, после повторной заявки количество одобрений достигает 85 %. Компании, получившие разрешение на тестирование на людях, обычно предварительно проводят не менее двух раундов испытаний, прежде чем подавать заявку на одобрение FDA. Но такая неторопливость не устраивает Маска.

«Я мог бы имплантировать устройство Neuralink прямо сейчас, и вы бы даже не узнали», — уверен Илон. Недавно он заявил, что настолько уверен в безопасности устройств, что готов имплантировать их своим детям. Он также обещал, что Neuralink восстановит полную подвижность парализованным пациентам."
#забавно
Есть такая старая картинка с колодой карт, на которой изображены математики. Интересно, что есть и другие подобные колоды в интернете, довольно качественно оформленные.
Aspiring Data Science
#series #yourhonor #weekendmovie Вы - строгий и беспристрастный судья, что вершит правосудие и всегда следует букве и духу закона. Но однажды ваш сын сбивает насмерть пешехода... https://www.youtube.com/watch?v=oYqjcyRkqD4&ab_channel=Amediateka
#ml #python #antipatterns

Я впервые вижу технически валидный, но НАСТОЛЬКО бездарный ML-код. Писавший не понимает совершенно, что делается, зачем, почему так, что такое fp64 vs fp32, feature engineering, early stopping, pipeline, cv, baseline, timeseries, transformed target. Не понимает даже языковых конструкций.

При этом, что удивительно, его код компилируется и набирает лайки. И типа проблема решается. Датасайентист, чо уж там. Вроде модельку зафиттил, графички нарисовал, выводы хорошие сделал, а в башке - пустота. Это, безусловно, жемчужина. Рекомендуется к изучению и разбору, как не надо делать. Меня удивляет, где они подобное копипастят, везде же говорится, что это антипаттерны и так делать не надо. Они как-то сами до этого доходят, избирательно читая доку?

P.S. Стало немного понятнее. Это оказалось "копипастой копипасты". Но всё равно, как мог оригинальный автор так накривить?

https://www.kaggle.com/code/rodsaldanha/stock-prediction-pytorch/notebook
Я думал, что повидал уже многое. Но этот шедевр говнокодинга "превосходит ожидания".
#games #saturnalia

"События Saturnalia развернутся в вымышленной итальянской деревне Гравой, после проведения древнего ритуала оставшейся почти без жителей. Игрокам предстоит выяснить тайну случившегося, решая головоломки и избегая монстров.

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

https://youtu.be/v1qGfWjlv8s
Робопсы Boston Dynamics приняли участие в модном показе Coperni в Париже

#robotics #BostonDynamics

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

По словам дизайнеров Coperni, концепция показа стала своеобразным переосмыслением произведения французского баснописца Жана де Лафонтена «Волк и ягнёнок», которое превратилось в представление об отношениях человека и робота. «Наш позитивный посыл заключается в том, что люди и технологии могут жить вместе в гармонии», — сказал представитель Coperni, отметив, что при первой встрече с роботом Spot ему было не по себе."

https://youtu.be/X67IwvYXHLU
Forwarded from DevFM
Введение в logging на Python

Мы описывали концептуальные варианты поиска проблемы в коде, давали небольшой пример логирования и писали о разухабистом логировании.

Пора немного углубиться в детали логирования. Разберём модуль logging из стандартной библиотеки питона. В статье автор даёт пример лога своего проекта, подробно описывает сущность logger, после чего
– описывает уровни логирования debug-info-warning-error-critical, не забывает о методе exception, который работает как error плюс выводит информацию об исключении

– объясняет, что такое handler и разбирает некоторые варианты использования. К logger можно привязать несколько обработчиков, чтобы одновременно писать в несколько локаций. На наш взгляд, сейчас эта настройка потеряла актуальность – писать надо в стандартные потоки упакованного в докер приложения, а дальше собирать логи снаружи

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

– применяет Filter, чтобы перестать писать часть сообщений, или, наоборот, писать только определённые сообщения в лог. Бывает удобно, но на текущий момент чаще это решается снаружи путём поиска по логам

– применяет LoggerAdapter для внедрения дополнительной информации в лог-сообщение

– применяет extra для логирования сущностей или их частей, например, включения в лог текста запроса веб-сервера

– конфигурирует логер приложения, при этом не забывает, что следует выносить настройки логера в отдельный модуль

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

В конце автор на примере бота для телеграм разбирает вариант конфигурирования логера. По каждому вопросу есть ссылка на офф документацию питона.

#python
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