在 Linux 本地部署 stable diffusion

news2025/1/12 3:45:46

由于工作站安装的是 ubuntu,卡也在上面,就只能在 ubuntu 上部署安装 stable diffusion 了。另外,Linux 上使用 stable diffusion 也会方便很多。

1 准备工作

  • NVIDIA 官网下载驱动,主要是为了规避多卡驱动不同的问题。由于本机是两张一样的卡,就可以省去这一步。如果存在不同型号的多卡驱动不兼容的问题,就需要去官网下载。
  • 安装 python 3.10
  • 安装 CUDA11.8(pytorch2.x,xformers),对 stable diffusion 兼容比较好
    • 支持 pytorch2.x
    • 支持 xformers,可以加速图片生成

2 deploy stable diffusion

  • github stable diffusion webUI

        git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
    
  • 配置 venv python 虚拟环境,因为不同模型的 python 版本要求不同

        # 创建虚拟环境
        python3 -m venv venv
    
        # 进入虚拟环境
        source venv/bin/activate
        # 退出虚拟环境
        deactivate
    
    

    也可以使用 conda 来进行虚拟环境的创建和管理。

  • Stable diffusion WebUI 启动,自动安装依赖

        # 启动,会自动下载依赖
        ./webui.sh --xformers
    

3 报错解决

‘’’
这里可能会出现一些报错

  1. Cannot locate TCMalloc(improves CPU memory usage),这个报错是因为缺少 libgoogle-perftools4 和 libtcmalloc-minimal4,直接安装即可
    sudo apt install libgoogle-perftools4 libtcmalloc-minimal4 -y

  2. This scripts must not be launched as root, aborting…

解决方法:
bash webui.sh -f
‘’’

  1. OSError: Can’t load tokenizer for ‘openai/clip-vit-large-patch14’. If you were trying to load it from ‘https://huggingface.co/models’, make sure you don’t have a local directory with the same name. Otherwise, make sure ‘openai/clip-vit-large-patch14’ is the correct path to a directory containing all relevant files for a CLIPTokenizer tokenizer.

解决方法:
运行时它需要访问huggingface.co去下载一些模型需要的文件,而大陆用户连接不上huggingface.co,导致部署失败。
下载文件并进行配置, 让 stable diffusion 访问本地数据, 放置到你所需要的目录, 开始进行配置,这些文件(clip)是模型中encoder所需要的,我们可以从报错信息中去发现是哪里调用了这个openai/clip-vit-large-patch14,去修改这个路径配置即可。

在这里插入图片描述

这里的配置会导致我们运行时会去huggingface.co(外网)找这个文件,只需要将这个改成我们之前下载所放置的路径即可, 一共四处

在这里插入图片描述

  1. RuntimeError: GET was unable to find an engine to execute this computation

解决方法:
因为torch torchvision cuda以及python版本都是有兼容关系的, 这三者安装兼容版本就可以了.

检测torch和cuda是否能用:

import torch
print(torch.__version__)
print(torch.cuda.is_available())

在这里插入图片描述

测试:

import torch

print(torch.cuda.is_available())
num_gpu =1 
# Decide which device to run on
device = torch.device("cuda:0" if (torch.cuda.is_available() and num_gpu > 0) else "cpu")
print(device)
print(torch.cuda.get_device_name(0))
print(torch.rand(3,3).cuda())

在这里插入图片描述

检查cudnn是否可用:

print(torch.backends.cudnn.version())

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下安装jdk、tomcat

linux下安装jdk、tomcat 一、linux下安装jdk1.1.下载Linux版本的JDK1.2.Linux安装JDk1.3.设置环境变量1.4.卸载JDK 二、linux下安装tomcat2.1.下载Linux版本的Tomcat2.2.在usr目录下新建tomcat目录2.3.进入到tomcat目录中解压下载的tomcat安装包2.4.配置环境变量-前提是已经安装…

C++ 设计模式之外观模式

【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C编码部分】 【简介】什么是外观模式 外观模式Facade Pattern , 也被称为“⻔⾯模式”,是⼀种结构型设计模式&#…

每日一练:LeeCode-102、二又树的层序遍历【二叉树】

本文是力扣LeeCode-102、二又树的层序遍历 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode。 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点&…

visual studio的安装及scanf报错的解决

visual studio是一款很不错的c语言编译器 下载地址:官网 点击后跳转到以下界面 下滑后点击下载Vasual Sutdio,选择社区版即可 选择位置存放下载文件后,即可开始安装 安装时会稍微等一小会儿。然后会弹出这个窗口,我们选择安装位…

C++面试宝典第20题:计算岛屿数量

题目 在二维网格地图上,1 表示陆地,0 表示水域。如果相邻的陆地可以水平或垂直连接,则它们属于同一块岛屿。请进行编码,统计地图上的岛屿数量。比如:下面的二维网格地图,其岛屿数量为3。 解析 这道题主要考察应聘者对深度优先搜索、广度优先搜索、二维数组和矩阵操作、边…

Java代码审计FastJson反序列化利用链跟踪动态调试autoType绕过

目录 0x00 前言 0x01 基础参考 JNDI注入实例 使用type加入User类解析 FastJson历史漏洞简介 0x02 FastJson 1.2.24 利用链分析 调试过程 构造Poc思路 CC链关键流程 0x03 FastJson 1.2.25-1.2.47 利用链分析 1、开启autoTypeSupport:1.2.25-1.2.41 调试过…

#RAG##AIGC#检索增强生成 (RAG) 基本介绍和入门实操示例

本文包括RAG基本介绍和入门实操示例 RAG 基本介绍 通用语言模型可以进行微调以实现一些常见任务,例如情感分析和命名实体识别。这些任务通常不需要额外的背景知识。 对于更复杂和知识密集型的任务,可以构建基于语言模型的系统来访问外部知识源来完成任…

pl/sql程序块的使用

-- Created on 2024-01-15 by ADMINISTRATOR declare -- Local variables hererecord_tablename varchar2(100);---test_record表名record_StartNo integer(19);---test_record开始编号temp_No integer(19);maxnbbh integer(19);nCnt integer : 20;fi…

通用外设-W25Q64

前言 一、SPI通信 二、W25Q64基初时序 1.各种命令代码 2.代码 1.写使能指令 2.读取芯片是否忙碌状态并等待 3.写入数据 4.擦除函数操作 5.读取代码 三.验证 四.擦除说明 总结 前言 在单片机中一般32K FLASH就够用了,但是当我们使用图片或其他大量数据时…

K8s(二)Pod资源——node调度策略、node亲和性、污点与容忍度

目录 node调度策略nodeName和nodeSelector 指定nodeName 指定nodeSelector node亲和性 node节点亲和性 硬亲和性 软亲和性 污点与容忍度 本文主要介绍了在pod中,与node相关的调度策略,亲和性,污点与容忍度等的内容 node调度策略node…

深度学习中指定特定的GPU使用

目录 前言1. 问题所示2. 解决方法 前言 老生常谈,同样的问题,主要来源于:RuntimeError: CUDA error: out of memory 当使用完之后,想从其他方式调试,具体可看我这篇文章的:出现 CUDA out of memory 的解决…

Ps:认识路径

在 Photoshop 中,路径 Path广泛地应用于创建精确的图像边界(包括精准抠图)以及复杂的图形设计之中。 路径又称为“矢量路径”,或者“贝塞尔曲线” Bezier Curves路径。 路径本身只是一种基于数学方程的“轮廓指示”,并…

Python数据分析案例31——中国A股的月份效应研究(方差分析,虚拟变量回归)

案例背景 本次案例是博主本科在行为金融学课程上做的一个小项目,最近看很多经管类的学生作业都很需要,我就用python来重新做了一遍。不弄那些复杂的机器学习模型了,经管类同学就用简单的统计学方法来做模型就好。 研究目的 有效市场假说是现…

论文复现|tightly focused circularly polarized ring Airy beam

请尊重原创的劳动成果 如需要转载,请后台联系 前言 采用MATLAB复现一篇论文里面的插图,涡旋光束的聚焦的仿真方式有很多种,这里采用MATLAB进行仿真,当然也有其他的很多方式,不同的方式各有千秋。 论文摘要 本文证明…

Sqoop安全性:确保安全的数据传输

确保数据传输的安全性在大数据处理中至关重要。Sqoop作为一个用于数据传输的工具,也提供了多种安全性措施,以确保数据在传输过程中的机密性和完整性。本文将深入探讨Sqoop的安全性特性,提供详细的示例代码和全面的内容,以帮助大家…

压缩编码之不同缩放参数对重建图像质量的影响的python实现——JPEG变换编码不同压缩率的模拟

原理 JPEG(Joint Photographic Experts Group)是一种常用的图像压缩标准,它通过采用离散余弦变换(DCT)和量化来实现图像的压缩。 离散余弦变换(DCT): JPEG首先将图像分割成8x8的块…

彝族民居一大特色——土掌房

彝族民居一大特色——土掌房在彝区,各地、各支系传承的居室建筑形式是多种多样的,并与当地的居住习俗有密切关联,从村寨的聚落到住宅的地址;从房间的分置到什物的堆放;从建筑结构到民居信仰和禁忌,都表现出…

U-Boot学习(3):.config、defconfig文件对比及图形化配置Kconfig

在上一节中,我们介绍了U-Boot编译和.config配置文件生成分析,我们可以通过make xxx__defconfig来进行一些配置,其中xxx__defconfig对应config目录下的基于不同开发板的一些配置,指令执行完后会根据对应的配置在根目录下生成一个.c…

基于java web的机票管理系统设计与实现设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Redis主从架构、哨兵集群原理实战

1.主从架构简介 背景 单机部署简单,但是可靠性低,且不能很好利用CPU多核处理能力生产环境必须要保证高可用,一般不可能单机部署读写分离是可用性要求不高、性能要求较高、数据规模小的情况 目标 读写分离,扩展主节点的读能力&…