AWS представила API UpdateRecord для Amazon SageMaker Feature Store, который позволяет обновлять отдельные признаки в записи без полного перечитывания и перезаписи. Это нововведение доступно для Standard (на базе Amazon DynamoDB) и In-Memory (на базе Amazon ElastiCache) уровней онлайн-хранилища. Для Standard-уровня требуется новый формат хранения Standard_V2, который включается при создании группы признаков.

Amazon SageMaker Feature Store — это полностью управляемое хранилище для ML-признаков, то есть обработанных данных, используемых для обучения моделей и генерации предсказаний. Ранее обновление даже одного значения признака требовало полного цикла чтения-изменения-записи через PutRecord. Например, для обновления risk_score в пайплайне обнаружения мошенничества приложение должно было прочитать всю запись через GetRecord, объединить новое значение в коде и записать запись целиком. Это добавляло задержку, потребляло лишние ресурсы чтения и создавало условия для гонок, когда несколько пайплайнов одновременно обновляли разные признаки одной записи. В худшем случае одна запись могла перезаписать другую, что является классической проблемой потерянных обновлений.

ПараметрОписание
FeatureGroupNameИмя целевой группы признаков
RecordIdentifierValueAsStringПервичный ключ записи для обновления
FeaturesСписок признаков для обновления (до 100)
TtlDurationОпциональный TTL для записи

Новый API UpdateRecord устраняет этот цикл. Вы указываете только те признаки, которые хотите изменить, и Feature Store атомарно применяет изменения к существующей записи. Признаки, не включенные в запрос, сохраняются без изменений. Это снижает задержку, уменьшает расходы на операции чтения и исключает конфликты при параллельной записи. Например, несколько пайплайнов (клики, покупки, скоринг) могут независимо обновлять свои признаки в одной записи без координации.

Функция доступна для Standard (DynamoDB) и In-Memory (ElastiCache) уровней онлайн-хранилища.

Amazon SageMaker Feature Store получил API UpdateRecord для точечного обновления признаков
· Источник: AWS Machine Learning Blog

Запрос к UpdateRecord включает имя группы признаков, идентификатор записи и список изменяемых признаков (до 100 за вызов). Опционально можно задать TTL для записи. Если вы обновляете EventTime, он должен быть новее существующего, иначе запрос будет отклонен с ошибкой HTTP 409. При этом полный снимок записи автоматически реплицируется в офлайн-хранилище, чтобы обучающие данные оставались точными.

Для In-Memory уровня (на базе Redis OSS) новая функция работает сразу на всех существующих группах признаков без изменения формата хранения. Для Standard-уровня необходимо создать группу признаков с новым форматом Standard_V2. Это делается при создании группы признаков через параметр StorageType со значением Standard_V2. что UpdateRecord не является операцией upsert: запись должна уже существовать.

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