Ollama部署LLaVA多模态大模型集成SpringBoot

Ollama部署LLaVA多模态大模型集成SpringBoot

1. 概述

上一篇测试了在window下部署本地llama7b模型的测试效果,这一篇旨在记录部署LLaVA,大型语言和视觉助手 (LLaVA),这是一个端到端训练的大型多模态模型,它连接视觉编码器LLM,用于通用的视觉和语言理解。
在这里插入图片描述

2. 安装LLaVA

安装ollama过程可以参考《初探Ollama部署llama3集成SpringAI
打开在powershell, 输入如下命令,这里我选用的llava 13b模型在这里插入图片描述

3. 与Spring AI进行集成

3.1 部署环境

  • 创建Spring Maven环境 https://start.spring.io/
  • Java JDK 21
  • Spring Boot 3.2.5
  • ollama

3.2 配置URL模型

我们在application.yml中配置模型内容

spring:
  application:
    name: spring-ai-ollama-llava-demo
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        options:
          model: llava:13b
          temperature: 0.7
server
### 部署 LLaVA 模型于 AutoDL 平台 #### 所需环境准备 为了顺利部署 LLaVA 模型,在 AutoDL 上需要预先安装一系列必要的软件包和库。这通常涉及 Python 环境及其版本的选择,推荐使用 Python 3.8 或以上版本[^1]。 #### 安装依赖项 通过 pip 工具来管理项目所需的各种第三方库是一个常见做法。对于 LLaVA 而言,除了基础的 PyTorch 外,还需要额外安装 transformers 库以及其他可能由特定模型架构所决定的支持库。可以创建一个新的虚拟环境并执行如下命令: ```bash pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117 pip install transformers datasets accelerate bitsandbytes safetensors ``` 这些操作确保了运行环境中具备处理大型语言模型的能力,并能够加载来自 Hugging Face 社区共享资源中的预训练权重文件。 #### 数据集准备 考虑到 LLaVA 对输入数据有着特殊的要求——即不仅限于纯文本序列,还包括图像信息作为上下文的一部分。因此,在上传至 AutoDL 前,应当按照官方文档指示调整好本地存储结构,使得每条记录都包含了对应的图片路径或 URL 及其关联的文字描述。这种格式化过程有助于简化后续推理阶段的数据读取逻辑。 #### 加载预训练模型与微调设置 借助 XTuner 提供的技术手段,已经针对不同应用场景优化过的多个变体可供挑选。例如 `LLaVA-InternLM2-20B` 这样的高性能实例可以直接从公开仓库获取到相应的 checkpoint 文件。接着便是依据实际业务目标选取合适的迁移学习策略(如 QLoRA、LoRA),并通过修改配置文件指定待更新层的位置及范围。 #### 推理服务构建 最后一步则是编写一段简洁的服务端代码片段用于接收外部请求并将预测结果返回给客户端应用。这里给出一个基于 Flask 框架实现 RESTful API 的简单例子: ```python from flask import Flask, request, jsonify import torch from PIL import Image from transformers import pipeline app = Flask(__name__) device = "cuda" if torch.cuda.is_available() else "cpu" model_name_or_path = "./path_to_your_model_directory" image_captioning_pipeline = pipeline( task="image-to-text", model=model_name_or_path, device=0 if device=="cuda" else -1) @app.route('/predict', methods=['POST']) def predict(): img_url = request.json.get('img_url') image = Image.open(requests.get(img_url, stream=True).raw) output = image_captioning_pipeline(image)[0]['generated_text'] return jsonify({"caption":output}) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) ``` 上述脚本展示了如何集成已有的多模态能力进入 Web Service 中去,从而允许远程用户提交包含链接指向某张照片的消息体后获得即时反馈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值