首页 > 其他分享 >Latent Diffusion Model搭建过程

Latent Diffusion Model搭建过程

时间:2023-08-09 19:46:59浏览次数:45  
标签:Diffusion diffusion github latent py CUDA Latent Model model

目录

此方式在服务器(Ubuntu)上安装Stable Diffusion,使用miniconda虚拟环境。在Windows10系统上使用VScode远程开发方法进行调试和运行。

注意:使用VSCode连接服务器远程开发调试,代码中的相对路径是打开文件夹的路径,并不是当前这个py文件所在的路径

源码拷贝

github仓库地址,直接选择下载压缩文件即可

image-20230809185427273

解压到选定目录,查看项目文件结构如下

image-20230809185907800

虚拟环境

按照github仓库README.md的方法,创建虚拟环境的命令如下

conda env create -f environment.yaml
conda activate ldm

但中间出了很多问题,总结如下

  1. 环境配置要去github上克隆项目,要用到git,所以要先确保git安装,并且环境变量配置好

    image-20230809190351461

  2. 上述命令要在当前项目目录下运行,运行命令前检查当前目录下是否包含environment.yamlsetup.py两个文件

    image-20230809190521112
  3. 环境配置中要去github克隆并安装cliptaming-transformers两个项目,并置于项目目录/src下,所需时间较长,耐心等待

    image-20230809190709828

VSCode带命令行参数运行py文件

需要在Run and Debug一栏创建launch.json文件。并在configurations中指定args,具体参数见github仓库README.md

格式为

"--arg1", "value_1",
"--arg2", "value_2",
image-20230809191204506

然后打开要执行的py文件,点击绿色按钮,或直接使用F5快捷键,运行即可,在Terminal会输出刚刚设定的命令行参数

image-20230809191604713

运行输出如下

image-20230809191750839

生成的结果在output/txt2img-samples目录下

查看生成的图片,prompt是a happy bear reading a newspaper, oil on canvas(病毒怪物正在弹吉他,布面油画)

image-20230809192955371

尝试更换prompt:A german shepherd dog sits on the edge of a vast wheat field at sunset, realistic style(夕阳西下,一条德国牧羊犬坐在广阔的麦田边,写实风格),生成效果如下

image-20230809192919240

问题记录

Problem1:packaging.version.InvalidVersion: Invalid version: '0.10.1,<0.11'

issue地址:https://github.com/CompVis/latent-diffusion/issues/207

解决方式:

pip install packaging==21.3
pip install 'torchmetrics<0.8'

Problem2:ValueError: Connection error, and we cannot find the requested files in the cached path(error code :BertTokenizerFast.from_pretrained("bert-base-uncased"))

参考地址:https://github.com/huggingface/transformers/issues/25111

解决方式

downloading the following file in the https://huggingface.co/bert-base-uncased/tree/main:

  • config.json
  • vocab.txt
  • pytorch_model.bin
tokenizer = BertTokenizerFast.from_pretrained(args.text_encoder)
改为

tokenizer = BertTokenizerFast.from_pretrained("./bert_localpath/")

./bert_localpath/ is the path where I put the above file.(ps:这里我使用的是绝对路径,相对路径还是会报错)

Problem3:CUDA error: out of memory

Exception has occurred: RuntimeError
CUDA error: out of memory
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.
  File "/mnt/disk6_brain/latent_diffusion/latent-diffusion-main/scripts/txt2img.py", line 28, in load_model_from_config
    model.cuda()
  File "/mnt/disk6_brain/latent_diffusion/latent-diffusion-main/scripts/txt2img.py", line 108, in <module>
    model = load_model_from_config(config, "/mnt/disk6_brain/latent_diffusion/latent-diffusion-main/models/ldm/text2img-large/model.ckpt")  # TODO: check path
RuntimeError: CUDA error: out of memory
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.

参考地址:https://www.codetd.com/ru/article/14935168

默认使用0号GPU,但是0号GPU已经被占用了,所以要在代码中修改默认GPU编号,此修改要在import torch之前

import os
os.environ["CUDA_VISIBLE_DEVICES"] = '1'

标签:Diffusion,diffusion,github,latent,py,CUDA,Latent,Model,model
From: https://www.cnblogs.com/dctwan/p/17617835.html

相关文章

  • Django之Model操作数据库
    ORM简介O(objects):类和对象。R(Relation):关系,关系数据库中的表格。M(Mapping):映射。DjangoORM框架的功能:建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。根据设计的模型类生成数据库中的表格。通过方便的配置就可以进行数据库的切换。数据库的......
  • 【专栏阅读】World models
    来源:如何理解Tesla和Wayve在CVPR2023workshop上提到的worldmodel?-EatElephant的回答-知乎https://www.zhihu.com/question/610849510/answer/3108529249 “CVPR2023自动驾驶workshop上Tesla和Wayve都提到了他们在利用生成大模型方面的最新探索方向,即大模型来生成自动......
  • 递归遍历QTreeView+QStandrdItemModel
    //递归遍历点击查看代码voiditerateTreeViewNodes(constQModelIndex&parentIndex,QStandardItemModel*model,QVector<QStandardItem*>&items){ introwCount=model->rowCount(parentIndex); intcolumnCount=model->columnCount(parentIndex); ......
  • v-model限制输入的妙用
    示例v-model.number即限制输入数字(原理是每次输入都会转化为数字,非数字则会丢弃)还有更多,如:v-model.trim:去除首尾空格。可以避免误输入一些不能看见的首尾空格。v-model.lazy:延迟更新。默认情况下,v-model在每次输入时都会立即触发input事件,而使用v-model.lazy可以将更新触发......
  • Latent Diffusion Model快读
    总览  原始的扩散模型训练及推理是在像素空间进行的,这将耗费大量的GPU和能量资源。为了缓解这一状况,作者提出了一种方案,将高分辨率图像的合成过程分解为两个过程:图像编解码和隐特征空间扩散。图像编码器将像素空间中图像编码为隐特征latentcode(生成过程不需要此步骤)扩散模......
  • 论文解读(Moka‑ADA)《Moka‑ADA: adversarial domain adaptation with model‑orient
     Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:Moka‑ADA:adversarialdomainadaptation withmodel‑orientedknowledgeadaptation forcross‑domainsentimentanalysis论文作者:MaoyuanZhangXiangLiFeiWu论文来源:2023aRxiv论文地址:download 论......
  • Vue3 自定义组件使用v-model
    Vue的数据流传递是单向的,也就说数据只能由父组件通过props传递给子组件,子组件无法修改父组件传过来的状态,这样做为了避免因为子组件修改父组件的状态而导致数据流混乱以至难以理解。所以千万不要在子组件中直接修改props。子组件如果想要将数据传递给父组件,就需要使用Vue提供......
  • [maven]java.lang.NoSuchMethodError: org.apache.maven.model.validation.DefaultMod
    Maven异常环境idea版本:2020.1.3maven版本:3.8.5问题描述在idea中加入maven配置时,idea一直报出java.lang.NoSuchMethodError:org.apache.maven.model.validation.DefaultModelValidator异常异常信息1)Errorinjectingconstructor,java.lang.NoSuchMethodError:org.......
  • odoo 模型权限 ir.model.access
    odoo权限分两种,一种是菜单,一种是模型,这里介绍模型权限开发好一个模型以后,先要在security文件夹中创建一个ir_model_access.css文件,然后设置权限,如下图:这里有两个字段需要注意:1、group_id:id:一般设置为base.group_user,中文描述为内部用户,因为base.group_user是odoo预先设定的群......
  • odoo ir.model.data 外部标识模型
    所有xml文件定义的record都保存在这个表,比如第一个图中定义的cn_com_brandmax_product_action2,在第2个图的表中存储:可以在技术->外部标识菜单中打开这个页面,如下图:......