在kaggle上云端部署SD

之前,我写了关于kaggle的文章-写一个Kaggle入门指南 | 高治中的个人空间 (xinyixx.com),不过可能有同学不知道,在kaggle上同样能够使用了高性能显卡T4(相当于RTX2070Super的降频+显存翻倍)免费部署SD,虽然T4不是顶级图像处理显卡,不过有免费的还要啥自行车。

Kaggle云端部署Stable Diffusion的生成测试效果,模型:Anything V5 ,实测768×512,24步数仅需4秒


Kaggle云端部署Stable Diffusion教程:

如果你是第一次使用,那么请先做以下步骤:

1.注册一个Kaggle账号(需要科学上网)

2.进入个人主页,验证手机号(必须)(需要科学上网)

如果是没有验证过的,就是Not Verfied,需要点进去然后验证,需要科学上网,中国的手机号也可以。如果验证过的,就是Verfied。

以上为一次性操作,如果你已经注册完和验证好手机号后请往下看

1.新建一个Notebooks,进入页面后在左上方的File选项中展开,点击import notebook(导入源代码)

2.点击Github,填入地址:2575044704/kaggle

3.选择最新的云端部署版本,然后import。

4.然后在右边的设置中,将ACCELERATOR选择GPU T4 x2作为算力,PERSISTENCE选择Files Only, INTERNET设置成on,这三个步骤很关键!缺一个都无法正常运行。

如果没有GPU选项,说明你没有验证手机号,请你重新查看上面的教程,不要跳步骤。

以上步骤为基本操作,弄好了之后我们就可以开始运行代码了!有两种方法运行代码

方法一:Run All直接运行(代码编辑页面不能关,否则离线40分钟后自动关机)

1.然后在页面的上方点击Run All,首次启动需要下载各种依赖和模型所以会比较慢一点,然后拉到最底下查看输出日志

2.大约10分钟后输出的最后面会有一个gradio.live的链接,点击进去即可以玩AI了(如果白屏请换Edge浏览器,经测试国内浏览器打开会白屏)

方法二:Save Version后台运行(推荐手机用户,即使代码编辑页关了也能离线运行)

1.点击右上角的Save Version。

2.设置中按照如图所示这样调,高级设置要记得选GPU环境,然后Save。

3.在左下角点开查看正在运行中的任务,在正在运行的项目中展开,点击Open Logs In Viewer查看运行日志。

4.大约10分钟后输出的最后面会有一个gradio.live的链接,点击进去即可以玩AI了, save version运行下 如果画完了,记得关机,否则会一直扣费 。


接下来是如何上传、更换模型教程:

方法一:通过下载链接上传模型

我们可以去Civitai或者huggingface中找到自己喜欢的模型。

在下载处右键,复制下载链接。

将下载链接填在对应的配置项。(注意好模型是什么类型的,千万别弄错!)

重新启动,即可看见模型被加载进入webui里了。

方法二:通过数据集上传模型(几乎已弃用,非不要不使用)

1.先上传数据集(datasets)。

2.给这个数据集命名,上传完毕之后点创建。

3.将路径写在Stable Diffusion路径那里,将路径用单引号包裹起来,如果你想加载多个,那么请在每个路径都用逗号隔开(标点符号必须是英文半角的)

4.然后重新启动即可


进阶教程

如何在kaggle使用frp代理内网穿透(解释一下:内网穿透是一种将局域网或内网中的计算机服务暴露在公网上的技术。通过内网穿透技术,可以在外网访问内网中的计算机服务,比如访问内网中的网站、数据库等。这种技术通常用于企业内部网络的远程访问、开发调试、家庭网络穿透等场景。)

frpc内网穿透比webui自带的gradio穿透速度更快更稳定,而且能24小时都开着,gradio链接不稳定容易掉。

1.到https://www.natfrp.com/user/ 注册一个账号并且实名认证。

2.新建一个隧道,节点选择海外的,类型选择TCP隧道(如果你有域名,那么可以选择http协议或者https,利用DNS记录)。

3.填本地端口,Webui默认是7860,如果你想双开webui,那么第二个webui的端口就是7861。远程端口让系统自动生成。

4.填好了之后保存,下载配置文件。

5.将配置文件上传到kaggle的数据集。

6.将ini配置文件的路径写在frpcConfigFile里,将useFrpc的False改成True。

7.然后启动,即可从frpc隧道中进入webui,如果进入不了,就先等模型加载完再进入。

(如果出现代理冲突等问题,检查是不是开了上一个进程没关导致引起冲突)

如果你选用的是http协议或者https协议,那么请在域名的服务商填写好自己的DNS记录,例:


那么我们就要在服务商这样设置:

 这样,就是不是有一种自己搭建网站的感觉了呢?


如何在kaggle使用ngrok代理内网穿透(需要魔法)

第一步:获取ngrok(https://dashboard.ngrok.com/ ),注册并登录。

第二步:在”Your Authtoken”里面复制你的Authtoken。

第三步:创建一个新TXT文件,并把你的Authtoken复制进去,PS:其它什么都不要写,文件名最好是英文。

第四步:上传到Kaggle数据集。

第五步:在脚本添加你的数据集。

第六步:在ngrokToken里面复制你的Authtoken路(如:/kaggle/input/114514/Ngrok_114514.txt)。

第七步:将useNgrok设置为True。

第八步:启动。

第九步:等好了之后,回到https://dashboard.ngrok.com/ ,然后选择Cloud Edge > Endpoints然后有一个全新的URL,那个URL就是你的网站,也可以在输出日志里找到.ngrok.io的链接,要等项目加载完再访问,不然可能会失败,出现http://0.0.0.0:7860 本地链接这样的就算加载完了。

这样就完全实现了SD的云端部署并且可以通过公网地址访问了。

发表回复