Linux-Ubuntu安装Stable Diffusion Forge

SD Forge在Win上配置起来相对简单且教程丰富,而在Linux平台的配置则稍有门槛且教程较少。本文提供一个基于Ubuntu24.04发行版(对其他Linux以及SD分支亦有参考价值)的Stable Diffusion ForgeUI安装配置教程,希望有所帮助

本教程以NVIDIA显卡为例介绍安装方法,AMD显卡没尝试过,或许也有用。

先决条件

安装NVIDIA显卡驱动

命令终端运行

nvidia-smi

若显示以下画面,代表已安装显卡驱动,可跳过本步骤

若未安装,在应用栏找到软件和更新—附加驱动,安装专有驱动,重启电脑。若无版本依赖,建议与本教程一致(575版本)

安装CUDA 驱动和 cuDNN

为顺利进行后续步骤,安装的CUDA版本应不低于12.1。若无版本依赖,建议与本教程保持一致(12.8版本)。执行“nvidia-smi”命令可查看驱动支持的最高版本。例如,上图所示的显卡驱动最高可支持CUDA12.9版本。

本文的重点是Forge安装,CUDA安装的相关教程丰富且详细,请自行查阅,这里就不赘述了

安装CUDA后,终端运行以下代码查看是否安装成功

nvcc -V

若终端输出以下字样则安装成功,否则检查一下是否未正确配置环境变量

安装cuDNN后,终端运行以下代码查看是否安装成功

# cuda版本需修改为与实际一致
cat /usr/local/cuda-12.8/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 

若终端输出以下字样则安装成功(cannot警告不必理会),否则检查一下cudnn的文件位置是否正确

克隆项目

选取合适位置打开终端运行以下代码将SD Forge压缩克隆到本地并解压。如果下载速度缓慢,可能需要配置网络

sudo apt update
sudo apt install git
git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git

配置Python虚拟环境

安装并配置pyenv

为避免污染Ubuntu24自带的Python环境,SD Forge的Python依赖及Pytorch均需在虚拟环境安装。本教程的虚拟环境基于pyenv配置,pyenv的安装与使用可参考像在Windows里面一样丝滑使用Ubuntu24.04里面的“安装vscode并配置python虚拟环境”章节(看前两部分即可,其他部分不用管)

除非比较了解conda(如果这么做,需自行修改后续教程的部分配置方法),否则建议与本教程保持一致——使用pyenv创建虚拟环境

安装Python3.10.2

进入“stable-diffusion-webui-forge”目录,打开终端运行以下代码下载并配置Python3.10.2(SD Forge依赖Python3.10,其他版本可能会有依赖问题(3.10子版本则没有限制)。若无版本依赖,建议同本教程保持一致)

pyenv install 3.10.2
pyenv virtualenv 3.10.2 ForgeEnv
pyenv activate ForgeEnv

成功安装并激活Python3.10.2虚拟环境后在用户名前会显示(ForgeEnv) 字样。勿关闭该终端,后面还会用到

安装依赖

在上一节配置的虚拟环境中运行以下代码安装SD Forge依赖。如果下载缓慢,可参考像在Windows里面一样丝滑使用Ubuntu24.04中“安装vscode并配置python虚拟环境”章节的其他说明(2),手动添加清华镜像源加速下载

pip install --upgrade pip
pip install -r requirements_versions.txt

安装pytorch与xformers

pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1
pip install xformers==0.0.27

注意,torch, torchvision, torchaudio与xformers有版本依赖。除非清楚其匹配关系,否则不要修改上述代码中的版本号。

启动文件配置(重点)

打开stable-diffusion-webui-forge文件夹,找到“webui-user.sh”文件不是webui.sh,别搞混了)

用文件编辑器打开webui-user.sh,将全文替换为以下代码并根据实际情况修改后保存关闭(看注释,部分配置必须结合实际情况修改

#!/bin/bash##########################################################                     虚拟环境自动激活                   ########################################################### 本部分代码用于运行webui.sh文件时自动激活配置的python虚拟环境
# 本部分代码删除后不影响使用,但每次打开Forge前都必须在控制台手动输入pyenv activate ForgeEnv激活虚拟环境
# 自动激活只适用PYENV配置的虚拟环境,conda用户需根据实际情况修改本部分代码(或直接删除,每次打开采用手动激活)# 配置虚拟环境路径
PYENV_ROOT="$HOME/.pyenv"
VENV_NAME="ForgeEnv"# 加载 Shell 配置
source ~/.bashrc# 显式初始化 Pyenv 和 Pyenv-Virtualenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"                
eval "$(pyenv virtualenv-init -)"   # 激活虚拟环境
pyenv activate "$VENV_NAME" || { echo "错误:虚拟环境激活失败!"; exit 1; }##########################################################                      常规配置                          ########################################################### 路径配置
install_dir="/home/$(whoami)" # 使用默认用户目录, 如果不是,需指定# SD目录名
clone_dir="stable-diffusion-webui-forge" # 若不是这个名字,需根据实际修改# python3 executable
python_cmd="$HOME/.pyenv/shims/python"  # 解释器如果不在这里,需根据实际情况修改# git executable
# export GIT="git" # git配置可以不管# python3 venv without trailing slash (defaults to ${install_dir}/${clone_dir}/venv)
venv_dir="$HOME/.pyenv/versions/ForgeEnv"  # 虚拟环境如果不是这个,需根据实际情况修改# script to launch to start the app
export LAUNCH_SCRIPT="launch.py" # 不需修改# 安装指定版本的深度学习框架, 若需修改, 需保证与xformers版本匹配
export TORCH_COMMAND="pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1" # 这是一个版本组合, 请勿单独修改某一项的版本# 依赖项, 一般不需修改,若遇到依赖问题, 或需修改txt文件里面的库版本号
export REQS_FILE="requirements_versions.txt"# Fixed git repos  # git配置可以不管
# export K_DIFFUSION_PACKAGE=""
# export GFPGAN_PACKAGE=""# Fixed git commits  # git配置可以不管
# export STABLE_DIFFUSION_COMMIT_HASH=""
# export CODEFORMER_COMMIT_HASH=""
# export BLIP_COMMIT_HASH=""# 启用加速
export ACCELERATE="True"  # 不需修改# 内存相关,懒得配置TCMALLOC了,直接关
export NO_TCMALLOC="True"# 设置过网络环境的需加上
export ALL_PROXY=''
export all_proxy=''##########################################################                启动参数配置(含模型共享)                ##########################################################MODEL_DIR="/除controlnet外的其他模型位置/models" # 如果不需共享模型,删除本行、下行及COMMANDLINE_ARGS里面从--ckpt-dir(含上一行末尾的\符号)直到倒数第二个引号的内容
CONTROLNET_DIR="controlnet模型位置/extensions"  # 注意,controlnet相关模型在插件里#  如果共享失败,检查源文件位置(尤其是大小写)以及除号和反除号是否设置正确
# ckpt, vae,lora;clip, esrgan,gfpgan;controlnet这三类模型共享参数配置不一样,注意区分
export COMMANDLINE_ARGS="--xformers \
--server-name 127.0.0.1 \
--port 7860 \
--enable-insecure-extension-access \
--ckpt-dir=\"$MODEL_DIR/Stable-diffusion\" \
--clip-models-path=\"$MODEL_DIR/CLIP\" \
--vae-dir=\"$MODEL_DIR/VAE\" \
--esrgan-models-path=\"$MODEL_DIR/ESRGAN\" \
--gfpgan-models-path=\"$MODEL_DIR/GFPGAN\" \
--lora-dir=\"$MODEL_DIR/Lora\" \
--controlnet-dir=\"$CONTROLNET_DIR/sd-webui-controlnet\"" # 配置显存优化, ip地址与端口,插件等启动参数。如果需安装多个sd, 每个sd的ip端口号不能相同
# 为防止路径有空格,路径加了引号转义
###########################################

启动SD Forge

启动前建议先手动下载或共享大模型到指定目录,否则等待时间特别长

文件运行授权

stable-diffusion-webui-forge文件夹打开终端,执行以下命令添加运行权限(仅初次运行需授权)

chmod +x webui.sh
chmod +x webui-user.sh

激活虚拟环境

若在启动文件正确配置了虚拟环境自动激活,本步骤可跳过,否则每次打开ForgeUI前都需在stable-diffusion-webui-forge文件夹打开终端述运行下述代码以激活虚拟环境

pyenv activate ForgeEnv

运行启动文件

若没有在启动文件配置虚拟环境自动激活,则需在虚拟环境(上一节打开的终端中)运行下述代码以打开Forge

./webui.sh

若已在启动文件正确配置了虚拟环境自动激活,则在stable-diffusion-webui-forge文件夹打开终端述运行上述代码即可

启动后终端会显示“Running on local URL:http://127.0.0.1:7860”字样,按住ctrl后点击“http://127.0.0.1:7860”即可打开SD Forge的UI网页

最后的说明

完成上述所有配置步骤后,以后只需在stable-diffusion-webui-forge文件夹打开终端述执行启动文件即可启动SD ForgeUI

未配置虚拟环境自动激活

pyenv activate ForgeEnv
./webui.sh

已正确配置虚拟环境自动激活

./webui.sh

ok,SD Forge安装配置全部结束,May this guide serve as your gateway to a seamless and empowering journey with SD Forge on Linux, where creativity meets cutting-edge technology

放张图

1girl,violet evergarden,full body,solo,blonde hair,blue eyes,sky,red ribbon,hair between eyes,jewelry,blue jacket,ribbon,outdoors,day,hair ribbon,looking at viewer,jacket,blue sky,brooch,cloud,bangs,blur,white,background intakes,bride,brideDusk,facing the audience,long legs,white silk,
Negative prompt: (worst quality, low quality:1.4),(depth of field, blurry:1.2),(greyscale, monochrome:1.1),3D face,cropped,lowres,text,(nsfw:1.3),(worst quality:2),(low quality:2),(normal quality:2),normal quality,((grayscale)),skin spots,acnes,skin blemishes,age spot,(ugly:1.331),(duplicate:1.331),(morbid:1.21),(mutilated:1.21),(tranny:1.331),mutated hands,(poorly drawn hands:1.5),blurry,(bad anatomy:1.21),(bad proportions:1.331),extra limbs,(disfigured:1.331),(missing arms:1.331),(extra legs:1.331),(fused fingers:1.61051),(too many fingers:1.61051),(unclear eyes:1.331),lowers,bad hands,missing fingers,extra digit,bad hands,missing fingers,(((extra arms and legs))),
Steps: 28, Sampler: DPM++ 2M, Schedule type: Karras, CFG scale: 7, Seed: 3605002200, Size: 1024x1024, Model hash: 30953ab0de, Model: 动漫MeinaMix_MeinaV8, Denoising strength: 0.42, Clip skip: 2, ADetailer model: face_yolov8n.pt, ADetailer confidence: 0.3, ADetailer dilate erode: 4, ADetailer mask blur: 4, ADetailer denoising strength: 0.4, ADetailer inpaint only masked: True, ADetailer inpaint padding: 32, ADetailer version: 24.9.0, Hires Module 1: Use same choices, Hires CFG Scale: 7, Hires upscale: 2, Hires steps: 5, Hires upscaler: R-ESRGAN 4x+ Anime6B, Version: f2.0.1v1.10.1-previous-662-g0ced1d0c, Module 1: vae-ft-mse-840000-ema-pruned

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

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

相关文章

量子计算实用化突破:从云端平台到国际竞合,开启算力革命新纪元

在硅谷某生物医药实验室,研究员艾米丽正盯着量子计算模拟界面露出微笑 —— 搭载中电信 "天衍" 量子计算云平台的 880 比特超导量子处理器,用 17 分钟完成了传统超算需 3 个月才能跑完的新型抗生素分子键合模拟。这个场景标志着量子计算正从 &…

计算机操作系统(七)详细讲解进程的组成与特性,状态与转换

计算机操作系统(七)进程的组成与特性,状态与转换 前言一、进程的组成1. 什么是“进程”?2. 进程的三个核心组成部分2.1 PCB(进程控制块)—— 进程的“身份证户口本”2.2 程序段—— 进程的“任务清单”2.3 …

MapReduce基本介绍

核心思想 分而治之:将大规模的数据处理任务分解成多个可以并行处理的子任务,然后将这些子任务分配到不同的计算节点上进行处理,最后将各个子任务的处理结果合并起来,得到最终的结果。 工作流程 Map 阶段: 输入数据被…

Linux操作系统实战:中断源码的性能分析(转)

Linux中断是指在Linux操作系统中,当硬件设备或软件触发某个事件时,CPU会中断正在执行的任务,并立即处理这个事件。它是实现实时响应和处理外部事件的重要机制,Linux中断可以分为两种类型:硬件中断和软件中断&#xff0…

AI Agent开发第66课-彻底消除RAG知识库幻觉-带推理的RAG

开篇 在第64课《AI Agent开发第64课-DIFY和企业现有系统结合实现高可配置的智能零售AI Agent(上)》中我们提到了提示词Rewrite,同时还讲到了2024年年末开始出现的新的理论,并把RAG系统推入到了3.0模式,业界出现了“3R”理念的RAG引擎,基于“3R”理念可以彻底消除RAG的幻觉…

Clion内置宏$PROJECT_DIR$等

CLion 内置宏 文章目录 CLion 内置宏通用路径相关宏路径相对化宏 官方文档地址: https://www.jetbrains.com/help/clion/built-in-macros.html 通用路径相关宏 宏名称含义说明示例$WORKSPACE_DIR$当前项目所属的工作区根目录路径。/home/user/workspace$PROJECT_D…

机器学习基础课程-5-课程实验

5.1 实验介绍 实验背景 在这个项目中,您将使用1994年美国人口普查收集的数据,选用几个监督学习算法以准确地建模被调查者的收入。然后,您将根据初步结果从中选择出最佳的候选算法,并进一步优化该算法以最好地建模这些数据。你的目…

Android RecyclerView自带的OnFlingListener,Kotlin

Android RecyclerView自带的OnFlingListener,Kotlin Android启动应用时屏蔽RecyclerView滑动,延时后再允许滑动,Kotlin-CSDN博客 使用了GestureDetectorRecyclerView的setOnTouchListener检测用户的快滑fling事件。发现RecyclerView也自带了监…

第3.4节 调用链路分析服务开发

3.4.1 什么是Code Call Graph(CCG) Code Call Graph(CCG)即业务代码中的调用关系图,是通过静态分析手段分析并构建出的一种描述代码间关系的图。根据精度不同,一般分为类级别、方法级别、控制流级别&#x…

【Liblib】基于LiblibAI自定义模型,总结一下Python开发步骤

一、前言 Liblib AI(哩布哩布 AI)是一个集成了先进人工智能技术和用户友好设计的 AI 图像创作绘画平台和模型分享社区。 强大的图像生成能力 :以 Stable Diffusion 技术为核心,提供文生图、图生图、图像后期处理等功能&#xff…

编程日志5.5

树的结构代码 #include<iostream> using namespace std; //由于树的每个结点可能有一些孩子结点,这些孩子结点的数量不确定,所以可以用一个链表来把所有的孩子结点给串起来 //链表结点定义 //这段代码定义了一个结构体ListNode,用于表示链表中的一个结点。这个结构…

【消息队列】RabbitMQ基本认识

目录 一、基本概念 1. 生产者&#xff08;Producer&#xff09; 2. 消费者&#xff08;Consumer&#xff09; 3. 队列&#xff08;Queue&#xff09; 4. 交换器&#xff08;Exchange&#xff09; 5. 绑定&#xff08;Binding&#xff09; 6. 路由键&#xff08;Routing …

uniapp -- 验证码倒计时按钮组件

jia-countdown-verify 验证码倒计时按钮组件 一个用于发送短信验证码的倒计时按钮组件&#xff0c;支持自定义样式、倒计时时间和文本内容。适用于各种需要验证码功能的表单场景。 代码已经 发布到插件市场 可以自行下载 下载地址 特性 支持自定义按钮样式&#xff08;颜色、…

知识图谱重构电商搜索:下一代AI搜索引擎的底层逻辑

1. 搜索引擎的进化论 从雅虎目录式搜索到Google的PageRank算法&#xff0c;搜索引擎经历了三次技术跃迁。而AI搜索引擎正在掀起第四次革命&#xff1a;在电商场景中&#xff0c;传统的「关键词匹配」已无法满足个性化购物需求&#xff0c;MOE搜索等新一代架构开始融合知识图谱…

深度学习 自然语言处理(RNN) day_02

1. 感知机与神经网络 1.1 感知机 生物神经元&#xff1a; 1.1.1 感知机的概念 感知机&#xff08;Perceptron&#xff09;&#xff0c;又称神经元&#xff08;Neuron&#xff0c;对生物神经元进行了模仿&#xff09;是神 经网络&#xff08;深度学习&#xff09;的起源算法&am…

PYTHON训练营DAY25

BUG与报错 一、try else try:# 可能会引发异常的代码 except ExceptionType: # 最好指定具体的异常类型&#xff0c;例如 ZeroDivisionError, FileNotFoundError# 当 try 块中发生 ExceptionType 类型的异常时执行的代码 except: # 不推荐&#xff1a;捕获所有类型的异常&…

LU分解求解线性方程组

L U LU LU分解 前言 L U LU LU分解 由以下定理得以保证&#xff1a; 设 A \boldsymbol{A} A为 n n n阶方阵&#xff0c;若其各界阶顺序主子式都不为 0 0 0&#xff0c;那么它可以 被唯一的上下三角矩阵积分解。 步骤 确定各矩阵形式 A L U \mathbf{A}\mathbf{LU} ALU ( a 1…

Linux——数据库备份与恢复

一&#xff0c;Mysql数据库备份概述 1&#xff0c;数据库备份的重要性 数据灾难恢复&#xff1a;数据库可能会因为各种原因出现故障&#xff0c;如硬件故障、软件错误、误操作、病毒攻击、自然灾害等。这些情况都可能导致数据丢失或损坏。如果有定期的备份&#xff0c;就可以…

SVM在医疗设备故障维修服务决策中的应用:策略、技术与实践

SVM在医疗设备故障维修服务决策中的应用&#xff1a;策略、技术与实践 医疗设备的高可靠性、安全性及严格合规性要求&#xff0c;使其故障维修决策具有显著的特殊性。支持向量机&#xff08;SVM&#xff09;凭借小样本学习、非线性建模及高精度分类能力&#xff0c;可有效解决…

WEB安全--Java安全--CC1利用链

一、梳理基本逻辑 WEB后端JVM通过readObject()的反序列化方式接收用户输入的数据 用户编写恶意代码并将其序列化为原始数据流 WEB后端JVM接收到序列化后恶意的原始数据并进行反序列化 当调用&#xff1a; ObjectInputStream.readObject() JVM 内部逻辑&#xff1a; → 反…