对话式人工智能/自然语言处理

模型星期一:使用优化的 DePlot 模型查询图形

 

我们将在全年的每个星期一发布新模型。本周,我们发布了NVIDIA 优化的 DePlot 模型,您可以直接在浏览器中体验。

NVIDIA 基础模型和端点提供对社区和 NVIDIA 构建的一系列精心策划的生成式 AI 模型的访问权限,以便在企业应用程序中体验、自定义和部署。

如果您还没有尝试过领先的模型,如 NeMo-8B-QA, Mixtral 8X7B, Llama 2 (Jaguar 2), 和 Stable Diffusion, 现在可以在 NVIDIA AI Playground 中体验。

去图

视觉语言推理的一次飞跃:通过与大型语言模型 (LLM) 的结合,DePlot 能够理解和解释图表与图形。这种方法与之前经过端到端训练的多模态 LLM 不同,它将问题分解为以下步骤:

  • 使用预训练的图像到文本模型进行绘图到文本的转换
  • 使用 LLM 进行文本推理

具体来说,在第一步中,DePlot 是指图像到文本的 Transformer 模型,用于从图形到文本格式的模态转换。在第二步中,DePlot 生成的线性化表可作为提示的一部分直接提取到 LLM 中,以促进推理。

以前的先进 (SOTA) 模型需要至少数万个人工编写的示例来完成此类绘图或图表理解,同时在处理复杂查询时,其推理能力仍然受限。

采用这种即插即用的方法,我们的 DePlot™ LLM 管线在ChartQA基准测试中取得了显著成果,仅需一次提示即可完成任务,相较于之前的SOTA方法,表现更为出色!

Screenshot of the DePlot playground dashboard shows a bar chart with configuration settings.
图 1.DePlot 将图形转换为结构化表格

图 1 展示了 DePlot 如何将图形转换为结构化表格,可用作 LLM 回答基于推理的问题的上下文。现在就体验 DePlot

在浏览器中使用模型

现在,您可以通过浏览器上的简单用户界面直接体验“DePlot”,NGC 目录上的 DePlot playground.以下视频展示了在完全加速的堆栈上运行的模型所生成的结果。

视频 1. NVIDIA AI Foundation 模型接口

该视频展示了 NVIDIA AI Foundation 模型接口,该接口用于使用在完全加速的堆栈上运行的 DePlot 从图形中提取信息。

将模型与 API 结合使用

如果您想使用 API 测试模型,我们已经为您提供了帮助。在您登录NGC 目录后,您就可以访问 NVIDIA Cloud Credits。通过将应用程序连接到 API 端点,您可以真正大规模地体验模型。

以下 Python 示例使用base64并请求模块对绘图图像进行编码,并向 API 端点发出请求。在继续之前,请确保您拥有能够执行 Python 代码的环境,例如 Jupyter notebook。

获取 NGC 目录 API 密钥

API 选项卡中,选择生成密钥。如果您尚未注册,系统会提示您注册或登录。

在代码中设置 API 密钥:

# Will be used to issue requests to the endpoint 
API_KEY = “nvapi-xxxx“

以 base64 格式对图表或图形进行编码

要在请求中提供图像输入,您必须将其编码为base64格式。

# Fetch an example chart from ChartQA dataset 
!wget -cO -  https://raw.githubusercontent.com/vis-nlp/ChartQA/main/ChartQA%20Dataset/val/png/5090.png > chartQA-example.png 

# Encode the image into base64 format  
import base64 

with open(os.path.join(os.getcwd(), "chartQA-example.png"), "rb") as image_file: 
    encoded_string = base64.b64encode(image_file.read())

您可以选择可视化图表:

from IPython import display 
display.Image(base64.b64decode(encoded_string))
Bar chart show the breakdown of support for government economic assistance across various European countries. This example chart is used to feed the model and generate values as a table.
图 2.生成表值的 Barchart 示例

发送推理请求

import requests   

invoke_url = "https://api.nvcf.nvidia.com/v2/nvcf/pexec/functions/3bc390c7-eeec-40f7-a64d-0c6a719985f7" 
fetch_url_format = "https://api.nvcf.nvidia.com/v2/nvcf/pexec/status/" 

# Ensure that you have configured API_KEY 
headers = { 
    "Authorization": "Bearer {}".format(API_KEY), 
    "Accept": "application/json", 
} 

# To re-use connections 
session = requests.Session()  

# The payload consists of a base64 encoded image accompanied by header text. 
payload = { 
  "messages": [ 
    { 
        "content": "Generate underlying data table of the figure below:<img src=\"data:image/png;base64,{}\" />".format(encoded_string.decode('UTF-8')), 
        "role": "user" 
    } 
  ], 
  "temperature": 0.1, 
  "top_p": 0.7, 
  "max_tokens": 1024, 
  "stream": False 
} 

response = session.post(invoke_url, headers=headers, json=payload)   

while response.status_code == 202: 
    request_id = response.headers.get("NVCF-REQID") 
    fetch_url = fetch_url_format + request_id 
    response = session.get(fetch_url, headers=headers) 

response.raise_for_status() 
response_body = response.json() 
print(response_body)

输出如下所示:

{'id': '4423f30d-2d88-495d-83cc-710da97889e3', 'choices': [{'index': 0, 'message': {'role': 'assistant', 'content': "Entity | Individuals responsibility | Government's responsibility <0x0A> MEDIAN | 39.0 | 55.0 <0x0A> Germany | nan | 35.0 <0x0A> UK | 45.0 | 49.0 <0x0A> Sweden | 37.0 | 53.0 <0x0A> Denmark | 42.0 | 54.0 <0x0A> France | 38.0 | 55.0 <0x0A> Netherla nns | 40.0 | 58.0 <0x0A> Spain | 29.0 | 63.0 <0x0A> Italy | 22.0 | 74.0"}, 'finish_reason': 'stop'}], 'usage': {'completion_tokens': 149, 'prompt_tokens': 0, 'total_tokens': 149}} 

响应体包括 DePlot 的输出以及其他元数据。输出以 Markdown 格式的文本序列(带分隔符)从左到右自动生成-, |以及<0x0A>(换行)。

可视化输出表

response_table = response_body['choices'][0]['message']['content'] 

# Replace the <0x0A> with \n for better readability 
print(response_table.replace("<0x0A>", "\n")) 

输出如下所示:

Entity | Individuals responsibility | Government's responsibility  
MEDIAN | 39.0 | 55.0  
Germany | nan | 35.0  
UK | 45.0 | 49.0  
Sweden | 37.0 | 53.0  
Denmark | 42.0 | 54.0  
France | 38.0 | 55.0  
Netherla nns | 40.0 | 58.0  
Spain | 29.0 | 63.0  
Italy | 22.0 | 74.0

在这种情况下,响应基本上是准确的。此输出可作为 LLM 输入上下文的一部分,用于问答 (QA) 等下游任务。

适用于模型部署的企业级 AI 运行时

当 AI 模型准备好为业务运营部署时,安全性、可靠性和企业支持至关重要。

NVIDIA AI Enterprise 是一个端到端的 AI 运行时软件平台,旨在加速数据科学流程,并简化生产级生成式 AI 应用的开发和部署。

NVIDIA AI Enterprise 提供安全性、支持、稳定性和可管理性,以提高 AI 团队的工作效率,降低 AI 基础架构的总成本,并确保从 POC 到生产的平稳过渡。

开始使用

尝试通过 UI 或 API 使用 DePlot 模型. 如果此模型适合您的应用,请使用 NVIDIA TensorRT-LLM.

如果您正在构建企业应用程序,请注册 NVIDIA AI Enterprise 试用版,以获得将您的应用投入生产所需的支持。

 

Tags