机器学习基础

2024年1月31日 · 3106 字 · 7 分钟 · AI 机器学习

机器学习基础

一些名词与概念

Transformer

是一种深度学习模型架构,它在自然语言处理(NLP)领域取得了革命性的成功,尤其是在机器翻译、文本摘要、问答系统等任务中。Transformer 模型的核心特点是自注意力(Self-Attention)机制,它允许模型在处理序列数据时,能够同时考虑序列中的所有元素,而不仅仅是局部的上下文。

PyTorch:

PyTorch 是一个由 Facebook 的 AI Research (FAIR) 团队开发的开源机器学习库,它以易用性和灵活性著称。 PyTorch 提供了 torch.nn 模块,其中包含了构建神经网络所需的各种层和激活函数。 对于 Transformer,PyTorch 提供了 torch.nn.Transformer 和 torch.nn.TransformerEncoder、torch.nn.TransformerDecoder 等类,可以直接用于构建 Transformer 模型。 PyTorch 的动态图(Dynamic Graph)特性使得模型的调试和实验更加方便。 TensorFlow:

TensorFlow

TensorFlow 是由 Google Brain 团队开发的一个开源机器学习库,它支持多种编程语言,包括 Python。 TensorFlow 提供了 tf.keras API,这是一个高级 API,简化了构建和训练模型的过程。 对于 Transformer,TensorFlow 提供了 tf.keras.layers.MultiHeadAttention 和 tf.keras.layers.Layer 的子类,如 tf.keras.layers.Transformer,用于构建 Transformer 模型。 TensorFlow 支持静态图(Static Graph)和动态图(Eager Execution),后者提供了更灵活的编程模式。

LoRA 大模型微调技术

LoRA(Low-Rank Adaptation)是一种用于微调大型语言模型的技术,它允许在不修改模型结构的前提下,通过训练少量数据来适应特定的任务或风格。这种方法最初应用于自然语言处理(NLP)领域,用于微调像GPT-3这样的模型,后来也被用于图像生成领域,特别是在Stable Diffusion模型中。

  • 在Stable Diffusion模型中,LoRA通过在模型的交叉注意力层(cross-attention layers)中插入低秩矩阵来实现风格或内容的适应。这些低秩矩阵可以看作是模型的“插件”,它们在训练过程中学习到如何影响模型的输出,从而实现对特定风格或内容的定制化。
  • LoRA模型通常体积较小,文件大小一般在2-500MB之间,这使得它们在资源消耗上比完整的大型模型要小得多,更适合个人开发者和社区用户使用。通过LoRA,用户可以训练出具有特定风格(如某个艺术家的风格)或特定角色(如动漫角色)的模型,而无需从头开始训练整个大型模型。
  • 在实际应用中,LoRA模型可以与基础模型(如Stable Diffusion的checkpoint模型)结合使用,通过调整LoRA模型的权重来控制其对最终图像生成的影响程度。这样,用户可以在保持基础模型稳定性的同时,实现对生成图像风格的精细调整。

SD 两种模型类型:Checkpoints 和 LoRA

在Stable Diffusion模型中,Checkpoints(通常简称为CKPT)和LoRA(Low-Rank Adaptation)模型是两种不同类型的模型,它们在结构、用途和特点上有所区别:

  1. Checkpoints(CKPT)

    • 定义:Checkpoints是完整的模型文件,包含了Stable Diffusion模型的所有训练数据和参数。这些模型通常体积较大,可以达到几GB,包含了丰富的信息和功能,是稳定扩散法术的核心。
    • 用途:Checkpoints模型用于执行图像生成任务,它们可以独立运行,不需要额外的微调。用户可以直接使用这些模型来生成图像,或者在它们的基础上进行LoRA微调。
    • 特点:由于体积较大,Checkpoints模型可能需要较长的加载时间和较高的计算资源。它们通常提供了高质量的图像生成能力,但可能在特定风格或主题上不够灵活。
  2. LoRA(Low-Rank Adaptation)模型

    • 定义:LoRA模型是一种微调技术,它通过引入一个低秩适配矩阵来实现对模型的微调,而不需要改变模型的结构。LoRA模型通常体积较小,通常在几十到几百兆左右。
    • 用途:LoRA模型用于在已有的Checkpoints模型基础上进行特定风格的微调,以提高生成图像的质量和稳定性。它们可以用于实现更精细的风格控制,如特定的艺术风格、角色特征等。
    • 特点:LoRA模型的体积较小,便于快速加载和使用。它们允许用户在不重新训练整个模型的情况下,快速适应新的风格或主题。LoRA模型的权重可以通过调整来控制其对最终图像生成的影响程度。

Checkpoints模型提供了基础的图像生成能力,而LoRA模型则提供了在特定风格上的微调和定制化能力。 用户可以根据需要选择适合的Checkpoints模型,并在此基础上使用LoRA模型进行进一步的优化和风格化。 这种组合使用方式使得Stable Diffusion模型更加灵活和强大,能够满足多样化的图像生成需求。

Comfyui (Midjoury → Stable Diffusion → Comfyui)

ComfyUI 是一个基于节点流程的 Stable Diffusion AI 绘图工具,它提供了一个用户友好的界面,允许用户通过图形化的方式设计和执行高级的稳定扩散管道。 这个界面特别适用于那些希望以更精确和可复现的方式定制工作流程的用户。ComfyUI 的设计灵感来源于 Substance Designer, 它通过将 Stable Diffusion 的生成流程分解为一系列节点, 使得用户可以更直观地控制图像生成的各个步骤。 ComfyUI 的主要特点包括: 模块化设计:用户可以通过添加、连接和配置不同的节点来构建复杂的工作流程,每个节点都有特定的功能,如文本输入、图像处理、风格转换等。 可复现性:由于工作流程是基于节点的,用户可以轻松地保存和分享他们的流程,确保生成的图像具有高度的一致性和可重复性。 低显存要求:ComfyUI 对显存的要求相对较低,这意味着即使是配置较低的设备也能运行,同时出图速度也有所提升。 插件支持:ComfyUI 支持各种插件,这些插件可以扩展其功能,如界面汉化、风格样式调整、中文输入支持等,为用户提供更多的创作可能性。 易于安装和使用:ComfyUI 提供了便携式的安装包,用户可以轻松地在 Windows 上安装和运行,甚至可以在没有 GPU 的情况下仅使用 CPU 运行。 社区支持:ComfyUI 有一个活跃的社区,用户可以在社区中分享自己的工作流程,获取帮助,以及下载和安装其他用户创建的插件。 ComfyUI 适合那些希望在 Stable Diffusion 图像生成过程中拥有更多控制权的艺术家、设计师和开发者。通过 ComfyUI,用户可以更自由地探索和实现他们的创意愿景。

大模型常见文件后缀格式

文件后缀 用途描述
.pt.pth PyTorch模型状态字典文件,包含模型权重和优化器状态。
.bin.bin.gz 模型权重和参数的二进制文件,通常用于模型的加载和推理。
.json.config 模型配置文件,包含模型结构和超参数等信息。
.h5 TensorFlow和Keras模型文件,包含模型的结构和权重。
.pb.pbtxt TensorFlow模型文件,.pb为二进制格式,.pbtxt为文本格式。
.ckpt TensorFlow模型检查点文件,用于保存训练过程中的模型状态。
.tflite TensorFlow Lite模型文件,优化后的模型适用于移动和嵌入式设备。
.onnx ONNX模型文件,用于在不同深度学习框架间共享模型。
.safetensors 由 Hugging Face 提出的用于保存机器学习的张量数据,它只包含模型的权重,而不包括优化器状态或其他信息,通常用于模型的最终版本。

主流深度学习框架及其对应的模型文件格式后缀:

深度学习框架 文件格式后缀 描述
TensorFlow .meta, .index, .data-00000-of-00001 保存模型全集,包括图结构和权重
.pb SavedModel 格式,存储图的结构
.h5 HDF5格式,模型结构与权重的全部信息
PyTorch .pt, .pth 用于保存或加载模型的权重或完整模型
Keras .h5, .hdf5 存储模型的结构与权重
.pb SavedModel 格式,TensorFlow 2.x中Keras模型推荐保存格式
PaddlePaddle .pdparams 保存模型的权重
.pdmodel 保存模型的结构
.pdopt 存储优化器的状态信息
Hugging Face .safetensors 用于存储大型语言模型的权重数据,设计为跨框架兼容

参考资料