记录内网Docker启动Stable-Diffusion遇到的几个坑
摘要:最近看到K8s启动stable-diffusion的文章,想着在自己开发环境复现一下。没想到在内网环境还遇到这么多问题,记录一下。
本文分享自华为云社区《内网Docker启动Stable-Diffusion(AI作画)》,作者:tsjsdbd 。
最近看到K8s启动stable-diffusion的文章,想着在自己开发环境复现一下。没想到在内网环境还遇到这么多问题,记录一下。
1. 背景介绍
“AI作画”就是你给一段文字,AI自动生成图像;或者你给一张图像,AI自动生成另一种风格(比如自拍照=>漫画风)。这个方向的AI框架以开源的stable-diffusion为代表,著名的Midjourney则是商业版的“AI作画”。
2. 环境准备
由于“AI作画”一般是GPU为主,虽然CPU也可以,但是速度相较GPU会慢很多(见下图)。所以这里我们准备一个带GPU的Docker环境。
3. 下载镜像
根据文章里面提到的gpu版镜像地址(注:它这个镜像其实来自于开源社区:stable-diffusion-webui),直接:
docker pull zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion:v1.gpu
这里要连外网+非官方仓库,所以有2个配置需要为docker设置
- 为docker设置代理。
vi /etc/systemd/system/docker.service.d/http-proxy.conf [Service] Environment="HTTPS_PROXY=http://ip:3128"
类似这样,然后重启docker
- 将目标仓库地址设置为docker的信任仓库。
vi /etc/docker/daemon.json "insecure-registries": ["zibai-registry.cn-hangzhou.cr.aliyuncs.com"],
类似这样。
4. 启动Docker容器
由于需要打开Web页面,所以我们的docker需要设置端口映射,否则无法通过浏览器访问。
所以docker启动会带2个额外的参数:(1)挂载GPU卡。(2)设置端口映射
docker run -it -p 80:7860 --gpus "device=1" zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion:v1.gpu /bin/bash
5. 启动Stable-diffusion程序
在Docker容器中,按照启动命令执行:
python3 launch.py --listen
但是会报错:
这是因为这个镜像会联网下载“模型”。而我的容器无法联网。所以这里在容器里面设置代理:
export proxy=http://10.155.96.xx:3128 export http_proxy=$proxy export https_proxy=${http_proxy}
类似这样。但是还是下载失败,报“证书不合法”
关于这个 “huggingface.co”证书不合法的问题。找了一圈解决方案,都无效。
比如,导出证书,
然后拷贝到容器中,更新证书列表(2个证书都拷贝了,1个huggingface.co, 1个Huawei Web Secure):
update-ca-certificates
依然报证书不合法。
即使,我直接访问 huggingface.co 是OK的
也搜了类似的问题:https://github.com/huggingface/hub-docs/issues/54,但是仍然不行。
Ps:这里证书问题不知道怎么解,有思路的同学,给点建议。
6. 修改代码,忽略证书校验
实在没办法,搜到的资料说可以在Python请求HTTP的函数里面关闭“证书校验”。
于是找到错误调用栈
这个request发送的函数,有个“忽略证书校验”的参数。
cat /stable-diffusion-webui/venv/lib/python3.8/site-packages/huggingface_hub/utils/_http.py
(ps:容器里面没有vi命令,所以我是在主机上改的。因为任意容器里面的文件,都可以在主机Host上看到)
于是我将其改为:
response = requests.request(method=method, url=url, **kwargs)
=》
response = requests.request(method=method, url=url, verify=False, **kwargs)
然后终于,可以顺利下载“模型”了
模型下载完后,依然报了个错:
什么? localhost 不能访问,怎么可能~ 搜到一个类似的问题:https://github.com/microsoft/TaskMatrix/issues/250
说是代理原因,导致访问本地失败。
于是加上:
export no_proxy="localhost, 127.0.0.1, ::1"
报错,看来 ipv6 这个格式不认识。
最终改为:
export no_proxy="localhost, 127.0.0.1"
一切OK。
7. 打开Stable-diffusion的WEB界面
浏览器输入开发机的地址,即可打开Web界面(因为我们设置了 80 端口映射)。
试了下效果,一般般,可能是我魔法咒语(Prompt)念的不太行。
(ps:有个“咒语”参考网站:https://civitai.com 从这里面下载的模型,生成效果不错)。
下载后,拷贝至对应目录:
docker cp ./majicmixRealistic_v4.safetensors 容器id:/stable-diffusion-webui/models/Stable-diffusion/
然后Web界面选择新下载的模型就行:
仅供参考~
参考:
《基于容器平台 ACK 快速搭建 Stable Diffusion》
其中Docker镜像对应dockerfile(万一镜像无法下载):
FROM nvidia/cuda:11.3.0-cudnn8-runtime-ubuntu20.04 ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ libgl1 libglib2.0-0 git wget python3 python3-venv && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* ADD . /stable-diffusion-webui WORKDIR /stable-diffusion-webui/ RUN ./webui.sh -f can_run_as_root --exit --skip-torch-cuda-test ENV VIRTUAL_ENV=/stable-diffusion-webui/venv ENV PATH="$VIRTUAL_ENV/bin:$PATH" VOLUME /stable-diffusion-webui/models VOLUME /root/.cache CMD ["python3", "launch.py", "--listen"]

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
GOTC | “基础设施与软件架构”专题论坛议程出炉
全球开源技术峰会(Global Open-source Technology Conference,简称 GOTC)是由开放原子开源基金会、 Linux 基金会亚太区、上海浦东软件园和开源中国联合发起的,面向全球开发者的一场盛大开源技术盛宴。 GOTC 2023 将于 5 月 27 日至 28 日在上海张江科学会堂召开。大会将以行业展览、主题发言、特别论坛、分论坛的形式展现,与会者将一起探讨元宇宙、3D 与游戏、eBPF、Web3.0、区块链等热门技术主题,以及开源社区、AIGC、汽车软件、AI 编程、开源教育培训、云原生等热门话题,探讨开源未来,助力开源发展。 其中,基础设施与软件架构专题论坛由阿里云程序语言与编译器团队负责人李三红担任出品人,将于 5 月 28 日举行。GOTC 2023 报名通道现已开启: https://www.bagevent.com/event/8387611,来吧,一起深入探讨底层技术。 大会亮点: 10 位大咖深入探讨底层技术 Java 静态编译技术与 Java 应用安全 从 ESB 到 Kafka 到 DaaS 操作系统、消息与事件、图数据库、微服务...
- 下一篇
基于云原生的物联大数据智能服务
摘要:物联大数据已成为当前物联网系统建设的核心,基于物联大数据的涌现智能和应用以及借此对物理世界的反馈和控制是未来物联网系统的建设目标。 本文分享自华为云社区《基于云原生的物联大数据智能服务》,作者:赵卓峰 、丁维龙 、于淇 / 北方工业大学数据工程研究院、大规模流数据集成与分析北京市重点实验室。 前言: 随着智慧城市、工业互联网等产业的迅速发展,物联网应用也正由离散的、示范性应用逐步走向多层次、规模化应用,并且深度融入人类社会的生产生活各个环节。物联大数据指的就是来自设备和传感、体现物理世界状态的一类大数据。如今,每当人们谈及物联网,联想到的已经不只是物理设备连接构成的网络,其背后还存在一个巨大的复杂信息/数据网络。而物联大数据正是这个复杂信息网络的核心之一,区别于传感器、传感网等传统物联网这些“前端”内容,而基于物联大数据的涌现智能和应用以及借此对物理世界的反馈和控制,正逐渐成为物联网关键构成的“后端”。 当前,物联大数据相关的物联网“后端”自主产权平台、工具和应用框架是我国当前短缺的核心软件,而这些不只是工业互联网、智慧城市、5G新型应用的基石,也是国家规划发展的多个高精尖产业的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19