工业异常检测AnomalyGPT-Demo试跑

写在前面:如果你有大的cpu和gpu可以使用,直接根据官方的安装说明就可以,如果没有,可以点进来试着看一下我个人的安装经验。

一、试跑环境

NVIDIA4090显卡24g,cpu内存33G,交换空间8g,操作系统ubuntu22.04(试跑过程cpu使用峰值为32.8g,交换空间使用峰值8g)

二、数据准备

1.AnomalyGPT源码下载

git clone https://github.com/CASIA-IVA-Lab/AnomalyGPT.git

2.权重准备

(1) ImageBind 权重:https://dl.fbaipublicfiles.com/imagebind/imagebind_huge.pth

  (下载后放到AnomalyGPT/pretrained_ckpt/imagebind_ckpt文件夹下)

(2)vicuna权重:vicuna权重是由llama权重和vicuna 的delta权重组成,完整的vicuna权重需要由这两个权重合并而来。

 llama权重获取:https://huggingface.co/huggyllama/llama-7b/tree/main

vicunav0权重获取:https://huggingface.co/lmsys/vicuna-7b-delta-v0

vicunav1权重获取:https://huggingface.co/lmsys/vicuna-7b-delta-v1.1/tree/main

(3)AnomalyGPT的Delta 权重:https://huggingface.co/openllmplayground/pandagpt_7b_max_len_1024

(下载后放在AnomalyGPT/pretrained_ckpt/pandagpt_ckpt/7b文件夹下)

(4)AnomalyGPT权重:

https://huggingface.co/FantasticGNU/AnomalyGPT/blob/main/train_supervised/pytorch_model.pt

(下载后放在AnomalyGPT/code/ckpt/train_supervised文件夹下)

三、运行

1.环境搭建

(打开requirements.txt  把torch版本号去掉让其自动选择安装版本,然后保存。这里修改是因为我本地是cuda12,官方默认装的是cuda11.7对应的torch,担心不适配所以修改一下。)

创建anomalygpt环境并安装相关包

conda create -n anomalygpt python=3.8
conda activate anomalygpt
pip install -r requirements.txt

2.vicuna权重合并

vicuna权重合并用的是fastchat工具

fastchat环境搭建

conda create -n fastchat python=3.8
conda activate fastchat
pip3 install "fschat[model_worker,webui]"

合并命令:(注意:(1).这里的fastchat版本不能为0.1.10,因为0.1.10没有--low-cpu-mem这个参数,无法在cpu内存小的设备上进行合并权重;(2).vicuna的delta权重版本选1.1,vicunav0版本的时候有一个tensor错误,会报RuntimeError: The size of tensor a (32000) must match the size of tensor b (32001) at non-singleton dimension 0错误)

python -m fastchat.model.apply_delta --base llama权重文件夹路径 \
 --target 合并后的权重保存路径 \
 --delta vicuna的delta权重文件夹路径 \
 --low-cpu-mem

合并成功:

3.demo运行

(1)直接运行python web_demo.py,会报被kill的错;

(2)解决被杀死问题:将delta_chpt_path,anomaly_ckpt_path,imagebind_ckpt_path模型加载到gpu上(共5g左右的显存),这样vicuna模型才能正常加载完成。

(3)有时候直接运行python web_demo.py会报ValueError: Unknown scheme for proxy URL URL('socks://127.0.0.1:7891/')的错,

解决方案:在terminal中运行一下命令:

unset all_proxy; unset ALL_PROXY

 (4)正常运行运行python web_demo.py成功:

(5)线上线下demo效果对比:

 线上:

本地:

五、参考文献

 vacuna大模型训练:大模型也内卷,Vicuna训练及推理指南,效果碾压斯坦福羊驼

anomalygpt文章介绍:大模型也能用来做工业异常检测 - 知乎

大模型相关:UC伯克利发布大语言模型排行榜,Vicuna夺冠,清华ChatGLM进前5-36氪

工业缺陷数据集:MVTEC公开数据集_mvtec数据集-CSDN博客

高效大模型微调框架:大模型高效微调-PEFT框架介绍 - 知乎

DeepSpeedAgent:  [LLM]大模型训练(一)--DeepSpeed介绍-CSDN博客

SelfInstructTestDataset:生成语料方式【self-instruct方式生成语料代码实战】-CSDN博客

LDAP命令介绍---dsconfig_ldap 查看所有 bind dn-CSDN博客

权重合并操作参考:https://github.com/CASIA-IVA-Lab/AnomalyGPT/tree/main/pretrained_ckpt#1-prepare-vicuna-checkpoint

合并权重操作手册常见的坑:【LLM入门】Vicuna 模型部署与测试 - 知乎

GitHub - lm-sys/FastChat: An open platform for training, serving, and evaluating large language models. Release repo for Vicuna and Chatbot Arena.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/303290.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OCP NVME SSD规范解读-5.命令超时限制

在"4.7 Command Timeout"章节中,详细定义了NVMe命令的超时要求和限制。 CTO-1:NVMe管理命令和TCG(可信计算组)命令从提交到完成不应超过10秒,且没有其他命令未完成(QD1)。CTO-1不适用…

九州金榜|家庭教育小技巧如何培养优秀孩子

信任和期望可以激发孩子的智商和能力,孩子是否出色,取决于家长们如何去“套路”去“培养”。 优秀的孩子不是逼出来的,而是被父母套路出来的,引导孩子找到自我价值感,才是家庭教育中最重要的一课! 曾经看…

Python自动化办公之PDF拆分

今天我们继续分享真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍! 需求 需要从 PDF 中取出几页并将其保存为新的 PDF,为了后期使用方便&a…

21. Mysql 事件或定时任务,解放双手,轻松实现自动化

文章目录 概念常见操作事件调度器操作查看事件创建事件删除事件启动与关闭事件 精选示例构造实时数据定时统计数据 总结参考资料 概念 Mysql 事件是一种在特定时间点自动执行的数据库操作,也可以称呼为定时任务,它可以自动执行更新数据、插入数据、删除…

FileStream文件管理

文件管理 FileStream:是一个用于读写文件的一个类。它提供了基于流的方式操作文件,可以进行读取、写入、查找和关闭等操作。 第一个参数:path(路径) 相对路径:相对于当前项目的bin目录下的Debug和Realse来…

金蝶EAS pdfviewlocal 任意文件读取漏洞复现

0x01 产品简介 金蝶EAS 为集团型企业提供功能全面、性能稳定、扩展性强的数字化平台,帮助企业链接外部产业链上下游,实现信息共享、风险共担,优化生态圈资源配置,构筑产业生态的护城河,同时打通企业内部价值链的数据链…

Android Matrix (三)矩阵组合和应用变换

在 Android 开发中,Matrix 类不仅提供了 mapPoints 方法来变换点坐标,还提供了多种其他用法,使其成为处理图像和视图变换的强大工具。以下是 Matrix 类的一些关键用法: 1. 变换方法 setTranslate(float dx, float dy): 设置矩阵…

Qt/QML编程学习之心得:一个音频播放器的实现(29)

在window下,打开音乐播放器,然后打开一个.mp3文件,就可以实现播放了,那么在Qt/QML中如何实现呢?首先所有的设计都是基于音乐播放器的,嵌入式linux下同样也有音乐播放器,比如mplayer。其调用方法…

用通俗易懂的方式讲解:2024 检索增强生成技术(RAG)研究进展

本篇内容1w字左右,稍微有点长,相对不容易理解,喜欢可以收藏、关注、点赞。 一、前言 在过去的一两年里,人工智能领域目睹了检索增强生成技术(RAG)的迅猛发展,这种技术结合了强大的语言模型与信…

Tracert 与 Ping 程序设计与实现(2024)

1.题目描述 了解 Tracert 程序的实现原理,并调试通过。然后参考 Tracert 程序和计算机网络教材 4.4.2 节, 计算机网络 课程设计指导书 2 编写一个 Ping 程序,并能测试本局域网的所有机器是否在线,运行界面如下图所示的 QuickPing …

基于深度学习的PCB板缺陷检测系统(含UI界面、yolov5、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下: 算法模型:     yolov5 yolov5主要包含以下几种创新:         1. 添加注意力机制(SE、CBAM、CA等)         2. 修改可变形卷积(DySnake-主…

linux执行.sh文件出现问题--排查以及解决

阿丹问题描述: 今天在运行.sh文件的时候出现 现象1: 现象2: 现象3: 出现这三种问题 问题解释以及问题排查: 现象1: 排查: 1、判断文件是否存在 2、判断权限是否足够 解决&#xff1…

【AI视野·今日Sound 声学论文速览 第四十二期】Fri, 5 Jan 2024

AI视野今日CS.Sound 声学论文速览 Fri, 5 Jan 2024 Totally 10 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers PosCUDA: Position based Convolution for Unlearnable Audio Datasets Authors Vignesh Gokul, Shlomo Dubnov深度学习模型需要大量干净的…

1.8 day6 IO进程线程

使用有名管道实现两个进程之间的通信 进程A #include <myhead.h> int main(int argc, const char *argv[]) {//创建两个文件描述符用于打开两个管道int fd1-1;int fd2-1;//创建一个子进程int pid-1;if((fd1open("./mkfifo1",O_RDWR))-1){perror("open er…

java中常见的一些小知识(1)

1.数组转List 1.1. Arrays.asList public class Tesr {public static void main(String[] args) {String[] ary new String[]{ "1", "a"};List<String> list Arrays.asList((ary));list.add("ddsdsa");System.out.println(list);}}但是…

SCI一区级 | Matlab实现RIME-CNN-LSTM-Mutilhead-Attention多变量多步时序预测

SCI一区级 | Matlab实现RIME-CNN-LSTM-Mutilhead-Attention多变量多步时序预测 目录 SCI一区级 | Matlab实现RIME-CNN-LSTM-Mutilhead-Attention多变量多步时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现RIME-CNN-LSTM-Mutilhead-Attention霜冰算法…

简单几步,实现餐厅扫码点餐

越来越多的人选择外出就餐&#xff0c;而餐厅的点餐方式也随着科技的发展而不断进步。其中&#xff0c;扫码点餐是最为常见的一种方式&#xff0c;它不仅方便快捷&#xff0c;还能节省人力成本。本文将介绍一种简单易行的餐厅扫码点餐解决方案。 打开乔拓云平台&#xff0c;登录…

华为认证 | 这门HCIE认证正式发布!

华为认证openEuler专家HCIE-openEuler V1.0&#xff08;中文版&#xff09;自2023年12月29日起&#xff0c;正式在中国区发布。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云-管-端”协同的新ICT技术架构&#xff0c;华为公司打造了覆盖ICT领域的认证体系&#xff0…

【JavaSE】Java中的反射动态代理

本篇文章整理的内容来源于: 反射原理 文章目录 一. 动态代理1. 优点2. 动态代理三要素3. 创建代理对象并使用 二. 反射1. 什么是反射2. 获取字节码文件对象的三种方式(1) Class.forName()获取 (源代码阶段)(2) 通过class属性获取(3) 通过对象获取字节码文件对象 3. 获取构造方…

基于深度学习的停车位关键点检测系统(代码+原理)

摘要&#xff1a; DMPR-PS是一种基于深度学习的停车位检测系统&#xff0c;旨在实时监测和识别停车场中的停车位。该系统利用图像处理和分析技术&#xff0c;通过摄像头获取停车场的实时图像&#xff0c;并自动检测停车位的位置和状态。本文详细介绍了DMPR-PS系统的算法原理、…