Forwarded from Reliable ML
Карта типов CDO
К обзору книги Carruthers, Jackson - The Chief Data Officer's Playbook
Хочется дополнить наш недавний обзор книги про CDO моей любимой картой архетипов дата лидеров.
Оригинальная статья была опубликована около 5 лет назад компанией Informatica, хотя недавно ее почему-то удалили. Однако у меня ходы остались записаны! Хочу поделиться с вами)
По концепту все Chief Data Officers делятся на 4 категории - по их самым сильным сторонам.
- Digital Innovators. Ключевые навыки дата лидера - в знании data science/ML/AI технологий. Такой CDO сможет затащить поиск перспективных идей, быстрые эксперименты и исследования, внедрение новых решений. Как правило, эти лидеры вырастают из дата саентистов.
- Analytics Champions. Фокус - на построении процессов для надежной отчетности: развитие BI-инструментов и дашбордов, настройка качественных end2end пайплайнов, включая оптимизацию работы отчетов в рамках BI и витрин данных под ними. Чтобы все работало четко, быстро, не ломалось - давало бизнесу возможность прозрачно видеть нужные данные по процессам и принимать решения. Такой тип лидера обычно вырастает из дата аналитика.
- Governance Circus. Ключевые скиллы и фокус внимания - на качестве данных, системном развитии архитектуры данных, процессов и инструментов управления ими и обеспечении их безопасности. Этот тип дата лидера вырастает из дата архитекторов, системных аналитиков, реже - из дата инженеров.
- Operational Optimizers. Основной бекграунд - в развитии инфраструктуры и технических процессов работы с данными. Это гуру в развитии платформенных сервисов и автоматизации всех этапов работы с данными: от сбора и интеграций, до деплоя отчетности и ML-моделей. Такой тип обычно вырастает из дата инженеров.
Верхнеуровнево, два правых квадранта - больше про монетизацию данных, а два левых - про их подготовку для того, чтобы их можно было использовать. В разные моменты времени, для разных отраслей и этапов развития компании - ей могут требоваться различные типы CDO.
По моему опыту, у всех CDO сильной группой навыков будет один, максимум два квадранта. Остальное может быть также закрыто, но уже как вторичная группа - с разной степенью погруженности и возможности управлять процессом.
Об этой картинке рекомендую задумываться, и когда принимаете решение о найме и думаете о профиле нужного вам специалиста, и если вы CDO/дата-лид, и собираете свою команду.
Ваш @Reliable ML
#business #cdo
К обзору книги Carruthers, Jackson - The Chief Data Officer's Playbook
Хочется дополнить наш недавний обзор книги про CDO моей любимой картой архетипов дата лидеров.
Оригинальная статья была опубликована около 5 лет назад компанией Informatica, хотя недавно ее почему-то удалили. Однако у меня ходы остались записаны! Хочу поделиться с вами)
По концепту все Chief Data Officers делятся на 4 категории - по их самым сильным сторонам.
- Digital Innovators. Ключевые навыки дата лидера - в знании data science/ML/AI технологий. Такой CDO сможет затащить поиск перспективных идей, быстрые эксперименты и исследования, внедрение новых решений. Как правило, эти лидеры вырастают из дата саентистов.
- Analytics Champions. Фокус - на построении процессов для надежной отчетности: развитие BI-инструментов и дашбордов, настройка качественных end2end пайплайнов, включая оптимизацию работы отчетов в рамках BI и витрин данных под ними. Чтобы все работало четко, быстро, не ломалось - давало бизнесу возможность прозрачно видеть нужные данные по процессам и принимать решения. Такой тип лидера обычно вырастает из дата аналитика.
- Governance Circus. Ключевые скиллы и фокус внимания - на качестве данных, системном развитии архитектуры данных, процессов и инструментов управления ими и обеспечении их безопасности. Этот тип дата лидера вырастает из дата архитекторов, системных аналитиков, реже - из дата инженеров.
- Operational Optimizers. Основной бекграунд - в развитии инфраструктуры и технических процессов работы с данными. Это гуру в развитии платформенных сервисов и автоматизации всех этапов работы с данными: от сбора и интеграций, до деплоя отчетности и ML-моделей. Такой тип обычно вырастает из дата инженеров.
Верхнеуровнево, два правых квадранта - больше про монетизацию данных, а два левых - про их подготовку для того, чтобы их можно было использовать. В разные моменты времени, для разных отраслей и этапов развития компании - ей могут требоваться различные типы CDO.
По моему опыту, у всех CDO сильной группой навыков будет один, максимум два квадранта. Остальное может быть также закрыто, но уже как вторичная группа - с разной степенью погруженности и возможности управлять процессом.
Об этой картинке рекомендую задумываться, и когда принимаете решение о найме и думаете о профиле нужного вам специалиста, и если вы CDO/дата-лид, и собираете свою команду.
Ваш @Reliable ML
#business #cdo
Forwarded from DeepSchool
CRAFT
Препарируем динозавра, чтобы лучше понять устройство актуальных моделей.
CRAFT — U-net подобная модель 2019 года, с VGG-16 внутри, которая призвана была решить проблему распознавания «in the wild» текста. В реальной жизни текст может состоять из символов разного шрифта, цвета, ориентации, с разными фонами и искажениями. Поэтому логично пробовать детектировать не целое слово за раз, а отдельные символы и промежутки между ними. Именно эту задачу и решает CRAFT.
Но как получить разметку для таких данных в большом количестве? Какие недостатки у такой модели и почему она не работает в одиночку? На эти и другие вопросы мы ответили в новой статье: https://deepschool-pro.notion.site/CRAFT-afe83ca8925041cea46c287fd3611e7d?pvs=4
Препарируем динозавра, чтобы лучше понять устройство актуальных моделей.
CRAFT — U-net подобная модель 2019 года, с VGG-16 внутри, которая призвана была решить проблему распознавания «in the wild» текста. В реальной жизни текст может состоять из символов разного шрифта, цвета, ориентации, с разными фонами и искажениями. Поэтому логично пробовать детектировать не целое слово за раз, а отдельные символы и промежутки между ними. Именно эту задачу и решает CRAFT.
Но как получить разметку для таких данных в большом количестве? Какие недостатки у такой модели и почему она не работает в одиночку? На эти и другие вопросы мы ответили в новой статье: https://deepschool-pro.notion.site/CRAFT-afe83ca8925041cea46c287fd3611e7d?pvs=4
deepschool-pro on Notion
CRAFT | Notion
Автор: Герман Петров
#courses #math #statistics #ml #dl
Тут оказывается у CSC есть сайт, в котором собраны все курсы
Вот ссылка например за 2019 учебный год: https://compscicenter.ru/courses/?academic_year=2019&branch=spb&terms=autumn,spring
Тут оказывается у CSC есть сайт, в котором собраны все курсы
Вот ссылка например за 2019 учебный год: https://compscicenter.ru/courses/?academic_year=2019&branch=spb&terms=autumn,spring
compscicenter.ru
Курсы Computer Science Center
Computer Science Center — объединённая инициатива Школы анализа данных, Computer Science клуба и JetBrains.
Forwarded from Norgey Bilinskiy
YouTube
How To Become Quant - Ultimate Roadmap
Are you ready to start your journey as a Quantitative Researcher? In this video, we look at the Ultimate Roadmap to Becoming a Quant. Here is link to downloadable very high quality image that contains all contents that where shown in this video - https:…
Forwarded from ИИгорь R&D
#учимпитон
Какой же кайф найти в старой репе готовую функцию, которую хочешь написать. Удобно для экспериментов делать структурированные вложенные конфиги, но W&B кривовато работает с многоуровневыми конфинами, поэтому для логгирования надо их расплющивать. И вот такую штуку нашел в репе с дипломом, забирайте, кому надо:
Какой же кайф найти в старой репе готовую функцию, которую хочешь написать. Удобно для экспериментов делать структурированные вложенные конфиги, но W&B кривовато работает с многоуровневыми конфинами, поэтому для логгирования надо их расплющивать. И вот такую штуку нашел в репе с дипломом, забирайте, кому надо:
from typing import Any
from collections.abc import Mapping
from collections import defaultdict
def flatten_dict(d: Mapping[str, Any], sep=".") -> dict[str, Any]:
res = {}
for k, v in d.items():
assert isinstance(k, str)
assert sep not in k
if isinstance(v, Mapping):
res.update({
sep.join((k, k_in)): v_in
for k_in, v_in in flatten_dict(v).items()
})
else:
res.update({k: v})
return res
def unflatten_dict(d: Mapping[str, Any], sep=".") -> dict[str, Any]:
def nest_default_dict():
return defaultdict(nest_default_dict)
res = defaultdict(nest_default_dict)
for k, v in d.items():
cur = res
parts = k.split(sep)
for part in parts[:-1]:
cur = cur[part]
cur[parts[-1]] = v
def dictify(d):
res = {}
for k, v in d.items():
if isinstance(v, defaultdict):
res[k] = dictify(v)
else:
res[k] = v
return res
return dictify(res)
Forwarded from Renat
Forwarded from Renat
Reproducing_OpenAI's_o1_A_Reinforcement_Learning_Roadmap.wav
56.7 MB
подкаст по статье, кому лень читать как и мне)
Forwarded from Data Secrets
Известный мировой тех.подкаст про AI Latent.Space в честь Нового Года выложили 2025 AI Engineering Reading List
Это огромный список актуальных мастридов для ML/AI инженеров. В нем нет базовой базы, а только те статьи, которые непосредственно относятся к современным развивающимся методам и технологиям.
Охвачены 10 самых важных на сегодняшний день областей: файнтюнинг, агенты, диффузия, голос, вижн модели, генерация кода, RAG, цепочки рассуждений, бенчмарки и эвал, и frontier LLMs.
Список получился у ребят действительно очень крутой и насущный, так что обязательно забирайте себе в бэклог или в ридинг-клабы.
Это огромный список актуальных мастридов для ML/AI инженеров. В нем нет базовой базы, а только те статьи, которые непосредственно относятся к современным развивающимся методам и технологиям.
Охвачены 10 самых важных на сегодняшний день областей: файнтюнинг, агенты, диффузия, голос, вижн модели, генерация кода, RAG, цепочки рассуждений, бенчмарки и эвал, и frontier LLMs.
Список получился у ребят действительно очень крутой и насущный, так что обязательно забирайте себе в бэклог или в ридинг-клабы.
Forwarded from ML physicist (Алексей Маметьев)
После появления LLM ок текстовые энкодеры стали часто использовать для задач RAG.
Они позволяют превратить текст в осмысленный вектор, эмбединг, по которому можно искать релевантные куски в условной базе знаний нужную информацию, и подсовывать в контекст ллмки.
Однако следует понимать что тут есть одна идейная проблема - мы хотим что бы "вектора смысла" у
> Помогите не могу зайти в электронную почту, пишет учетка заблокирована за большое число неверных попыток, что делать?
> В случае ввода пароля более 10 раз неверно, аккаунт блокируется. Для разблокировки необходимо создать заявку в хелпдеск
смысл этих предложений немного разный, блин, одно из них вообще вопрос, а второе - утвердительное предложение. Из за чего механизм с векторным поиском может давать много сбоев.
Чуть чуть помогает исправить ситуацию - reranker-ы. Они работают чуть по другому, принимая на вход 2 куска текста - вопрос и элемент базы знаний - анализируют их вместе и возвращают число - релевантность чанка по отношению к вопросу. Можно представить что это 2 LLM -ки, с перемешанными последними слоями и Value Head-ом на конце.
Такой подход позволяет более глубоко анализировать семантику языка, но и дороже в компьюте (для проверки N чанков потребуется O(N^2) вызовов модели, когда как с векторынми механизмами O(N)), так что его имеет смысл ставить на втором этапе работы вашего RAG-а для переранжирования уже более менее релевантных кусков найденых векторным поиском
Для обучения таких штук обычно берут претреинед модельки, после чего поверх учат метриклернингом
Ну и в подарок небольшой гайд как выбрать reranker под вашу задачу, в коментариях в полном качестве
Они позволяют превратить текст в осмысленный вектор, эмбединг, по которому можно искать релевантные куски в условной базе знаний нужную информацию, и подсовывать в контекст ллмки.
Однако следует понимать что тут есть одна идейная проблема - мы хотим что бы "вектора смысла" у
> Помогите не могу зайти в электронную почту, пишет учетка заблокирована за большое число неверных попыток, что делать?
> В случае ввода пароля более 10 раз неверно, аккаунт блокируется. Для разблокировки необходимо создать заявку в хелпдеск
смысл этих предложений немного разный, блин, одно из них вообще вопрос, а второе - утвердительное предложение. Из за чего механизм с векторным поиском может давать много сбоев.
Чуть чуть помогает исправить ситуацию - reranker-ы. Они работают чуть по другому, принимая на вход 2 куска текста - вопрос и элемент базы знаний - анализируют их вместе и возвращают число - релевантность чанка по отношению к вопросу. Можно представить что это 2 LLM -ки, с перемешанными последними слоями и Value Head-ом на конце.
Такой подход позволяет более глубоко анализировать семантику языка, но и дороже в компьюте (для проверки N чанков потребуется O(N^2) вызовов модели, когда как с векторынми механизмами O(N)), так что его имеет смысл ставить на втором этапе работы вашего RAG-а для переранжирования уже более менее релевантных кусков найденых векторным поиском
Для обучения таких штук обычно берут претреинед модельки, после чего поверх учат метриклернингом
Ну и в подарок небольшой гайд как выбрать reranker под вашу задачу, в коментариях в полном качестве
Forwarded from Старший Авгур
На HF довольно давно появился пост, который я как-то пропустил, но который хорошо и кратко описывает основные оптимизации при обучении языковых моделей. Пост: ссылка
Есть ещё старый пост на ту же тему от Eleuther: ссылка
А пост ниже — это короткая выжимка от меня, именно по экономии памяти на одной карточке.
🔹Числа с плавающей точкой (IEEE 754) — основной тип для вычислений в языковых моделях, у них есть знак, экспонента и мантисса. Экспонента контролирует диапазон значений, мантисса — точность в рамках этого диапазона. Также напомню, что есть приколы с представлением чисел около нуля (aka денормализованные числа). Есть куча реализаций разной битности:
— float: 32 бита, E8M23
— tf32: 19 бит, E8M10 (специфичный для Nvidia формат, отсюда все странности)
— fp16: 16 бит, E5M10
— bf16: 16 бит, E8M7 (экспонента и диапазон как у float)
— fp8: 8 бит, E4M3 или E5M2
🔹На что тратится память:
W: Сами веса модели
A: Активации (промежуточные состояния, результат вычисления функции от входа и весов)
G: Градиенты (обновления весов модели при обучении)
O: Состояние оптимизатора (моменты и дисперсия)
При инференсе есть только W и часть A, при обучении есть все 4 категории. Далее у каждого метода стоят буквы, которые обозначают, что именно экономится.
🔹Методы экономии памяти при инференсе:
— Квантование модели (WA): ужимаем тип данных для весов и активаций. В большинстве статьей так и написано: W4A16, что означает, что веса в 4 битах, активации в 16 битах.
— Flash Attention (A): оптимизируем вычисление внимания поблочными вычислениями в кэше GPU, попутно уменьшая сложность по памяти с квадратичной по длине последовательности до линейной.
🔹Дополнительные методы экономии памяти при обучении на одной карточке:
— Смешанная точность (A): имеем рабочую копию в 16 битах (bf16 или fp16), а также мастер-копию в 32 битах. Все операции делаем с рабочей копией и потом обновления весов вливаем в мастер-копию. Вы спросите: а где профит? А профит в том, что активации в 16 битах, а активации — это дофига памяти.
— Квантование оптимизатора (O): ужимаем тип данных для состояний оптимизатора. Чаще всего в 8 бит, перед собственно применением градиентов расквантовываем.
— Аккумуляция градиентов (AG): если мы хотим батч из больше чем одного примера, то A и G тоже раздуются. Но нам совсем не обязательно считать градиенты параллельно, поэтому мы можем считать их последовательно, суммировать, и только потом применять. Если это правильно😁 отмасштабировать, то это теоретически эквивалентно обучению на всём батче.
— Чекпоинты активаций (A): при обучении нам по-хорошему нужны активации на всех слоях, чтобы потом считать по ним градиенты. Но нам сначала нужно дойти до лосса, поэтому мы выкидываем часть промежуточных активаций и пересчитываем их заново на основе оставшихся чекпоинтов тогда, когда они нам реально понадобятся для подсчёта градиентов.
— Адаптеры (GO): основную модель вообще не трогаем, учим только новый маленький набор весов. Градиенты считаем только по нему, и на этом сильно экономим.
На практике используется буквально всё, везде и сразу🤯
Типичный конфиг:
Есть ещё старый пост на ту же тему от Eleuther: ссылка
А пост ниже — это короткая выжимка от меня, именно по экономии памяти на одной карточке.
🔹Числа с плавающей точкой (IEEE 754) — основной тип для вычислений в языковых моделях, у них есть знак, экспонента и мантисса. Экспонента контролирует диапазон значений, мантисса — точность в рамках этого диапазона. Также напомню, что есть приколы с представлением чисел около нуля (aka денормализованные числа). Есть куча реализаций разной битности:
— float: 32 бита, E8M23
— tf32: 19 бит, E8M10 (специфичный для Nvidia формат, отсюда все странности)
— fp16: 16 бит, E5M10
— bf16: 16 бит, E8M7 (экспонента и диапазон как у float)
— fp8: 8 бит, E4M3 или E5M2
🔹На что тратится память:
W: Сами веса модели
A: Активации (промежуточные состояния, результат вычисления функции от входа и весов)
G: Градиенты (обновления весов модели при обучении)
O: Состояние оптимизатора (моменты и дисперсия)
При инференсе есть только W и часть A, при обучении есть все 4 категории. Далее у каждого метода стоят буквы, которые обозначают, что именно экономится.
🔹Методы экономии памяти при инференсе:
— Квантование модели (WA): ужимаем тип данных для весов и активаций. В большинстве статьей так и написано: W4A16, что означает, что веса в 4 битах, активации в 16 битах.
— Flash Attention (A): оптимизируем вычисление внимания поблочными вычислениями в кэше GPU, попутно уменьшая сложность по памяти с квадратичной по длине последовательности до линейной.
🔹Дополнительные методы экономии памяти при обучении на одной карточке:
— Смешанная точность (A): имеем рабочую копию в 16 битах (bf16 или fp16), а также мастер-копию в 32 битах. Все операции делаем с рабочей копией и потом обновления весов вливаем в мастер-копию. Вы спросите: а где профит? А профит в том, что активации в 16 битах, а активации — это дофига памяти.
— Квантование оптимизатора (O): ужимаем тип данных для состояний оптимизатора. Чаще всего в 8 бит, перед собственно применением градиентов расквантовываем.
— Аккумуляция градиентов (AG): если мы хотим батч из больше чем одного примера, то A и G тоже раздуются. Но нам совсем не обязательно считать градиенты параллельно, поэтому мы можем считать их последовательно, суммировать, и только потом применять. Если это правильно
— Чекпоинты активаций (A): при обучении нам по-хорошему нужны активации на всех слоях, чтобы потом считать по ним градиенты. Но нам сначала нужно дойти до лосса, поэтому мы выкидываем часть промежуточных активаций и пересчитываем их заново на основе оставшихся чекпоинтов тогда, когда они нам реально понадобятся для подсчёта градиентов.
— Адаптеры (GO): основную модель вообще не трогаем, учим только новый маленький набор весов. Градиенты считаем только по нему, и на этом сильно экономим.
На практике используется буквально всё, везде и сразу
Типичный конфиг:
"model": {
"attn_implementation": "flash_attention_2", // вы поняли
"load_in_4bit": true, // квантование модели
...
},
"trainer": {
"gradient_accumulation_steps": 32, // аккумуляция градиентов
"bf16": true, // смешанная точность
"optim": "adamw_8bit", // квантование оптимизатора
"gradient_checkpointing": true, // чекпоинты активаций
...
},
"lora": {...} // адаптерыPlease open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Katser
Я уже писал про библиотеку TSAD (Time Series Analysis for Simulation of Technological Processes) в канале, но отстраненно, как автор канала. Дам пару комментариев как соавтор и один из контрибьюторов проекта.
· Проект начинался как time series anomaly detection (поэтому TSAD), но потом разросся до time series analysis for diagnostics, и, наконец, решили не ограничиваться диагностикой, а пойти во все задачи промышленности (прогнозирование, оптимизация)
· Идея появилась, потому что просто не было open-source промышленных библиотек, а проблемы с предварительной обработкой данных, EDA, оценкой алгоритмов были
· Текущая цель библиотеки — сделать набор пайплайнов для AutoML в промышленности
· Функционала не достает, но есть несколько супер полезных функций/модулей, уже хорошо проработанных и реализованных:
1️⃣ наборы данных для разных задач промышленности (RUL, CPD, outlier detection и др.)
2️⃣ проработанная архитектура пайплайнов (самих пайплайнов бы побольше), что позволяет контрибьютить и разрабатывать сами пайплайны решения задач
3️⃣ реализованные сложные метрики оценки типа NAB scoring algorithm, вот описание в документации. Их уже несколько лет активно используем в своих реальных проектах
Можно выдергивать и пользоваться этим функционалом в своих проектах.
· Проект начинался как time series anomaly detection (поэтому TSAD), но потом разросся до time series analysis for diagnostics, и, наконец, решили не ограничиваться диагностикой, а пойти во все задачи промышленности (прогнозирование, оптимизация)
· Идея появилась, потому что просто не было open-source промышленных библиотек, а проблемы с предварительной обработкой данных, EDA, оценкой алгоритмов были
· Текущая цель библиотеки — сделать набор пайплайнов для AutoML в промышленности
· Функционала не достает, но есть несколько супер полезных функций/модулей, уже хорошо проработанных и реализованных:
Можно выдергивать и пользоваться этим функционалом в своих проектах.
Please open Telegram to view this post
VIEW IN TELEGRAM