使用EAIS软件包手动部署Stable-Diffusion

通过在ECS实例(非GPU实例)上绑定一个EAIS实例,即可生成一款新规格的GPU实例,该方式相比直接购买GPU实例,可以实现GPU资源的弹性使用(例如您可以根据实际需要绑定EAIS实例,即可灵活为ECS实例提供GPU资源),并为您降低部署成本和使用成本。本文为您介绍如何将EAIS实例绑定到ECS实例上,通过安装EAIS软件包的方式手动部署Stable-Diffusion。

背景信息

Stable-Diffusion是一个图片生成模型,您可以使用EAIS实例来部署Stable-Diffusion,也可以直接在GPU实例上部署。在ECS实例上绑定EAIS实例来部署Stable-Diffusion的方式,相比直接购买GPU实例部署,可以从如下方面节省成本。更多EAIS实例优势,请参见低成本

说明
  • 节省部署成本:

    在您使用ECS实例(非GPU实例)完成环境搭建之前,您无需创建EAIS实例,此时,仅有ECS实例(非GPU实例)在计费。如果您直接购买GPU实例然后在GPU实例上部署环境,将花费更多的成本用于部署环境。

  • 节省使用成本:

    • GPU资源灵活挂载:当您部署好Stable-Diffusion后,如果您暂时不需要执行Stable-Diffusion任务,您可以前往EAIS控制台解绑并释放EAIS实例。然后在您需要执行任务时,再重新创建并绑定EAIS实例,此时,您在ECS实例上部署的环境没有任何影响。因此,您只需要长期拥有一台相比GPU实例更便宜的ECS实例,然后在需要使用GPU时挂载一台EAIS实例,该方式可以节省更多成本。

      说明

      使用EAIS控制台和调用CreateEaisEi创建的EAIS实例,还可以通过停止或启动EAIS实例来灵活地为ECS实例提供GPU能力。只有启动EAIS实例时才会计费,停止EAIS实例即可结束计费,因此,还可以节省更多成本。

    • 单价便宜:对比计费单价,使用EAIS实例比相同算力的GPU实例更加便宜。

计费说明

在部署和使用Stable-Diffusion的过程中,涉及的计费内容如下:

  • ECS实例需要计费,更多信息,请参见计费概述

  • EAIS实例需要计费,更多信息,请参见产品计费

  • 如果您在部署过程中,使用了阿里云对象存储OSS,则OSS需要计费,更多信息,请参见计费概述

环境说明

本教程将以如下EAIS实例与ECS实例为例,为您介绍如何使用EAIS实例部署Stable-Diffusion。

  • ECS实例:

    • 实例规格:ecs.g7.xlarge(4 vCPU、16 GiB内存)

    • 操作系统:Ubuntu 20.04

    • 系统盘容量:100 GiB

  • EAIS实例规格:eais.ei-a6.2xlarge

  • ECS实例和EAIS实例的地域和可用区:华北2(北京) 可用区I

    说明

    ECS实例与EAIS实例处于同一个可用区时,可以提高推理性能。您可以在EAIS实例规格支持的地域和可用区下创建ECS实例。EAIS实例规格支持的地域和可用区信息,请参见实例规格限制

步骤一:创建ECS实例

  1. 登录并前往ECS实例创建页

  2. 创建一台专有网络类型的ECS实例,来作为EAIS实例的绑定目标。

    具体操作,请参见实例创建方式介绍

    创建ECS实例时,您需要注意如下配置项,未提及的配置项您根据实际情况设置即可。

    配置项

    配置示例

    付费类型

    按量付费

    地域

    华北2(北京)

    网络及可用区

    • 网络类型:专有网络

    • 可用区:华北2 可用区I

    实例

    ecs.g7.xlarge

    镜像

    选择公共镜像,并设置为Ubuntu 20.04 64位

    系统盘

    容量设置为100 GiB

    公网IP

    选中分配公网IPv4地址

步骤二:在ECS实例上部署Stable-Diffusion环境

  1. 远程连接ECS实例。

    具体操作,请参见在Linux或macOS环境中使用用户名密码验证

  2. 安装Docker。

    1. 执行如下命令,安装Docker依赖包。

      apt-get update
      apt install -y software-properties-common
    2. 执行如下命令,安装Docker。

      curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | apt-key add -
      add-apt-repository \
      "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
      $(lsb_release -cs) \
      stable"
      apt-get update
      apt-get install -y docker-ce
  3. 执行如下命令,下载Pytorch官方的Docker镜像。

    docker pull pytorch/pytorch:1.13.1-cuda11.6-cudnn8-devel
  4. 执行如下命令,启动Docker容器。

    docker run --net host -it pytorch/pytorch:1.13.1-cuda11.6-cudnn8-devel
  5. 安装EAIS软件包。

    1. 执行如下命令,安装EAIS环境依赖包。

      apt-get update
      apt-get install -y wget curl iputils-ping
    2. 安装eais-tool软件包,然后查看EAIS实例的相关信息。

      具体操作,请参见eais-tool

    3. 安装eais-cuda。

      具体操作,请参见eais-cuda

  6. 部署Stable-Diffusion环境。

    1. 执行如下命令,安装stable-diffusion webui运行依赖的软件包。

      apt-get install -y git libgl1 libglib2.0-dev
    2. 执行如下命令,下载stable-diffusion源码。

      git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
      cd stable-diffusion-webui
    3. 执行如下命令,安装stable-diffusion webui运行依赖的Python软件包。

      说明

      由于使用git clone命令安装stable-diffusion webui运行依赖的Python软件包可能会安装失败,建议您提前将待安装的软件包存放到OSS上,然后运行命令直接从阿里云OSS上下载并安装软件包,本教程以该方式为例进行操作。

      pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
      pip3 install -r requirements_versions.txt -i https://mirrors.aliyun.com/pypi/simple
      
      wget https://aiacc-inference-public.oss-cn-beijing.aliyuncs.com/stable-diffusion/CLIP.tar.gz
      tar zxf CLIP.tar.gz
      pip3 install CLIP/ -i https://mirrors.aliyun.com/pypi/simple
      
      wget https://aiacc-inference-public.oss-cn-beijing.aliyuncs.com/stable-diffusion/open_clip.tar.gz
      tar zxf open_clip.tar.gz
      pip3 install open_clip/ -i https://mirrors.aliyun.com/pypi/simple
      
      python3 launch.py --skip-torch-cuda-test --exit
      pip3 install markupsafe==2.0.1 -i https://mirrors.aliyun.com/pypi/simple
    4. 可选:执行如下命令,下载Stable-Diffusion预训练模型。

      您可以使用该命令下载Stable-Diffusion预训练模型用于推理,您也可以在运行Stable-Diffusion程序时,等待程序自动下载该模型。

      wget https://aiacc-inference-public.oss-cn-beijing.aliyuncs.com/stable-diffusion/v1-5-pruned-emaonly.safetensors -P models/Stable-diffusion/

步骤三:创建EAIS实例并绑定至ECS实例

  1. 创建EAIS实例。

    具体操作,请参见创建EAIS实例

    创建EAIS实例时,您需要注意如下配置项,未提及的配置项您根据实际情况设置即可。

    配置项

    配置示例

    地域

    华北2(北京)

    实例规格

    eais.ei-a6.2xlarge

  2. 将EAIS实例绑定至步骤一:创建ECS实例创建的ECS实例。

    具体操作,请参见绑定ECS实例

步骤四:启动EAIS实例

重要

仅使用EAIS控制台和调用CreateEaisEi创建的EAIS实例需要执行本操作。

绑定EAIS实例至ECS实例后,您必须要启动EAIS实例才能使用EAIS提供的GPU能力,具体操作,请参见启动EAIS实例

步骤五:启动Stable-Diffusion Web服务

  1. 远程连接ECS实例。

    具体操作,请参见在Linux或macOS环境中使用用户名密码验证

  2. 可选:执行如下命令,查看EAIS实例的相关信息。

    eais_smi

    您可以查看EAIS实例规格、EAIS GPU使用率等,回显如下。eais_smi工具查看硬件信息

  3. 执行如下命令,启动Stable-Diffusion Web服务。

    python3 launch.py --listen --api --enable-insecure-extension-access --skip-install

    回显信息如下,表示成功启动Stable-Diffusion Web服务。此时,您需要查看Stable-Diffusion Web服务的端口,默认为7860,如图所示。启动stable-diffusion web服务..png

  4. 为ECS实例配置安全组规则。

    你需要在您的ECS实例安全组规则中添加7860端口的访问权限,其中授权对象为您用来访问Stable-Diffusion Web服务的IP地址或IP地址段。具体操作,请参见添加安全组规则添加安全组..png

  5. 在您的本地机器上使用浏览器访问http://ECS实例的公网IP地址:7860,检查Stable-Diffusion Web服务是否搭建成功。

    如果成功访问网站,如图所示,表示您已成功搭建Stable-Diffusion Web服务。stable-diffusion web服务搭建成功..png

(可选)步骤六:停止EAIS实例

重要

仅使用EAIS控制台和调用CreateEaisEi创建的EAIS实例支持执行本操作。

当您暂时不需要EAIS实例提供的GPU能力时,可以停止EAIS实例,从而避免不必要的计费。具体操作,请参见停止EAIS实例

(可选)步骤七:解绑并释放EAIS实例

为满足您业务的灵活性,您可以根据需要解除ECS实例与已绑定的EAIS实例之间的关联,然后再释放EAIS实例,从而实现GPU资源的弹性使用。

  1. 将EAIS实例从ECS实例上解绑。

    具体操作,请参见解绑ECS实例

  2. 释放EAIS实例。

    具体操作,请参见释放EAIS实例

相关文档