0

    Stable Diffusion|网络共享部署

    2023.04.29 | admin | 266次围观

    Stable Diffusion各网络情况部署教程

    大部分人都只是正常启动Stable Diffusion去使用,但是Stable Diffusion其实是可以脱离本机远程使用的。假如你在台式电脑运行了Stable Diffusion,但是可以躺在床上用手机去进行AI绘画,是不是会感觉更舒服一些?也可以分享给你的好友,让他们一起使用你部署好的Stable Diffusion进行绘画。

    本地模式

    本地模型也就是你不更改任何设置,直接默认加载运行SD。该方式可以通过该电脑的本地localhost或IP地址进行访问。

    localhost就是本地的主机地址,每一台Windows电脑都会有localhost,它的默认IP地址为127.0.0.1,也可以理解为localhost=127.0.0.1,没有任何区别。

    端口号

    我们已经有IP地址可以访问了,那么:7860后面的7860的作用是什么?

    这个7860我们俗称为端口号,我们可以理解为一个衣柜有很多个抽屉,每个抽屉都用来存放不同的用品,7860就是电脑系统中的一个抽屉,只有指定了抽屉的号码,才可以让系统更明确你所想使用的目的。比如我们可以为再安装一个开源项目,端口号为7870,那么当我们访问:7870时,就可以打开该开源项目的操作界面啦。

    这样做的最大好处就是一个IP地址,可以同时挂起很多个应用,互不干涉。

    局域网

    如果你希望在当前电脑内运行SD,然后通过其它电脑访问SD进行绘图,可以使用以下方式进行。

    首先获取已经运行SD的电脑IP地址,我们可以通过CMD命令行来快速获取。

    ipconfig

    我们将会得到如下信息

    C:\\Users\\openA>ipconfig
    Windows IP 配置
    以太网适配器 以太网:
       连接特定的 DNS 后缀 . . . . . . . :
       IPv6 地址 . . . . . . . . . . . . : 251e:30e:4235:7c40:c2a3:104:1338:c224
       临时 IPv6 地址. . . . . . . . . . : 251e:30e:4235:7c40:6d06:af10:74a5:5ac2
       本地链接 IPv6 地址. . . . . . . . : fe80::d324:2e9e:bf39:7b2e
       IPv4 地址 . . . . . . . . . . . . : 192.168.0.106
       子网掩码  . . . . . . . . . . . . : 255.255.255.0
       默认网关. . . . . . . . . . . . . : fe80::a236:beff:fea0:7eb8
                                           192.168.0.1
    无线局域网适配器 WLAN:
       媒体状态  . . . . . . . . . . . . : 媒体已断开连接
       连接特定的 DNS 后缀 . . . . . . . :
    无线局域网适配器 本地连接* 1:
       媒体状态  . . . . . . . . . . . . : 媒体已断开连接
       连接特定的 DNS 后缀 . . . . . . . :
    无线局域网适配器 本地连接* 2:
       媒体状态  . . . . . . . . . . . . : 媒体已断开连接
       连接特定的 DNS 后缀 . . . . . . . :
    以太网适配器 蓝牙网络连接:
       媒体状态  . . . . . . . . . . . . : 媒体已断开连接
       连接特定的 DNS 后缀 . . . . . . . :
    

    我在在这段回显当中,只需要记住IPv4地址的值即可,也就是192.168.0.106,每台电脑所获取到的局域网地址都是不同的,因为这会通过路由器或交换机的DDNS进行自动分配,将一个IP地址分配给你的电脑进行使用,所以一定要自行获取。

    在我们得到地址之后修改电脑本地ip,打开SD项目目录的webui-user.bat文件,在COMMANDLINE_ARGS一行,添加--listen参数,保存即可。

    @echo off
    git pull
    set PYTHON=
    set GIT=
    set VENV_DIR=
    set COMMANDLINE_ARGS= --listen
    call webui.bat

    此时我们重新启动SD,原本的提示信息已经变更为:7860,我们无法直接打开这个网址,因为我们目前已经变更为局域网模式。

    我们可以在本地或局域网内的其它电脑,通过访问:7860来启动。这样做的优点就是可以用低配置电脑远程操作SD,省去多人共用一台电脑的排队困扰。

    ❗ 注意:局域网状态下无法安装、更新、卸载任何插件,因为每个人的需求不同,如果局域网内的用户A删除了一个局域网B用户需要使用的插件,这会导致其它用户无法运行,所以局域网状态下的任何终端用户都无法对插件拓展项进行设置。

    公网模式

    什么是公网?公网是公共网络的简称,我们可以通过以下表格来对比一下各种模式之间的区别。

    类型描述

    本地模式

    仅本地运行SD的电脑可以使用AI绘画

    Stable Diffusion|网络共享部署

    局域网模式

    在与SD电脑使用同一路由器或交换机的其它终端设备上,也可以远程操作SD的AI绘画功能。

    公网模式

    任何可以访问互联网的电脑或其它终端设备,都可以使用SD进行AI绘画。

    在了解了公网模式的作用之后,我们对webui-user.bat文件进行修改。

    @echo off
    git pull
    set PYTHON=
    set GIT=
    set VENV_DIR=
    set COMMANDLINE_ARGS= --share
    call webui.bat

    此时重新启动SD之后,会生成一个可以直接公网访问的链接Running on public URL: >,该链接为临时链接。

    时效性

    公网模式下的链接有效期为72小时,也就是三天的时间。

    为什么有效期为72小时?因为这个操作界面的功能由Gradio提供,如果你需要无限时长的访问,则需要购买其服务。不过这一般是没有必要的,我们只需要在72小时到期之前后之后重启电脑即可刷新访问时长的限制。

    安装性

    因为我们的SD服务通过Share参数已经将设备暴露于公网之下,所以为了安全起见,我们可以添加账号密码功能。这样只有知道账号密码的人才能够登录并使用SD,避免算力浪费。

    如果你需要账号密码功能,我们则需要再次修改配置文件修改电脑本地ip,添加--gradio-auth username:password参数,其中的username为用户名,password为密码。

    例如,我们想设置用户名为openAI,密码为ABC123,则将webui-user.bat文件修改为以下内容。

    @echo off
    git pull
    set PYTHON=
    set GIT=
    set VENV_DIR=
    set COMMANDLINE_ARGS=--share --gradio-auth openAI:ABC123
    call webui.bat

    按道理来说,这样设置就已经可以了,但是SD所支持的界面依赖版本不是最新,这个版本的Gradio存在一个BUG,那就是登陆后无法正常与API交互,所以此时我们需要再添加一个参数--no-gradio-queue即可。

    @echo off
    git pull
    set PYTHON=
    set GIT=
    set VENV_DIR=
    set COMMANDLINE_ARGS=--share --gradio-auth openAI:ABC123 --no-gradio-queue
    call webui.bat

    此时我们重新运行SD启动文件,我们可以看到如下内容:

    Running on local URL:  
    Running on public URL: 

    其中那一串晦涩难懂的地址,为我们可以访问的公网地址,我们通过该地址访问之后,将会看到如下的登陆界面。

    ❗ 注意:局域网状态下无法安装、更新、卸载任何插件,因为每个人的需求不同,如果局域网内的用户A删除了一个局域网B用户需要使用的插件,这会导致其它用户无法运行,所以局域网状态下的任何终端用户都无法对插件拓展项进行设置。

    公网IP

    什么是公网IP?公网IP也就是可以共享到网络上给别人访问的IP地址,这个地址具有唯一性,但可能随时变更。如果你希望自己的公网IP地址能够永久有效不变更,我们可以通过动态DDNS解析功能来进行设置,通过程序后台实时获取公网IP地址,然后通过域名实时解析该地址即可达到通过域名访问的目的。但是此部分内容较长,涉及到的其它内容较多,不展开讲解。

    正常来说127.0.0.1是只有自己的电脑可以访问。192.168.0.1这种地址是有使用同一路由器或交换机的设备可以相互访问的。如果你希望自己的设备可以在公网中能够正常使用,需要打电话给自己的宽带运营商申请公网IP。

    在国外就不用考虑申请公网IP这个问题,因为国外的人口较少,公网IP地址是绝对够用的。但国内无论是人口还是设备都非常多,而IPv4的地址段有限,所以默认情况下各宽带运营商是不会为我们开通公网IP功能的。

    如果你没有公网IP,那么其他人即使拥有你的SD公网链接和账号密码,也是无法远程访问SD进行AI绘画的。

    点击下文前往Stable Diffusion的教程总目录,学习其它内容。

    Stable Diffusion|全方位教程指南

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论