Telegram Web
Forwarded from addmeto (Grigory Bakunov)
По слухам, GPT-5 ждет нас уже в середине 2024 года. Говорят, что некоторые бизнес-пользователи уже получили доступ к бете самой последней модели от OpenAI. Один из тех, кто получил доступ, говорит, что "это действительно хорошо, как будто существенно лучше (предыдущей версии)”. По времени как раз пора, вероятно, обучение GPT-5 сейчас в самом разгаре.

[o_O] https://www.businessinsider.com/openai-launch-better-gpt-5-chatbot-2024-3
Произошла классика. Галера провела тех скрининг, прислали анкету от заказчика, где попросили заполнить, с чем у меня есть работы, а с чем нет. Список из десятка довольно стандартных задач в МЛ, отметил все, кроме одного. Сегодня читаю:

Unfortunately, we won`t be able to move forward with your profile presentation. For this role, it is also required good experience writing scripts to make API calls. They have been rejected candidates without this knowledge/experience. 


Угадайте, какой пункт я не отметил:)
😢3😁2🤬1
Пожалуй один из самых полезных курсов, пройденных мной в прошлом году, стал Python 3: Deep Dive от Fred Baptiste. Курс настолько большой, что разбит на 4 отдельных курса на Udemy:

- Python 3: Deep Dive (Part 1 - Functional)
- Python 3: Deep Dive (Part 2 - Iterators, Generators)
- Python 3: Deep Dive (Part 3 - Dictionaries, Sets, JSON)
- Python 3: Deep Dive (Part 4 - OOP)

Сейчас невероятное количество действительно годных курсов по Python именно для начинающих, чего я никак не могу сказать про материалы именно для углубленного изучения. И этот курс именно то, чего я так долго искал, перепробовав и забросив в начале пути достаточно много других материалов. Прелесть этого курса в том, что в нем нет упора на какую-либо конкретную область применения или бибиотеки, вместо этого идет подробный разбор по косточкам именно стандартных конструкций и объектов языка + части стандартной библиотеки, что мне помогло ответить на огромное количество вопросов, которые были для меня белыми пятнами до этого. Наконец-то у меня создалась некая целостная картина о том, как (и почему именно так!) устроены основные типы данных, функции, декораторы, генераторы, классы, модули. Есть практические занятия с подробным разбором решений.

Могу уверенно сказать, что курс полностью закрывает все вопросы (за исключением, пожалуй, асинхронщины) с интервью на middle+/senior Data Scientist по устройству Python (проверено лично и неоднократно)

Ну и бонусом для занимающихся data science будет то, что все лекции и демо проводятся в старом добром Jupyter Notebook :)
💯1
🔥 Крутая находка - 1900 вопросов с собеседований по анализу данных, машинному обучению. Фишка в том, что вопросы разбирают Сеньоры, которые сами проводят собесы и дают примеры правильных ответов. Вы легко получите оффер, изучив популярные вопросы 💼

А здесь собрана целая папка для тех, кто любит машинное обучение
👍1
Насущная проблема инвесторов из РФ: лимит на продажу заблокированных активов 100 тысяч рублей, превышать который нельзя. Если таковых на бОльшую сумму, то возникает вопрос, какие активы продать, чтобы использовать лимит по-максимуму? С ответом поможет линейное программирование!

from ortools.linear_solver import pywraplp

def maximize_spending(L, prices, stock):
# Create a linear solver object
solver = pywraplp.Solver.CreateSolver('SCIP')

# Define variables
quantities = [solver.IntVar(0, stock[i], f'quantity_{i}') for i in range(len(prices))]

# Define objective function: maximize the total spending
objective = solver.Objective()
for i in range(len(prices)):
objective.SetCoefficient(quantities[i], prices[i])
objective.SetMaximization()

# Add constraint: total spending should not exceed the limit M
constraint_total_spending = solver.Constraint(0, L)
for i in range(len(prices)):
constraint_total_spending.SetCoefficient(quantities[i], prices[i])

# Solve the problem
status = solver.Solve()

if status == pywraplp.Solver.OPTIMAL:
total_spending = sum(quantities[i].solution_value() * prices[i] for i in range(len(prices)))
items_quantities = {f'I{i+1}': int(quantities[i].solution_value()) for i in range(len(prices))}
return total_spending, items_quantities
else:
return None


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

# Money limit
L = 100000

# Prices of items I1, I2, I3, I4
prices = [709.18, 11851.10, 1528.21, 9395.44]

# Quantities of items in stock Q1, Q2, Q3, Q4
stock = [17, 4, 19, 12]

total_spending, items_quantities = maximize_spending(L, prices, stock)

if total_spending is not None:
print("Maximum spending:", total_spending)
print("Items quantities:", items_quantities)
else:
print("No solution found.")
На текущем проекте довелось заниматься поиском кандидатов в антифрод правила и в правила отказа для кредитного скоринга в новых источниках данных. Описал подходы, которые помогли, в заметке
🔥2👍1
Долгое время удивлялся, почему мне попадается так мало проектов, где по полной используется sklearn.Pipeline. Под этим я имею в виду не игрушечные примеры из 2-3 шагов, где первый PCA или OHE, а второй - логрег или random forest, а нормальный пайплайн из десятка шагов с отбором и преобразованием признаков из реальных задач, например, шаг, где детектятся группы сильно кореллирующих фичей, затем из каждой группы оставляется только одна, самая сильная. Или, когда на этапе моделирования катбустом мы делаем несколько итераций с отбрасыванием фичей с нулевой значимостью. Мы итак делаем эти шаги, так почему бы не сделать их частью пайплайна? Да, стандартные решения из sklearn вряд ли подойдут, поэтому круто научиться их делать самому. Собрал все свои кастомные трансформеры, совместимые с sklearn.Pipeline, положил их в репу и описал в заметке, думаю, будет полезно (ссылка на репу)
👍1🔥1
Оставлю это здесь как кандидата для следующей книги на прочтение Causal Inference for The Brave and True
👍1
Forwarded from Data Secrets
… однако, несмотря на все вышесказанное, сегодня все взгляды обращены на другого игрока👇

Nvidia только что стала самой дорогой компанией на планете, обогнав Microsoft. Сейчас капитализация компании составляет 3,3 триллиона долларов.

Напоминаем, что после презентации Apple Nvidia оттеснили на третье место, но выход нового Nemotron 4 все резко изменил.
Please open Telegram to view this post
VIEW IN TELEGRAM
Не самые стандартные вопросы по классическому МЛ, которые попадались на собесах за последнее время:

- Почему не стоит в проде использовать RandomForest из sklearn? Какие есть альтернативы, если все-таки нужнен именно RandomForest?
- Как вычислить уверенность RandomForest в прогнозе при решении задачи регрессии?
- Как меняются bias и variance в RandomForest при увеличении числа деревьев? А в GBDT?
- В чем принципиальное отличие логрега из statsmodels и из sklearn?
- В чем различия между дискриминативными и генеративными моделями? (речь про классический МЛ)
- Чем обусловлена разная форма распределения скоров LogisticRegression , SVC, RandomForest?
- Почему нейросети могут генерировать признаки автоматически, а GBDT - нет?
- Какие преимущества дает знание второй производной от функции потерь в GBDT?
- Для чего (и в каких случаях) необходима калибровка ответов бинарного классификатора? А когда можно обойтись без нее?
Еще вопросики по Python:
- Когда GIL не помеха для multithreading?
- В чем разница между multithreading и async? А что у них общего?
- Как так получилось, что в Python есть GIL, который создает ограничения при работе с multithreading, когда в других языках, например, C#, многопоточность спокойно работает безо всяких GIL?
- Приведите известные примеры применения множественного наследования
- Про ускорение вычислений. Что такое numba, когда она может помочь ускорить выполнение кода, а когда нет? Аналогичный вопрос про Cython.
- Приведите примеры из Ваших проектов, где примененялись декораторы и генераторы. Как связаны генераторы и async?
- Какие объекты Python хранятся в стеке (stack), а какие - в куче (heap)?
Стало попадаться много высказываний вроде "ах, вот N лет назад чтобы устроиться в ДС/МЛ достаточно было сказать, что умеешь писать фит-предикт в ноутбучке и тебе апплодировали стоя и брали на работу с огромной зарплатой. А вот сейчас с джунов три шкуры на собеседованиях дерут, на которые еще и не пробиться никак сквозь тысячи откликов."

Вспомнил, как я искал свою первую работу в сфере в 2016-17 годах. На тот момент диплом, основанный на решении задачи из реальной жизни с помощью МЛ (прогнозирование стоимости ремонта оборудования) был уже фактически написан и оставалась только формальная защита, что сильно пригодилось при обсуждении опыта и навыков на собесах.

Из фейлов - общение с tutu.ru на джуна-аналитика. Вопросы по основам SQL, которые зашли, а затем последовала задача, где нужно было определить оптимальное кол-во СМС-напоминалок клиенту, чтобы он продолжил покупку билетов на сайте, если он вдруг забросил процесс по каким-то причинам. Наивно верящий тогда в то, что МЛ - это серебрянная пуля, я начал бормотать что-то про выборку, которую нам надо собрать, пробовать разное кол-во СМС ну и так далее. Естественно, решение было гораздо проще. Справедливый отказ как итог.

Из успехов - мой тогдашний шеф зареферил меня в известный рекламный холдинг на data scientist intern. Они только начали набирать команду, в которой еще никого не было, но главное, что они точно знали, какие задачи нужно было решать и кто именно им нужен, что далеко не всегда верно даже сегодня!
Собственно, собес:
- Две задачи по терверу, одна из которых нередко попадается и сейчас. Вторая на смесь комбинаторики с тервером на расчет агрегированных показателей ТВ охватов. Простой вариант затащил, а сложный - облом, причем как оказалось потом, эту задачу они сами не могли решить за вменяемое время (спойлер: потом мне ее как раз и дали в течение первых месяцев)
- Кодинг на бумаге: обход бинарного дерева в глубину. Кажется ерундой, но позиция стажерская да и без подготовки далеко не все мидлы осилят (сужу по опыту собесов уже со стороны собеседующего)
- Поскольку питона тогда в отделе еще и в помине не было, основным языком разработки был C# и требовалось знать и его, чтобы в первое время интегрировать наработки в существующую систему. C# на тот момент я уже год как изучал в универе, поэтому здесь тоже все было ок
- Вопросы по дипломному проекту. Как собирал данные, как строил модель, как валидировал и как это потом можно будет внедрить. Не очень-то отличается от того, что спрашивают сегодня, а это, еще раз напомню, стажерская позиция.
- Какие задачи интересны, чем хотелось бы заниматься .. бихейв. Здесь тоже сошлись

В итоге проработал в этой компании больше 3 лет и очень благодарен людям за наставничество.
Leetcode for ML

Super neat set of machine learning coding challenges.

It could be useful to prep for an exam or ML interview.

Link

Navigational hashtags: #armknowledgesharing #armsites
General hashtags: #ml #dl #machinelearning #deeplearning
Все наслышаны с избытком про LLM и про NVIDIA, которая прославилась беспрецендентным ростом благодаря продаже чипов, своебразных "лопат" для бигтехов, разрабатывающих AI. Этот факт подсвечивает проблему монополии на рынке чипов. Но есть еще ряд компаний, не столь популярных, но играющих не менее важную роль в этом процессе. И если у NVIDIA есть более-менее достойные конкуренты, то вот среди производителей чипов рынок производителей еще уже. Самих по себе производителей чипов в мире много, но здесь речь именно о самых передовых чипах с техпроцессом <10 нМ - именно они используются для AI и в современных компьютерах и смартфонах. Так вот дело в том, что компания TSMC производит большую часть таких чипов, и именно от нее почти полностью зависят Apple и NVIDIA (Apple когда-то делала свои чипы на заводах Samsung, но поскольку это прямые конкуренты на рынке смартфонов, то было решено перенести производство на TSMC). TSMC удивительная компания, которую называют "странообразующим" предприятием для Тайвани. У TSMC положение не только монопольное, но еще довольно уязвимое: мало того что Китай постоянно угрожает Тайвани войной, так еще и сам остров Тайвань находится в сесмоопасной зоне и землятресения там не редкость. Понятно, что у TSMC есть заводы и в других странах, но они производят менее современные чипы. Так что если с TSMC что случится, то последствия для мировой экономики будут катастрофическими. Рекомендую посмотреть вот этот видос про TSMC.

Но и TSMC в свою очередь находится в зависимости от одной малоизвестной компании - нидерландской ASML, которая произвоизводит литографические машины, которые и создают "рисунок" из транзисторов на кристалле. И здесь ситуация аналогичная самой TSMC: производителей литографов в мире много, но вот для самых передовых чипов здесь ASML монополист. Эти машины - настоящее инженерное чудо (рекомендую вот это видео про ASML): тысячи уникальных компонентов, миллиарды долларов инвестиций в исследования и десятки лет разработок, причем при поддержке со стороны мировых производителей электроники, которые между собой конкурируют - неудивительно, что такая компания будет уникальной. Так что если с ней что-то произойдет, то TSMC останется без средств производства, ну и далее - те же последствия. Так что весь технологический мир сегодня буквально зависит от этих двух компаний.
👍1
Write faster Python code, and ship your code faster

Faster and more memory efficient data
- Articles: Learn how to speed up your code and reduce memory usage.
- Products: Observability and profiling tools to help you identify bottlenecks in your code.

Docker packaging for Python
- Articles: Learn how to package your Python application for production.
- Products: Educational books and pre-written software templates.

Navigational hashtags: #armknowledgesharing #armsites
General hashtags: #python #development #docker
1 сентября... 20 лет назад я стал студентом МАИ, 10 лет назад - студентом МГУ. В этот раз похвастаться чем-то похожим, не могу😁
🔥1😁1
AWS based risk engine (part 1)

Наконец-то с коллегами осуществили вывод в прод написанного за 5 месяцев с нуля risk engine (не знаю точного перевода на русский, но среди русскоговорящих коллег мы называем это “риск-движок”) для нигерийского финтеха.

Что это такое и для чего нужно?
Risk engine - это совокупность скоринговых моделей, антифрод моделей и правил (они называются policies или по-нашему “политики”), которые в определенной последовательности обрабатывают заявки клиентов на выдачу кредитов и принимают решение о выдаче, а также сроке и процентной ставке, если решение о выдаче положительное.

Как это работает?
Клиент отправляет заявку на кредит через мобильное приложение или сайт, по предоставленной клиентом информации запрашивается его кредитная история из БКИ, обогащается данными с его мобильного устройства, дополнительно запрашиваются данные из баз о мошенниках и из прочих источников. Все эти данные идут на вход риск-движка. Сначала он поочередно опрашивает антифрод модели, которые определяют вероятность мошенничества, затем скоринговые модели, которые прогнозируют вероятность невозврата кредита. Ответы от моделей используются политиками (которые представляют собой около сотни правил вроде “если возраст < 25 лет, то ставку нужно поднять” и т.д.) для принятия решения о выдаче. Решение отдается в бэкенд, и далее уже запускается механизм выдачи кредита или информирования об отказе.

Как это работало до нас?
Использовалась кастомная платформа (примеры: раз, два). Они все как один заявляют, что если вы дадите им ведро денег, то они вам все настроят один раз, а дальше вы будете как в зерокодинге соединять квадратики стрелочками, ничего программировать не надо, и никакие дорогостоящие инженеры вам не понадобятся! Как оно оказалось на самом деле? Комментировать особо не стану, легко можно догадаться, что почти так же, как и с зерокодингом:) Упомяну лишь, что задеплоить простой логрег на десяток фичей занимало до 2 недель. Зато без дорогих инженеров!
👍1
AWS based risk engine (part 2)

Что сделали?


- За основу взяли AWS Step functions (SF), на которые идеально ложится логика работы движка, по сути это граф или блок-схема, состоящая из логических блоков. Словами эти блоки можно описать так:
Возьми входной джейсон. Если такая заявка уже была, то сходи в S3 за ее логами и верни как ответ. Если нет, то вызови скоринговую модель, затем антифрод модель передай ответы в политики. Выполни цепочку из политик (последняя из них собирает решения всех предыдущих блоков и принимает решение). Залогируй ответ и отдай его бэкенду.

- Каждый блок SF может быть lambda (политики и простые модели), sagemaker endpoint (модели посложнее), внешнее API (запросы внешних данных) или тоже SF, которые в свою очередь состоят из аналогичных элементов.

- На этапе прототипирования, когда нужно было доказать руководству жизнеспособность этого решения, эти блоки создавались вручную через AWS консоль. Но, понятное дело, что далеко так не уйдешь. Поэтому для промышленного решения после одобрения все блоки прописывали в CloudFormation (амазоновский аналог Terraform), для создания однотипных блоков вроде лямбд взяли jinja, настроили CI/CD и тесты.
👍1
AWS based risk engine (part 3)

Результаты?

- Сокращение инфраструктурных затрат почти в 20 раз! Serverless решает, когда вам не нужно что-то эдакое, где AWS упирается в потолок возможностей.
- Выкатка новой модели - 1 час вместо недели. Да, для этого нужен дорогостоящий инженер. Но зато только один, и платить нужно только за один его час, а не за неделю:)
- Возможность мгновенно развернуть несколько независимых контуров (по сути копий движка), обычно это dev, stage, prod.
- Возможности масштабирования, задеплоить можно хоть сотню моделей
- Тесты, которые спасают от сердечных приступов при выкатке в прод

Недостатки есть?

Конечно, я же не продаю вам коробочки со стрелками за ведро денег :)

- AWS Step functions имеет лимит на размер входного джейсона в 256Кб, что не так уж много, поэтому много данных передать таким способом не получится.
- Пока не знаем, как подружить Grafana с CloudWatch (это встроенный сервис логирования в AWS), а мониторинг очень нужен. Ну и встроенный в Sagemaker мониторинг моделей уж очень убогий.
- Графы в Step functions описываются своим собственным языком, который очень далек от идеала и можно провести часы, роясь в доке, чтобы вкурить, что не так. И да, ChatGPT вам тут не сильно поможет, т.к. на этом языке не так много всего в мире написано.

Скоро выложим статью с подробностями.
👍1🔥1
2025/10/15 15:11:59
Back to Top
HTML Embed Code: