手把手教你在云环境炼丹(部署Stable Diffusion WebUI)
前几天写了一篇《手把手教你在本机安装Stable Diffusion秋叶整合包》的文章,有些同学反映对硬件的要求太高,显卡太TM贵了。今天我再分享一个云服务器炼丹的方法,方便大家快速入门上手,这个云服务不需要特殊网络设置,能连接公网网盘,随开随用,有3090显卡,也有4090显卡,不过我经常使用的是A5000显卡。本文非广告推广,只分享使用方法,不喜跳过。
闲话不多说,下面就正式开始了。
注册登陆
注册方式一
手机号直接注册,打开这个链接:www.autodl.com/register,很简单就不多说了。
注册方式二
为什么还有两种方式?测试的时候发现验证码发不出去,官方说这两天验证码通道有点问题,有时发不出去。具体原因就不知道了,做个备选吧。
在它的登陆页面,点击“微信登陆”按钮,用微信扫一扫,在微信打开的页面中,点击“关注公众号”,关注成功后,AutoDL的网页会自动跳转,要求绑定手机号,这个验证码却能收到,感觉有点奇怪。
开服务器
注册成功之后,就可以登录了,登陆成功之后会进入一个管理界面。

之前听说注册用户还送10块钱,现在应该没有了,现在是会送30天的炼丹会员,单价上有些折扣,正常情况下这个折扣需要消费达到500元才会有。
没有钱就开不了服务器,所以我们要先充点钱进去。
充值
鼠标划到管理界面右上角的这个账户名称上,在弹出的窗口中点击“充值”。

在“充值”页面中,选择“其它金额”,我这里充值5块,你可以试试更小的金额能不能开机。每次少冲点也可以避免忘了关机导致被扣钱心疼的问题。
付款方式按照自己的情况选择就行了,具体支付流程大家都应该很熟练了,这里就不演示了。

租用实例
在管理界面的右上角点击“控制台”。

然后在左侧菜单中点击“容器实例”,在打开的页面中点击“租用新实例”。

在“创建实例”的页面,按照下图的顺序设置。
- 计费方式:一开始体验选择“按量计费”就可以了。
- 选择地区:大家都推荐内蒙A区,据说网络比较稳定,我也一直用这个。
- GPU型号:A5000每小时 1.18,实测性能也可以。
- GPU数量:先选择1个,后边熟练了再根据实际情况来。
- 选择主机:GPU型号和数量选择后,这里就会列出可用的主机,先随便选一个就行了。

下边还有一些设置。
数据盘:的免费容量是50G,如果不够需要花钱扩容,一般50G也够了。
镜像:首先选择“社区镜像”,然后在输入框中输入“yinghuoai”,会自动弹出一个镜像,选中它就行了。这个镜像是我专门修改过的,后续也会不断优化升级,大家有问题向我反馈就行。当然也可以用别的镜像,不过后边启动SD WebUI的步骤可能有些不同,建议先按照我这个步骤跑一遍再说。
最后点击“立即创建”。

启动
现在服务器实例已经启动起来了,我们还需要2步来启动 Stable Diffusion WebUI。
本机启动
点击“快捷工具”这一列中的“JupyterLab”,如下图所示:

上边的操作会在浏览器中打开一个新的页面,JupyterLab的页面。JupyterLab 是一个Web应用程序,可以管理文件、记点东西、运行程序,功能类似于VSCode。
参照下图,执行以下2个步骤:
- 在页面左侧的文件管理器中双击“启动器.ipynb”;
- 在页面右侧打开的页签中点击红框中的启动按钮。

首次启动要下载一些模型,会有点慢,大概2-3分钟。后边再启动就会跳过这些下载步骤,达到秒级。

看到下图的“Running on local URL”和“Model loaded in” 就说明启动成功了。
其中的“http://127.0.0.1:6006”就是SD WebUI的访问地址,不过这个地址只能本机访问,而这个云服务器本质上只是个容器实例,没有桌面环境,也没有浏览器可以用。当然这个问题可以解决,请继续看下文。

映射到外网
回到容器实例列表,找到刚才启动的实例,在“快捷工具”中点击“自定义服务”,如下图所示:

如果第一次使用自定义服务,它会弹出一个身份认证的提示。因为AutoDL会把SD WebUI的本机访问地址映射到外网,大家可能都听说过网站备案这件事,这里AutoDL给大家提供的外网地址用的是AutoDL自己备案过的域名的子域名,所以AutoDL要承担一定的风险,出了问题的时候它得能找到人,所以需要身份认证。

按照提示操作就行了,这里我使用个人认证进行演示。


输入姓名和身份证号,注意一个身份证只能在AutoDL上认证一次,多个账号就得用不同的身份证号来认证。

只要姓名和身份证号能对上,上边的认证就通过了。
我们再次点击“自定义服务”,这时候会弹出一个警告,意思就是不要乱搞,乱搞必被罚。我们都是好人,勾选同意服务协议,然后点击“访问”。

然后AutoDL就会在浏览器中打开一个新的页签,稍等片刻,期待已久的 SD WebUI 页面就展示出来了。

出图
为了方便大家绘画,这个镜像自带两个大模型,一个二次元,一个真实视觉。
这里以二次元模型为例,演示如何生成图片。
1、选择大模型,这里是默认的二次元模型 AnythingV5。
2、提示词,先来个简单的:a girl。
3、反向提示词:EasyNegative,这是一个嵌入式模型的代号,揉合了一些常见的反向提示词。
4、点击生成。
5、稍等片刻,图片就生成出来了,可以点击放大,右键保存。

更多的参数和设置,后续会有其它文章介绍,请及时关注公/众\号:萤火遛AI(yinghuo6ai)。
这里还有一些云服务器的使用问题需要关注,请继续看下文。
关机/开机
本文介绍的服务器实例计费方式是按量付费,每小时计费1次,如果暂时不用了,记得“关机”。
建议使用“小程序管理实例”,当你记不清楚的时候,就打开微信小程序看看,避免白白的浪费资源。

关机之后再次开机可能会遇到GPU无法分配的问题,因为服务器都是共享的,你关机的时候,别人就可能继续使用这个服务器的计算资源,再次开机时可能就没有足够的显卡了。
这时候怎么办?别慌,有办法。
在关机实例的“更多”这里,点击“克隆实例”,

在弹出的提示中,有两个关键的信息:1、数据盘不会自动拷贝,需要手动处理 2、每天3次克隆机会。

点击“确定”之后的流程和创建新服务器差不多,只不过不需要选择容器镜像了。
然后就可以在容器实例列表中看到克隆的进度:

新实例启动后,如果还需要数据盘的数据,我们需要在原实例的“更多”中点击“跨实例拷贝数据”:

在弹出的窗口中,选择“目标实例”,也就是克隆出的新实例;“源实例数据路径”填写:*,代表数据盘所有的文件。

等待数据拷贝完成:

数据拷贝完毕后,就可以使用新的实例继续工作了。
启动 SD WebUI 的方法在上边的步骤中介绍过了,这里就不重复了。
存储
文件管理
JupyterLab自带一个文件管理器。
- 点击右上角的文件夹图标可以开启/关闭文件管理器
- 这个文件管理器的根目录实际对应的是Linux系统的 /root 目录。
- 鼠标双击文件后会在右侧的编辑器中打开。

对文件夹和文件的操作可以通过鼠标右键触发,可以看到这里边有很多操作,新建、复制、删除都有了,还是挺方便的。

对于服务器和本地文件的交互,我们可以通过这个文件管理器的上传、下载实现。

公网网盘
AutoDL系统盘是30G、数据盘是50G,如果超出就需要付费购买数据空间。虽然我们已经将各种模型搬到了数据盘中,但是大模型动辄就2-5G,所以免费的数据盘也放不下几个模型,而且我们还有各种插件和生成的文件。
考虑下使用场景,对于模型,我们不会同时使用所有模型,所以可以把它们先放到别的地方,用的时候再加载进来,不怎么用的就挪到别的地方。这个别的地方可以是用户本地电脑,但是也会占用很多空间,所以很多时候就是各种网盘,比如百度网盘、阿里云盘这种。AutoDL支持的“公网网盘”就是干这件事的。
网盘授权
在实例列表中,找到需要下载数据的实例,点击“AutoPanel”:

在AutoPanel页面中点击“公网网盘”,这里需要设置一个密码。

设置密码之后,就可以进行网盘授权了,阿里云盘不怎么限速,所以建议优先使用它。没有阿里云盘的同学需要先去注册个账号,然后手机上安装它的APP,扫码授权。

授权通过后,当前服务器就可以操作云盘了。不过这样授权之后,只有当前服务器可以访问网盘,其它服务器想要访问网盘还得重新授权。
AutoDL提供了一个方法,把授权信息保存到一个独立的位置,新开的实例自动加载授权信息。
操作方法是,在已经授权的服务器这里,点击“导出授权”。

在弹出的窗口中,点击“复制授权信息”。

然后打开AutoDL的控制台,进入“账号”->“设置”->“公网网盘”,粘贴前边复制出来的授权信息,最后点击“确定”按钮。这样新创建的实例就自动授权了,访问网盘的时候只需要输入独立密码就行了。

下载文件
在授权过的公网网盘这里,找到你要下载到本地的文件,点击“下载”按钮。

确认下载文件的位置,这里不能修改,知道就行了,点击“确定”开始下载。

下载完毕后,进入到 JupyterLab 中,进入“autodl-tmp”文件夹,可以看到我们下载的文件。

如果你需要把文件移动到别的目录,在目标文件上点击右键,在弹出的菜单中点击“剪切”。

然后通过文件管理器进入到目标路径,在空白的地方点击“粘贴”,稍等片刻,文件就移动过来了。

上传文件
在“AutoPanel”的“公网网盘”页面中,点击“上传”,会弹出一个“上传文件”的页面,页面上方可以切换路径,页面下方会展示路径下的文件列表,找到想要上传的文件,点击文件后边的“上传”。
单个文件和文件夹都可以上传,但是文件夹下超过100个文件时需要先压缩再上传。可以连续发起多个上传任务,它们会排队执行。

文件存储
这部分内容因为需要用户手动开启,然后做一些技术处理,操作门槛比较高,如果搞不懂也没关系,不影响正常使用。
AutoDL本身提供了一个名为“文件存储”的功能,可以在多个服务器实例中共享,它类似于公网网盘,但是我们能够在服务器中直接访问它,所以它比公网网盘更方便一些。

点击“初始化文件存储”之后,我们可以看到下边这个界面。可以上传、下载文件,有点可惜的是这个免费空间只有20G,如果超出20G,超出的空间会被计费,目前每G每天1分钱。

开启文件存储后,我们可以在服务器的文件系统中看到这个文件夹,挂载的就是上边创建的“文件存储”。如果服务器是“文件存储”初始化之后创建的,需要把服务器实例先关机再开机,才能成功挂载。

“文件存储”的本质是一种网络存储,它的好处是三副本存储,数据不容易丢失,但是相比服务器本地的“系统盘”和“数据盘”,访问速度会慢一些。
如果你对磁盘性能要求不高,可以把SD WebUI的部分路径改到这个下边,比如生成图片的输出路径,一些小模型等等。
更换图片输出路径的方法:
(1)启动一个可以执行命令的终端。
点击 JupyterLab 中的这个加号,打开一个新的 Launcher。

在 Launcher 页面中点击“终端”。

(2)在终端执行更换路径的命令。
- 先在“文件存储”中创建一个目录,用来保存SD生成的图片;
- 然后把 SD WebUI 的文件输出目录删除;
- 最后创建一个 SD WebUI 输出目录到“文件存储”中新建目录的软链接。
这样 SD WebUI 保存文件时就自动保存到了“文件存储”中。
mkdir /root/autodl-fs/webui_outputs
rm -Rf /root/stable-diffusion-webui/outputs
ln -s /root/autodl-fs/webui_outputs /root/stable-diffusion-webui/outputs
更换模型保存路径的方法:
这个简单点,修改下启动命令就行了,如果使用的是 yinghuoai 的镜像,直接修改下边这个文件:

这个命令中有几个 --xxx-dir 的参数,就是各种模型的路径,按照需要替换就行。
更改完毕之后,不要忘了在 JupyterLab 中重新启动,就是点那个两个箭头的按钮。
OK,以上就是本文的主要内容了,如有问题,欢迎给我反馈。
我会经常分享一些AI方面的前沿知识和应用实例,请关注公/众\号:萤火遛AI(yinghuo6ai),以免错误精彩内容。
相关文章:
手把手教你在云环境炼丹(部署Stable Diffusion WebUI)
前几天写了一篇《手把手教你在本机安装Stable Diffusion秋叶整合包》的文章,有些同学反映对硬件的要求太高,显卡太TM贵了。今天我再分享一个云服务器炼丹的方法,方便大家快速入门上手,这个云服务不需要特殊网络设置,能…...
pytorch-gpu 极简安装
1、进入pytoch官网:PyTorch 找到pytorch-gpu版本,看到CUDA11.8、11.7、CPU,这里我选择安装CUDA11.8 2、下载CUDA Toolkit:CUDA Toolkit 11.8 Downloads | NVIDIA Developer 3、下载CUDANN:cuDNN Download | NVIDIA D…...
有道云笔记迁移到自建服务器Joplin
当前有道云笔记各项业务开始逐渐向会员靠拢,如一开始不受限的多端同步现在非会员限制成了两个终端,估计以后会有越来越多的免费内容会逐渐的向会员转移,因此博主开始考虑自建服务器来搞一个云笔记服务端。 因博主已有黑群晖,并且有…...
qt源码--事件系统之QAbstractEventDispatcher
1、QAbstractEventDispatcher内容较少,其主要是定义了一些注册接口,如定时器事件、socket事件、注册本地事件、自定义事件等等。其源码如下: 其主要定义了大量的纯虚函数,具体的实现会根据不同的系统平台,实现对应的方…...
深入了解Python中的os.path.join函数
深入了解Python中的os.path.join函数 1. 引言 在Python中,处理文件和目录路径是常见的任务。为了简化路径的拼接和操作,Python提供了os.path模块,其中的join函数是一个非常重要且常用的函数。本文将深入介绍os.path.join函数的用法和注意事…...
Node.js:execSync执行一个shell命令
默认输出是Buffer对象 const { execSync } require(child_process)let out execSync("echo hi") console.log(out); // <Buffer 68 69 0a>需要转为字符串 const { execSync } require(child_process)let out execSync("echo hi") console.log(…...
《入门级-Cocos2d 4.0塔防游戏开发》---第二课:游戏加载界面开发
目录 一、开发环境介绍 二、开发内容 2.1 修改窗口的大小。 2.2 添加加载场景相关代码 2.3 添加资源 三、显示效果 四、知识点 4.1 Sprite 4.2 定时器 一、开发环境介绍 操作系统:UOS1060专业版本。 cocos2dx:版本 环境搭建教程: 统信UOS下配…...
打卡力扣题目十二
#左耳听风 ARST 打卡活动重启# 目录 一、问题 二、解题方法一 三、解题方法二 关于 ARTS 的释义 —— 每周完成一个 ARTS: ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个技术技巧 ● Share: …...
QT服务器练习
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化空间server new QTcpServer(this); }Widget::~Widget() {delete ui; }//启动服务器按钮对…...
Vcenter 创建 虚拟机配置 Thin Provision 模式 disk
介绍 在vCenter中选择虚拟磁盘格式通常也取决于您的需求和使用情况。 vSphere支持多种虚拟磁盘格式,以下是一些常见的格式: Thick Provision Lazy Zeroed:这是vSphere中的默认格式。它会预分配虚拟磁盘所需的存储空间,但只有在虚…...
初识mysql数据库之事务的概念及操作
目录 一、数据库多客户端访问问题 1. 数据库的CURD无限制带来的问题 2. 如何解决CURD导致的问题 二、事务的概念 1. 什么是事务 2. 事务的四个属性 3. mysql对事务的管理 4. 为什么会有事务 5. 事务的版本支持 三、事务的操作 1. 事务提交方式 2. 事务操作的准备工…...
MPL-2.0(Mozilla Public License 2.0)
MPL-2.0(Mozilla Public License 2.0)是一种开源软件许可证,由 Mozilla 组织于2012年发布,用于授权开源项目。MPL-2.0 是 MPL-1.1 许可证的继任版本,旨在更好地适应现代开源软件的发展和使用。 MPL-2.0 许可证的主要特…...
Qt+OpenCV+VTK在VS2017中配置路径
QtOpenCVVTK在VS2017中配置路径 《Qt环境配置》《OpenCV环境配置》《VTK环境配置》 《Qt环境配置》 包含目录: D:\Qt\Qt5.12.11\5.12.11\msvc2017_64\include D:\Qt\Qt5.12.11\5.12.11\msvc2017_64\include\QtWidgets D:\Qt\Qt5.12.11\5.12.11\msvc2017_64\include…...
线性代数(应用篇):第五章:特征值与特征向量、第六章:二次型
文章目录 第5章 特征值与特征向量、相似矩阵(一) 特征值与特征向量1.定义2.性质3.求解(1)具体型矩阵试根法、多项式带余除法:三阶多项式分解因式 (2)抽象型矩阵 (二) 相似1.矩阵相似(1)定义(2)性质 2.相似对角化(1)定义(2)相似对角化的条件(n阶矩阵A可相…...
Java8实战-总结9
Java8实战-总结9 Lambda表达式把Lambda付诸实践:环绕执行模式第1步:记得行为参数化第2步:使用函数式接口来传递行为第3步:执行一个行为第4步:传递Lambda 使用函数式接口PredicateConsumerFunction原始类型特化 Lambda表…...
大数据开发面试必问:Hive调优技巧系列一
Hive必问调优 Hive 调优拆解:Hive SQL 几乎是每一位互联网分析师的必备技能,相信很多小伙伴都有被面试官问到 Hive 优化问题的经历。所以掌握扎实的 HQL 基础尤为重要,hive优化也是小伙伴应该掌握的一项技能,本篇文章具体从hive建表优化、HQ…...
Jupyter Notebook 7重磅发布,新增多个特性!
本文分享Jupyter Notebook大版本v7.0.0更新亮点,及简单测试! 近日,Jupyter Notebook大版本v7.0.0更新,Jupyter Notebook 7基于JupyterLab,因此它包含了过去几年JupyterLab中添加的许多新功能和改进,部分亮…...
linux V4L2子系统——v4l2架构(1)之整体架构
概述 V4L(Video for Linux)是Linux内核中关于视频设备的API接口,涉及视频设备的音频和视频信息采集及处理、视频设备的控制。V4L出现于Linux内核2.1版本,经过修改bug和添加功能,Linux内核2.5版本推出了V4L2(…...
Qt信号与槽机制的本质
引入 对象与对象之间的通信有多个方式,如果我们要提供一种对象之间的通信机制。这种机制,要能够给两个不同对象中的函数建立映射关系,前者被调用时后者也能被自动调用。 再深入一些,两个对象如果都互相不知道对方的存在ÿ…...
Linux:入门学习知识及常见指令
文章目录 入门介绍操作系统的概念Linux机器的使用Linux上的指令 对文件知识的补充文件的定义和一些含义文件和目录的存储绝对路径和相对路径 ls指令pwd指令cd指令touch指令mkdir指令rmdir指令rm指令man指令cp指令mv指令cat指令more指令echo指令输出重定向 less指令find指令grep…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
