Ollama 主要是指用于在本地处理大型语言模型 (LLM) 的框架和库。用于在本地运行 LLM 的框架: Ollama 是一个轻量级且可扩展的框架,可让您在自己的计算机上轻松运行大型语言模型,如 Llama 2、Mistral 和 Gemma。这对于想要尝试 LLM 的开发人员或想要在受控环境中研究其行为的研究人员非常有用。
什么是 Ollama?
Ollama 可让您获取开源模型以供本地使用。它会自动从最佳来源获取模型,如果您的计算机具有专用 GPU,它会无缝地使用 GPU 加速,而无需手动配置。通过修改提示可以轻松实现自定义模型,而 Langchain 不是此操作的先决条件。此外,Ollama 可以作为 docker 映像访问,允许您将个性化模型部署为 docker 容器。
框架
Ollama 提供了一种轻量级且用户友好的方式,可以在您自己的计算机上设置和运行各种开源 LLM。这消除了对复杂配置或依赖外部服务器的需求,使其成为各种用途的理想选择:
开发:它允许开发人员对 LLM 项目进行快速实验和迭代,而无需将其部署到云端。
研究:研究人员可以使用 Ollama 在受控环境中研究 LLM 行为,从而进行深入分析。
隐私:在本地运行 LLM 可确保您的数据不会离开您的机器,这对于敏感信息至关重要。
Ollama框架:
设置简单: Ollama 无需复杂的配置文件或部署。其模型文件定义了模型权重、配置和数据等必要组件,从而简化了设置过程。
定制: Ollama 允许您定制 LLM 体验。您可以调整批量大小、序列长度和波束搜索设置等参数,以根据您的特定需求微调模型。
多 GPU 支持: Ollama 可以利用您机器上的多个 GPU,从而加快推理速度并提高资源密集型任务的性能。
可扩展架构:该框架采用模块化和可扩展的设计。您可以轻松集成自己的自定义模块或探索社区开发的插件来扩展功能。
Library:
Ollama 附带一个预先构建的经过训练的语言模型库,例如:
Llama 2:一种大型语言模型,能够执行文本生成、翻译和问答等各种任务。
Mistral:一种基于海量文本和代码数据集训练的事实语言模型。
Gemma:一种为参与对话而设计的对话语言模型。
LLaVA:针对聊天和指导用例进行训练的强大模型。
该库允许您轻松地将这些预先训练的模型集成到您的应用程序中,无需从头开始训练它们,从而节省时间和资源。
Ollama 的功能
易于使用:
安装简单: Ollama 采用预定义的“模型文件”,消除了复杂的配置,即使技术知识有限的用户也可以进行安装和设置。
用户友好型 API: Ollama 通过简单的 API 与预先训练的模型交互,允许开发人员轻松地将 LLM 集成到他们的 Python 应用程序中。
可扩展性:
可定制模型: Ollama 允许调整各种参数,使用户能够根据特定任务和偏好对模型进行微调。
模块化架构:该框架支持自定义模块和社区开发的插件,便于根据个人需求进行扩展和定制。
强大的功能:
预训练模型: Ollama 提供了一个预训练的 LLM 库,能够执行多种任务,例如文本生成、翻译、问答和代码生成。
本地执行: LLM 完全在您的机器上运行,无需云部署并确保数据隐私。
多 GPU 支持: Ollama 利用多个 GPU 实现更快的推理并提高资源密集型任务的性能。
开源与协作:
免费提供: Ollama 的开源特性允许任何人都为其发展做出贡献并从社区驱动的改进中受益。
不断发展: Ollama 积极维护,并定期发布持续更新和增强功能。
附加功能:
轻量级: Ollama运行高效,适合硬件资源有限的计算机。
离线功能:即使没有互联网连接也可以使用预先训练的模型,提供灵活性和可访问性。
Windows 中的 Ollama:
Ollama现已在 Windows 上提供安装版,让您能够以全新的原生 Windows 体验提取、运行和创建大型语言模型。Windows 上的 Ollama 包括内置 GPU 加速、完整模型库访问权限以及包括OpenAI 兼容性的Ollama API 。
硬件加速
Ollama 使用 NVIDIA GPU 以及现代 CPU 指令集(如 AVX 和 AVX2,如果可用)来加速运行模型。无需配置或虚拟化!
完全访问模型库
完整的 Ollama模型库可在 Windows 上运行,包括视觉模型。运行LLaVA 1.6等视觉模型时,可以将图像拖放ollama run到消息中。
始终开启 Ollama API
Ollama 的 API 自动在后台运行,服务于http://localhost:11434。工具和应用程序无需任何额外设置即可连接到它。
例如,以下是使用 PowerShell 调用 Ollama 的 API 的方法:
(Invoke-WebRequest -method POST -Body '{"model":"llama2", "prompt":"Why is the sky blue?", "stream": false}' -uri http://localhost:11434/api/generate ).Content | ConvertFrom-json
Windows 上的 Ollama 也支持与其他平台相同的OpenAI 兼容性,从而可以通过 Ollama 将为 OpenAI 构建的现有工具与本地模型一起使用。
要开始使用 Windows 预览版中的 Ollama:
在 Windows 上下载Ollama
双击安装程序,OllamaSetup.exe
安装后,打开您喜欢的终端并运行ollama run llama2以运行模型
当有新版本发布时,Ollama 将会提示更新。
ollama 服务
此命令将启动 Ollama 服务器,使下载的模型可通过 API访问。这样,您就可以通过各种应用程序(如 Web 浏览器、移动应用或自定义脚本)与模型进行交互。
打个比方:假设 Ollama 是一个存放您的书籍(LLM)的图书馆。当您运行 时ollama serve,就像打开了图书馆,让任何人都可以通过图书馆的系统(API)阅读(交互)这些书籍。
ollama 运行 phi
此命令专门用于在本地机器上下载和运行“phi”模型。“phi”是指 Ollama 库中可用的预训练 LLM,其功能与 GPT-3 类似。
这里是类比扩展:如果ollama serve打开图书馆,ollama run phi就像向图书管理员(Ollama)请求一本特定的书(phi),然后在图书馆(您的本地机器)内阅读它(运行模型)。
ollama serve需要预先下载模型。用于ollama pull <model_name>下载特定模型。
ollama run phi专门下载并运行“phi”模型。
ollama serve用于通过 API提供对下载的模型的访问ollama run phi,同时专注于在本地运行单个模型。
常规命令
ollama list:列出系统上所有下载的模型。
ollama rm <model_name>:从您的系统中删除已下载的模型。
ollama cp <model_name1> <model_name2>:使用新名称创建已下载模型的副本。
ollama info <model_name>:显示已下载模型的信息。
ollama help:为所有可用命令提供帮助文档。
模型管理
ollama pull <model_name>:从 Ollama 模型中心下载模型。
运行模型
ollama run <model_name>:在本地运行下载的模型。
ollama serve:启动 Ollama 服务器,通过 API 访问下载的模型。
附加命令
ollama update:将Ollama更新到最新版本。
ollama config:管理 Ollama 配置设置。
Ollama 通过 Langchain 对话
from langchain_community.llms import Ollama
llm = Ollama(model="llama2")
llm.invoke("Tell me a joke")
"Sure! Here's a quick one:\n\nWhy don't scientists trust atoms?\nBecause they make up everything!\n\nI hope that brought a smile to your face!"
要流式传输令牌,请使用下列.stream(...)
方法:
query = "Tell me a joke"
for chunks in llm.stream(query):
print(chunks)
S
ure
,
here
'
s
one
:
Why
don
'
t
scient
ists
trust
atoms
?
B
ecause
they
make
up
everything
!
I
hope
you
found
that
am
using
!
Do
you
want
to
hear
another
one
?
多模式
Ollama 支持多模式 LLM,例如bakllava和llava。
ollama pull bakllava
请务必更新 Ollama,以便您拥有最新版本来支持多模式。
from langchain_community.llms import Ollama
bakllava = Ollama(model="bakllava")
import base64
from io import BytesIO
from IPython.display import HTML, display
from PIL import Image
def convert_to_base64(pil_image):
"""
Convert PIL images to Base64 encoded strings
:param pil_image: PIL image
:return: Re-sized Base64 string
"""
buffered = BytesIO()
pil_image.save(buffered, format="JPEG") # You can change the format if needed
img_str = base64.b64encode(buffered.getvalue()).decode("utf-8")
return img_str
def plt_img_base64(img_base64):
"""
Display base64 encoded string as image
:param img_base64: Base64 string
"""
# Create an HTML img tag with the base64 string as the source
image_html = f'<img src="data:image/jpeg;base64,{img_base64}" />'
# Display the image by rendering the HTML
display(HTML(image_html))
file_path = "../../../static/img/ollama_example_img.jpg"
pil_image = Image.open(file_path)
image_b64 = convert_to_base64(pil_image)
plt_img_base64(image_b64)
llm_with_image_context = bakllava.bind(images=[image_b64]) llm_with_image_context.invoke("What is the dollar based gross retention rate:") '90%'
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。