Интересное что-то
560 subscribers
2.79K photos
253 videos
140 files
4.59K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Forwarded from Artem Ryblov’s Data Science Weekly (Artem Ryblov)
CS 229 ― Machine Learning Cheatsheet

Set of illustrated Machine Learning cheatsheets covering the content of the CS 229 class.

They can (hopefully!) be useful to all future students of this course, as well as to anyone else interested in Machine Learning.

Navigational hashtags: #armknowledgesharing #armcheetsheets
General hashtags: #machinelearning #students #content #supervisedlearning #unsupervisedlearning #deeplearning #tips #tricks #statistics #probability #calculus
Forwarded from AbstractDL
This media is not supported in your browser
VIEW IN TELEGRAM
FROMAGe: самый простой способ сделать мультимодального чатбота

Авторам потребовалось всего 24 часа чтобы на 1 GPU обучить это чудо! Идея очень похожа на Flamingo, но ещё проще и не требует больших датасетов.

За основу взяли замороженные ViT и OPT, а чтобы склеить их вместе — добавляют два обучаемых линейных слоя для отображения эмбеддингов (text2image и image2text). Затем визуальные эмбеддинги картинок подаются вместо псевдо-текстовых токенов. Для поиска и вывода картинок добавляется новый спец-токен [RET].

Для обучения используют общедоступный датасет CC3M из пар картинка-текст. В качестве лосса: CrossEntropy по тексту + контрастив лосс для токена [RET] (поиск картинок).

Код и чекпоинты выложены в открытый доступ, прям все 11 мегабайтов весов залиты на гитхаб 😂

P.S. Думаю, что если в GPT-4 добавят поддержку картинок, то это будет именно так.

Статья, GitHub, блог
Forwarded from AbstractDL
🔥FlexGen: как запустить OPT-175B на своём ноутбуке

Просто восторг! Самую большую открытую языковую модель теперь можно запустить на одной 16GB GPU и при этом не ждать генерацию целую вечность — скорость 1 токен в секунду!

Причём ускорение и сжатие модели делается очень просто:
model = OptLM(model)

P.S. В их репозитории даже есть пример чатбота на основе OPT-66B

Статья, GitHub
🥪 ROAD-MAP DATA ANALYST

Hello World
, в сегодняшнем посте хочу рассказать про HARD-скиллы, которые помогут вам стать запакованным стажером / джуном дата-аналитиком. Да, тема достаточно заезженная, но можно составить какую-то Road-Map для этого. Хочу максимально разжевать это, чтобы было какое-то понимание. Вот, вы решили стать DA, потому что это достаточно перспективное направление. Окей, все классно, но с чего же начать?

🤤 P.S: я хочу выстроить план на основе того, через что мне предстояло пройти. Волшебной таблетки нет.

Какой же «Истинный» пак дата-аналитика?

👩‍💻 Python (pandas, numpy, matplotlib, based functions in python)
👩‍💻 SQL (оконные функции, джойны, группировки, подзапросы, работа с таблицами)
😎 BI-System (визуализация, дешборды, адаптация скриптов)
🤓 Probability theory and statistics (условная вероятность, ЦПТ, доверительные интервалы, проверка гипотез, распределения и др.)
📱 Google Searching (да, полезный навык, который сократит время ожидания ответа от других пользователей, любителям nometa.xyz привет)
🧑‍🎓 Product metrics, business thinking (понимание для чего вы проводите те или иные расчеты, какую пользу вы несете бизнесу / продукты, упор на метрики)
🔒 Excel*. Запрашивают на стажировках, иногда используется для выгрузки отчетов, создания сводных таблиц.

В какой же последовательности я бы изучал сейчас?

0️⃣ Google Searching

Казалось бы, зачем это всё надо? Оперативно найти вопрос по интересующей вас теме на зарубежных форумах и не тратить своё время и время других на решение какой-то проблемы. Сейчас так вообще, можно забить всё в ChatGPT и решить конкретную задачу. Здесь речь идет скорее про то, что гуглить - это важно и в этом нет ничего такого.

1️⃣ SQL

В целом, похож на pandas (Python library), выстроенная структура поможет быстро адаптироваться под Python и начать работать с реальными данными. Номер один сейчас, имхо - это 🔥, там есть и работа с SQL, а также работа с дешбордами и продуктовыми метриками, очень крутой курс. Окей, мы научились пользоваться оконными функциями, подзапросами, джойнами. Но аналитик - это не тот, кто пишет только SQL-запросы, не правда ли?

2️⃣ Default Python
Окей, мы продвинулись дальше, на очереди Python. Его нужно знать хорошо, чтобы писать функции и применять к конкретным переменным, понимать работу циклов, работу со словарями, строками, списками. Здесь можно без ООП, нам нужно быстро прогнать теорию и научиться реализовывать это на практике. Есть классный 👩‍💻 от ODS и Игоря Котенкова, всё достаточно классно разжевано, советую посмотреть.

3️⃣Probability Theory and statistics + Python
Далее, математическая статистика и теория вероятностей. Предлагаю совместить это с Python, поскольку голая теория по этим двум дисциплинам очень плохо запоминается, а практика важна. Предлагаю начать со статистики и теории вероятностей на Stepik. Ранее, я скидывал тестовое разных компаний, можно глянуть тут. Сгенерировать свои данные и посмотреть как это реально может работать, понимать распределения, описание статистики + подкрепить A/B тестами, если хотите. Можно посмотреть вот этот мини-курс, чтобы понять как статистика и теория вероятностей работает в Python.
Please open Telegram to view this post
VIEW IN TELEGRAM
4️⃣BI-Systems
В основном, это средство визуализации, построение дешбордов, но на 1 шаге, мы уже их строили, более глубже можно узнать, посмотрев курс тут. Друг на друга они в целом похоже, поэтому выбрать BI-систему для изучения - не так важно.

Но зачем в итоге нужны аналитики, почему не может всех заменить OpenAI? Во-первых, кто будет составлять запросы для ИИ? Во-вторых, кто понимает специфику бизнеса и интерпретацию различных метрик?

5️⃣Business and product thinking
Понимание этого помогает вам и компании, в которой вы работаете, расти. Однотипные выгрузки, преобразования данных без формулирования выводов не нужно. Мы должны видеть, где проблемы в нашем продукте, чтобы впоследствии можно было принять решение по его дальнейшему развитию. Тренажер для погружения в продакт-менеджмент

6️⃣*️⃣Excel
Если вдруг понимаете, что вам это нужно (для стажировки, работы), "ботается" за 3-4 дня. Курс по Excel c практикой

🏋️ Как же набрать опыт?
Ну, без опыта вас не берут на работу, а без работы у вас нет опыта. Всё, жизнь, ужасна. Посмотрите мой предыдущий пост, там написаны основные пути решения. Упакуйте участие в каких-либо проектах как релевантный опыт. Зачастую HR смотрят на стек, что вы делали на работе, а также стаж.

🛍 А теперь, что же у меня по планам?
Хочу провести эксперимент над собой и запустить формат марафона по Machine Learning, Deep Learning, где буду делиться тем, как продвигается обучение, что смотрю. Начинаю с относительного нуля, но есть желание в этом разобраться. Пишите комментарии, интересно ли это будет вам.

👍 Ставьте реакции, если пост понравился

По Hard-скиллам можете также посмотреть у моего друга с канала
Блог о Data Science, ссылка на пост тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DevFM
NULL в PostgreSQL

Очень захватывающая статья, погружающая в специфику NULL. Вроде понятно, что это такое, но всё не так просто – точнее, неопределённо.

Перечислим ряд особенностей NULL, которые нам показались интересными.

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

Следующее, что важно понимать — чем NULL не является. Пустая строка, ноль, пустой массив, массив NULL – это всё не NULL. Но есть особенность – запись, в которой все поля NULL сама является NULL. В статье автор приводит неочевидные примеры на этот счёт.

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

Сравнивать что-то с NULL мало полезно — все равно получим NULL. Даже если захотим сравнить NULL и NULL. В результате получим сами знаете что.

Оказывается, имеет смысл писать "IS TRUE", а не "= TRUE". Потому что результат первой операции всегда будет TRUE или FALSE, а вот во втором варианте может выскочить неожиданный NULL.

Если хочется посчитать NULL или найти не NULL аргумент, то для этого есть специальные функции num_nulls и coalesce.

Такой привычный COUNT – и тот работает с подвохом. COUNT по конкретному полю посчитает только строки, где выражение NOT NULL, а вот COUNT(*) посчитает всё, включая NULL.

Если при сортировках хочется управлять NULL, то есть ключевое слово NULLS FIRST.

С индексами тоже интересно. Postgres использует индекс для поиска NULL значений. Если значений NULL много, плохая селективность, то лучше использовать последовательное сканирование вместо индекса. Чтобы исключить NULL из индекса можно использовать partial индекс с наложением условия IS NOT NULL. Автор дает практические советы, как найти кандидатов на такую оптимизацию.

Общий совет: если не планируете явно обрабатывать NULL, то стоит навешивать ограничение NOT NULL. Говоря об ограничениях, UNIQUE позволяет создать несколько записей со значением NULL, но в Postgres 14 появилась возможность запретить несколько NULL-записей.

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

#skills #database
Forwarded from DevFM
Проектируем сервис: поиск организаций по картам

Частью жизни middle-разработчика и выше является проектирование сервисов. На собеседованиях эта секция называется system design interview. В рамках проектирования нужно уточнить требования к сервису и ограничения, оценить возможную нагрузку, выбрать те или иные технические решения.

В видео FAANG System Design Interview: Design A Location Based Service (англ) проектируют сервис поиска ближайших организаций по картам. Требуется регистрация организации (классический CRUD) и поиск ближайших для заданной геопозиции (вернуть все организации в заданном радиусе). Условия — 200 млн организаций на карте и 100 млн пользователей, генерирующих в день по 5 запросов каждый. Сможете по этим данным прикинуть объём диска для хранения будущей БД?

Автор подробно рассматривает способы хранения точки на карте для быстрого поиска ближайших — geohash и quadtree.

#skills #youtube
Forwarded from DevFM
Мемоизация и каррирование в Python

Небольшая статья о полезных фичах питона. Мемоизация – это сохранение результатов предыдущих вычислений, которое можно использовать для ускорения кода. Для ускорения вычисления числа Фиббоначи автор вручную создаёт декоратор, являющийся аналогом functools.lru_cache. Это стратегия кэширования least recently used, то есть удаления самых старых данных.

Каррирование – это техника преобразования функций, которая получила своё название в честь Хаскелла Карри. Язык Haskell тоже в его честь назвали. Вместо применения функции с N аргументами мы порождаем отдельную функцию с меньшим числом аргументов. Автор показывает каррирование и частичное применение на примерах.

А мы рассмотрим свой пример. Пусть у нас есть функция оценки студентов:
def add_mark(student, mark, date)

Из неё можно породить функции

add_mark_5(student, date)
add_mark_4(student, date)
add_mark_3(student, date)


Зачем? Меньше писать кода и меньше пространства для ошибок, так как мы не даём поставить произвольную оценку

А с помощью functools.partial мы можем ещё и динамически создавать частичные функции. Зафиксируем дату.

# заменяем третий аргумент на текущую дату
add_mark_today = partial(add_mark, date=datetime.datetime.now())
# теперь дату в параметры не пишем
add_mark_today("Ivan", 5)


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

#python
Ура! Готов магнум опус про дофамин, по мотивам подкаста Лаборатории Губермана
Это было сложно, долго и дорого, но оно того точно стоило!

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

Это конспект и осмысление 39 выпуска подкаста “Лаборатория Губермана” (Controlling Your Dopamine For Motivation, Focus & Satisfaction | Huberman Lab Podcast #39), который ведет Эндрю Губерман, профессор нейробиологии Стэнфордского Университета.

Подстрочный перевод выпуска (35 страниц).

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

(Примечания в скобках: Мария Паап, автор проекта «Человеческая техподдержка», выпускающий редактор данной статьи)
За помощь в переводе и редактуре спасибо Ларисе Руденко.

Итоговую статью читать полностью в блоге / на виси / на хабре
Forwarded from New Yorko Times (Yury Kashnitsky)
GPT с нуля на NumPy
#ml #links_with_intro

Закрыл студенческий гештальт – прошел успешно хотя бы один собес с Яндексом, было весело, дают код трансформера, надо указать все ошибки, какие видишь, причем ошибки не тупые а-ля размерности тензоров не сходятся, а прям по сути, скажем, softmax в операции attention забыли или residual связи не прокинули в блоке самого трансформера. Было хардкорно, я прям скучал по ощущению, когда сложно и думать, и складно говорить одновременно. Попутные вопросы в стиле “почему dropout перед softmax неправильно ставить?” или “зачем полносвязный слой такой широкий в трансформерах?” – неплохо поднапрягли, в целом и в Амазоне собесы были попроще.

Если вы вдруг метите в NLP да в хорошие компании, в любом случае неплохо бы разобраться в трансформерах, сейчас это наше всё, причем не только в NLP (ага, chatGPT, как и GPT, BERT и все семейство LLM – так или иначе построены поверх трансформера), но CV и аудио уже же испытали влияние трансформеров. “What I cannot create, I do not understand” - любимая цитата Фейнмана на все случаи жизни. Тут можно много ссылок накидать, посты Jay Alammar – уже своего рода классика. Но я скину ссылку на пост другого Джэя – Jay Mody https://jaykmody.com/blog/gpt-from-scratch “GPT in 60 Lines of NumPy” (на Хабре недавно вышел перевод в 2 частях, но местами кринжовый). Автор пишет picoGPT https://github.com/jaymody/picoGPT и все по полочкам разбирает – прям что надо. Я узнал кое-что новое уже и после собеса. Похожий видеоразбор есть и у Анджея Карпаты, не смотрел, но уверен, что Карпаты можно не глядя советовать, его отпуск кончился, спасибо за кучу качественных видео.

Кстати, в посте Jay Mody рекомендую и по ссылкам на другие его посты прогуляться. Например, про интерпретацию смысла операции attention как дифференцируемого словаря (сам думал о таком посте, но Джэй его уже написал) – все эти ключи, значения, запросы, наконец понятно, что зачем и почему именно так.