Построение двуязычной NER для грузовой логистики с Amazon Bedrock
IBS Software эксплуатирует систему Cargo, которая ежедневно обрабатывает тысячи двуязычных писем по грузовой логистике. Система извлекает критически важные данные, такие как номера air waybill (AWB), детали рейсов, вес и инструкции по доставке, на английском и японском языках. Это усложняло создание надежного решения Named Entity Recognition (NER). Среди проблем были ручная обработка, замедлявшая операции, и компромисс между точностью и стоимостью. IBS Software требовалось ИИ-решение, способное точно определять 23 типа сущностей на двух языках и при этом оставаться экономичным при масштабировании.
После изучения нескольких подходов IBS Software использовала управляемые возможности distillation в Amazon Bedrock, чтобы создать готовое к продакшену решение. Дистиллировав знания из Amazon Nova Pro в более эффективную модель Amazon Nova Lite, IBS Software достигла точности 95.085 percent по F1-Score и снизила операционные расходы в 14 раз. Этот кейс описывает путь от сложных open-source-реализаций к успешному развертыванию на AWS, которое теперь обрабатывает письма по грузовой логистике в реальном времени.
В этом материале мы рассказываем о техническом подходе с использованием token-based distillation, полученных уроках и архитектуре развертывания. Если вы сталкиваетесь с похожими задачами двуязычного NER, вам может быть полезен опыт IBS Software и возможности knowledge distillation в Amazon Bedrock.
Обзор решения
Цель состояла в том, чтобы построить двуязычную систему NER, способную извлекать 23 типа сущностей из писем по грузовой логистике, написанных на английском и японском языках. Ключевые сущности включали:
- Номера AWB (Air Waybill).
- Номера рейсов и маршруты.
- Вес (gross, chargeable, dimensional).
- Размеры и объем.
- Описание товара.
- Информацию об отправителе и получателе.
- Коды специальной обработки.
- Инструкции по доставке.
Основные риски заключались в необходимости сохранять высокую точность на обоих языках, контролировать стоимость inference при масштабировании и обеспечивать низкую задержку для обработки в реальном времени. С помощью возможностей model distillation в Amazon Bedrock можно использовать более маленькие, быстрые и экономичные модели. Такие модели обеспечивают точность, сопоставимую с самыми продвинутыми моделями в Amazon Bedrock, для вашего сценария использования.
На следующей диаграмме показан сквозной workflow двуязычного NER в Amazon Bedrock.

Решение
Команда IBS из девяти исследователей и инженеров потратила примерно 4 месяца на разработку и внедрение этого решения. План проекта включал:
- Месяц 1: Подготовка датасета и разметка 500 двуязычных писем.
- Месяц 2: Проблемы с open-source-фреймворками (PyTorch, TextBrewer).
- Месяц 3: Успешное distillation с помощью Amazon Bedrock (Nova Pro → Nova Lite).
- Месяц 4: Продуктовое развертывание и оптимизация.
Выполненные ключевые задачи:
- Разметили 500 писем по грузовой логистике (350 на английском, 150 на японском) по 23 типам сущностей.
- Настроили distillation в Amazon Bedrock с пользовательскими hyperparameters.
- Обучили student model в течение 4 эпох и 70 шагов.
- Добились снижения loss с 0.05 до 0.008.
- Развернули endpoint для inference с pipeline обработки файлов .eml.
- Подтвердили F1-Score 95.085 percent на тестовом наборе.
IBS Software развернула всю инфраструктуру с использованием управляемых сервисов Amazon Bedrock, что позволило обойтись без собственной инфраструктуры для hosting модели.
Проблемы с open-source-подходами
Сначала команда пыталась выполнить knowledge distillation с использованием open-source-фреймворков, включая PyTorch-based implementations и библиотеку TextBrewer. Эти подходы не подошли по нескольким причинам:
- Сложность настройки distillation pipeline для двуязычных данных.
- Отсутствие управляемой инфраструктуры для обучения и развертывания.
- Трудности с настройкой hyperparameters для token-level distillation.
- Несовместимость с производственным workflow обработки писем.
Подробнее об основах knowledge distillation см. AWS Machine Learning Best Practices.
Подход Amazon Bedrock к distillation
Затем команда перешла на Amazon Bedrock Model Distillation, используя Amazon Nova Pro как teacher model и Nova Lite как student model. Ключевые преимущества включали:
- Управляемую инфраструктуру обучения с автоматической оптимизацией hyperparameters.
- Нативную поддержку token-level distillation.
- Простую интеграцию с pipeline обработки писем.
- Встроенный мониторинг и метрики оценки.
Конфигурация обучения:
distillation_config = {
"teacher_model": "amazon.nova-pro-v1:0",
"student_model": "amazon.nova-lite-v1:0",
"max_sequence_length": 2048,
"epochs": 4,
"training_steps": 70,
"loss_function": "token_level_kl_divergence"
}
Процесс обучения снизил loss с 0.05 до 0.008 за 70 шагов, что указывает на сильную передачу знаний от teacher к student.
Документация Amazon Bedrock по distillation доступна здесь: Настройка модели с помощью distillation в Amazon Bedrock.
Подготовка датасета
Набор данных состоял из 500 реальных писем по грузовой логистике:
- 350 писем на английском: стандартная грузовая документация с номерами AWB, деталями рейсов, весом и инструкциями по обработке.
- 150 писем на японском: аналогичный контент с японской спецификой форматирования и терминологии.
Каждое письмо было вручную размечено по 23 типам сущностей экспертами предметной области, хорошо знакомыми с терминологией грузовой логистики. Процесс разметки занял примерно 3 недели и обеспечил высококачественные обучающие данные для обоих языков.
Оценка модели
Мы оценивали teacher и student model с помощью F1-Score, гармонического среднего precision и recall:
Результаты:
Хотя базовая модель Nova Lite показывала примерно 84 percent общего F1-Score, teacher model и доработанная Nova Lite достигли примерно 10 percent прироста точности. В таблице ниже показаны результаты F1-Score.
| Модель | Общий F1-Score | F1-Score для английского | F1-Score для японского |
| Nova Pro (teacher) | 97.0% | 97.8% | 96.2% |
| Nova Lite (student) | 95.085% | 96.535% | 93.635% |
Дистиллированная модель Nova Lite сохранила 98 percent производительности teacher model, обеспечив при этом 14-кратное снижение стоимости production inference.
Анализ ошибок и сложности
Мы заметили, что у student model F1-Score для японского текста был на 2.565 percent ниже, чем для английского. Этот разрыв в основном объяснялся сложными комбинациями иероглифов kanji в описаниях товаров, нечеткими границами сущностей в японском тексте без пробелов и меньшим объемом японских обучающих данных (150 против 350 писем). Многострочные инструкции по доставке со встроенными сущностями тоже иногда приводили к ошибкам определения границ.
Чтобы преодолеть эти сложности, мы дополнили японские обучающие данные синтетическими примерами. Мы также применили правила post-processing для известных шаблонов сущностей (формат AWB, regex для номера рейса) и внедрили thresholding по confidence, чтобы помечать низкоуверенные предсказания для ручной проверки.
Workflow развертывания
Примечание: Следующее развертывание создает ресурсы AWS, за которые начисляется плата. Хранение в Amazon Simple Storage Service (Amazon S3), вызовы AWS Lambda, inference модели Amazon Bedrock и хранение в Amazon DynamoDB имеют сопутствующие расходы. Удалите эти ресурсы, когда они больше не нужны, чтобы избежать постоянных списаний.
Наше production-развертывание обрабатывает файлы .eml по следующему workflow:
- Ввод писем: Письма по грузовой логистике поступают в виде файлов .eml в Amazon S3.
- Предобработка: AWS Lambda извлекает тело письма и метаданные.
- Inference: Endpoint Amazon Bedrock обрабатывает текст с помощью дистиллированной модели Nova Lite.
- Извлечение сущностей: Модель возвращает 23 типа сущностей с оценками confidence.
- Post-processing: Применяются правила валидации и фильтрация по confidence.
- Вывод: Структурированный JSON с извлеченными сущностями сохраняется в Amazon DynamoDB.
import boto3
import json
bedrock_runtime = boto3.client('bedrock-runtime')
def extract_entities(email_text):
response = bedrock_runtime.invoke_model(
modelId='<custom model arn>',
body=json.dumps({
"inputText": email_text,
"taskType": "NER",
"entityTypes": [
"AWB_NUMBER", "FLIGHT_NUMBER", "WEIGHT_GROSS",
"WEIGHT_CHARGEABLE", "DIMENSIONS", "COMMODITY",
"SHIPPER", "CONSIGNEE", "HANDLING_CODE",
# ... 14 more entity types
]
})
)
result = json.loads(response['body'].read())
return result['entities']
Паттерны интеграции с Lambda см. в материале AWS Lambda with Amazon Bedrock.
Весь pipeline обрабатывает письма менее чем за 2 секунды при точности 95.085 percent, что соответствует требованиям к обработке в реальном времени.
Заключение
В этом материале мы показали, как IBS Software использовала управляемые возможности distillation в Amazon Bedrock, чтобы построить экономичную двуязычную NER-систему для грузовой логистики. Система достигает F1-Score 95.085 percent и снижает операционные расходы в 14 раз. Дистиллированная модель Nova Lite сохраняет 98 percent производительности teacher model, что делает ее подходящей для высоконагруженных production workloads.
Наш главный вывод заключался в том, что управляемые возможности distillation в Amazon Bedrock снимают сложность open-source-фреймворков. Token-level knowledge distillation сохраняет точность на английском и японском языках, а последовательность длиной 2048 tokens подходит для типичных писем по грузовой логистике. Production-развертывание с интеграцией AWS Lambda и Amazon S3 требует минимальной собственной инфраструктуры.
Следующие шаги:
Если вы сталкиваетесь с похожими задачами двуязычного NER, стоит:
- Начать с foundation models Amazon Bedrock по запросу для быстрого прототипирования.
- Инвестировать в качественную разметку двуязычных обучающих данных.
- Изучить model distillation вместе с обучающим датасетом. Одно ограничение model distillation заключается в том, что teacher model и student model должны быть из одной family модели.
- Руководство по Amazon Bedrock Model Distillation
- Ускорение распознавания пользовательских сущностей с помощью Claude tool use в Amazon Bedrock
- Построение платформы для AI-обработки документов с open-source NER model и LLM на Amazon SageMaker AI
Если вы работаете над двуязычным NER или knowledge distillation для собственного сценария, нам будет интересно узнать о вашем опыте. Поделитесь вопросами или отзывами в комментариях.
Материал — перевод статьи с английского.
Оригинал: Building bilingual NER for cargo logistics with Amazon Bedrock