ollama 0.7 发布,新引擎支持多模态模型
简介
Ollama 发布大版本 v0.7.0
,包括新的模型引擎,支持多模态大模型:
升级 ollama
v0.7.0
及以上版本的 ollama 才支持多模态模型,如果版本低于 v0.7.0,需要先升级 ollama。
以 Linux 为例:
- 下载
wget https://github.com/ollama/ollama/releases/download/v0.7.0/ollama-linux-amd64.tgz
- 停掉 ollama server
sudo systemctl stop ollama
- 删除旧版本库文件
sudo rm -rf /usr/lib/ollama
- 启动 ollama
sudo systemctl start ollama
示例
以qwen2.5vl
模型为例子,先下载模型:
$ ollama pull qwen2.5vl
pulling manifest
pulling a99b7f834d75: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 6.0 GB
pulling a242d8dfdc8f: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 487 B
pulling 75357d685f23: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 28 B
pulling 832dd9e00a68: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 11 KB
pulling 52d2a7aa3a38: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 23 B
pulling 83b9da835d9f: 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 567 B
verifying sha256 digest
writing manifest
success
>>> ./spring-couplets.jpg what is content in this picture?
Added image './spring-couplets.jpg'
The image appears to be a set of Chinese New Year decorations, specifically red couplets and a central piece with the character "福" (fú), which means
"blessing" or "good fortune." The couplets and the central piece contain various phrases in Chinese, which are wishes for good fortune, happiness, and
prosperity. Here are some of the phrases:
- "家和国盛" (jiā hé guó shèng): "Family harmony and country prosperity."
- "和气生财" (hé qì shēng cái): "Harmony brings wealth."
- "平安社会" (pái ān shè huì): "Peaceful society."
- "生活人人舒畅" (shēnghuó rén rén shū chàng): "Everyone enjoys a comfortable life."
- "新春" (chūn xīn): "New Year."
- "辞旧迎新" (cí jiù yíng xīn): "Bid farewell to the old and welcome the new."
These phrases are commonly used in Chinese New Year decorations to express wishes for a prosperous and harmonious year ahead.
新版多模态引擎
问题
目前为止,Ollama 主要依赖于
ggml-org/llama.cpp
项目以支持模型,并将重点放在了使用便捷性
和模型的可移植性
上。
随着大型研究实验室陆续发布更多多模态模型,按照 Ollama 的设想来支持这些多模态模型变得越来越具有挑战性。
我们决定支持一个新引擎,该引擎能让多模态模型成为一等公民,并促使 Ollama 的合作伙伴直接为社区做出贡献——即通过 GGML 张量库。
因此,ollama 的目标是改善本地推理(local inference)的可靠性和准确性,并为未来可能支持的功能(如语音、图像生成和视频生成等)打下基础。比如语音、图像生成、视频生成、长上下文支持等。
模型规范
目标是确保每个模型的“影响范围”仅限于自身,以提高可靠性并使创作者和开发者更容易整合新模型。
ggml/llama.cpp 为文本模型提供了一流的支持
。然而,在多模态系统中,文本解码器
和视觉编码器
被分割成独立模型并单独执行。因此,将视觉模型的图像嵌入传递给文本模型需要在交互层中实现特定于模型的逻辑,这可能会破坏特定模型的实现。
如何改进呢?
在 Ollama 中,每个模型都是完全自包含的,并且可以暴露自己的投影层,与该模型训练方式对齐。这种隔离允许模型创建者训练和发布模型,而无需打补丁或添加嵌套的 if 语句处理不同的情况(文本和图像),模型创建者可以专注于自己的模型及其训练。
准确性
大型图像会产生大量令牌,可能超过批处理大小。Ollama 在处理图像时添加元数据来帮助提高准确性。
示例问题与解决方案:
- 是否应启用/禁用注意力?
- 是否可能将图像嵌入分为批处理进行处理?如果有可能,请考虑输出质量以及用于推理的计算时间,分隔点是什么?错误放置会导致输出质量下降。
大多数本地推理工具以不同的方式实施此功能;虽然可能达到类似的结果,但并不遵循模型的设计和训练方式。
内存管理
图像缓存:Ollama 将图像缓存起来,以便后续提示更快。在使用过程中,图像仍保留在缓存中,并不会因为内存清理限制而被丢弃。
内存估计与 KV 缓存优化:
- Ollama 与硬件制造商和操作系统伙伴合作,以确保检测到正确的硬件元数据,从而更好地估算并优化内存使用。
- Ollama 进行了 KV 缓存优化,以提高内存的高效使用方式。
未来规划
- 支持更长的上下文大小
- 支持思考/推理能力
- 实现流式响应时的工具调用
- 允许计算机使用
总结
Ollama 发布的 0.7.0 版本,不仅支持多模态模型,而且发布了新的模型引擎,公布了未来的特性蓝图。
Ollama 将实现模型的标准化,不同的开源模型提供商/研究机构只需要发布模型,模型的推理由 ollama 实现,这也是为什么要发布单独的引擎了。