OpenAI最新的GPT-4V的多模态API接口是如何计算tokens的?这些计算逻辑背后透露了GPT-4V什么样的模型架构信息?
OpenAI在发布了多模态的GPT-4V(GPT-4 with Vision)的接口,可以实现图像理解的功能(Image-to-Text
)。这是OpenAI的第一个多模态接口,在以前的接口中,OpenAI都是文本大模型,相关的费用计算都是按照输入输出的tokens计算,虽然与一个单词多少钱有一点差异,但是也算直观。而GPT-4V是一个图像理解的接口,这里的费用计算不像文本的tokens那么直观,那么这个接口的费用计算逻辑是什么?这个计算逻辑透露了什么样的模型架构信息?本文将介绍这个问题。

GPT-4V接口gpt-4-vision-preview简介
GPT-4V全称是GPT-4 with Vision,是一个多模态的能力,它可以理解图片,为用户解析图片并回答图片相关的问题。
GPT-4V可以准确理解图像的内容,识别图像中物体、计算物体的数量、提供图片相关的洞察和信息、提取文本等。更为强大的是,它可以识别表格转化成markdown格式,也可以针对柱状图等信息图表进行分析。
早先,GPT-4V刚推出的时候只有Web版本可以使用。在2023年11月6日,OpenAI官方推出了gpt-4-vision-preview
版本接口,大家可以调用接口实现图像的理解。
与纯文本的大语言模型不同的是,图像的理解包含图片的解析,这部分无法单纯使用文本的tokens计算输入,而官方则是通过图像的清晰度(像素)来计算的。
gpt-4-vision-preview接口的计算逻辑
与此前的文本数据类似,gpt-4-vision-preview也是按照输入和输出的tokens计算。如下所示:
模型名称 | 输入费用 | 输出费用 |
---|---|---|
gpt-4-vision-preview | $0.01 / 1K tokens | $0.03 / 1K tokens |
但是由于多了图像的输入,因此需要先将图像转换成tokens计算。而图像的转换官方提供了一个计算逻辑,是按照图像区域计算,在官方的文档中一个图像的512*512像素区域(tile)算作170个tokens。每个图片需要额外增加一个固定的85个tokens。
举个例子来说,如果你输入一个150px × 150px的图像,那么它的tokens和输入费用计算如下:
计算项 | 计算结果 |
---|---|
每1000个tokens费用(固定) | 0.01美元 |
512 × 512区域(tiles) | 1 × 1 |
总的区域(tiles)数量 | 1 |
基本tokens | 85 |
区域(tiles)包含的tokens | 170*1 |
总的tokens | 170+85 = 255 |
总的费用 | 255*0.01/1000 = 0.00255美元 |
可以看到,一个150px × 150px的图像输入价格是0.00255美元。这里最核心的就是区域(tiles)计算。这里是长*宽的像素数计算的。因此,如果你的图片变成513*150,由于长超过了512,向上取整,那么这里就是2*1是2个区域,上面的tokens就变成2*170+85=425,最终的费用就是0.00425美元。如果是513*513大小,那么区域(tiles)就是4个了,最终的tokens就是4*170+85=765个tokens。
gpt-4-vision-preview接口的计算逻辑透露了什么信息
这里有2个非常明显的计算逻辑,有 gpt-4-vision-preview接口背后的GPT-4V模型有明显关系,一个即使基本的tokens数量85,就是不论什么图片都有一个85个基本tokens不变。另一个就是512×512的图像区域。
从这些信息中,有人有如下关于模型的猜测:
GPT-4V模型架构猜测1
图像的tokens计算逻辑是按照图像分辨率来的,这意味着GPT-4V本身应该没有OCR的逻辑叠加,因为OCR通常用于从图像中提取文本,然后这些文本可以被用作模型的输入。这可能意味着GPT-4V没有叠加OCR流程。
对于任何大小的图像都有一个85个tokens的基本计量,那是不是可能是因为模型有某一个固定的encoder可以输出85个tokens结果?85不是2的平方或者幂,非常奇怪,应该与编码过程或者特定算法有关。
按照512×512都算作一个区域(tile),固定计算为170个tokens,那么系统应该是对图像分块,每一块固定输入一个encoder,是否可能是13×13+1的这种层结构?
按照这些猜测,GPT-4V是否可能是像某种全局encoder输出85个tokens结果,外加按照512×512区域进行encoder?
GPT-4V模型架构猜测2
当然,也有人有不同的想法,例如85个固定tokens也可能是9*9 Small Patches + 2*2 Big Patches的encoder结构。
GPT-4V模型架构猜测3
还有人认为这个计算逻辑和Fuyu-8b模型类似。Fuyu-8b是由AdeptAI开发的多模态大模型,是一个Decoder-Only的Transformer多模态模型。在Fuyu-8B模型中,”image patch”是指将输入图像划分为一系列小块或”patch”。这些图像块可以被模型单独处理,然后再将结果合并以生成最终的输出。
这种方法允许模型处理任意大小的图像,因为每个图像块都可以独立地映射到Transformer的第一层。这种处理方式不仅简化了模型的架构,还提高了处理效率,使得模型能够快速响应大图像。这就是Fuyu-8B模型中”image patch”的概念。
而在Fuyu-8b中,模型架构也是image-to-token的概念,把image tokens当作text tokens。例如,每一个图像都有个特定与图像相关的换行符,称为image-newline,让模型直到图像的结束位置,而这个逻辑与前面的计算逻辑十分吻合。例如固定的85=8×8+1,每个图像区域(tile)的tokens数量170=13×13+1,几乎都是图像区域加一个结束分隔符!。
当然,这些都是纯粹的猜测,或许我们永远都不知道GPT-4V背后的架构。
欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
