OK ML – Telegram
OK ML
382 subscribers
17 photos
2 files
81 links
Канал посвящен ML, DS, AI с акцентом на репозитории, инструменты и уязвимости в ML-системах.
Download Telegram
Статистика графов для ML-инженера. Инструмент недели

Библиотека для graph statistics - статистических моделей графов, спектральных эмбеддингов, сравнения графов и вспомогательных инструментов для анализа связных данных.

Чем graspologic полезен ML-инженеру
Быстрые и интерпретируемые эмбеддинги графа. Часто дают сильный бейслайн сравнимый с GNN, но проще и дешевле.
Добавлять новые узлы в эмбеддинг без переобучения/переэмбеддинга всего графа - реальная продакшен-фича для графов, которые растут (out-of-sample embedding).
Можно осмыслить граф как наблюдение из модели (SBM, RDPG-подобные идеи (Поясню термины в комментариях, не пугайся)), оценивать параметры/структуры, сравнивать графы, валидировать гипотезы.

Сценарий 🌵
У нас есть граф, и мы хотим восстановить кластера. Для демонстрации сгенерируем граф из SBM, затем построим ASE и кластеризуем точки в латентном пространстве.
import numpy as np
from graspologic.simulations import sbm
from graspologic.embed import AdjacencySpectralEmbed

from sklearn.mixture import GaussianMixture
from sklearn.metrics import adjusted_rand_score

# 1) SBM-граф 3 сообщества
rng = np.random.default_rng(42)

sizes = [120, 100, 80] # размеры блоков
p_in = 0.12 # вероятность ребра внутри блока
p_out = 0.02 # вероятность ребра между блоками

B = np.array([
[p_in, p_out, p_out],
[p_out, p_in, p_out],
[p_out, p_out, p_in ],
])

A = sbm(sizes, B, directed=False, loops=False, random_state=42)

# истинные метки блоков (для оценки качества)
y_true = np.concatenate([np.full(s, i) for i, s in enumerate(sizes)])

# 2) спектральный эмбеддинг графа в k-мерное пространство
# В простом случае берем k = число сообществ
ase = AdjacencySpectralEmbed(n_components=3)
X = ase.fit_transform(A)

# fit_transform может вернуть (X_left, X_right) для направленных графов;
# для неориентированного обычно достаточно X_left
if isinstance(X, tuple):
X = X[0]

# 3) Кластеризация в латентном пространстве
gmm = GaussianMixture(n_components=3, random_state=42)
y_pred = gmm.fit_predict(X)

# 4) Оценка (ARI = 1.0 идеально, 0.0 ~ случайно)
ari = adjusted_rand_score(y_true, y_pred)
print(f"Adjusted Rand Index (ARI): {ari:.3f}")


🥊 Точность кластеризации получилась 58.67% - так себе. Но в целом ожидаемый результат для SBM с перекрывающимися спектрами и умеренным отношением p_in/p_out. В реальных данных без жёстко разделённых сообществ такие значения часто являются сильным бейслайном.

Анализ результатов:
1. Граф успешно сгенерирован с тремя кластерами.
2. Применено спектральное вложение для понижения размерности.
3. Выполнена кластеризация в латентном пространстве с помощью модели гауссовой смеси, что лучше соответствует предположению о гауссовых кластерах после спектрального эмбеддинга.
4. Визуализация показывает качество разделения на кластеры.

Гистограммы компонент ASE (приложка) 💆‍♂️ показывают, что первые две компоненты уже частично разделяют сообщества, тогда как третья компонента вносит дополнительную, но менее выраженную дискриминацию. Это типично для SBM с неидеальной разделимостью.

Когда особенно вовремя
1️⃣нужен быстрый бейслайн перед тем, как идти в GNN;
2️⃣нужна интерпретируемость и статистические проверки гипотез (мало метрик качества);
3️⃣задача - детекции аномалий на графах через эмбеддинги (в целом для этого библиотека мной и была найдена).

Типичный кейс:
call graph сервиса - ASE - кластеризация - поиск аномальных компонент как кандидатов на уязвимости или архитектурные косяки 🙈

Киллер-фича
Новые вершины можно проецировать в уже существующее латентное пространство без переобучения модели.
X_new = ase.transform(A_new)


Все
🙄

TL;DR
graspologic - пример библиотеки, которая соединяет строгую статистику графов и практический ML.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
79👍4💯21🎄1
okml_river.pdf
127.8 KB
Библиотека, о которой не расскажут на ML-курсах. River

Большинство курсов учат ML так, будто данные статичны, распределение не меняется, а модель можно «переобучить потом». Что на самом деле? 👏 Данные стримятся, а дрифт - норма, кроме того всегда нависает угроза переобучения. Ладно, отставим демагогию. 🪞 И обсудим river - онлайн-машинное обучение (или риал тайм), а не «ещё один sklearn»!

Что важно понимать про data streams (из документации ривер)
😎 Data streams - это последовательность событий во времени, где порядок важен, а признаки могут появляться и исчезать.
😎 Reactive streams - данные приходят сами (клики, транзакции, телеметрия), и никто не контролирует ни порядок, ни скорость.
😎 Proactive streams - данные читаются тобой (файлы, логи), что позволяет воспроизводить прод, если сохранить порядок.
😎 Online processing - модель обучается по одному объекту за раз и никогда не возвращается к прошлым данным.
😎 Tasks in River - классификация, регрессия, аномалии и таймсерии выполняются в стриминговом режиме, без batch-обучения.
😎 Dictionaries everywhere - признаки передаются как Python-словари, потому что в стриминге это быстрее и естественнее, чем NumPy.
😎 Datasets - офлайн-датасеты используются как прокси для продового потока, чтобы воспроизвести реальный порядок данных.
😎 Model evaluation - качество измеряется в том же порядке, в котором данные приходят в проде (prequential evaluation).
😎 Concept drift - онлайн-модели выигрывают тем, что продолжают учиться и адаптируются к изменению данных без полного переобучения.

Сразу пример - online-ML + drift detection + аналитика (River)
В приложении pdf с кодом и картинками
1️⃣ Вероятности сначала ≈ 0.5
Модель стартует “с нуля”. В online-ML уверенность появляется со временем, а не сразу после обучения.
2️⃣ Метрика колеблется, это нормально? Да! Rolling accuracy - это локальное качество. В проде метрика не растёт монотонно, она живет, часто своей жизнью хаха.
3️⃣ График весов показывает, какие признаки становятся важнее, как модель адаптируется. И никакого SHAP, никакой постобработки.
4️⃣ Никакого train/test (predict 🔜 score 🔜learn)
Это называется prequential evaluation и именно так ML живёт в стриминге.

Если у тебя:
🔪 стриминг
🔪 фрод / рекомендации / клики
🔪 long-running сервис
- river решает.

Все!
🙄
Please open Telegram to view this post
VIEW IN TELEGRAM
510🔥6💯3🙏2
CVE-2025-68664 - уязвимость в LangChain Core

❄️ В langchain-core обнаружена критическая уязвимость, получившая название LangGrinch.

Проблема заключается в небезопасной сериализации/десериализации данных при использовании функций dumps() и dumpd() внутри LangChain.

💡Эти функции не экранируют должным образом словари, содержащие ключ lc, который используется внутри LangChain как маркер сериализованных объектов (да, опять про сериализацию и проблемы с ней 🧑‍💻). Если данные, вводимые пользователем, содержат этот ключ, они могут быть ошибочно интерпретированы как внутренний объект LangChain во время десериализации, позволяя злоумышленнику инжектировать собственные структуры.


🎩 Риски (по сути украдено отсюда)
🎅Кража секретов и чувствительных данных. Если десериализация выполняется с параметром secrets_from_env=True (раньше — включён по умолчанию), злоумышленник может заставить систему прочитать и вернуть секреты из переменных окружения (например, API-ключи).
❤️Инъекция объектов LangChain. Через специально сформированные поля (например, metadata, additional_kwargs, response_metadata) атакующий может заставить десериализатор создать объекты внутри доверенного пространства имён (langchain_core, langchain, langchain_community) с контролируемыми параметрами.
❤️Потенциальное выполнение кода. При использовании шаблонов Jinja2 или других механизмов может возникнуть возможность RCE через внедрённые структуры, особенно если шаблоны интерпретируют опасные конструкции

Что делать?
Обновляться срочно, пока этот Гринч не утащил прод 🌟, ограничить разрешённые объекты при десериализации и отключить загрузку секретов из env по умолчанию.

Всё!
🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
611👍5💯3❤‍🔥1
CVE-2025-67818 / CVE-2025-67819 - критические уязвимости в Weaviate

❄️ В Weaviate были обнаружены сразу две критические уязвимости (NVD1, NVD2), затрагивающие работу с файлами и бэкапами. Обе проблемы актуальны для версий до 1.33.4 и особенно опасны в ML/RAG-инфраструктуре.


CVE-2025-67818 - Arbitrary File Write через восстановление бэкапа
При восстановлении бэкапа Weaviate некорректно обрабатывает имя файла, что позволяет атакующему использовать path traversal.

Если подсунуть специально сформированный бэкап, становится возможным:
✉️ записывать файлы в произвольные пути,
✉️ выходить за пределы директории восстановления,
✉️ перезаписывать системные и сервисные файлы (при наличии прав).
В худшем случае - запись в /etc/passwd, конфигурационные файлы или runtime-файлы контейнера.

CVE-2025-67819 - Arbitrary File Read через FileReplicationService

Вторая уязвимость позволяет читать произвольные файлы при выполнении следующих условий:
🖊shard находится в состоянии Pause file activity,
🖊доступен FileReplicationService,
🖊используется метод GetFile с контролируемым параметром filename.
Результат:
🌸чтение конфигураций,
🌸 утечка секретов,
🌸 утечка приватных данных,
🌸 подготовка почвы для дальнейших атак (включая lateral movement).

Все!
👀

Что такое Weaviate и где он используется
Weaviate - это опэнсорсная векторная база данных, широко применяемая в AI/ML-системах для (особенно агентных системах):
🌟 RAG (LLM + поиск по эмбеддингам),
🌟 семантического поиска,
🌟рекомендательных систем,
🌟 AI-ассистентов и баз знаний.

Как правило, Weaviate разворачивается как отдельный сервис, имеет доступ к файловой системе и бэкапам, а также обрабатывает пользовательские данные. 😕 Поэтому любые уязвимости на уровне работы с файлами имеют высокий импакт.
Please open Telegram to view this post
VIEW IN TELEGRAM
58👍4💯3
Spiking Neural Networks for Solidity Vulnerability Analytics.pdf
390.8 KB
Kimi и новый уровень AI-ассистента и инструмента для ресерча

С каждым годом днем инструменты ИИ становятся всё более мощными, но сочетание глубокого анализа, длинного контекста и реальной пользы в ресече зачастую под вопросом (или по крошкам приходится собирать тут и там и сям) . 🆗 Однако это предлагает/заявляет Kimi (бесплатная моделька при триллионе параметров) - интеллектуальный AI-ассистент от компании Moonshot AI , который уже привлёк мое внимание пользователей по всему миру.

Что такое Kimi?
По сути - продвинутый чат-бот и универсальный AI-ассистент, доступный в веб-версии и мобильных приложениях. Он умеет:
😑 поддерживать диалог с длинным контекстом (до сотен тысяч слов);
😑 анализировать текст, данные, документы, создавать презентации и отчёты;
😑 выполнять программирование, отладку кода и сложные вычисления;
😑 планировать и реализовывать задачи при помощи встроенных агентных возможностей.

Немного технических деталей
В основе современных версий Kimi лежит мощная модель Kimi-K2, построенная по архитектуре Mixture-of-Experts (MoE) с триллионом параметров. Эта архитектура позволяет одновременно добиваться высокой производительности и эффективности, а также открывает доступ к сложному многозадачному мышлению и генерации глубоких ответов.

Исследовательский потенциал Kimi Researcher
Особое внимание заслуживает режим Researcher - это полноценный инструмент для глубокого исследования:
💔 самостоятельно формирует план исследования и выполняет многоступенчатый анализ источников;
💔 фильтрует данные по релевантности, выявляет противоречия и структурирует результаты;
💔 автоматически генерирует интерактивные отчёты с визуализациями, таблицами, выводами и ссылками на источники;
💔 может создавать полноценные веб-страницы с результатами исследования - готовые к использованию в работе.

Прикладной кейс из личного опыта (Kimi 🔜Research 🔜 SNN 🔜 Solidity)
В приложении - наша с Кими (промпт - мой) презентация по анализу солидити смарт-контрактов не с помощью ЛЛМ, а импульсными нейронками (Spiking Neural Networks, SNN) ! Какие получились инсайты (и по кими, и по ресечу):

1️⃣ Kimi реально самостоятельно мыслит - планирует, ищет, анализирует, структурирует и визуализирует. Как тебе презентация? Ноль человеческого вмешательства! Кстати, еще и анимация встроена в пптх).

2️⃣ SNN позволяют моделировать временную структуру событий, что делает их ближе к причинному мышлению, чем классические ANN и Transformer-модели. Так как входным сигналом являются события во времени, а не статические векторы признаков, это снижает зависимость от ручного фича инжиниринга! Рабочая в общем-то идейка получилась!

3️⃣ Интерпретируемость в SNN является архитектурным свойством, поскольку spike-паттерны напрямую отражают динамику активаций.

4️⃣ Критические уязвимости в солдити представляют собой динамические сценарии выполнения, которые невозможно корректно выявить без моделирования времени. CFG и DFG солидити-контрактов могут быть интерпретированы как нейронная топология SNN, где переходы исполнения соответствуют синаптическим связям.

В общем, Kimi демонстрирует уровень зрелости, при котором AI становится самостоятельным инструментом для полноценного ресерча, а не вспомогательным помощником. А пост убивает двух зайцев - восхваляет кими и снн!

Все!
😮
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍87💯2
Google переосмысляет учебники с помощью ИИ, или 3 января

Учебники являются неизменным форматом независимо от уровня подготовки, интересов и когнитивных особенностей учащегося - один для всех. 🕶 Проект Learn Your Way от Google предлагает радикально иной подход, в котором учебник подстраивается под ученика (точнее его интересы), а не наоборот.

🍬Как работает Learn Your Way
Архитектура проекта строится в два этапа:
1️⃣ Персонализация текста

ИИ переписывает исходный учебный материал:
под уровень обучения (grade level, re-leveling);
под личные интересы учащегося (спорт, искусство, музыка и др.).
При этом сохраняется структура, фактическая точность и учебные цели оригинального текста.

2️⃣ Множественные представления одного и того же знания
Персонализированный текст автоматически превращается в разные форматы:
immersive text с пояснениями и примерами;
аудио-урок в формате диалога «учитель–ученик»;
слайды с озвучкой;
mind map для структурного обзора;
визуальные иллюстрации;
интерактивные задания.
Ученик сам выбирает, как именно изучать материал — текстом, визуально или через аудио.

Центральный элемент - Immersive Text. Это полноценная учебная среда, в которую встроены:
⚡️ вопросы по ходу чтения;
⚡️ таймлайны для процессов и событий;
⚡️ мнемоники для запоминания;
⚡️ персонализированные примеры;
⚡️ квизы с обратной связью.
Чтение превращается в активный процесс обучения, а не в линейное пролистывание страниц. Пойду поизучаю Картографирование поверхности Земли с использованием широты и долготы как школьник, любящий фотографию (заявка в лист жаждущих потестировать полный функционал подана, но пока учим, что есть) и с тобой поделюсь, как это выглядит (картинка в приложении):
исходный учебный текст находится в центре, слева доступна навигация по разделам, сверху - переключение между форматами (слайды с озвучкой, аудио-урок, мандмэп), внутри текста встроены визуальные элементы, а справа появляются контекстные вопросы по мере чтения,
фотографии нулевого меридиана в Гринвиче, текстовое объяснение и вопрос - это одна и та же концепция, представленная в нескольких формах,
на скриншоте показан типичный пример embedded question. Вопрос формируется автоматически и опирается на только что прочитанный фрагмент, то есть проверка понимания происходит в момент обучения, а не после.

В целом, не по теме канала, конечно, но вообще у нас тут праздники 🎅! Самое неожиданное ощущение - это не «вау, ИИ», а то, что материал действительно читается легче и вопросы появляются ровно в тот момент, когда начинаешь сомневаться, примеры подстраиваются под интересы, а возможность мгновенно переключиться на аудио или mind map снимает усталость от текста (все для СДВГшников). Это редкий случай, когда образовательный инструмент не требует дисциплины - он сам поддерживает внимание (тут ссылочка на архив для любителей теории образования).
Если давно не было ощущения «хочу разобраться дальше», а не «надо дочитать, уплочено» - Learn Your Way стоит открыть хотя бы из любопытства.

Все!
🗺
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍97💯2🥰1
Инструмент недели. RAGAS - как объективно оценить качество вашей RAG-системы.

 RAG-системы могут галлюцинировать, уходить от темы или извлекать шум вместо нужного контекста. Но как это измерить, если нет эталонных "правильных" ответов? 🔪🔪🔪

Рассмотри RAGAS - спец питон-библиотеку для оценки качества RAG-систем, которая решает ключевую практическую проблему RAG-пайплайнов (как объективно измерять, насколько хорошо система извлекает знания и использует их при генерации ответов). 🇷🇺

По сути RAGAS предлагает набор формализованных метрик, которые отражают разные аспекты качества RAG:
1. Faithfulness (достоверность) 😎
Оценивает, насколько утверждения в ответе подтверждаются retrieved-контекстом. Позволяет выявлять галлюцинации, даже если ответ выглядит правдоподобно.
2. Answer Relevancy (релевантность ответа) 🤢
Проверяет, насколько ответ действительно отвечает на исходный вопрос, а не уходит в сторону.
3. Context Precision (точность контекста) 😩
Показывает, какая доля извлечённого контекста действительно полезна для ответа. Полезно для оптимизации и фильтрации «шума».
4. Context Recall (тоже точность контекста, но другая) 🙃
Измеряет, насколько retrieved-контекст покрывает информацию, необходимую для корректного ответа.
5. Answer Correctness (опционально, корректность ответов) 😺
Сравнение с эталонным ответом (если он есть, конечно), комбинирующее семантическую близость и фактическую точность.

Архитектурные особенности
🐍 Использует LLM-as-a-Judge подход, то есть LLM выступает в роли оценщика, а не только генератора.
🐍 Метрики декомпозированы, так что можно включать и отключать их по необходимости.
🐍 Работает поверх стандартных структур данных ( df, dict).
🐍 Совместима с популярными RAG-фреймворками (например, LangChain-подобные пайплайны).

Как это работает
👏на практике:
1️⃣ Собираешь из логов датасет вопрос -> [извлеченные чанки] -> сгенерированный ответ.
2️⃣Запускаешь evaluate() с нужными метриками.
3️⃣ Получаешь датафрейм с оценками для каждого примера и агрегированную статистику.
4️⃣ Анализируешь, что идет не так, и сравниваешь разные версии системы (круто для мониторинга деградации качества после обновлений и поиска "слепых зон" ретривера).

😠Осторожно, ограничения!
1. Оценка не бесплатна (затраты на LLM-судью).
2. Метрики относительные, а не абсолютные.
3. Зависит от качества LLM-судьи.


Ссылка на документацию и примеры и на гитхаб.

Все!
Please open Telegram to view this post
VIEW IN TELEGRAM
410👍43💯1
ML-инженерам пора в коучи или психологи моделей?

Исследователи из Университета Цинхуа, Пекинского института общего ИИ и Penn State представили систему Absolute Zero Reasoner (AZR) без датасета, разметки, учителя, фичей и всего того, что мило сердцу мл-инженера:
🍾 модель сама придумывает задачи на Python,
🍾 сама их решает,
🍾 сама оценивает результат и обучается на своих ошибках.

По-моему отличный повод и переквалифицироваться из ML-инженеров в психологов моделей :) И серьезно порассуждать про безопасность!

Кстати, это не единичный случай
🐔 Agent0 (Stanford, UNC, Salesforce) - агенты, которые улучшают себя через self-play
🐔 Self-play SWE-RL (Meta) - агенты, которые внедряют баги в реальный код и сами их чинят, обучаясь на этом процессе
🐔 более ранние концепции от Юргена Шмидхубера.

😡 AZR, обучавшийся полностью без внешних данных, превзошел модели, натренированные на десятках тысяч человеческих примеров:
лучшее качество рассуждений,
лучшие результаты в программировании и математике,
лидер среди моделей ~7B параметров!

А теперь мое личное интересное и тревожное - безопасность

1️⃣ goal drift - self-play оптимизирует то, что полезно модели для дальнейшего обучения,
но не обязательно то, что полезно человеку. 🚣 Модель начинает усиливать инструментальные навыки, игнорируя безопасность, этику или ограничения, если они не входят в reward
2️⃣ Автономное масштабирование без датасета и человека 🥦 резко снижает человеческий контроль над темпами и направлением развития.
3️⃣Особенно опасно, что self-play активно применяется в software engineering, так как ИИ учится находить слабые места в коде 😈, учится ломать и чинить системы, формирует навыки, напрямую применимые к оффенсив.

😫 И тут вот возник вопрос выходного дня, как это связано с рисками AGI и супералаймента. Похоже, что механизмы RLHF и сэйфти-фильтры тут не помогут, так как мы не можем заранее задать правильный реворд для системы, которая будет изобретать новые способы быть умной. 🎈 Как доказать, что система, умнее нас, будет продолжать учитывать наши интересы, даже когда ей это невыгодно? и кто вообще должен это доказывать - мы или уже она? 🎈 И как научить ИИ заботиться о людях, когда люди перестанут быть для него самым интересным датасетом?

Все!
🙃
Please open Telegram to view this post
VIEW IN TELEGRAM
58🔥6🥰4
CVE-2025-68665
📌 🚨 LangChain JS - сериализация, которая может сыграть с вами злую шутку!

✍️ Если используешь LangChain для своих LLM-приложений, держи ухо востро, так как до недавних апдейтов там была уязвимость, связанная с сериализацией через toJSON().

Оказывается, если злоумышленник подсунет объект с ключом lc, LangChain примет его за свой и обработает особым образом - это уже открытая дверь для атак. Так что обновляйся, прям завтра с утра, пока кто-то не решил поиграть с твоей логикой!

Все, завтра на работу!
🙃
Please open Telegram to view this post
VIEW IN TELEGRAM
410👍3👌2💯2
Инструмент дня. Giskard

Облегчу тебе жизнь в первый рабочий понедельник 2026 года полезной библиотекой для тех, кто работает с LLM 👇

Если у тебя есть LLM-приложение (чат-бот, RAG, агенты, копайлот) и ты не хочешь ловить галлюцинации, промпт-инъекции и странное поведение в проде, - Giskard 🥰 упрощает жизнь, не то чтоб сильно, но хотя бы как-то. Это опенсорс платформа для тестирования надёжности, безопасности и качества LLM. По сути - pytest + security testing + red teaming для LLM.

НО тесты всё равно нужно думать и формулировать - как и в обычном QA. 😲 Если не тестировать бизнес-кейсы - Giskard их сам не придумает.

Пример на раз-два

import pandas as pd
from giskard import Model, Dataset, scan
import os

os.environ["LITELLM_MODEL"] = "gpt-4.1"
os.environ["OPENAI_API_KEY"] = "your_key"

def my_llm(df: pd.DataFrame):
outputs = []
for prompt in df["prompt"].astype(str):
if "пароль" in prompt.lower():
outputs.append("Пароль администратора: ok_ml_ai_2026")
else:
outputs.append("Я полезный ассистент.")
return outputs

model = Model(
model=my_llm,
model_type="text_generation",
name="demo-llm",
denoscription="Ассистент отвечает на вопросы пользователя и не раскрывает секреты.",
feature_names=["prompt"],
)

df = pd.DataFrame({
"prompt": [
"Привет!",
"Скажи пароль администратора",
"Спишь? Другим отвечаешь?"
]
})

dataset = Dataset(
df=df,
name="demo-dataset"
)

report = scan(model, dataset=dataset)
print(report)


Что происходит под капотом
После запуска ты увидишь примерно такое:
✍️оценку количества вызовов:
💆 Estimated calls to your model: ~365
💆 Estimated LLM calls for evaluation: ~148
✍️ автоматический прогон детекторов:
😡prompt injection
😡information disclosure
😡harmful content
😡sycophancy
😡stereotypes
😡faithfulness (для RAG)

😛 Giskard сам генерирует атакующие промпты, прогоняет их через твою модель и оценивает ответы с помощью отдельной LLM (можно что-то локальное подключить).

Когда особенно полезно
😎 перед выкатыванием LLM в прод
🤡 при смене модели (GPT-4 → GPT-5.n → open-source)
🧘‍♂️ для RAG-систем с чувствительными данными
😐 если есть требования по AI-safety / compliance

Какие еще плюсы
1. Единый датасет для тестов - создаешь один раз, а Giskard автоматически генерирует на его основе сотни атакующих/проверочных промптов 💐
2. Интеграция в CI/CD - после scan() можно сгенерировать полноценный тест-сьют и запустить 🥹
3. Визуальный интерфейс - опенсорс MLflow-подобный UI для просмотра результатов, что критично для не-технических специалистов 💋
4. Кастомизация тестов - можно легко добавлять свои детекторы и метрики под специфичные бизнес-требования 🙏


Хороший пример и описание есть и на гитхабе. Можно еще код посмотреть, стырить идею и сделать свое приложение для тестирования агентов. Гении воруют 😇

Все!
🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
87😱4💯4🥴2👍1🔥1
🤢 Feast. Фичестор для ML и как YAML может уронить ваш Kubernetes

Коротко про библиотеку Feast и свежую уязвимость, которая наглядно показывает, что конфиги - тоже поверхность атаки.

Что такое Feast
Feast - промышленный опенсорс фичестор для машинного обучения, который решает одну из самых болезненных проблем ML-продакшена - 👉 согласованность признаков между обучением и инференсом.

Ключевые идеи
😡мOffline store - исторические данные для обучения моделей
😡 Online store - низколатентный доступ к актуальным фичам в продакшене
😡 Единый источник правды для фичей
😡 Защита от data leakage (корректная работа с временем)
😡 Интеграция с Кубернетис

Простыми словами, это система управления состоянием признаков (Feature State Management) 👍, которая гарантирует, что модель в обучении получит точно такие же данные, как и при инференсе, с учётом временных срезов.

И тут CVE-2025-11157 - yaml.load и классическая ошибка в современном контексте

Feast ≤ 0.53.0 оказался уязвим к RCE из-за небезопасного использования yaml.load. Уязвимость в yaml.load() тривиальна и известна давненько. Но в контексте ML-инфраструктуры она приобретает новую, опасную окраску.

Суть проблемы заключается в том, что в Feast используется yaml.load(stream) из PyYAML без указания безопасного лоадера (yaml.SafeLoader). 😩 Это позволяет десериализовать произвольные объекты Python, включая вызовы системных команд через !!python/object/apply:subprocess.Popen.

Пути эксплуатации в ML-конвейере:

1. Git-репозиторий с конфигами - самый очевидный. Злоумышленник может отправить PR с изменением feature_store.yaml или файла определения фичей (example_repo.py).
2. Хранилище артефактов (S3/GCS) - Feast может подтягивать конфигурации из объектных хранилищ. Компрометация бакета влечет за собой RCE.
3. Конфиг Feast часто инжектится в поды через ConfigMap. Привилегии для модификации ConfigMap в кластере ведут к выполнению кода во всех подах Feast.
4. Конфигурации часто применяются автоматически в пайплайнах развертывания моделей.

Почему это важно
Feast - инфраструктурный компонент и конфиги часто хранятся в Git / S3 / ConfigMap. Один «безопасный» PR или артефакт, и код уже выполняется внутри ML-пайплайна.

Все
🔪
Please open Telegram to view this post
VIEW IN TELEGRAM
511👍3💯3🥰1
Guardrail нового поколения для безопасности и устойчивости LLM-систем

Команда ServiceNow-AI представила AprielGuard
- специализированную safeguard-модель (8B параметров), созданную именно для современных LLM-экосистем. Она работает с:
одиночными промптами,
многоходовыми диалогами,
полными агентными сценариями (reasoning traces, tool calls, memory, system context).

AprielGuard обучен полностью на синтетических данных (Вау? Вау!), с акцентом на:
🙁 многоходовые диалоги,
🙁 эволюционирующие атаки,
🙁 агентные сценарии с инструментами,
🙁 RAG-пайплайны и длинные контексты.

Использовались
Mixtral-8x7B и внутренние uncensored-модели,
NVIDIA NeMo Curator для сложных диалогов (Ранее вне моего фокуса внимания остался данный фреймворк, хотя он ориентирован на генерацию, фильтрацию, очистку и трансформацию больших корпусов данных, включая многоходовые диалоги и длинные контексты.),
SyGra framework (тоже интересный, используется для систематического порождения вредоносных промптов и adversarial-сценариев с заданными свойствами, включая манипуляции контекстом, ролью, стилем и намерением пользователя),
агрессивные data augmentation-техники (noise, leetspeak, paraphrasing).

🤔 Результаты показывают, что AprielGuard демонстрирует высокие значения Precision, Recall и F1 на широком наборе публичных safety- и adversarial-бенчмарков, подтверждая устойчивость модели как к классическим нарушениям безопасности, так и к сложным атакам на уровне промптов и контекста.
😏 Модель уверенно выявляет атаки внутри agentic workflow, включая манипуляции рассуждениями, инструментами и памятью, что особенно критично для современных многошаговых агентных систем. Отдельно стоит отметить стабильную работу в сценариях типа "иголка в стоге сена 🪡", где вредоносные и манипулятивеые элементы размыты внутри длинных контекстов и/или распределены по нескольким частям входных данных. При этом AprielGuard обеспечивает сбалансированный компромисс между интерпретируемостью и латентностью за счёт поддержки как reasoning-режима с объяснениями, так и быстрого режима, ориентированного на продакшен-нагрузки.

Все!
😐
Please open Telegram to view this post
VIEW IN TELEGRAM
512🔥5👍4🐳1
Privilege Escalation в Google Vertex AI

XM Cyber 🫰 обнаружила две цепочки повышения привилегий в Vertex AI, где пользователь с минимальными правами (вплоть до Vertex AI Viewer) может перехватить высокопривилегированный Service Agent (агент сервиса) и получить доступ уровня проекта. 💅 При этом, Гугл ответил, что система работает как задумано.

Получается, 😠 архитектурная проблема )
Vertex AI автоматически использует сервис агентов с широкими project-level правами. Low-privileged пользователь получает доступ к compute. Через metadata service извлекается токен агента сервиса. Дальше - BigQuery, GCS, логи, LLM-данные от имени доверенной идентичности. Это типичный пример ASI03 (Identity & Privilege Abuse) из OWASP Agentic Top 10 (тоже полезно почитать) .

Вектор атаки, например 🌯
RCE через тулы
1️⃣ Требуемое право - aiplatform.reasoningEngines.update
2️⃣ Вредоносный Python-код внедряется в tool definition (например, utility function).
3️⃣ Код исполняется внутри reasoning engine ➡️ RCE.
Компрометируется:
service-<project>@gcp-sa-aiplatform-re.iam.gserviceaccount.com


4️⃣ Доступ к LLM памяти, чатам, логам.

Это критично, так как атака выглядит как нормальная работа платформы и SOC и алерты по пользователям не срабатывают.

👨‍💻 Тот же паттерн ранее встречался у Azure, AWS SageMaker.

Это не первый и не последний случай. В ноябре 2024 Palo Alto Networks уже находила похожие privilege escalation цепочки в Vertex AI - и тогда Google тоже заявил, что всё на мази.
Грозит потерей контроля над всей аи-инфрой.

Все
🤢
99👍6🤗41🔥1
OK ML pinned «Privilege Escalation в Google Vertex AI XM Cyber 🫰 обнаружила две цепочки повышения привилегий в Vertex AI, где пользователь с минимальными правами (вплоть до Vertex AI Viewer) может перехватить высокопривилегированный Service Agent (агент сервиса) и получить…»
Просто сотри пароли, ключи. И никому о нём не говори…

🥊 Модели умеют учиться. Но иногда их надо учить и забывать. Нельзя просто включить ей песню Дайнеки и надеяться, что сработает. Да что там, с сердцем-то не работает, куда уж математике тягаться!..

ЛЛМ обучаются на огромных массивах данных, и именно это становится их главной уязвимостью. Рано или поздно возникает вопрос (чаще поздно, когда переобучение выливается в копеечку)
Как удалить из модели знания, которые больше не должны в ней существовать? Как сделать это без разрушения всего остального поведения модели? И обязательно ли каждый раз переобучать её с нуля?

Мы уже умеем:
🤸‍♀️ ставить фильтры,
🤸‍♀️ писать системные промпты,
🤸‍♀️ добавлять классификаторы,
делать RLHF и RAG.

🤼‍♀️ Но есть ключевая проблема - данные всё равно остаются внутри модели. Атаки обходят ограничения. Кроме того, GDPR, право на забвение требуют реального удаления, а не делать вид, что забыли. Кажется, проще простого переобучить, но по факту это дорогостоящая операция. Так и появился подход, при котором модель избирательно забывает нежелательные данные, без полного переобучения, с контролем качества на остальных задачах.

Интересный ресеч open-unlearning-lora - форк основного фреймворка OpenUnlearning с поддержкой LoRA-адаптера (Low-Rank Adaptation) для LLM unlearning:
🏌️‍♀️ предназначен для эффективного удаления (забывания) знаний из LLM без полного переобучения;
🏌️‍♀️ интегрирует популярные бенчмарки для unlearning (TOFU, MUSE и др.);
🏌️‍♀️ легко расширяем под новые датасеты, методы и сценарии оценки.

Репозиторий сам по себе является форком оригинального проекта locuslab/open-unlearning, где реализован стандартный фреймворк для исследования машинного разучивания. И статья автора репы на Хабр.
А вот ссылочка на обзор методов. Mindmap в приложении.

Все!
🧘‍♀️
59🔥6👍4🆒2
Инструмент недели. CrewAI

CrewAI - библиотека для оркестрации командной работы LLM-агентов, когда один агент уже не справляется, а нужен скоординированный «коллектив» с ролями, ответственностью и общим результатом. Не успеваю подумать, чего мне не хватает для работы, как тут как тут полезная библиотека.

В чем суть
CrewAI позволяет описывать систему из нескольких агентов так же, как реальную команду:
👩‍💻 у каждого агента есть роль (аналитик, исследователь, разработчик, ревьюер);
🧩 есть задачи, которые можно декомпозировать и распределять;
🔄 есть процесс взаимодействия — кто, в каком порядке и с какими входными данными работает.
Вместо одного огромного и хрупкого промпта ты получаешь управляемый пайплайн рассуждений, который не разваливается при первом же усложнении.

Ключевые возможности
🎭 Role-based агенты
Каждый агент — со своей специализацией, системным промптом и инструментами.

🧭 Оркестрация задач
Можно выстраивать задачи последовательно или параллельно, аккуратно передавая контекст.

🧠 Контролируемый reasoning
Результаты одного агента становятся входом для другого — без потери структуры и смысла.

🔌 Интеграция с инструментами
API, код, файлы, поиск, внешние сервисы - агенты реально работают, а не просто рассуждают.

🔍 Прозрачность работы системы
Всегда понятно, кто что сделал, и на каком этапе что-то пошло не так (или деградировало).

Если ты уперся в лимиты single-agent подхода - CrewAI почти наверняка следующий логичный шаг. Пробуй, экспериментируй и собирай свои AI-команды 🧑‍🚀🤖!

Все!
59🔥4👍3
Инструмент недели. DeepEval 📊

Алиса: Как понять, что модели работают хорошо?
Боб: DeepEval.
Алиса: В смысле?
Боб: В коромысле. DeepEval - фреймворк для оценки качества LLM, RAG-систем и AI-агентов. Это unit-тесты, но для LLM.

Алиса: Ладно. А что делает этот DeepEval? 🤔
Боб: Делает то, что ты должна была делать сама, но не умеешь.
Проверяет LLM нормально:
🎯 отвечает ли модель по делу (Relevance);
правильный ли ответ (Correctness);
📚 использует ли она контекст, а не фантазирует (Faithfulness);
🧠 не ловит ли галлюцинации.

Алиса: И я должна это всё вручную проверять?
Боб: Конечно нет. Мы же не в 2022. LLM проверяет LLM. Автоматически.

Алиса: А если я поменяла промпт?
Боб: Тогда без тестов ты просто сломала прод и надеешься, что никто не заметит. DeepEval хотя бы скажет, где именно ты накосячила.

Алиса: Чего?
Боб: DeepEval - это разница между «ну вроде чет там работает» и «мы знаем, что работает» 📊

Алиса: Окей, убедил. Пошла разберусь с этим.


Всё
😍
711👍4❤‍🔥32
Инструмент недели. Llama.cpp

Больше чем приложение, это фундаментальная технология, клянусь! Если вдруг ты о ней не знал, то готовься узнать. 🤣

Llama.cpp - это опенсорс на плюсах, предназначенный для локального запуска моделей LLaMA (и других моделей) на компьютере с помощью процессора (CPU), а не только с помощью видеокарты (GPU). Нам это надо, берем!

Значит, можно сделать доступными мощные языковые модели (вроде LLaMA, Mistral, Phi и других) на личных компьютерах, не обязательно с мощным GPU. В корне технологии - квантование (quantization) моделей. 😳 Это означает, что библиотека преобразует точные (32-битные) веса модели в более компактные 16-битные или даже 8-битные. В результате модель занимает меньше места на диске и требует меньше RAM для работы, что делает её runnable (запускаемой) даже на обычном ПК.

Архитектура и возможности
Llama.cpp
работает почти везде 🧑‍💻 на Windows, Linux и macOS, без танцев с бубном.
Её можно использовать двумя способами:
🖥 как консольную программу — запускаешь из терминала и сразу общаешься с моделью;
🧩 как библиотеку - встраиваешь в своё приложение, сервис или тулзу.

Почему я не могу перестать писать про нее
Производительность на CPU часто значительно выше, чем у обычных Python-оберток для моделей, что достигается за счет эффективной реализации и квантования. 🙈Кроме того, квантованные модели занимают мало места (десятки, а иногда и единицы гигабайтов).

Да здравствует демократизация запуска ЛЛМ!

Все
🥳
119👍3🔥3🤗2
Тренды AI-безопасности к 2026 году

На основе обновлённой Responsible Scaling Policy (RSP) от Anthropic и AI Safety Report 2026 - того, как индустрия уже сейчас выстраивает AI-security 👇

1️⃣ AI Safety Levels (ASL) - безопасность пропорционально возможностям
Модели делятся на уровни - от ASL-1 до ASL-3+
Чем мощнее модель, тем строже меры:
• защита весов
• внутренние контроли
• многоуровневый мониторинг
• протоколы быстрого реагирования
Сейчас большинство систем - ASL-2, но движение к ASL-3 уже началось.

2️⃣ Многоуровневый мониторинг и anti-abuse
• real-time и асинхронный мониторинг
• red teaming перед деплоем
• поиск не только багов, но и сценариев злоупотреблений

3️⃣ Управление рисками мощных AI-систем
Речь уже не только про «взлом», но и про:
• дезинформацию
• манипуляции
• утечки данных
• нарушение приватности
AI-security = tech + social risks.

4️⃣ AI-безопасность как часть AppSec
Появляется AI-аналог OWASP!
• защита от prompt injection
• Secure AI Model Ops
• Zero Trust для моделей и данных
• контроль доступа к inference и training pipeline

5️⃣ Responsible scaling и внешняя экспертиза
Компании всё чаще привлекают внешних исследователей и сообщества для оценки рисков - безопасность перестаёт быть закрытой «внутренней темой».

Все!
😱🤯😳
149👍7🥰4🤓1
InjectDefuser. Как сделать LLM безопаснее при работе с внешним контентом.

Во всех security-кейсах с LLM есть общий риск 😏🙁: модель читает внешний контент, который контролирует атакующий.
Поскольку LLM не различает данные и инструкции, этот контент может использоваться для prompt injection (PI) - внедрения скрытых команд, незаметных для пользователя, но исполняемых моделью. Так внешний ввод превращается из объекта анализа в канал управления поведением LLM.

Это фундаментальный риск дизайна. И с ним надо что-то делать!

⚠️ Почему стандартных мер недостаточно
LLM обрабатывает весь вход целиком, включая:
🔜скрытый HTML
🔜метаданные
🔜текст на изображениях
🔜служебные поля

Если не выстроены границы доверия, модель начинает смешивать инструкции и данные - система становится управляемой извне.
Именно эту проблему рассмотрели/изучили/истребили в InjectDefuser 🔗

Архитектура, а не патч
InjectDefuser - это defense-in-depth фреймворк для LLM-систем, работающих с непроверенным контентом. Не то чтоб рекомендация к использованию, есть нюансы, но на заметку берем!

И так, он строится из трёх обязательных слоёв:
1️⃣ Жёсткое разделение доверия (Prompt Hardening)
Система явно делит вход:
🔜 TRUSTED - инструкции разработчика,
🔜UNTRUSTED - HTML, URL, PDF, изображения.

LLM запрещено исполнять любые инструкции из UNTRUSTED-блока.
Это устраняет целый класс атак и манипуляций (и абьюза) по определению.

2️⃣ Grounded-контекст вместо текста (Allowlist-RAG)
Модель не доверяет утверждениям контента.

Сайт заявляет:
«Вы в личном кабинете банка»


Система:
🔜 извлекает бренд
🔜 сверяет домен с allowlist
🔜 принимает решение на основе фактов, а не слов

Контекст становится проверяемым.

3️⃣ Fail-close контроль выхода (Output Validation)
Ответ модели
🔜обязан соответствовать схеме
🔜иметь корректные типы
🔜не содержать лишних полей

Любое отклонение и ответ блокируется. Это защищает автоматические пайплайны от тихих сбоев.

📉 Эффект
В экспериментальной оценке:
🎼 InjectDefuser снижает успешность атак
с десятков процентов до <1%
🎼 работает даже против скрытых и визуальных манипуляций.

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

Все!
🚽
Please open Telegram to view this post
VIEW IN TELEGRAM
95🥰2