ollama 大预言模型与多模态模型使用

官网链接:

Ollama | 🦜️🔗 LangChain

 一、概述 

LangChain Ollama 是一个基于大型语言模型的系统,旨在通过结合多个先进的技术来提升自然语言处理(NLP)任务的性能。这个系统可能集成了多种微调技术,如LoRA、Adapter Tuning、Prefix-tuning、Prompt-tuning 等,以适应特定的任务需求。下面是LangChain Ollama系统的一些可能特点:

  1. 多技术融合:LangChain Ollama可能结合了多种微调技术,以便更好地适应不同的任务和数据集。例如,它可能使用LoRA来减少训练参数的数量,同时利用Adapter Tuning来在不改变原始模型参数的前提下适应新任务。

  2. 灵活性和适应性:这个系统可能设计为高度灵活和适应性强,能够根据不同的任务需求快速调整模型的行为。这种适应性可能通过引入额外的线性层、调整模型的权重分布或在输入数据中加入可学习的向量等方式实现。

  3. 高效的资源利用:LangChain Ollama可能注重计算资源的有效利用,通过参数高效的微调方法减少对计算资源的需求。这使得即使是计算资源有限的研究者和开发者也能够利用大型预训练模型。

  4. 易于部署和使用:系统可能提供了易于使用的接口和工具,使得非专业人士也能够轻松地部署和使用大型语言模型。这可能包括简化的模型微调流程、一键式部署选项和用户友好的交互界面。

  5. 持续的学习和优化:LangChain Ollama可能具备持续学习和优化的能力,能够根据新的数据和反馈不断改进模型的性能。这可能涉及到在线学习、迁移学习或其他先进的机器学习技术。

  6. 广泛的应用场景:由于其高度的灵活性和适应性,LangChain Ollama可能适用于多种NLP任务,包括文本分类、情感分析、机器翻译、问答系统和文本生成等。

二、LLM模型的应用

#加载Ollama
from langchain_community.llms import Ollama

#加载模型
llm = Ollama(model="llama2")

#基础的对话 invoke
print(llm.invoke("Tell me a joke"))
返回:
'Why did the tomato turn red? Because it saw the salad dressing!'

流式输出的展示:

#查看代码的流式输出

#promt
query = "Tell me a joke"

#输出
list_chunks = []
for chunks in llm.stream(query):
    list_chunks.append(chunks)


# 将列表中的元素转换为字符串
str_list = [item.strip() for item in cleaned_list]

# 使用join方法将字符串列表中的元素连接成一个字符串
horizontal_list = " ".join(str_list)

# 将结果转换为列表格式
horizontal_list = horizontal_list.split()

print(horizontal_list)
返回:
['Why', 'don', "'", 't', 'scient', 'ists', 'trust', 'atoms', '?', 'Because', 'they', 'make', 'up', 'everything', '!', '😂']

三、多模态模型的应用 

#加载依赖
from langchain_community.llms import Ollama
#加载图像识别的多模态模型
bakllava = Ollama(model="bakllava")

Baklava

        Baklava 是一种多模态模型,它结合了文本和图像数据的处理能力,以提供更为丰富和综合的信息理解和生成能力。多模态模型是指能够处理并理解多种不同类型数据(如文本、图像、声音等)的人工智能模型。Baklava 通过整合视觉和语言处理技术,使得模型能够更好地理解上下文信息,并在生成响应时考虑到图像内容。

        在多模态学习中,Baklava 模型可能会使用图像识别技术来分析和理解输入的图像数据,同时结合自然语言处理技术来解析和生成文本。这种结合使得 Baklava 能够在执行任务时,如图像标注、视觉问答(Visual Question Answering, VQA)、图像描述生成等,提供更为准确和细致的答案。

        Baklava 模型的一个关键优势在于其能够捕捉到不同模态之间的关联信息。例如,在视觉问答任务中,模型不仅需要理解问题的文本内容,还需要分析图像中的相关视觉信息,以生成准确的答案。这种跨模态的信息融合是多模态学习的核心,也是 Baklava 模型设计的重点。

        此外,Baklava 模型可能采用了一些先进的深度学习架构,如 Transformer,来处理序列数据,并利用注意力机制(Attention Mechanism)来聚焦于输入数据中的关键部分。这些技术的应用使得 Baklava 能够在处理复杂的多模态任务时表现出色。

#加载依赖
import base64 #加载数据编码格式
from io import BytesIO #用于处理二进制数据流。BytesIO对象提供了一个类似文件的行为

from IPython.display import HTML, display
from PIL import Image #图像处理模块,加载保存裁剪等


def convert_to_base64(pil_image):
    """
    将PIL图像转换为Base64编码字符串
    """

    #实例化
    buffered = BytesIO()
    #用于将图像保存到一个二进制缓冲区中,并指定保存的格式为JPEG
    pil_image.save(buffered, format="JPEG")  
    #将二进制缓冲区`buffered`中的数据进行Base64编码
    #并将编码后的数据转换为UTF-8编码的字符串形式
    img_str = base64.b64encode(buffered.getvalue()).decode("utf-8")
    return img_str


def plt_img_base64(img_base64):
    """
    将base64编码字符串显示为图像
    """
    # 创建一个以base64字符串为源的HTML img标记
    image_html = f'<img src="data:image/jpeg;base64,{img_base64}" />'
    # 通过呈现HTML显示图像
    display(HTML(image_html))
#图片所在地址
file_path = "./ollama_example_img.jpg" 

#打开图片
pil_image = Image.open(file_path)

#创建base64格式的存储
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%

 上面的流程为使用ollama 进行对多模态模型的应用,通过大模型来理解图片中的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值