我正在参与「兔了个兔」构思投稿大赛,详情请看:「兔了个兔」构思投稿大赛

前语

这不兔年到了,薅薅兔毛;

继帮兔子完成了 作一首诗词,写一篇文章 之后,小兔子又有新的主意了;

小兔子说,新年到了,她想要一张自画像,可是她自己又画不来,拜托博主用 GPT 帮她画一个;

人美心善的博主当然是怅然答应了;

练习

预备一批练习集和一批验证集作为预练习的数据集,对两个数据集的图文对进行相似性打分,挑选 score 大于0.2的作为终究的预练习数据集;

初始化 text encoder,先只练习 text encoder,以便保存原始模型的生成才能且完成中文概念的对齐;

终究在一百万的图文对上练习了一个 epoch;

使用

1、导入对应的包:

from diffusers import StableDiffusionPipeline

TIPS

要注意 transform 和 torch 的版别,由于新旧版别有所改动,会出现版别不兼容的情况,要么便是修改源码,省力点的就直接将这两个包更新到最新;

博主这儿的版别更新变动如下:

  • transform : 4.17.0 -> 4.25.1
  • torch : 1.6.0 -> 1.13.0

2、初始化:

pipe = StableDiffusionPipeline.from_pretrained(check_point).to("cuda")

3、得到成果:

prompt = '兔子,新年,油画'
img = pipe(prompt, ...).images[0]  
【AI】用 GPT 帮小兔子画肖像
【AI】用 GPT 帮小兔子画肖像
【AI】用 GPT 帮小兔子画肖像

解决问题


cannot import name 'EntryNotFoundError' from 'huggingface_hub.utils'

这个报错可以从字面进行了解,便是说没有 utils 中没有 EntryNotFoundError,直接进入源码进行查看:

...
from huggingface_hub.utils import EntryNotFoundError, RepositoryNotFoundError, RevisionNotFoundError
...
except RepositoryNotFoundError:
    raise EnvironmentError(
        f"{pretrained_model_name_or_path} is not a local folder and is not a valid model identifier"
        " listed on 'https://huggingface.co/models'\nIf this is a private repository, make sure to pass a"
        " token having permission to this repo with `use_auth_token` or log in with `huggingface-cli"
        " login`."
    )
except RevisionNotFoundError:
    raise EnvironmentError(
        f"{revision} is not a valid git identifier (branch name, tag name or commit id) that exists for"
        " this model name. Check the model page at"
        f" 'https://huggingface.co/{pretrained_model_name_or_path}' for available revisions."
    )
except EntryNotFoundError:
    raise EnvironmentError(
        f"{pretrained_model_name_or_path} does not appear to have a file named {cls.config_name}."
    )

发现只用在了 抛出反常 这块代码里,因而博主一开始就直接将这一段注释掉了,成果还有下一个报错;


cannot import name 'ModelOutput' from 'transformers.utils'

这个报错就属所以新旧版别的变动了,直接查看官方文档;

博主原先的 transformers 版别是 4.17.0,ModelOutput 是在 transformers.file_utils 里边的,如下图所示:

【AI】用 GPT 帮小兔子画肖像

而在最新的 transformers 版别 4.25.1 中,ModelOutput 是在 transformers.utils 里的,因而才引起的这个报错;

【AI】用 GPT 帮小兔子画肖像

当然可能在前面几个版别就已经改动了,这儿博主只看了最新版别的官方文档;


module 'torch.nn' has no attribute 'SiLU'

这个也是由于版别问题形成的;

博主之前的 torch 版别是 1.6.0,可以看到官方文档 torch.nn 中并没有 SiLU

【AI】用 GPT 帮小兔子画肖像

可是下个版别 1.7.0 就有了,不过博主最终仍是更新到了 1.13.0 版别:

【AI】用 GPT 帮小兔子画肖像

后记

以上便是【AI】用 GPT 帮小兔子画肖像的全部内容了。

希望本篇博文对我们有所协助!

系列文章:

  • 【AI】用 GPT 帮小兔子作首诗
  • 【AI】用 GPT 帮小兔子写文章
  • 【AI】用 GPT 帮小兔子画肖像

上篇精讲:【AI】用 GPT 帮小兔子写文章

我是,期待你的关注;

创造不易,请多多支撑;

系列专栏:AI NLP