• 本地部署体验LISA模型(LISA≈图像分割基础模型SAM+多模态大语言模型LLaVA)


    在这里插入图片描述

    GitHub地址:https://github.com/dvlab-research/LISA
    该项目论文paper reading:https://blog.csdn.net/Transfattyacids/article/details/132254770

    在GitHub上下载源文件,进入下载的文件夹,打开该地址下的命令控制台,执行指令:

    pip install -r requirements.txt
    pip install flash-attn --no-build-isolation
    
    • 1
    • 2

    几种报错解决方法:

    1. 下载包失败
      例:“pip install numpy”
      解决:“pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple/”
      其他源:
      清华: https://pypi.tuna.tsinghua.edu.cn/simple/
      阿里云: http://mirrors.aliyun.com/pypi/simple/
      豆瓣:https://pypi.doubanio.com/simple

    2. 安装包版本冲突
      例:“tensorflow-intel 2.12.0 requires numpy<1.24,>=1.22, but you have numpy 1.24.2 which is incompatible.”
      解决:带上具体版本号,如“pip install numpy==1.23”

    3. 就是下不下来
      例: “ERROR: Could not build wheels for XXX, which is required to install pyproject.toml-based projects”
      解决:去网站下安装包,“.whl”文件到本地安装,列几个下载网站:
      https://download.pytorch.org/whl/
      https://pypi.org/project

    (除了这2个,法1中的3个源也可以使用)
    (还是下不下来,去对应包的GitHub,下载对应版本的releases)
    下载完后执行:pip install file_name.whl(file_name是绝对地址)

    之前https://www.lfd.uci.edu/~gohlke/pythonlibs/也可以下载whl,现在点进去是这样的下不了了
    在这里插入图片描述
    4. 还有一个很奇怪的方法:conda install -c conda-forge XXX

    • 下载预训练权重

    如果想要自训练:

    LLaVA:https://huggingface.co/decapoda-research
    SAM:https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth
    
    • 1
    • 2

    直接使用提供的权重:

    LISA:https://huggingface.co/xinlai
    
    • 1

    有6个版本
    在这里插入图片描述
    我下载了LISA-13B-llama2-v0-explanatory(别下这个,我当时是因为作者只发布了两个版本,才下的,后面没用上,要下就选择v1的版本,内存大的下13B,小的下7B)

    在这里插入图片描述

    要用梯子,大文件要使用LFS,git clone不能克隆需要LFS的文件,大文件我都是一个个单独下的(漫长的下载过程orz

    记得修改chat.py里权重的地址(图中第20行)
    在这里插入图片描述

    • 运行chat.py

    不出意料的报错了
    在这里插入图片描述

    模型加载不成功,应该归因于我过小的内存orz,借了一个云服务器

    尝试运行的过程就是不断产生新的错误orz

    这里不将遇到的报错一一罗列(太多太杂了),只展示遇到的最后两个error,uu们如果有其他问题可以在评论区提出了,我看到了且会解决的,就回复。

    下面先展示一下我使用的云服务器的配置

    • 虚拟机
    • 显卡 在这里插入图片描述
    • python版本 在这里插入图片描述
    • torch和torchvision
      在这里插入图片描述

    • ERORR_1:在这里插入图片描述
      原因: 我刚拿到时cuda版本(如图)与PyThorch不兼容在这里插入图片描述
      解决: 升级CUDA(以及driver)的版本
    # 禁用现有NVIDIA驱动程序并卸载
    sudo systemctl stop nvidia-persistenced
    sudo systemctl stop nvidia-fabricmanager
    sudo apt-get remove --purge '^nvidia-.*'
    # 关闭xserver
    systemctl stop gdm.service
    # 下载对应的CUDA包
    wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
    # 安装(一路默认安装)
    sudo sh cuda_11.7.0_515.43.04_linux.run
    # 安装完毕后,启动X Server
    systemctl start gdm.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • ERROR_2:在这里插入图片描述
      谁能想到还是报OutOfMemoryError了呢orz(我说怎么就给我用了呢)
      超出内存一般有几种解决办法

      1. 减少模型的大小: 可以考虑减少模型的大小,例如通过选择更小的模型、减少模型的层数或通道数等方式,来降低内存需求。
      2. 减少批量大小:尝试减少输入数据的批量大小,降低每次前向计算所需的内存。可以尝试减小batch_size参数的值。
      3. 释放不需要的显存:在某些情况下,可能存在一些不需要的显存被占用,可以使用torch.cuda.empty_cache() 来释放不需要的显存。
      4. 启用混合精度训练:可以尝试启用混合精度训练,即使用半精度浮点数 (torch.float16 代替默认的单精度浮点数 (torch.float32。这可以显著降低内存使用,但可能会影响模型的训练效果。
      5. 调整 PyTorch 内存管理设置:可以尝试调整 PyTorch 的内存管理设置,例如通过设置max_split_size_mb 来避免内存碎片化。可以在 PyTorch 的文档中查找有关内存管理和PYTORCH_CUDA_ALLOC_CONF 的详细信息。

      进行如下改动:

      1. 将13B模型替换为7B模型
      2. model_max_length:512–>256;lora_r:8–>4
      3. 训练精度:bf16–>fp16
      4. load_in:8bit–>4bit
      5. 设置max_split_size_mb
        进入batch文件(vim ~/.bashrc
        添加:export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:32
        esc、:wq、source ~/.bashrc

    调整完后,终于是可以运行了
    输入:

    CUDA_VISIBLE_DEVICES=1 python chat.py --version='./LISA-7B-v1' --precision='fp16' --load_in_4bit
    
    • 1

    p.s. --version是你下载的模型地址,这里附上我项目目录
    在这里插入图片描述还有就是为了控制云服务器我使用的软件有:WinSCP(进行文件传输和代码修改)和PuTTY(命令行控制)

    (下面是PuTTY运行截图)
    在这里插入图片描述

    根据提示输入propmt语句和待分割图片路径:

    在这里插入图片描述

    分割后的图像存储再了./vis_output文件夹中。

    但是结果不正确,可能是调整了模型的缘故吧,没分割出LISA,分割出了ROSÉ

    在这里插入图片描述

    算了,这个模型就先到这里,等有再好一点的卡再试试,去读paper了。
    在这里插入图片描述

  • 相关阅读:
    C - 指针与数组的区别
    C++11
    使用ExcelJS快速处理Node.js爬虫数据
    DS线性表之顺序表
    项目的一些难点
    聚丙乙烯修饰小鼠血清白蛋白(MSA)/大鼠血清白蛋白(RSA)/小麦麦清白蛋白纳米粒(PS-MSA/RSA)
    清华大佬力荐的JVM学习路线+实战笔记+阿里真题,吃透吊打面试官
    Deep Residual Learning for Image Recognition浅读与实现
    My Ninety-ninth Page - 两个字符串的删除操作 - By Nicolas
    2022 IDC中国数字金融论坛 | 筑基金融信创 共话金融科技新愿景
  • 原文地址:https://blog.csdn.net/Transfattyacids/article/details/132599777