注意:文章中部分信息由 chatgpt 生成,不保证 chatgpt 不在说胡话。
一. AI 模型类别
1. 大模型/底模型【必备】
:::info
大模型通常指的是具有大量参数和复杂结构的机器学习模型,它们可以处理大规模的数据集,并可以进行高级别的特征学习和表示学习。 底模型通常指的是较小且简单的模型,例如线性回归或决策树。底模型可以作为大模型的基础或是和大模型结合使用,来解决数据的不同挑战。:::
比如 stable diffusion 的 1.4 ,1.5,2.0,2.1 版本都是大模型,具备泛化性和通用性,这在绘图时时必须的。
2. VAE【必备】
:::info
VAE是一种生成模型,它结合了自动编码器(AE)和概率编码方法。VAE背后的主要思想是学习一个潜在变量(latent variable)的表示方式,并且使用这个表示方式来生成新的数据。 VAE 的一个重要的组成部分是编码器(encoder),它将输入数据转换为潜在变量的分布。另一个重要的组成部分是解码器(decoder),它将潜在变量的样本解码为数据。在训练过程中,VAE与 AE相似地使用重构误差来调整参数。但是,VAE还使用了KL 散度或变分下界(variational lower bound)来约束潜在变量的分布,以使得生成的数据更加为多样化。:::
在图像生成的最后,将图像在潜在空间中的引变量 latent variable 解码为我们可以识别的图像,这也是绘图时必须的模型,只不过有时候大模型已经内嵌了 VAE 模型就不需要我们添加了。
3.微调模型 Lora, Embedding, HyperNetwork, Dreambooth
:::info
微调模型(Fine-Tuning Model)指的是将预训练好的模型在特定任务上进行微调,以提高模型在该特定任务上的性能。常见的预训练模型有BERT、GPT等,微调通常需要根据具体任务对模型进行修改,然后在小规模数据上进行训练。:::
:::info
Low-Rank Adaptation of Large Language Models (LR-ALM) 是一种用于提高大型语言模型性能的技术。该技术利用低秩矩阵分解和自适应学习方法,通过逐步更新嵌入层的参数来提高语言模型的性能。:::
:::info Embedding(嵌入)是一种将高维数据嵌入到低维空间中的技术,常用于自然语言处理中将文本转化为向量表示。Embedding可以捕捉到词汇之间的语义关系,以及同一词汇在不同上下文中的含义。
:::
:::info
HyperNetwork是一种用于生成神经网络权重的方法,它通过一个较小的网络在运行时动态生成另一个较大的网络的权重。HyperNetwork可以用于神经网络压缩、个性化网络设计等场景。:::
:::info
DreamBooth是一个深度学习模型,用于微调现有的文生图模型(英语),由Google Research和波士顿大学的研究人员于2022年开发。最初利用谷歌开发的的Imagen文生图模型开发,DreamBooth可以应用到其他文生图模型,在使用指定主题的三到五张图像进行演算、训练后,可以让模型产生更精细和个性化的输出图像。 —- from wiki:::
- 微调模型可以帮助生成出特定风格和任务的图像,是可选的,微调模型需要配合大模型使用。
- CheckPoint 是指在模型训练过程中保存的模型参数,用于在训练过程中进行模型恢复或模型迁移。任何训练后的大模型都可以看作是某个训练阶段的版本,所以 CheckPoint 模型也可以被称为大模型。
- Text Inversion = Embedding,输入文本,输出其潜在向量表示。
详细区别请见:
二. 模型后缀
1. SafeTensor推荐
:::info
SafeTensor是一个Python库,用于保护机器学习模型在生产环境中的使用。它可以帮助机器学习工程师和数据科学家遵循最佳安全实践,并防止模型被攻击。SafeTensor提供了一种简单的方式来加密模型以保护模型的敏感信息,同时使模型仍然能够在生产环境中使用。同时,SafeTensor还提供了一些工具来帮助工程师进行模型质量评估和监控。:::
以 .safetensor
为后缀名,模型是加密的,除非获得开发者的密钥,否则无法获得其模型参数,对于使用者来说更加安全,据说加载速度更快,预计会逐步取代 .ckpt
格式.
2. PickleTensor可能不安全
:::info
PickleTensor 是一个基于 Python 库 pickle 的扩展,可以用于序列化和反序列化 TensorFlow 的张量。使用 PickleTensor 将张量对象序列化为字节对象,以便在本地或通过网络传输时保存状态。它非常适合在分布式环境中使用,可以方便地在进程之间传输 Tensor 对象。:::
以 .ckpt
为后缀名,模型是开源的,可以获得其模型参数,可能包含恶意代码,如果不信任模型来源,加载 ckpt 文件可能危及安全。
三.模型版本
stabilityai/stable-diffusion-2-1 at main
在huggingface 网站上下载模型文件时可以看到模型的不同版本,ema,pruned 等
1. pruned 剪枝推荐
:::info
Pruned 剪枝是机器学习中的一种数据压缩技术,它通过去除决策树或神经网络中不必要的决策或连接来减小模型的大小以及预测时的计算负担,从而提高模型的推理速度和存储效率。:::
推荐使用,体积小,运行速度快。
2. ema推荐
:::info
EMA是指指数移动平均值(Exponential Moving Average),在深度学习中,EMA被广泛应用于优化神经网络的参数。EMA的原理是使用指数衰减加权平均的方法来估算值的变化趋势。在神经网络的训练中,EMA被用来估算每个参数的平均值,在梯度下降过程中,使用EMA代替普通的梯度下降可以使模型更加稳定。:::
推荐使用,平滑模型参数更新,提高模型的鲁棒性和泛化能力,降低训练过程中的震荡和波动。
3. fp,fp16,(fp32推荐)
:::info
FP、FP16、FP32 是浮点数的数据类型,分别表示单精度浮点数、半精度浮点数和双精度浮点数。 在计算机内部表示浮点数时,通常采用IEEE 754标准,其具体规范如下:- FP32(float):使用32位二进制表示,其中1位表示符号位,8位表示指数,23位表示尾数。
- FP16(half):使用16位二进制表示,其中1位表示符号位,5位表示指数,10位表示尾数。
- FP(double):使用64位二进制表示,其中1位表示符号位,11位表示指数,52位表示尾数。
:::
fp32 相比 fp16 存储了更多的小数,fp16 的模型精度较低,可能影响模型的性能和精度,但它可以减少模型的存储空间和计算量,从而提高模型的训练和推理效率。如果电脑内存足够则推荐采用 fp32。