NEURALDEEP Telegram 1254
Всем привет!
Начнем этот год с бенчмарков on-premise VL и Cloud моделей и их производительности в анализе неструктурированных документов и извлечении данных из них через подход Structured output.

У нас сегодня открытые данные (таможенные декларации и неструктурированные документы): паспорта качества, СЭС-сертификаты, сертификаты пожарной безопасности. Все эти документы объединяет то, что они общедоступные и неструктурированные.

Соревнуются четыре модели: Qwen/Qwen2-VL-7B-Instruct и Qwen/Qwen2-VL-72B-Instruct (вторая запущена в динамической квантизации на 8FP.

А так же claude-3.5-sonnet и gpt-4o

Куда смотрим для понимания точности на метрику DocVQAtest

Qwen2-VL-7B: 94.5% (в сравнении с gpt-4o-mini)

Qwen2-VL-72B: 96.5% (в сравнении с моделями ниже)
GPT-4o: 92.8%
Claude-3.5 Sonnet: 95.2%

Итак, на вход у нас задача извлекать 5 типов данных:
1) Производитель
2) Номер документа
3) Даты
4) Организация, которая выдала
5) Описание

Примерный промпт, который мне понравился:
Analyze the document image and extract the following fields with special attention to mixed character sets:
1. MANUFACTURER (ПРОИЗВОДИТЕЛЬ):
- Extract complete legal name
- Include organization type (ООО, АО etc.)
- Preserve original formatting
2. DOCUMENT NUMBER (НОМЕР ДОКУМЕНТА):
- Extract complete number maintaining original format
- Pay special attention to:
* Cyrillic characters (А-Я, а-я)
* Latin characters (A-Z, a-z)
* Numbers (0-9)
* Special characters (-, .)
- Preserve exact case of letters
3. DATES (ДАТЫ):
- Issue date (дата регистрации)
- Expiry date (действительна по)
- Format: DD.MM.YYYY
- Validate date format
4. ISSUING ORGANIZATION (ОРГАНИЗАЦИЯ):
- Extract complete legal name
- Include location if specified
- Maintain original spelling
5. DESCRIPTION (ОПИСАНИЕ):
- Extract document type and purpose
- Include scope of application
- Preserve key regulatory references



Structured Output схема (специально максимально скрыл данные в некоторых полях, считаю это уже интеллектуальной собственностью):
{
"type": "object",
"properties": {
"manufacturer": {
"type": "string",
"description": "..."
},
"document_number": {
"type": "string",
"description": "..."
},
"issue_date": {
"type": "string",
"description": "..."
},
"expiry_date": {
"type": "string",
"description": "..."
},
"issuing_organization": {
"type": "string",
"description": "..."
},
"description": {
"type": "string",
"description": "..."
}
},
"required": [
"manufacturer",
"document_number",
"issue_date",
"expiry_date",
"issuing_organization",
"description"
]
}



Так как мы запускаемся на VLLM, то у нас на сегодня есть три бэкенда для Structured Output. Но я использую xgrammar.

Конфиг железа:
1) 7b модель запущена на 4090
gpu_executor.py:80] Maximum concurrency for 20000 tokens per request: 3.82x



2) 72b модель в динамической FP8 влезает в одну H100, так что тут не густо по потокам, но хватает для анализа

gpu_executor.py:80] Maximum concurrency for 6000 tokens per request: 2.38x



А что по времени с on-premise

4 сек у 7b и 10 сек у 72b на одну страничку!

В картинку вынес сравнительную таблицу по стоимости(учитывая аренду сервера на месяц), скорости своим комментариям, и емкости взял за пример, что в сутки надо анализировать 20к документов.

Какие выводы можем сделать?
Если у вас огромные потоки данных для анализа в сутки от 10-20к в день, и вам очень важна секьюрность, то on-premise решения уже догоняют Cloud решения по многим характеристикам. Да начинаем с cloud (так как надо SO то пока что только openai)

Главное - грамотно подойти к настройке сервиса и железу (что мы и делаем для наших клиентов), именно разрабатываем выгодную стратегию использования LLM решений в контуре компаний клиентов!



tgoop.com/neuraldeep/1254
Create:
Last Update:

Всем привет!
Начнем этот год с бенчмарков on-premise VL и Cloud моделей и их производительности в анализе неструктурированных документов и извлечении данных из них через подход Structured output.

У нас сегодня открытые данные (таможенные декларации и неструктурированные документы): паспорта качества, СЭС-сертификаты, сертификаты пожарной безопасности. Все эти документы объединяет то, что они общедоступные и неструктурированные.

Соревнуются четыре модели: Qwen/Qwen2-VL-7B-Instruct и Qwen/Qwen2-VL-72B-Instruct (вторая запущена в динамической квантизации на 8FP.

А так же claude-3.5-sonnet и gpt-4o

Куда смотрим для понимания точности на метрику DocVQAtest

Qwen2-VL-7B: 94.5% (в сравнении с gpt-4o-mini)

Qwen2-VL-72B: 96.5% (в сравнении с моделями ниже)
GPT-4o: 92.8%
Claude-3.5 Sonnet: 95.2%

Итак, на вход у нас задача извлекать 5 типов данных:
1) Производитель
2) Номер документа
3) Даты
4) Организация, которая выдала
5) Описание

Примерный промпт, который мне понравился:

Analyze the document image and extract the following fields with special attention to mixed character sets:
1. MANUFACTURER (ПРОИЗВОДИТЕЛЬ):
- Extract complete legal name
- Include organization type (ООО, АО etc.)
- Preserve original formatting
2. DOCUMENT NUMBER (НОМЕР ДОКУМЕНТА):
- Extract complete number maintaining original format
- Pay special attention to:
* Cyrillic characters (А-Я, а-я)
* Latin characters (A-Z, a-z)
* Numbers (0-9)
* Special characters (-, .)
- Preserve exact case of letters
3. DATES (ДАТЫ):
- Issue date (дата регистрации)
- Expiry date (действительна по)
- Format: DD.MM.YYYY
- Validate date format
4. ISSUING ORGANIZATION (ОРГАНИЗАЦИЯ):
- Extract complete legal name
- Include location if specified
- Maintain original spelling
5. DESCRIPTION (ОПИСАНИЕ):
- Extract document type and purpose
- Include scope of application
- Preserve key regulatory references



Structured Output схема (специально максимально скрыл данные в некоторых полях, считаю это уже интеллектуальной собственностью):
{
"type": "object",
"properties": {
"manufacturer": {
"type": "string",
"description": "..."
},
"document_number": {
"type": "string",
"description": "..."
},
"issue_date": {
"type": "string",
"description": "..."
},
"expiry_date": {
"type": "string",
"description": "..."
},
"issuing_organization": {
"type": "string",
"description": "..."
},
"description": {
"type": "string",
"description": "..."
}
},
"required": [
"manufacturer",
"document_number",
"issue_date",
"expiry_date",
"issuing_organization",
"description"
]
}



Так как мы запускаемся на VLLM, то у нас на сегодня есть три бэкенда для Structured Output. Но я использую xgrammar.

Конфиг железа:
1) 7b модель запущена на 4090
gpu_executor.py:80] Maximum concurrency for 20000 tokens per request: 3.82x



2) 72b модель в динамической FP8 влезает в одну H100, так что тут не густо по потокам, но хватает для анализа

gpu_executor.py:80] Maximum concurrency for 6000 tokens per request: 2.38x



А что по времени с on-premise

4 сек у 7b и 10 сек у 72b на одну страничку!

В картинку вынес сравнительную таблицу по стоимости(учитывая аренду сервера на месяц), скорости своим комментариям, и емкости взял за пример, что в сутки надо анализировать 20к документов.

Какие выводы можем сделать?
Если у вас огромные потоки данных для анализа в сутки от 10-20к в день, и вам очень важна секьюрность, то on-premise решения уже догоняют Cloud решения по многим характеристикам. Да начинаем с cloud (так как надо SO то пока что только openai)

Главное - грамотно подойти к настройке сервиса и железу (что мы и делаем для наших клиентов), именно разрабатываем выгодную стратегию использования LLM решений в контуре компаний клиентов!

BY Neural Deep




Share with your friend now:
tgoop.com/neuraldeep/1254

View MORE
Open in Telegram


Telegram News

Date: |

End-to-end encryption is an important feature in messaging, as it's the first step in protecting users from surveillance. A new window will come up. Enter your channel name and bio. (See the character limits above.) Click “Create.” But a Telegram statement also said: "Any requests related to political censorship or limiting human rights such as the rights to free speech or assembly are not and will not be considered." Public channels are public to the internet, regardless of whether or not they are subscribed. A public channel is displayed in search results and has a short address (link). Select: Settings – Manage Channel – Administrators – Add administrator. From your list of subscribers, select the correct user. A new window will appear on the screen. Check the rights you’re willing to give to your administrator.
from us


Telegram Neural Deep
FROM American