Піднесення тексту і семантичний пошук двигуни спростили пошук споживачам у сфері електронної комерції та роздрібної торгівлі. Пошукові системи, що працюють на основі уніфікованого тексту та зображення, можуть забезпечити додаткову гнучкість пошукових рішень. Ви можете використовувати як текст, так і зображення як запити. Наприклад, у вашому ноутбуці є папка з сотнями сімейних фотографій. Ви хочете швидко знайти фотографію, зроблену, коли ви та ваш кращий друг були перед басейном вашого старого будинку. Ви можете використовувати розмовну мову, як-от «двоє людей стоять перед басейном», як запит для пошуку в єдиній системі пошуку тексту та зображень. Вам не потрібно мати правильні ключові слова в назвах зображень, щоб виконати запит.
Служба Amazon OpenSearch тепер підтримує косинусова подібність метрика для індексів k-NN. Косинус подібності вимірює косинус кута між двома векторами, де менший косинус кута означає більшу подібність між векторами. За допомогою косинусної подібності ви можете виміряти орієнтацію між двома векторами, що робить його хорошим вибором для деяких конкретних програм семантичного пошуку.
Попередня підготовка контрастного мовного зображення (CLIP) це нейронна мережа, навчена на різноманітних парах зображень і тексту. Нейронна мережа CLIP здатна проектувати як зображення, так і текст в одне й те саме латентний простір, що означає, що їх можна порівнювати за допомогою міри подібності, наприклад косинусної подібності. Ви можете використовувати CLIP для кодувати зображення чи опис ваших продуктів вбудовування, а потім збережіть їх в індексі OpenSearch Service k-NN. Потім ваші клієнти можуть запитувати індекс, щоб отримати продукти, які їх цікавлять.
Ви можете використовувати CLIP з Amazon SageMaker для виконання кодування. Безсерверний висновок Amazon SageMaker це спеціальна служба висновків, яка полегшує розгортання та масштабування моделей машинного навчання (ML). За допомогою SageMaker ви можете розгортати без сервера для розробки та тестування, а потім переходити до висновок у реальному часі коли ви йдете на виробництво. Безсерверний SageMaker допоможе вам заощадити, зменшивши інфраструктуру до нуля під час простою. Це ідеально підходить для створення POC, де ви матимете тривалий час простою між циклами розробки. Ви також можете використовувати Пакетне перетворення Amazon SageMaker щоб отримати висновки з великих наборів даних.
У цій публікації ми демонструємо, як створити пошукову програму за допомогою CLIP із SageMaker і OpenSearch Service. Код є відкритим кодом і розміщений на GitHub.
Огляд рішення
Служба OpenSearch забезпечує зіставлення тексту та вбудовування пошуку k-NN. У цьому рішенні ми використовуємо вбудований пошук k-NN. Ви можете використовувати як зображення, так і текст як запит для пошуку предметів з інвентарю. Впровадження цієї єдиної програми пошуку зображень і тексту складається з двох етапів:
- довідковий індекс k-NN – На цьому етапі ви пропускаєте набір документів корпусу або зображень продукту через модель CLIP, щоб закодувати їх у вбудовування. Вбудовані тексти та зображення є числовими представленнями корпусу або зображень відповідно. Ви зберігаєте ці вбудовування в індекс k-NN у службі OpenSearch. Концепція, яка лежить в основі k-NN, полягає в тому, що подібні точки даних існують у безпосередній близькості в просторі вбудовування. Наприклад, текст «червона квітка», текст «троянда» та зображення червоної троянди схожі, тому ці вбудовані текст і зображення розташовані близько одне до одного в просторі вбудовування.
- k-NN індексний запит – Це фаза висновків програми. На цьому етапі ви надсилаєте текстовий пошуковий запит або запит із зображенням через модель глибокого навчання (CLIP) для кодування як вбудовування. Потім ви використовуєте ці вбудовування для запиту еталонного індексу k-NN, що зберігається в OpenSearch Service. Індекс k-NN повертає подібні вбудовування з простору вбудовування. Наприклад, якщо ви передаєте текст «червона квітка», він поверне вбудовані зображення червоної троянди як подібний елемент.
На наступному малюнку показано архітектуру рішення.
Етапи робочого процесу такі:
- Створити Модель SageMaker з попередньо підготовленої моделі CLIP для пакетного висновку та висновку в реальному часі.
- Створюйте вбудовування зображень продукту за допомогою завдання пакетного перетворення SageMaker.
- Використовуйте SageMaker Serverless Inference для кодування зображення запиту та тексту у вбудовуваннях у реальному часі.
- Скористайтесь Служба простого зберігання Amazon (Amazon S3) для зберігання необробленого тексту (опис продукту) і зображень (зображення продукту) і вбудовування зображень, згенерованих завданнями пакетного перетворення SageMaker.
- Використовуйте OpenSearch Service як пошукову систему для зберігання вставок і пошуку схожих вставок.
- Використовуйте функцію запиту, щоб керувати кодуванням запиту та виконувати пошук k-NN.
Ми використовуємо Студія Amazon SageMaker ноутбуки (не показано на схемі) як інтегроване середовище розробки (IDE) для розробки рішення.
Налаштуйте ресурси рішення
Щоб налаштувати рішення, виконайте такі дії:
- Створіть домен SageMaker і профіль користувача. Щоб отримати інструкції, зверніться до кроку 5 Підключення до домену Amazon SageMaker за допомогою швидкого налаштування.
- Створіть домен служби OpenSearch. Інструкції див Створення та керування доменами Amazon OpenSearch Service.
Ви також можете використовувати AWS CloudFormation шаблон, дотримуючись інструкції GitHub щоб створити домен.
Ви можете підключити Studio до Amazon S3 з Віртуальна приватна хмара Amazon (Amazon VPC) за допомогою an кінцева точка інтерфейсу у вашому VPC замість підключення через Інтернет. Завдяки використанню кінцевої точки інтерфейсу VPC (кінцева точка інтерфейсу) зв’язок між вашим VPC і Studio здійснюється повністю та безпечно в мережі AWS. Ваш ноутбук Studio може підключитися до служби OpenSearch через приватний VPC для забезпечення безпечного зв’язку.
Домени OpenSearch Service пропонують шифрування даних у стані спокою, що є функцією безпеки, яка допомагає запобігти неавторизованому доступу до ваших даних. Міжвузлове шифрування забезпечує додатковий рівень безпеки на додаток до стандартних функцій OpenSearch Service. Amazon S3 автоматично застосовує шифрування на стороні сервера (SSE-S3) для кожного нового об’єкта, якщо ви не вкажете інший параметр шифрування.
У домені OpenSearch Service ви можете приєднати політики на основі ідентифікації, які визначають, хто може отримати доступ до служби, які дії вони можуть виконувати та, якщо це можливо, ресурси, на яких вони можуть виконувати ці дії.
Кодуйте пари зображень і тексту у вбудовування
У цьому розділі розповідається про те, як кодувати зображення та текст у вбудовані файли. Це включає підготовку даних, створення моделі SageMaker і виконання пакетного перетворення за допомогою моделі.
Огляд і підготовка даних
Ви можете використовувати блокнот SageMaker Studio з ядром Python 3 (Data Science), щоб запустити зразок коду.
Для цього допису ми використовуємо Набір об’єктів Amazon Berkeley. Набір даних являє собою набір із 147,702 398,212 списків продуктів із багатомовними метаданими та 1,600 XNUMX унікальних зображень каталогу. Ми використовуємо лише зображення та назви товарів англійською мовою США. Для демонстраційних цілей ми використовуємо приблизно XNUMX продуктів. Додаткову інформацію про цей набір даних див README. Набір даних розміщено в публічному сегменті S3. Є 16 файлів, які містять опис продукту та метадані продуктів Amazon у форматі listings/metadata/listings_<i>.json.gz
. Ми використовуємо перший файл метаданих у цій демонстрації.
Ти використовуєш панди щоб завантажити метадані, виберіть із кадру даних продукти, які мають назви англійською мовою США. Pandas — це інструмент аналізу та обробки даних із відкритим кодом, створений на основі мови програмування Python. Ви використовуєте атрибут під назвою main_image_id
для ідентифікації зображення. Перегляньте наступний код:
У кадрі даних 1,639 продуктів. Далі зв’яжіть назви предметів із відповідними зображеннями предметів. images/metadata/images.csv.gz
містить метадані зображення. Цей файл є файлом CSV, стисненим gzip, із такими стовпцями: image_id
, height
, width
та path
. Ви можете прочитати файл метаданих, а потім об’єднати його з метаданими елемента. Перегляньте наступний код:
Ви можете використовувати блокнот SageMaker Studio з вбудованим ядром Python 3 Бібліотека PIL щоб переглянути зразок зображення з набору даних:
Підготовка моделі
Далі створіть a Модель SageMaker з попередньо підготовленої моделі CLIP. Перший крок — завантажити попередньо навчений файл зважування моделі, помістити його в a model.tar.gz
файл і завантажте його в сегмент S3. Шлях попередньо підготовленої моделі можна знайти в CLIP repo. Ми використовуємо попередньо підготовлений ResNet-50 (RN50) у цій демонстрації. Перегляньте наступний код:
Потім вам потрібно надати сценарій точки входу логічного висновку для моделі CLIP. CLIP реалізовано за допомогою PyTorch, тому ви використовуєте SageMaker PyTorch рамка. PyTorch — це платформа ML з відкритим вихідним кодом, яка прискорює шлях від розробки прототипу для досліджень до розгортання у виробництві. Інформацію про розгортання моделі PyTorch за допомогою SageMaker див Розгортання моделей PyTorch. Код висновку приймає дві змінні середовища: MODEL_NAME
та ENCODE_TYPE
. Це допомагає нам легко перемикатися між різними моделями CLIP. Ми використовуємо ENCODE_TYPE
щоб вказати, чи ми хочемо закодувати зображення чи фрагмент тексту. Тут ви реалізуєте model_fn
, input_fn
, predict_fn
та output_fn
функції для перевизначення обробник висновків PyTorch за замовчуванням. Дивіться наступний код:
Рішення вимагає додаткових пакетів Python під час визначення моделі, тому ви можете надати a requirements.txt
файл, щоб дозволити SageMaker інсталювати додаткові пакети під час розміщення моделей:
Ви використовуєте Клас PyTorchModel щоб створити об’єкт, який містить інформацію про розташування артефактів моделі в Amazon S3 і деталі точки входу для висновку. Ви можете використовувати об’єкт для створення завдань пакетного перетворення або розгортання моделі на кінцевій точці для онлайн-виведення. Перегляньте наступний код:
Пакетне перетворення для кодування зображень елементів у вбудовування
Далі ми використовуємо модель CLIP для кодування зображень елементів у вбудовуванні та використовуємо пакетне перетворення SageMaker для запуску пакетного висновку.
Перш ніж створити завдання, скористайтеся наведеним нижче фрагментом коду, щоб скопіювати зображення елементів із загальнодоступного сегмента S3 Amazon Berkeley Objects Dataset у свій власний сегмент. Операція займає менше 10 хвилин.
Далі ви групово виконуєте висновки щодо зображень елементів. Завдання пакетного перетворення SageMaker використовує модель CLIP для кодування всіх зображень, що зберігаються у вхідному розташуванні Amazon S3, і завантажує вихідні вбудовані файли до вихідної папки S3. Робота займає близько 10 хвилин.
Завантажте вбудовування з Amazon S3 у змінну, щоб пізніше можна було ввести дані в OpenSearch Service:
Створіть уніфіковану пошукову систему на основі ML
У цьому розділі обговорюється, як створити пошукову систему, яка використовує пошук k-NN із вбудовуваннями. Це включає в себе налаштування кластера OpenSearch Service, вбудовування елементів і виконання запитів пошуку вільного тексту та зображень.
Налаштуйте домен OpenSearch Service за допомогою налаштувань k-NN
Раніше ви створили кластер OpenSearch. Тепер ви збираєтеся створити індекс для зберігання даних каталогу та вставок. Ви можете налаштувати параметри індексу, щоб увімкнути функціональність k-NN, використовуючи таку конфігурацію:
У цьому прикладі використовується Клієнт Python Elasticsearch для зв’язку з кластером OpenSearch і створення індексу для розміщення ваших даних. Ви можете бігти %pip install elasticsearch
в блокноті для встановлення бібліотеки. Перегляньте наступний код:
Передайте дані про вбудовування зображень у службу OpenSearch
Тепер ви прокрутите свій набір даних і завантажите дані елементів у кластер. Поглинання даних для цієї практики має завершитися протягом 60 секунд. Він також виконує простий запит, щоб перевірити, чи успішно введено дані в індекс. Перегляньте наступний код:
Виконайте запит у режимі реального часу
Тепер, коли у вас є робочий індекс OpenSearch Service, який містить вбудовування зображень предметів як наш інвентар, давайте подивимося, як ви можете генерувати вбудовування для запитів. Вам потрібно створити дві кінцеві точки SageMaker для обробки тексту та вставлення зображень відповідно.
Ви також створюєте дві функції для використання кінцевих точок для кодування зображень і текстів. Для encode_text
функцію, ви додаєте this is
перед назвою предмета, щоб перекласти назву елемента в речення для опису предмета. memory_size_in_mb
встановлено як 6 ГБ для обслуговування підкреслення Трансформатор та ResNet моделі. Перегляньте наступний код:
Ви можете спочатку накреслити малюнок, який буде використовуватися.
Давайте подивимося на результати простого запиту. Отримавши результати зі служби OpenSearch, ви отримаєте список назв елементів і зображень dataset
:
Перший елемент має оцінку 1.0, оскільки два зображення однакові. Інші елементи — це різні типи окулярів в індексі OpenSearch Service.
Ви також можете використовувати текст для запиту індексу:
Тепер ви можете отримати три зображення склянок для води з індексу. За допомогою кодувальника CLIP можна знайти зображення та текст в одному прихованому просторі. Іншим прикладом цього є пошук слова «піца» в індексі:
Прибирати
Завдяки моделі оплати за використання безсерверний висновок є економічно ефективним варіантом для рідкого або непередбачуваного трафіку. Якщо у вас суворий угода про рівень обслуговування (SLA), або не терпить холодних запусків, кінцеві точки реального часу є кращим вибором. Використання мультимодельний or багатоконтейнерний кінцеві точки забезпечують масштабовані та економічно ефективні рішення для розгортання великої кількості моделей. Для отримання додаткової інформації див Ціни на Amazon SageMaker.
Ми пропонуємо видалити безсерверні кінцеві точки, коли вони більше не потрібні. Після завершення цієї вправи ви можете видалити ресурси, виконавши такі кроки (ви можете видалити ці ресурси з Консоль управління AWSабо за допомогою AWS SDK або SageMaker SDK):
- Видаліть кінцеву точку, яку ви створили.
- За бажанням видаліть зареєстровані моделі.
- За бажанням видаліть роль виконання SageMaker.
- За бажанням спорожніть і видаліть відро S3.
Підсумки
У цьому дописі ми продемонстрували, як створити програму пошуку k-NN за допомогою функцій індексування k-NN SageMaker і OpenSearch Service. Ми використали попередньо навчену модель CLIP з його OpenAI реалізація.
Реалізація публікації в службі OpenSearch Service використовується лише для прототипування. Якщо ви хочете завантажувати дані з Amazon S3 у службу OpenSearch у масштабі, ви можете запустити Завдання обробки Amazon SageMaker з відповідним типом екземпляра та кількістю екземплярів. Щоб отримати інше масштабоване рішення для вбудовування, зверніться до Novartis AG використовує службу Amazon OpenSearch K-Nearest Neighbor (KNN) і Amazon SageMaker для пошуку та рекомендацій (частина 3/4).
CLIP забезпечує нульовий постріл можливості, що дає можливість прийняти попередньо навчену модель безпосередньо без використання трансферне навчання для точного налаштування моделі. Це спрощує застосування моделі CLIP. Якщо у вас є пари зображень продукту та описовий текст, ви можете точно налаштувати модель за допомогою власних даних за допомогою навчання передачі для подальшого покращення продуктивності моделі. Для отримання додаткової інформації див Вивчення переносних візуальних моделей із нагляду за природною мовою і CLIP GitHub репоситорії.
Про авторів
Кевін Ду є старшим архітектором лабораторії даних в AWS, який займається допомогою клієнтам у прискоренні розробки їхніх продуктів машинного навчання (ML) і платформ MLOps. Завдяки більш ніж десятирічному досвіду створення продуктів на основі ML як для стартапів, так і для підприємств, він зосереджується на допомозі клієнтам оптимізувати виробництво їхніх рішень ML. У вільний час Кевін любить готувати їжу та дивитися баскетбол.
Ананья Рой є старшим архітектором Data Lab, який спеціалізується на штучному інтелекті та машинному навчанні з Сіднея, Австралія. Вона працювала з різними клієнтами, щоб надавати архітектурні рекомендації та допомагати їм створювати ефективні рішення AI/ML через залучення лабораторії даних. До AWS вона працювала старшим спеціалістом із обробки даних і мала справу з великомасштабними моделями машинного навчання в різних галузях, як-от телекомунікаційні компанії, банки та фінтех. Її досвід у сфері AI/ML дозволив їй надавати ефективні рішення для складних бізнес-проблем, і вона захоплена використанням передових технологій, щоб допомогти командам досягти своїх цілей.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. Доступ тут.
- джерело: https://aws.amazon.com/blogs/machine-learning/implement-unified-text-and-image-search-with-a-clip-model-using-amazon-sagemaker-and-amazon-opensearch-service/
- :є
- ][стор
- $UP
- 1
- 10
- 100
- 11
- 7
- 8
- 9
- a
- Здатний
- МЕНЮ
- прискорюється
- Приймає
- доступ
- Achieve
- через
- дії
- Додатковий
- прийняти
- після
- AG
- Угода
- AI
- AI / ML
- ВСІ
- Amazon
- Служба Amazon OpenSearch
- Amazon SageMaker
- аналіз
- та
- Інший
- застосовно
- додаток
- застосування
- відповідний
- приблизно
- архітектурний
- архітектура
- ЕСТЬ
- аргумент
- навколо
- AS
- At
- приєднувати
- Австралія
- автоматично
- AWS
- Банки
- заснований
- баскетбол
- BE
- оскільки
- перед тим
- Берклі
- КРАЩЕ
- Краще
- між
- тіло
- будувати
- Створюємо
- побудований
- вбудований
- бізнес
- підприємства
- by
- званий
- CAN
- можливості
- каталог
- CD
- перевірка
- вибір
- клієнт
- близько
- кластер
- код
- збір
- Колони
- спілкуватися
- Комунікація
- порівняний
- повний
- комплекс
- концепція
- проводиться
- конфігурація
- З'єднуватися
- З'єднувальний
- зв'язку
- Споживачі
- містити
- містить
- зміст
- діалоговий
- Відповідний
- Коштувати
- рентабельним
- може
- створювати
- створений
- створення
- Повноваження
- Чашка
- Клієнти
- передовий
- циклів
- дані
- аналіз даних
- точки даних
- наука про дані
- вчений даних
- набори даних
- десятиліття
- присвячених
- глибокий
- глибоке навчання
- дефолт
- визначаючи
- доставляти
- демонструвати
- продемонстрований
- розгортання
- розгортання
- розгортання
- description
- бажаний
- деталі
- DEV
- розвивати
- розробка
- пристрій
- різний
- Розмір
- безпосередньо
- дисплей
- Різне
- документація
- домен
- домени
- Не знаю
- вниз
- скачати
- під час
- кожен
- легше
- легко
- електронної комерції
- Ефективний
- включіть
- шифрування
- Кінцева точка
- зачеплення
- двигун
- Двигуни
- англійська
- забезпечувати
- підприємств
- повністю
- запис
- Навколишнє середовище
- помилки
- приклад
- виконання
- Здійснювати
- досвід
- додатково
- сім'я
- особливість
- риси
- Рисунок
- філе
- Файли
- знайти
- закінчення
- Перший
- Гнучкість
- Сфокусувати
- після
- слідує
- для
- формат
- знайдений
- FRAME
- Рамки
- Безкоштовна
- друг
- від
- перед
- функція
- функціональний
- функціональність
- Функції
- далі
- породжувати
- генерується
- отримати
- Git
- GitHub
- скло
- Go
- Цілі
- буде
- добре
- керівництво
- обробляти
- Мати
- Заголовки
- висота
- допомога
- допомогу
- допомагає
- тут
- вище
- хіт
- число переглядів
- господар
- відбувся
- хостинг
- Як
- How To
- HTML
- HTTP
- HTTPS
- Сотні
- i
- ідентифікувати
- Idle
- IDX
- зображення
- Пошук зображень
- зображень
- здійснювати
- реалізація
- реалізовані
- реалізації
- імпорт
- удосконалювати
- in
- включати
- includes
- індекс
- покажчики
- індекси
- промисловості
- інформація
- Інфраструктура
- вхід
- встановлювати
- екземпляр
- замість
- інструкції
- інтегрований
- зацікавлений
- інтерфейс
- інтернет
- інвентаризація
- IT
- пунктів
- ЙОГО
- робота
- Джобс
- JPG
- json
- lab
- мова
- портативний комп'ютер
- великий
- масштабний
- запуск
- шар
- вивчення
- використання
- бібліотека
- як
- LINK
- список
- оголошення
- загрузка
- погрузка
- розташування
- Довго
- довше
- подивитися
- машина
- навчання за допомогою машини
- made
- РОБОТИ
- управління
- управління
- Маніпуляція
- манера
- засоби
- вимір
- заходи
- Злиття
- Meta
- метадані
- метрика
- хвилин
- ML
- MLOps
- модель
- Моделі
- більше
- рухатися
- ім'я
- Імена
- Природний
- Необхідність
- мережу
- нейронної мережі
- Нові
- наступний
- ноутбук
- номера
- об'єкт
- об'єкти
- of
- пропонувати
- Старий
- on
- онлайн
- відкрити
- з відкритим вихідним кодом
- операція
- варіант
- OS
- Інше
- вихід
- перевизначення
- огляд
- власний
- пакети
- пар
- панди
- частина
- пристрасний
- шлях
- Викрійки
- Люди
- ідеальний
- Виконувати
- продуктивність
- виконанні
- фаза
- картина
- фотографії
- частина
- Піца
- Платформи
- plato
- Інформація про дані Платона
- PlatoData
- PoC
- точка
- точок
- Політика
- басейн
- це можливо
- пошта
- влада
- Харчування
- практика
- прогноз
- Прогнози
- підготовка
- запобігати
- попередній
- приватний
- проблеми
- обробка
- Product
- Production
- Продукти
- профіль
- Програмування
- проект
- властивості
- макетування
- забезпечувати
- забезпечує
- громадськість
- цілей
- put
- Python
- піторх
- Швидко
- швидко
- діапазон
- Сировина
- Читати
- реальний
- реального часу
- Рекомендація
- запис
- червоний
- regex
- регіон
- зареєстрований
- видаляти
- Вимагається
- дослідження
- ресурси
- відповідь
- REST
- результат
- результати
- роздрібна торгівля
- повертати
- Умови повернення
- Зростання
- Роль
- ROSE
- прогін
- мудрець
- то ж
- зберегти
- масштабовані
- шкала
- Масштабування
- наука
- вчений
- рахунок
- Sdk
- Пошук
- Пошукова система
- Пошукові системи
- seconds
- розділ
- безпечний
- безпечно
- безпеку
- старший
- пропозиція
- служити
- Без сервера
- обслуговування
- Сесія
- комплект
- налаштування
- Форма
- Повинен
- показаний
- аналогічний
- простий
- Розмір
- менше
- So
- рішення
- Рішення
- деякі
- Source
- Простір
- спеціалізовані
- конкретний
- стояти
- починається
- Стартапи
- Крок
- заходи
- зберігання
- зберігати
- зберігати
- раціоналізувати
- Strict
- студія
- представляти
- Успішно
- такі
- Опори
- перемикач
- Сідней
- SYS
- приймає
- команди
- Технології
- Telco
- шаблон
- тест
- Що
- Команда
- інформація
- їх
- Їх
- Ці
- три
- через
- час
- times
- назва
- назви
- до
- знак
- інструмент
- топ
- факел
- Torchvision
- трафік
- навчений
- переклад
- Перетворення
- переводити
- правда
- Типи
- єдиний
- створеного
- непередбачуваний
- us
- використання
- користувач
- значення
- різноманітність
- перевірити
- через
- вид
- Віртуальний
- спостереження
- вода
- ДОБРЕ
- який
- ВООЗ
- ширина
- Вікіпедія
- волі
- з
- в
- без
- слово
- робочий
- б
- X
- Ти
- вашу
- зефірнет