Обработка визуальной речи (VLP) находится на переднем крае генеративного искусственного интеллекта, обеспечивая прогресс в мультимодальном обучении, которое включает в себя языковой интеллект, понимание зрительного восприятия и обработку данных. В сочетании с большими языковыми моделями (LLM) и предварительной тренировкой контрастного языка и изображения (CLIP), обученными на большом количестве мультимодальных данных, модели визуального языка (VLM) особенно подходят для таких задач, как написание подписей к изображениям, обнаружение и сегментация объектов, а также визуальные ответ на вопрос. Сценарии их использования охватывают различные области: от медиа-развлечений до медицинской диагностики и обеспечения качества на производстве.
Ключевые сильные стороны VLP включают эффективное использование предварительно обученных VLM и LLM, позволяющее делать прогнозы с нулевым или малым количеством кадров без необходимости модификаций для конкретных задач, а также классифицировать изображения из широкого спектра посредством случайных многораундовых диалогов. Дополнено Заземленный сегментVLP демонстрирует мастерство в визуальном распознавании, особенно примечательны обнаружение и сегментация объектов. Существует потенциал для дальнейшей тонкой настройки VLM и LLM с использованием данных, специфичных для предметной области, с целью повышения точности и уменьшения галлюцинаций. Однако, как и в случае с другими зарождающимися технологиями, остаются препятствия в управлении сложностью моделей, гармонизации различных методов и формулировании единых показателей оценки.
С разрешения NOMIC для OBELICS, HuggingFaceM4 для IDEFICS, Чарльза Бенсимона для Gradio и Amazon Polly для TTS
В этом посте мы исследуем технические нюансы прототипирования VLP с использованием Amazon SageMaker JumpStart в сочетании с современными генеративными моделями искусственного интеллекта. Посредством многораундовых диалогов мы подчеркиваем возможности ориентированной на инструкции обработки языка с нулевым и малым количеством кадров, подчеркивая его универсальность и стремясь заинтересовать более широкое мультимодальное сообщество. Демонстрационный код реализации доступен по следующему адресу. Репо GitHub.
Обзор решения
Предлагаемое решение VLP объединяет набор современных генеративных модулей искусственного интеллекта для получения точных мультимодальных результатов. Центральное место в архитектуре занимают точно настроенные VLM и LLM, которые играют важную роль в декодировании потоков визуальных и текстовых данных. Платформа TGI лежит в основе уровня вывода модели, предоставляя API-интерфейсы RESTful для надежной интеграции и простоты доступа. В дополнение к нашей обработке слуховых данных Whisper ASR также оснащен RESTful API, позволяющим оптимизировать преобразование голоса в текст. Решая сложные задачи, такие как сегментация изображения в текст, мы используем контейнеризованный Заземленный сегмент модуль, взаимодействующий с Заземленный ДИНО и Сегментировать любую модель (SAM) механизм обнаружения и сегментации текстовых объектов. Система дополнительно усовершенствована с помощью ДистилБЕРТ, оптимизируя наш процесс многоклассовой классификации, управляемый диалогом. Организацией этих компонентов является конвейер обработки LangChain, сложный механизм, способный анализировать текстовые или голосовые вводы, распознавать намерения пользователей и методично делегировать подзадачи соответствующим службам. Синтез этих операций дает агрегированные результаты, предоставляя точные и контекстно-зависимые мультимодальные ответы.
На следующей диаграмме показана архитектура нашего решения VLP с диалоговым управлением.
Вывод генерации текста
Text Generation Inference (TGI) — это набор инструментов с открытым исходным кодом, разработанный Hugging Face для развертывания LLM, а также VLM для вывода. Он обеспечивает высокопроизводительную генерацию текста с использованием тензорного параллелизма, параллелизма моделей и динамической пакетной обработки, поддерживая некоторые ведущие LLM с открытым исходным кодом, такие как Falcon и Llama V2, а также VLM, такие как IDEFICS. Использование новейших модулей Hugging Face LLM на Amazon SageMaker, Клиенты AWS теперь могут воспользоваться возможностями контейнеров глубокого обучения (DLC) SageMaker. Это позволяет беспрепятственно развертывать LLM из хабов Hugging Face с помощью предварительно созданного SageMaker. ЦДО поддержка TGI. Такая установка вывода не только обеспечивает исключительную производительность, но и устраняет необходимость в управлении тяжелой инфраструктурой графического процессора. Кроме того, вы получаете преимущества от расширенных функций, таких как автоматическое масштабирование конечных точек вывода, повышенная безопасность и встроенный мониторинг модели.
TGI обеспечивает скорость генерации текста до 100 раз выше, чем традиционные методы вывода, и эффективно масштабируется для обработки растущего количества запросов. Его дизайн обеспечивает совместимость с различными LLM и, поскольку исходный код открыт, демократизирует расширенные функции для технологического сообщества. Универсальность TGI распространяется на все области, улучшая чат-боты, улучшая машинный перевод, резюмируя тексты и создавая разнообразный контент, от поэзии до кода. Таким образом, TGI представляет собой комплексное решение проблем генерации текста. TGI реализован на Python и использует инфраструктуру PyTorch. Он имеет открытый исходный код и доступен на GitHub. Он также поддерживает PEFT с QLoRA для повышения производительности и деформацию логитов для управления атрибутами сгенерированного текста, такими как определение его длины и разнообразия, без изменения базовой модели.
Вы можете создать собственный контейнер TGI Docker непосредственно из следующего: Dockerfile а затем отправьте образ контейнера на Amazon. Реестр эластичных контейнеров (ECR) для развертывания вывода. См. следующий код:
%%sh
# Define docker image name and container's Amazon Reource Name on ECR
container_name="tgi1.03"
region=`aws configure get region`
account=`aws sts get-caller-identity --query "Account" --output text`
full_name="${account}.dkr.ecr.${region}.amazonaws.com/${container_name}:latest" # Get the login command from ECR and execute it directly
aws ecr get-login-password --region ${region}|docker login --username AWS --password-stdin ${account}.dkr.ecr.${region}.amazonaws.com # Build the TGI docker image locally
docker build . -f Dockerfile -t ${container_name}
docker tag ${container_name} ${full_name}
docker push ${full_name}
Вывод LLM с TGI
Решение VLP в этом посте использует LLM в тандеме с LangChain, используя подход цепочки мыслей (CoT) для более точной классификации намерений. CoT обрабатывает запросы, чтобы распознать намерение и подзадачи, связанные с триггером, для достижения целей запроса. Лама-2-7b-чат-хф (лицензионное соглашение) — это упрощенная версия линейки Llama-2, предназначенная для диалоговых контекстов. Вывод Llama-2-7b-chat-hf основан на образе контейнера TGI, что делает его доступным как сервис с поддержкой API.
Для вывода Llama-2-7b-chat-hf рекомендуется использовать g5.2xlarge (24 ГБ видеопамяти) для достижения максимальной производительности. Для приложений, требующих более надежного LLM, модели Llama-v2-13b хорошо подходят с экземпляром g5.12xlarge (96 ГБ видеопамяти). Для моделей Llama-2-70b рассмотрите либо графический процессор [2xlarge] — 2x Nvidia A100, использующий квантование битов и байтов, либо g5.48xlarge. Примечательно, что использование квантования битов и байтов может уменьшить требуемую VRAM-память графического процессора на 50%.
Вы можете использовать DLC SageMaker с образом контейнера TGI, подробно описанным ранее, для развертывания Llama-2-7b-chat-hf для вывода (см. следующий код). В качестве альтернативы вы можете выполнить быстрый локальный вывод для проверки концепции на экземпляре g5.2xlarge с использованием контейнера Docker.
import json
from time import gmtime, strftime
from sagemaker.huggingface import get_huggingface_llm_image_uri
from sagemaker.huggingface import HuggingFaceModel
from sagemaker import get_execution_role # Prerequisite:create an unique model name
model_name = 'Llama-7b-chat-hf' + strftime("%Y-%m-%d-%H-%M-%S", gmtime()) # retrieve the llm image uri of SageMaker pre-built DLC TGI v1.03 tgi_image_ecr_uri = get_huggingface_llm_image_uri( "huggingface", version="1.0.3"
) # Define Model and Endpoint configuration parameter
hf_config = { 'HF_MODEL_ID': "meta-research/Llama-2-7b-chat-hf", # Matching model_id on Hugging Face Hub 'SM_NUM_GPUS': json.dumps(number_of_gpu), 'MAX_TOTAL_TOKENS': json.dumps(1024), 'HF_MODEL_QUANTIZE': "bitsandbytes", # Use quantization for less vram requirement, commet it if no needed.
} # create HuggingFaceModel with the SageMaker pre-built DLC TGI image uri
sm_llm_model = HuggingFaceModel( role=get_execution_role(), image_uri=tgi_image_ecr_uri, env=hf_config
) # Deploy the model
llm = sm_llm_model.deploy( initial_instance_count=1, instance_type="ml.g5.2xlarge", container_startup_health_check_timeout=300, # in sec. Allow 5 minutes to be able to load the model
) # define inference payload
prompt="""<|prompter|>How to select a right LLM for your generative AI project?<|endoftext|><|assistant|>""" # hyperparameters for llm
payload = { "inputs": prompt, "parameters": { "best_of": 1, "decoder_input_details": true, "details": true, "do_sample": true, "max_new_tokens": 20, "repetition_penalty": 1.03, "return_full_text": false, "seed": null, "stop": [ "photographer" ], "temperature": 0.5, "top_k": 10, "top_p": 0.95, "truncate": null, "typical_p": 0.95, "watermark": true }, "stream": false
} # send request to endpoint
response = llm.predict(payload)
Настройте и персонализируйте свой LLM
SageMaker JumpStart предлагает множество образцов блокнотов, демонстрирующих использование эффективной точной настройки параметров (PEFT), включая QLoRA для обучения и точной настройки LLM. QLoRA поддерживает предварительно обученные веса модели в статическом состоянии и вводит обучаемые матрицы ранговой декомпозиции на каждый уровень структуры Transformer. Этот метод существенно уменьшает количество обучаемых параметров, необходимых для последующих задач.
Альтернативно, вы можете изучить Прямая оптимизация предпочтений (DPO), что устраняет необходимость в настройке модели вознаграждения, отборе образцов во время точной настройки из LLM или обширной корректировке гиперпараметров. Недавние исследования показали, что точная настройка DPO превосходит РЛХФ в управлении формированием настроений и повышает качество сводок и ответов в одиночном диалоге, при этом его значительно проще настроить и обучить. Процесс обучения DPO состоит из трех основных этапов (см. GitHub). РЕПО для деталей):
- Выполните контролируемую тонкую настройку предварительно обученного базового LLM, чтобы создать точно настроенный LLM.
- Запустите тренажер DPO, используя точно настроенную модель, чтобы создать модель обучения с подкреплением.
- Объедините адаптеры из DPO в базовую модель LLM для получения вывода при генерации текста.
Вы можете развернуть объединенную модель для вывода, используя образ контейнера TGI.
Модель визуального языка
Модели визуального языка (VLM), сочетающие в себе как зрительную, так и языковую модальности, демонстрируют свою повышающуюся эффективность при обобщении, что приводит к различным практическим случаям использования с подсказками с нулевым шагом или с подсказками с несколькими действиями с инструкциями. VLM обычно состоит из трех ключевых элементов: кодировщика изображения, кодировщика текста и стратегии объединения информации из двух кодеров. Эти ключевые элементы тесно связаны друг с другом, поскольку функции потерь разрабатываются как на основе архитектуры модели, так и на основе стратегии обучения. Многие современные VLM используют CLIP/ViT (например, OpenCLIP) и LLM (например, Llama-v1) и обучаются на нескольких общедоступных наборах данных, таких как Wikipedia, LAION и Public Multimodal Dataset.
В этой демонстрации использовался предварительно обученный IDEFICS-9b-инструкция модель, разработанная ОбнимаюЛицоM4, доработанная версия IDEFICS-9b, соответствующая процедуре обучения, изложенной в Flamingo, путем объединения двух предварительно обученных моделей (laion/CLIP-ViT-H-14-laion2B-s32B-b79K иhugyllama/llama-7b) с модифицированными блоками Трансформера. IDEFICS-9b был обучен на мультимодальных наборах данных OBELIC, Wikipedia, LAION и PMD с общим количеством 150 миллиардов токенов и 1.582 миллиарда изображений с разрешением 224×224 каждое. IDEFICS-9b был основан на Llama-7b с эффективным размером партии 1.31 миллиона. Затем инструкция IDEFICS-9b была доработана с использованием 6.8 миллионов наборов данных мультимодальных инструкций, созданных путем расширения с использованием генеративного искусственного интеллекта путем размораживания всех параметров (кодировщик изображения, языковая модель, перекрестное внимание). Наборы данных для точной настройки включают данные предварительного обучения со следующими коэффициентами выборки: 5.1% пар изображение-текст и 30.7% мультимодальных веб-документов OBELICS.
Программное обеспечение для обучения создано на основе Hugging Face Transformers и Accelerate. ДипСпид ЗеРО-3 для обучения плюс набор веб-данных и Image2DataSets для загрузки данных. Предварительное обучение IDEFICS-9b заняло 350 часов на 128 графических процессорах Nvidia A100, тогда как точная настройка инструкции IDEFICS-9b заняла 70 часов на 128 графических процессорах Nvidia A100, оба на экземплярах AWS p4.24xlarge.
С помощью SageMaker вы можете легко развернуть инструкцию IDEFICS-9b на экземпляре g5.2xlarge для задач вывода. В следующем фрагменте кода показано, как запустить адаптированный локальный контейнер глубокого обучения, интегрированный с настроенным образом TGI Docker:
%%sh
llm_model='HuggingFaceM4/idefics-9b-instruct'
docker_rt_name='idefics-9b-instruct'
docker_image_name='tgi1.03'
docker run --gpus="1,2,3,4" --shm-size 20g -p 8080:80 --restart unless-stopped --name ${docker_rt_name} ${docker_image_name} --model-id ${llm_model} # Test the LLM API using curl
curl -X 'POST' 'http://<hostname_or_ip>:8080/' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{ "inputs": "User:![](http://<im
age_url>/image.png)Какое устройство создало это изображение? Пожалуйста, объясните основную клиническую цель такого изображения? Можете ли вы написать радиологический отчет на основе этого изображения? ",
"parameters": { "best_of": 1, "decoder_input_details": true, "details": true, "do_sample": true, "max_new_tokens": 20, "repetition_penalty": 1.03, "return_full_text": false, "seed": null, "stop": [ "photographer" ], "temperature": 0.5, "top_k": 10, "top_p": 0.95, "truncate": null, "typical_p": 0.95, "watermark": true }, "stream": false }'
Вы можете точно настроить IDEFICS или другие VLM, включая Открыть Фламинго с вашими собственными доменными данными и инструкциями. Обратитесь к следующему README для подготовки мультимодального набора данных и сценарий тонкой настройки .
Классификация намерений с помощью цепочки мыслей
Изображение стоит тысячи слов, поэтому VLM требует руководства для создания точного заголовка на основе данного изображения и вопроса. Мы можем использовать подсказки с несколькими кадрами, чтобы обеспечить контекстное обучение, когда мы предоставляем демонстрации в подсказке, чтобы повысить производительность модели. Демонстрации служат предпосылкой для последующих примеров, в которых мы хотели бы, чтобы модель генерировала ответ.
Стандартные подсказки, состоящие из нескольких шагов, хорошо подходят для многих задач, но все же не являются идеальным методом, особенно при решении более сложных задач на рассуждение. Шаблона подсказок, состоящего из нескольких шагов, недостаточно для получения надежных ответов. Возможно, будет полезно, если мы разобьем проблему на этапы и продемонстрируем это модели. В последнее время, цепочка мыслей Подсказки (CoT) стали популяризироваться для решения более сложных арифметических задач, задач здравого смысла и символических рассуждений.
CoT исключает ручные усилия, используя LLM с подсказкой «Давайте подумаем шаг за шагом» для создания цепочек рассуждений для демонстраций одна за другой. Однако этот автоматический процесс все равно может привести к ошибкам в сгенерированных цепочках. Чтобы смягчить последствия ошибок, важно разнообразие демонстраций. В этом посте предлагается Auto-CoT, который выбирает разнообразные вопросы и генерирует цепочки рассуждений для построения демонстраций. ЦТ состоит из двух основных этапов:
- Кластеризация вопросов. Разделение вопросов данного набора данных на несколько кластеров.
- Демонстрационная выборка. Выберите репрезентативный вопрос из каждого кластера и сгенерируйте его цепочку рассуждений, используя нулевой CoT с простой эвристикой.
См. следующий фрагмент кода:
from langchain.llms import HuggingFaceTextGenInference
from langchain import PromptTemplate, LLMChain inference_server_url_local = <Your_local_url_for_llm_on_tgi:port> llm_local = HuggingFaceTextGenInference( inference_server_url=inference_server_url_local, max_new_tokens=512, top_k=10, top_p=0.95, typical_p=0.95, temperature=0.1, repetition_penalty=1.05, template = """Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer. Use ten five maximum and keep the answer as subtle as possible. List all actionable sub-tasks step by step in detail. Be cautious to avoid phrasing that might replicate previous inquiries. This will help in obtaining an accurate and detailed answer. Avoid repetition for clarity. Question: {question}
Answer: Understand the intent of the question then break down the {question} in to sub-tasks. """ prompt = PromptTemplate( template=template, input_variables= ["question"]
) llm_chain_local = LLMChain(prompt=prompt, llm=llm_local)
llm_chain_local("Can you describe the nature of this image? Do you think it's real??")
Автоматическое распознавание речи
Решение VLP включает Whisper, модель автоматического распознавания речи (ASR) от OpenAI для обработки аудиозапросов. Whisper можно легко развернуть с помощью SageMaker JumpStart, используя его шаблон. SageMaker JumpStart, известный своей простой настройкой, высокой производительностью, масштабируемостью и надежностью, идеально подходит для разработчиков, стремящихся создавать исключительные приложения с голосовым управлением. Следующий GitHub РЕПО демонстрирует, как использовать Конечные точки вывода SageMaker в реальном времени для точной настройки и размещения Whisper для мгновенной транскрипции аудио в текст, демонстрируя синергию между хостингом SageMaker и генеративными моделями.
Кроме того, вы можете напрямую загрузить Dockerfile.gpu из GitHub, разработанный ахметонер, который включает предварительно настроенный RESTful API. Затем вы можете создать образ Docker и запустить контейнер на Amazon с графическим процессором. Эластичное вычислительное облако (EC2) для быстрого подтверждения концепции. См. следующий код:
%%sh
docker_iamge_name = 'whisper-asr-webservice-gpu'
docker build -f Dockerfile.gpu -t ${docker_iamge_nam}
docker run -d --gpus all -p 8083:9000 --restart unless-stopped -e ASR_MODEL=base ${docker_iamge_nam} curl -X 'POST' 'http://<asr_api_hostname>:<port>/asr?task=transcribe&encode=true&output=txt' -H 'accept: application/json' -H 'Content-Type: multipart/form-data' -F 'audio_file=@dgvlp_3_5.mp3;type=audio/mpeg'
В приведенном примере для размещения Whisper API выбран порт 8083 с активированными правилами безопасности входящей сети. Чтобы проверить, направьте веб-браузер на http://<IP_or_hostname>:8083/docs
и инициировать тест запроса POST к конечной точке ASR. В качестве альтернативы запустите данную команду или используйте модуль шепота для проверки подключения API.
!pip install whisper-live
from whisper_live.client import TranscriptionClient
client = TranscriptionClient("<whisper_hostname_or_IP>", 8083, is_multilingual=True, lang="zh", translate=True)
client(audio_file_path) # Use sudio file
client() # Use microphone for transcribe
Многоклассовая классификация текста и извлечение ключевых слов
Многоклассовая классификация играет ключевую роль в обнаружении и сегментации объектов на основе текстовых подсказок. дистиллят-база-без корпуса-тонкая настройка-sst-2-английский модель представляет собой усовершенствованную контрольную точку DistilBERT-база-без корпуса, оптимизированный на Стэнфордское дерево настроений (SST2) набор данных Hugging Face. Эта модель достигает точности 91.3% на наборе для разработки, в то время как ее аналог без корпуса bert-base может похвастаться точностью 92.7%. Hugging Face Hub предоставляет доступ к более чем 1,000 предварительно обученным моделям классификации текста. Для тех, кто ищет повышенную точность, SageMaker JumpStart предлагает шаблоны для точной настройки DistilBERT с использованием пользовательских наборов данных с аннотациями для более специализированных задач классификации.
import torch
from transformers import pipeline def mclass(text_prompt, top_k=3, topics = ['Mask creation', 'Object detection', 'Inpainting', 'Segmentation', 'Upscaling', 'Creating an image from another one', 'Generating:q an image from text'], model='distilbert-base-uncased-finetuned-sst-2-english'): device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') # Define a german hypothesis template and the potential candidates for entailment/contradiction template_de = 'The topic is {}' # Pipeline abstraction from hugging face pipe = pipeline(task='zero-shot-classification', model=model, tokenizer=model, device=device) # Run pipeline with a test case prediction = pipe(text_prompt, topics, hypothesis_template=template_de) # Top 3 topics as predicted in zero-shot regime return zip(prediction['labels'][0:top_k], prediction['scores'][0:top_k]) top_3_intend = mclass(text_prompt=user_prompt_str, topics=['Others', 'Create image mask', 'Image segmentation'], top_k=3)
В процессе извлечения ключевых слов используется КейБЕРТ модуль — упрощенный и удобный для пользователя метод, который использует встраивания BERT для генерации ключевых слов и ключевых фраз, тесно связанных с документом — в данном случае объектов, указанных в запросе:
# Keyword extraction
from keybert import KeyBERT
kw_model = KeyBERT()
words_list = kw_model.extract_keywords(docs=<user_prompt_str>, keyphrase_ngram_range=(1,3))
Обнаружение и классификация объектов по текстовой подсказке
Решение VLP использует обнаружение и сегментацию объектов на основе диалога путем анализа семантического значения текста и определения действия и объектов из текстовой подсказки. Заземленный-SAM — это пакет с открытым исходным кодом, созданный IDEA-Research для обнаружения и сегментации чего-либо на заданном изображении с помощью текстового ввода. Он сочетает в себе сильные стороны Заземление ДИНО и сегментируйте что угодно, чтобы построить очень мощный конвейер для решения сложных проблем.
На следующем рисунке показано, как Grounded-SAM может обнаруживать объекты и выполнять сегментацию экземпляров, обрабатывая текстовый ввод.
SAM выделяется как надежная модель сегментации, хотя для создания высококачественных масок объектов требуются подсказки, такие как ограничивающие рамки или точки. Grounding DINO превосходно работает в качестве детектора нулевого выстрела, умело создавая высококачественные коробки и этикетки с использованием текстовых подсказок в произвольной форме. Когда эти две модели объединены, они предлагают замечательную возможность обнаруживать и сегментировать любой объект исключительно посредством ввода текста. Скрипт утилиты Python dino_sam_inpainting.py был разработан для интеграции методов Grounded-SAM:
!pip install git+https://github.com/facebookresearch/segment-anything.git
import dino_sam_inpainting as D def dino_sam(image_path, text_prompt, text_threshold=0.4, box_threshold=0.5, output_dir='/temp/gradio/outputs'): config_file = 'GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py' # change the path of the model config file grounded_checkpoint = './models/groundingdino_swint_ogc.pth' # change the path of the model sam_checkpoint = './models/sam_vit_h_4b8939.pth' sam_hq_checkpoint = '' #if to use high quality, like sam_hq_vit_h.pth use_sam_hq = '' output_dir = '/tmp/gradio/outputs' device = 'cuda' # make dir os.makedirs(output_dir, exist_ok=True) # load image image_pil, image = D.load_image(image_path) # load model model = D.load_model(config_file, grounded_checkpoint, device=device) output_file_name = f'{format(os.path.basename(image_path))}' # visualize raw image image_pil.save(os.path.join(output_dir, output_file_name)) # run grounding dino model boxes_filt, pred_phrases = D.get_grounding_output( model, image, text_prompt, box_threshold, text_threshold, device=device ) # initialize SAM if use_sam_hq: predictor = D.SamPredictor(D.build_sam_hq(checkpoint=sam_hq_checkpoint).to(device)) else: predictor = D.SamPredictor(D.build_sam(checkpoint=sam_checkpoint).to(device)) image = cv2.imread(image_path) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) predictor.set_image(image) size = image_pil.size H, W = size[1], size[0] for i in range(boxes_filt.size(0)): boxes_filt[i] = boxes_filt[i] * torch.Tensor([W, H, W, H]) boxes_filt[i][:2] -= boxes_filt[i][2:] / 2 boxes_filt[i][2:] += boxes_filt[i][:2] boxes_filt = boxes_filt.cpu() transformed_boxes = predictor.transform.apply_boxes_torch(boxes_filt, image.shape[:2]).to(device) masks, _, _ = predictor.predict_torch( point_coords = None, point_labels = None, boxes = transformed_boxes.to(device), multimask_output = False, ) # draw output image plt.figure(figsize=(10, 10)) plt.imshow(image) for mask in masks: D.show_mask(mask.cpu().numpy(), plt.gca(), random_color=True) for box, label in zip(boxes_filt, pred_phrases): D.show_box(box.numpy(), plt.gca(), label) output_file_name = f'{format(os.path.basename(image_path))}' plt.axis('off') plt.savefig( os.path.join(output_dir, f'grounded_sam_{output_file_name}'), bbox_inches="tight", dpi=300, pad_inches=0.0 ) D.save_mask_data(output_dir, masks, boxes_filt, pred_phrases) return f'grounded_sam_{output_file_name}' filename = dino_sam(image_path=<image_path_str>, text_prompt=<object_name_str>, output_dir=<output_image_filename_path_str>, box_threshold=0.5, text_threshold=0.55)
Вы можете выбрать HQ-SAM для обновления SAM для высококачественной нулевой сегментации. Обратитесь к следующему бумаги и код образец на GitHub для получения более подробной информации.
Конвейер обработки VLP
Основная цель конвейера обработки VLP — объединить сильные стороны различных моделей, создав сложный рабочий процесс, специально предназначенный для VLP. Важно подчеркнуть, что в этой настройке приоритет отдается интеграции моделей высшего уровня в визуальной, текстовой и голосовой областях. Каждый сегмент трубопровода является модульным, что позволяет использовать его как автономно, так и совместно. Кроме того, конструкция обеспечивает гибкость, позволяя заменять компоненты более совершенными моделями, которые еще появятся, а также поддерживает многопоточность и обработку ошибок с надежной реализацией.
На следующем рисунке показан поток данных конвейера VLP и компоненты службы.
Исследуя конвейер VLP, мы разработали такой, который может обрабатывать как текстовые подсказки из открытого текстового формата, так и случайный голосовой ввод с микрофонов. Обработку звука обеспечивает Whisper, способный распознавать и переводить многоязычную речь. Расшифрованный текст затем передается в модуль классификации намерений, который определяет семантическую сущность подсказок. Это работает в тандеме с механизмом CoT, управляемым LangChain, разбивая основное намерение на более мелкие подзадачи для более детального поиска и генерации информации. Если из входных данных следует обработка изображения, конвейер начинает процесс извлечения ключевых слов, выбирая первые N ключевых слов путем перекрестных ссылок на объекты, обнаруженные в исходном изображении. Впоследствии эти ключевые слова передаются в механизм Grounded-SAM, который генерирует ограничивающие рамки. Эти ограничивающие рамки затем передаются в модель SAM, которая создает точные маски сегментации, точно определяя каждый уникальный экземпляр объекта в исходном изображении. Последний шаг включает наложение масок и ограничивающих рамок на исходное изображение, в результате чего получается обработанное изображение, которое представляется как мультимодальный результат.
Когда входной запрос пытается интерпретировать изображение, конвейер задействует LLM для организации подзадач и уточнения запроса с целевыми целями. Впоследствии результат направляется в API VLM вместе с краткими инструкциями, URL-адресом входного изображения и перефразированным текстовым приглашением. В ответ VLM предоставляет текстовый вывод. Конвейер VLP можно реализовать с помощью конвейера рабочего процесса на основе Python или альтернативных утилит оркестрации. Такие конвейеры работают путем объединения последовательного набора сложных моделей, кульминацией которых является последовательная процедура структурированного моделирования. Конвейер интегрируется с движком Gradio в демонстрационных целях:
def vlp_text_pipeline(str input_text, str original_image_path, chat_history): intent_class = intent_classification(input_text) key_words = keyword_extraction(input_text) image_caption = vlm(input_text, original_image_path) chat_history.append(image_caption) if intent_class in {supported intents}: object_bounding_box = object_detection(intent_class, key_words, original_image_path) mask_image_path = image_segmentation(object_bounding_box, key_words, original_image_path) chat_history.append(mask_image_path) return chat_history def vlp_voice_pipeline(str audio_file_path, str original_image_path, chat_history): asr_text = whisper_transcrib(audio_file_path) chat_history.append(asr_text, original_image_path, chat_history) return chat_history chat_history = map(vlp_pipelines, input_text, original_image_path, chat_history) if (audio_file_path is None) else map(vlp_voice_pipelines, original_image_path, chat_history)
ограничения
Использование предварительно обученных моделей VLM для VLP продемонстрировало многообещающий потенциал для понимания изображений. Наряду с обнаружением и сегментацией объектов на основе языка, VLP может выдавать полезные результаты с приемлемым качеством. Тем не менее, VLP по-прежнему страдает от противоречивых результатов, отсутствия деталей на изображениях и может даже вызывать галлюцинации. Более того, модели могут давать фактически неверные тексты, и на них не следует полагаться для получения фактически точной информации. Поскольку ни одна из упомянутых предварительно обученных моделей VLM, SAM или LLM не была обучена или настроена для конкретных приложений производственного уровня, это решение не предназначено для критически важных приложений, которые могут повлиять на средства к существованию или вызвать материальные потери.
При оперативном проектировании модель IDEFICS иногда может распознавать дополнительные детали после текстовой подсказки; однако результат далек от последовательного и надежного. Он может настойчиво сохранять неточности и может быть неспособен или не желает вносить исправления, даже если пользователи выделяют их во время разговора. Улучшение базовой модели путем интеграции Swin-ViT и ее объединения с моделями на основе CNN, такими как DualToken-ViT, а также обучением с использованием более продвинутых моделей, таких как Llama-v2, потенциально может устранить некоторые из этих ограничений.
Следующие шаги
Решение VLP обещает значительный прогресс. Заглядывая в будущее, мы видим несколько ключевых возможностей для продвижения решений VLP:
- Отдайте приоритет интеграции динамических подсказок и кратких обучающих подсказок. Эти улучшения обеспечат более точную обратную связь с ИИ.
- Команды классификации намерений должны сосредоточить усилия на доработке классификатора, чтобы улавливать тонкие, специфичные для предметной области намерения из открытых подсказок. Возможность понять точные намерения пользователя будет иметь решающее значение.
- Внедрите модель дерева мыслей агента в конвейер рассуждений. Эта структура позволит четко обосновать шаги для выполнения подзадач.
- Пилотные инициативы по тонкой настройке ведущих моделей. Адаптация моделей VLM, LLM и SAM к ключевым отраслям и сценариям использования посредством тонкой настройки будет иметь решающее значение.
Подтверждение
Авторы выражают благодарность Вивеку Мадану и Ашишу Равату за их ценные отзывы и рецензию на этот пост.
Об авторах
Альфред Шен является старшим специалистом по AI/ML в AWS. Он работал в Силиконовой долине, занимая технические и управленческие должности в различных секторах, включая здравоохранение, финансы и высокие технологии. Он преданный делу прикладной исследователь AI/ML, специализирующийся на CV, NLP и мультимодальности. Его работа была представлена в таких изданиях, как EMNLP, ICLR и Public Health.
Доктор Ли Чжан — главный менеджер по продукту и технический специалист по встроенным алгоритмам Amazon SageMaker JumpStart и Amazon SageMaker — сервису, который помогает специалистам по данным и специалистам по машинному обучению начать работу с обучением и развертыванием своих моделей, а также использует обучение с подкреплением с помощью Amazon SageMaker. Его прошлая работа в качестве главного научного сотрудника и главного изобретателя в IBM Research была отмечена наградой «Испытание временем» на IEEE INFOCOM.
Доктор Чанша Ма является специалистом по AI/ML в AWS. Она технолог с докторской степенью в области компьютерных наук, степенью магистра в области психологии образования и многолетним опытом работы в области науки о данных и независимого консультирования в области искусственного интеллекта и машинного обучения. Она увлечена исследованием методологических подходов к машинному и человеческому интеллекту. Вне работы она любит ходить в походы, готовить, охотиться за едой, обучать студентов колледжа предпринимательству и проводить время с друзьями и семьями.
Синь Хуан — старший научный сотрудник Amazon SageMaker JumpStart и встроенных алгоритмов Amazon SageMaker. Он занимается разработкой масштабируемых алгоритмов машинного обучения. Его исследовательские интересы лежат в области обработки естественного языка, объяснимого глубокого обучения на табличных данных и надежного анализа непараметрической пространственно-временной кластеризации. Он опубликовал множество статей на конференциях ACL, ICDM, KDD и в Королевском статистическом обществе: серия A.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/machine-learning/dialogue-guided-visual-language-processing-with-amazon-sagemaker-jumpstart/
- :имеет
- :является
- :нет
- :куда
- $UP
- 000
- 1
- 10
- 100
- 150
- 160
- 20
- 30
- 31
- 7
- 70
- 8
- 80
- 91
- a
- в состоянии
- О нас
- абстракция
- ускорять
- Принять
- доступ
- доступность
- в сопровождении
- Учетная запись
- точность
- точный
- Достигать
- Достигает
- через
- Действие
- Дополнительно
- адрес
- адресация
- искусный
- корректировки
- продвижение
- продвинутый
- достижения
- После
- Агент
- впереди
- AI
- AI модели
- AI / ML
- Стремясь
- алгоритмы
- выровненный
- Все
- позволять
- позволяет
- вдоль
- причислены
- альтернатива
- Amazon
- Amazon Polly
- Создатель мудреца Амазонки
- Amazon SageMaker JumpStart
- Amazon Web Services
- an
- анализ
- анализ
- и
- Другой
- ответ
- ответы
- любой
- все
- API
- API
- Приложения
- прикладной
- подхода
- подходы
- архитектура
- МЫ
- ПЛОЩАДЬ
- около
- AS
- гарантия
- At
- Атрибуты
- аудио
- дополненная
- Авторы
- автоматический
- Автоматический
- доступен
- избежать
- AWS
- Позвоночник
- Использование темпера с изогнутым основанием
- основанный
- BE
- , так как:
- было
- не являетесь
- польза
- Лучшая
- между
- миллиард
- Миллиард токенов
- Блоки
- хвастается
- повышение
- изоферменты печени
- Коробка
- коробки
- Ломать
- широкий
- шире
- браузер
- строить
- построенный
- встроенный
- но
- by
- CAN
- кандидатов
- возможности
- возможности
- способный
- захватить
- случаев
- случаев
- казуальная
- категоризации
- Вызывать
- осторожный
- центральный
- цепь
- цепи
- проблемы
- изменение
- Чарльз
- chatbots
- Выберите
- ясность
- классификация
- клиент
- Клинический
- тесно
- Кластер
- кластеризации
- код
- Колледж
- COM
- объединять
- сочетании
- комбинаты
- комбинируя
- как
- начинается
- Общий
- Здравый смысл
- сообщество
- совместимость
- полный
- комплекс
- компоненты
- комплексный
- Вычисление
- компьютер
- Информатика
- сама концепция
- Проводить
- конференции
- Конфигурация
- связь
- связь
- Рассматривать
- последовательный
- состоит
- строить
- консалтинг
- Container
- Контейнеры
- современный
- содержание
- контекст
- контексты
- контроль
- Разговор
- конверсий
- исправления
- может
- контрагент
- соединенный
- выработать
- Создайте
- создали
- Создающий
- создание
- критической
- перекрестные ссылки
- кульминационным
- изготовленный на заказ
- Клиенты
- настроить
- подгонянный
- данным
- обработка данных
- наука о данных
- Наборы данных
- занимавшийся
- Декодирование
- уменьшается
- преданный
- глубоко
- глубокое обучение
- определять
- Степень
- доставки
- демонстрация
- демократизирует
- демонстрировать
- убивают
- демонстрирует
- развертывание
- развернуть
- развертывание
- развертывание
- описывать
- Проект
- предназначенный
- подробность
- подробный
- подробнее
- обнаруживать
- обнаруженный
- обнаружение
- определения
- развитый
- застройщиков
- развивающийся
- Развитие
- устройство
- диагностика
- Диалог
- различный
- Дино
- направлять
- направленный
- непосредственно
- усмотреть
- Разное
- Разнообразие
- do
- Docker
- Документация
- доменов
- Дон
- вниз
- скачать
- рисовать
- рисование
- управляемый
- вождение
- в течение
- динамический
- каждый
- Ранее
- легче
- воспитывать
- Обучение
- Эффективный
- эффективность
- эффекты
- эффективный
- эффективно
- легкий
- легко
- усилия
- или
- элементы
- ликвидировать
- ликвидирует
- еще
- возникает
- подчеркивающий
- используя
- работает
- включить
- позволяет
- позволяет
- охватывает
- конец
- Конечная точка
- зацепляет
- Двигатель
- Проект и
- расширение
- Усиливает
- повышение
- достаточно
- обеспечивает
- Развлечения
- предпринимательство
- ошибка
- особенно
- сущность
- оценка
- Даже
- пример
- Примеры
- исключительный
- выполнять
- Экспонаты
- существует
- опыт
- Объяснять
- исследование
- Больше
- продлить
- продолжается
- обширный
- дополнительно
- добыча
- Face
- облегчается
- облегчающий
- ложный
- семей
- далеко
- быстрее
- Особенности
- Обратная связь
- несколько
- фигура
- Файл
- окончательный
- финансы
- конец
- соответствовать
- 5
- Трансформируемость
- поток
- Фокус
- фокусируется
- после
- питание
- Что касается
- Передний край
- формат
- формулирование
- Рамки
- друзья
- от
- Функции
- далее
- Более того
- фьюзинг
- порождать
- генерируется
- генерирует
- порождающий
- поколение
- генеративный
- Генеративный ИИ
- Немецкий
- получить
- идти
- GitHub
- данный
- Цели
- GPU / ГРАФИЧЕСКИЙ ПРОЦЕССОР
- Графические процессоры
- благодарность
- руководство
- обрабатывать
- Управляемость
- упряжь
- Освоение
- Есть
- he
- Медицина
- здравоохранение
- тяжелый
- тяжелая атлетика
- помощь
- помогает
- High
- высокая производительность
- высококачественный
- Выделите
- подсказки
- его
- проведение
- кашель
- хостинг
- ЧАСЫ
- Как
- How To
- Однако
- HTML
- HTTP
- HTTPS
- Хуан
- хаб
- концентраторы
- ОбниматьЛицо
- человек
- человеческий интеллект
- охота
- i
- IBM
- идеальный
- идентифицирующий
- IEEE
- if
- иллюстрирует
- изображение
- изображений
- Влияние
- реализация
- в XNUMX году
- Импортировать
- важную
- улучшение
- улучшение
- in
- включают
- включает в себя
- В том числе
- включает в себя
- расширились
- независимые
- промышленности
- информация
- Инфраструктура
- инициировать
- инициативы
- вход
- затраты
- Запросы
- проницательный
- устанавливать
- пример
- Сегментация экземпляра
- мгновение
- инструкции
- инструментальный
- интегрировать
- интегрированный
- Интегрируется
- Интегрируя
- интеграции.
- Интеллекта
- намерение
- намерения
- интерес
- интересы
- в
- Представляет
- IT
- ЕГО
- JPG
- JSON
- всего
- Сохранить
- Основные
- ключевые слова
- Знать
- известный
- этикетка
- Этикетки
- язык
- большой
- последний
- запуск
- слой
- ведущий
- изучение
- Длина
- Меньше
- Li
- Подтяжка лица
- такое как
- недостатки
- линия
- Список
- Лама
- LLM
- загрузка
- погрузка
- локальным
- в местном масштабе
- Войти
- посмотреть
- от
- любит
- машина
- обучение с помощью машины
- Главная
- Сохранение
- поддерживает
- сделать
- Создание
- управленческий
- управления
- руководство
- производство
- многих
- маска
- Маски
- мастер
- магистра
- согласование
- материала
- Вопрос
- максимальный
- Май..
- смысл
- механизм
- Медиа
- основным медицинским
- Встречайте
- член
- наставничество
- Мета
- метод
- методы
- Метрика
- микрофон
- может быть
- миллиона
- Минут
- отсутствующий
- ошибки
- смягчать
- ML
- модель
- моделирование
- Модели
- изменения
- модифицировало
- модульный
- Модули
- Модули
- Мониторинг
- БОЛЕЕ
- Более того
- с разными
- имя
- рождающийся
- натуральный
- Обработка естественного языка
- природа
- необходимость
- необходимость
- Необходимость
- необходимый
- сеть
- Сетевая безопасность
- НЛП
- нет
- Ничто
- примечательный
- особенно
- ноутбук
- сейчас
- нюансы
- номер
- многочисленный
- Nvidia
- объект
- Обнаружение объекта
- цель
- объекты
- препятствиями
- получение
- of
- от
- предлагают
- Предложения
- on
- ONE
- только
- на
- открытый
- с открытым исходным кодом
- OpenAI
- работать
- операция
- Операционный отдел
- Возможности
- оптимизированный
- оптимизирующий
- or
- оркестровка
- заказ
- оригинал
- OS
- Другое
- Другое
- наши
- внешний
- Результат
- выходной
- выходы
- внешнюю
- за
- собственный
- пакет
- пар
- бумага & картон
- бумага
- параметр
- параметры
- особенно
- страстный
- мимо
- путь
- Вершина горы
- ИДЕАЛЬНОЕ
- производительность
- кандидат наук
- фотограф
- фразы
- выбирать
- картина
- Картинки
- штук
- труба
- трубопровод
- основной
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- играет
- пожалуйста
- плюс
- Поэзия
- пунктов
- сбалансирован
- позиции
- возможное
- После
- потенциал
- потенциально
- мощностью
- Питание
- мощный
- практическое
- необходимость
- Точность
- предсказанный
- прогноз
- Predictions
- Predictor
- подготовка
- представлены
- предыдущий
- Основной
- приоритизирует
- Проблема
- проблемам
- процедуры
- процесс
- Обработанный
- Процессы
- обработка
- производит
- Произведенный
- производит
- Продукт
- Прогресс
- Проект
- многообещающий
- доказательство
- доказательство концепции
- предложило
- предлагает
- макетирования
- обеспечивать
- при условии
- приводит
- обеспечение
- доблесть
- Психология
- что такое варган?
- здравоохранение
- публикациям
- публично
- опубликованный
- чисто
- цель
- целей
- Push
- Питон
- pytorch
- количество
- Запросы
- вопрос
- Вопросы
- САЙТ
- ранг
- Сырье
- реальные
- реального времени
- разумный
- последний
- недавно
- признание
- признавать
- Управление по борьбе с наркотиками (DEA)
- уменьшить
- относиться
- совершенствовать
- рафинированный
- рафинирование
- режим
- соответствующие
- складская
- оставаться
- замечательный
- замена
- отчету
- представитель
- уважаемый
- запросить
- Запросы
- обязательный
- требование
- требуется
- исследованиям
- исследователь
- Постановления
- ответ
- ответы
- результат
- Итоги
- возвращают
- обзоре
- Предложение
- правую
- надежный
- Роли
- королевский
- условиями,
- Run
- s
- sagemaker
- Сэм
- сообщили
- Масштабируемость
- масштабируемые
- Весы
- масштабирование
- Наука
- Ученый
- Ученые
- скрипт
- бесшовные
- легко
- SEC / КОМИССИЯ ПО ЦЕННЫМ БУМАГАМ И БИРЖАМ
- Сектора юридического права
- безопасность
- посмотреть
- семя
- поиск
- стремится
- сегмент
- сегментация
- выбранный
- выбор
- Отправить
- старший
- смысл
- настроение
- Серии
- Серия A
- служить
- обслуживание
- Услуги
- набор
- установка
- установка
- несколько
- она
- должен
- продемонстрированы
- Showcasing
- показанный
- кремний
- Кремниевая долина
- просто
- с
- Размер
- отрывок
- Общество
- Software
- Решение
- Решения
- Решение
- некоторые
- иногда
- сложный
- Источник
- пролет
- специалист
- специализированный
- указанный
- Спектр
- речь
- Распознавание речи
- скорость
- Расходы
- Персонал
- этапы
- стоять
- автономные
- стоит
- и политические лидеры
- Область
- современное состояние
- статистический
- управлять
- Шаг
- Шаги
- По-прежнему
- Stop
- простой
- Стратегия
- поток
- обтекаемый
- потоки
- сильные
- Структура
- структурированный
- Студенты
- последующее
- впоследствии
- по существу
- такие
- Страдает
- suite
- поставляется
- поддержки
- Поддержка
- символический
- взаимодействие
- синтез
- система
- TAG
- с учетом
- портняжное дело
- Тандем
- Нажмите
- целевое
- задачи
- команды
- технологии
- Технический
- техника
- технологии
- технолог
- шаблон
- 10
- тестXNUMX
- текст
- Классификация текста
- текстовый
- чем
- который
- Ассоциация
- Местоположение
- Источник
- их
- тогда
- Там.
- следовательно
- Эти
- они
- think
- этой
- те
- хоть?
- тысяча
- три
- Через
- плотно
- время
- раз
- в
- вместе
- Лексемы
- приняли
- Инструментарий
- топ
- тема
- Темы
- факел
- Всего
- традиционный
- специалистов
- Обучение
- Transform
- трансформатор
- трансформеры
- Переводы
- дерево
- правда
- стараться
- два
- типично
- не в состоянии
- лежащий в основе
- понимать
- понимание
- созданного
- модернизация
- URL
- использование
- используемый
- Информация о пользователе
- удобно
- пользователей
- использования
- через
- коммунальные услуги
- утилита
- Использующий
- v1
- Долина
- различный
- проверить
- многосторонность
- версия
- очень
- с помощью
- видение
- визуализации
- Режимы
- W
- законопроект
- водяной знак
- we
- Web
- веб-браузер
- веб-сервисы
- ЧТО Ж
- когда
- в то время как
- который
- в то время как
- Whisper
- Википедия.
- будете
- без
- Выиграл
- слова
- Работа
- рабочий
- работает
- работает
- стоимость
- бы
- записывать
- лет
- еще
- Уступать
- уступая
- Ты
- ВАШЕ
- зефирнет