使用 Amazon SageMaker JumpStart 微调文本到图像的稳定扩散模型

使用 Amazon SageMaker JumpStart 微调文本到图像的稳定扩散模型

源节点: 1968900

2022 年 XNUMX 月,我们 公布 AWS 客户可以从文本生成图像 稳定扩散 模特儿 亚马逊SageMaker JumpStart. Stable Diffusion 是一种深度学习模型,可让您在短短几秒钟内生成逼真、高质量的图像和令人惊叹的艺术作品。 虽然创造令人印象深刻的图像可以在从艺术到 NFT 等行业中找到用途,但今天我们也希望 AI 能够个性化。 今天,我们宣布您可以通过在您的自定义数据集上微调图像生成模型以使其适合您的用例 亚马逊SageMaker JumpStart. 这在创建艺术、徽标、自定义设计、NFT 等或有趣的东西(例如生成宠物的自定义 AI 图像或您自己的化身)时非常有用。

在这篇文章中,我们概述了如何通过两种方式微调稳定扩散模型:以编程方式通过 JumpStart API 可用的 SageMaker Python 开发工具包,以及 JumpStart 的用户界面 (UI),位于 亚马逊SageMaker Studio. 我们还讨论了如何做出设计选择,包括数据集质量、训练数据集的大小、超参数值的选择以及对多个数据集的适用性。 最后,我们讨论了最近在 JumpStart 中添加的具有不同输入语言和样式的 80 多个公开可用的微调模型。

稳定的扩散和迁移学习

Stable Diffusion 是一种文本到图像模型,使您能够仅通过文本提示创建逼真的图像。 扩散模型通过学习去除添加到真实图像中的噪声来进行训练。 此去噪过程生成逼真的图像。 这些模型还可以通过调节文本的生成过程来单独从文本生成图像。 例如,Stable Diffusion 是一种潜在的扩散,其中模型学习识别纯噪声图像中的形状,并在形状与输入文本中的单词匹配时逐渐将这些形状聚焦。 必须首先使用语言模型将文本嵌入到潜在空间中。 然后,使用 U-Net 架构在潜在空间中执行一系列噪声添加和噪声去除操作。 最后,去噪输出被解码到像素空间。

在机器学习 (ML) 中,将在一个领域中学到的知识迁移到另一个领域的能力称为 转移学习. 您可以使用迁移学习在较小的数据集上生成准确的模型,其训练成本比训练原始模型所涉及的成本低得多。 通过迁移学习,您可以在您自己的数据集上微调稳定的扩散模型,只需五张图像。 例如,左边是一只名为 Doppler 的狗的训练图像,用于微调模型,中间和右边是微调模型在被要求预测海滩上的多普勒图像和铅笔素描时生成的图像。

左边是用于微调模型的白色椅子的图像和微调模型生成的红色椅子的图像。 右侧是用于微调模型的脚凳图像和坐在脚凳上的猫的图像。

微调像 Stable Diffusion 这样的大型模型通常需要您提供训练脚本。 存在许多问题,包括内存不足问题、负载大小问题等等。 此外,您必须运行端到端测试以确保脚本、模型和所需实例以有效的方式协同工作。 JumpStart 通过提供已经过可靠测试的现成脚本简化了这个过程。 稳定扩散模型的 JumpStart 微调脚本建立在来自 梦想展位. 您可以通过 Studio UI 单击一次或使用极少的代码行来访问这些脚本 JumpStart API.

请注意,使用稳定扩散模型即表示您同意 CreativeML Open RAIL++-M 许可证.

通过 SageMaker SDK 以编程方式使用 JumpStart

本节介绍如何使用 SageMaker Python 开发工具包. 我们在 JumpStart 中选择合适的预训练模型,使用 SageMaker 训练作业训练该模型,并将训练后的模型部署到 SageMaker 端点。 此外,我们在部署的端点上运行推理,所有这些都使用 SageMaker Python SDK。 以下示例包含代码片段。 有关此演示中所有步骤的完整代码,请参阅 JumpStart 简介 – 文本到图像 示例笔记本。

训练和微调稳定扩散模型

每个模型都由一个唯一的标识 model_id. 下面的代码展示了如何微调一个稳定的扩散 2.1 基础模型 model_id model-txt2img-stabilityai-stable-diffusion-v2-1-base 在自定义训练数据集上。 完整列表 model_id 值和哪些模型是微调的,请参阅 带有预训练模型表的内置算法。 对于每个 model_id,为了通过 估计 SageMaker Python SDK 的类,您需要通过 SageMaker 中提供的实用函数获取 Docker 镜像 URI、训练脚本 URI 和预训练模型 URI。 训练脚本 URI 包含数据处理、加载预训练模型、模型训练和保存训练模型以供推理所需的所有代码。 预训练模型 URI 包含预训练模型架构定义和模型参数。 预训练模型 URI 特定于特定模型。 预训练模型 tarball 已从 Hugging Face 预先下载并使用适当的模型签名保存在 亚马逊简单存储服务 (Amazon S3) 存储桶,以便训练作业在网络隔离中运行。 请参阅以下代码:

from sagemaker import image_uris, model_uris, script_uris # Currently, not all the stable diffusion models in jumpstart support finetuning. Thus, we manually select a model
# which supports finetuning.
train_model_id, train_model_version, train_scope = ( "model-txt2img-stabilityai-stable-diffusion-v2-1-base", "*", "training",
) # Tested with ml.g4dn.2xlarge (16GB GPU memory) and ml.g5.2xlarge (24GB GPU memory) instances. Other instances may work as well.
# If ml.g5.2xlarge instance type is available, please change the following instance type to speed up training.
training_instance_type = "ml.g4dn.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve(
region=None,
framework=None, # automatically inferred from model_id
model_id=train_model_id,
model_version=train_model_version,
image_scope=train_scope,
instance_type=training_instance_type,
) # Retrieve the training script. This contains all the necessary files including data processing, model training etc.
train_source_uri = script_uris.retrieve(
model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
) # Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

使用这些特定于模型的训练工件,您可以构建 估计 类:

# Create SageMaker Estimator instance
sd_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", # Entry-point file in source_dir and present in train_source_uri. instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location, base_job_name=training_job_name,
) # Launch a SageMaker Training job by passing s3 path of the training data
sd_estimator.fit({"training": training_dataset_s3_path}, logs=True)

训练数据集

以下是有关如何格式化训练数据的说明:

  • 输入 – 包含实例图像的目录, dataset_info.json,具有以下配置:
    • 图片可以是 .png、.jpg 或 .jpeg 格式
    • dataset_info.json 文件必须是格式 {'instance_prompt':<<instance_prompt>>}
  • 输出 – 可以部署用于推理的训练模型

S3路径应该是这样的 s3://bucket_name/input_directory/. 注意尾随 / 是必须的。

以下是训练数据的示例格式:

input_directory |---instance_image_1.png |---instance_image_2.png |---instance_image_3.png |---instance_image_4.png |---instance_image_5.png |---dataset_info.json

有关如何在使用预先保存时格式化数据的说明,请参阅部分 事先保存 在这篇文章中。

我们提供了猫图像的默认数据集。 它由一只猫的八张图像(对应于实例提示的实例图像)组成,没有类别图像。 它可以从下载 GitHub上. 如果使用默认数据集,请在演示笔记本中进行推理时尝试提示“a photo of a riobugger cat”。

执照: 麻省理工学院简介.

超参数

接下来,为了在您的自定义数据集上进行迁移学习,您可能需要更改训练超参数的默认值。 您可以通过调用获取这些超参数及其默认值的 Python 字典 hyperparameters.retrieve_default,根据需要更新它们,然后将它们传递给 Estimator 类。 请参见以下代码:

from sagemaker import hyperparameters
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
model_id=train_model_id, model_version=train_model_version
) # [Optional] Override default hyperparameters with custom values
hyperparameters["max_steps"] = "400"

微调算法支持以下超参数:

  • with_prior_preservation – 标记以添加先前的保存损失。 Prior preservation 是一种避免过度拟合的正则化器。 (选择: [“True”,“False”], 默认: “False”.)
  • 类图像数 – 先前保存损失的最小类图像。 如果 with_prior_preservation = True 并且已经没有足够的图像 class_data_dir,额外的图像将被采样 class_prompt. (值:正整数,默认值:100。)
  • 时代 – 微调算法通过训练数据集的次数。 (值:正整数,默认值:20。)
  • 最大步数 – 要执行的训练步骤总数。 如果不 None, 覆盖纪元。 (值: “None” 或一串整数,默认: “None”.)
  • 批量大小 –:更新模型权重之前完成的训练示例数。 与类图像生成期间的批量大小相同,如果 with_prior_preservation = True. (值:正整数,默认值:1。)
  • 学习率 – 在完成每批训练示例后更新模型权重的速率。 (值:正浮点数,默认值:2e-06。)
  • 先验损失权重 – 先前保存损失的权重。 (值:正浮点数,默认值:1.0。)
  • 中心裁剪 – 是否在调整到所需分辨率之前裁剪图像。 (选择: [“True”/“False”], 默认: “False”.)
  • lr_调度程序 – 学习率调度器的类型。 (选择: ["linear", "cosine", "cosine_with_restarts", "polynomial", "constant", "constant_with_warmup"], 默认: "constant".) 有关详细信息,请参阅 学习率调度器.
  • 亚当权重衰减 – 权重衰减应用于所有层(如果不是零),除了所有偏差和 LayerNorm 权重 AdamW 优化器。 (值:浮点数,默认值:1e-2。)
  • 亚当_beta1 – beta1 超参数(一阶矩估计的指数衰减率) AdamW 优化器。 (值:浮点数,默认值:0.9。)
  • 亚当_beta2 – beta2 超参数(一阶矩估计的指数衰减率) AdamW 优化器。 (值:浮点数,默认值:0.999。)
  • 亚当_epsilon ——由数百家创建、维护和提供物联网(IoT)全球开放标准的公司所组成的 epsilon 的超参数 AdamW 优化器。 通常设置为较小的值以避免被 0 除。(值:float,默认值:1e-8。)
  • 梯度累积步数 – 在执行向后/更新传递之前要累积的更新步骤数。 (值:整数,默认值:1。)
  • 最大梯度范数 – 最大梯度范数(用于梯度裁剪)。 (值:浮点数,默认值:1.0。)
  • 种子 – 修复随机状态以在训练中获得可重现的结果。 (值:整数,默认值:0。)

部署训练有素的模型

模型训练完成后,您可以直接将模型部署到持久的实时端点。 我们获取所需的 Docker Image URI 和脚本 URI 并部署模型。 请参见以下代码:

inference_instance_type = "ml.g4dn.2xlarge" # Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, # automatically inferred from model_id image_scope="inference", model_id=train_model_id, model_version=train_model_version, instance_type=inference_instance_type,
) # Retrieve the inference script uri. This includes scripts for model loading, inference handling etc.
deploy_source_uri = script_uris.retrieve( model_id=train_model_id, model_version=train_model_version, script_scope="inference"
) # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = sd_estimator.deploy( initial_instance_count=1, instance_type=inference_instance_type, entry_point="inference.py", # entry point file in source_dir and present in deploy_source_uri image_uri=deploy_image_uri, source_dir=deploy_source_uri, endpoint_name=endpoint_name,
)

左侧是一只名为 riobugger 的猫的训练图像,用于微调模型(默认参数除 max_steps = 400)。 中间和右边是微调模型在被要求预测海滩上的 riobugger 图像和铅笔素描时生成的图像。

有关推理的更多详细信息,包括支持的参数、响应格式等,请参阅 使用 Amazon SageMaker JumpStart 上的稳定扩散模型从文本生成图像.

通过 Studio UI 访问 JumpStart

在本节中,我们将演示如何通过 Studio UI 训练和部署 JumpStart 模型。 以下视频展示了如何在 JumpStart 上找到预训练的稳定扩散模型,训练它,然后部署它。 模型页面包含有关模型及其使用方法的有价值信息。 配置 SageMaker 训练实例后,选择 培训. 训练模型后,您可以通过选择部署训练好的模型 部署. 在端点处于“服务中”阶段后,它就可以响应推理请求了。

为了加快推理时间,JumpStart 提供了一个示例笔记本,展示了如何在新创建的端点上运行推理。 要在 Studio 中访问笔记本,请选择 打开笔记本 ,在 使用 Studio 中的端点 模型端点页面的部分。

JumpStart 还提供了一个简单的笔记本,您可以使用它来微调稳定的扩散模型并部署生成的微调模型。 您可以使用它来生成您的狗的有趣图像。 要访问笔记本,请在 JumpStart 搜索栏中搜索“为您的狗生成有趣的图像”。 要执行笔记本,您可以使用最少五个训练图像并上传到本地工作室文件夹。 如果您有超过五张图片,您也可以上传它们。 Notebook 将训练图像上传到 S3,在您的数据集上训练模型并部署生成的模型。 训练可能需要 20 分钟才能完成。 您可以更改步数以加快训练速度。 Notebook 提供了一些示例提示来尝试使用已部署的模型,但您可以尝试任何您喜欢的提示。 您还可以调整笔记本来创建您自己或您的宠物的化身。 例如,您可以在第一步上传您的猫的图像而不是您的狗,然后将提示从狗更改为猫,模型将生成您的猫的图像。

微调注意事项

Training Stable Diffusion 模型往往会很快过度拟合。 为了获得高质量的图像,我们必须在可用的训练超参数(例如训练步骤数和学习率)之间找到良好的平衡。 在本节中,我们将展示一些实验结果并提供有关如何设置这些参数的指导。

图书馆推荐

请考虑以下建议:

  • 从高质量的训练图像开始 (4–20)。 如果训练人脸,您可能需要更多图像。
  • 在训练狗或猫和其他非人类受试者时训练 200-400 步。 如果训练人脸,你可能需要更多的步骤。 如果出现过拟合,减少n个步数。 如果出现欠拟合(微调后的模型无法生成目标主体图像),则增加步数。
  • 如果训练非人脸,你可以设置 with_prior_preservation = False 因为它不会显着影响性能。 在人脸上,你可能需要设置 with_prior_preservation=True.
  • 如果设置 with_prior_preservation=True,使用 ml.g5.2xlarge 实例类型。
  • 当顺序训练多个主题时,如果主题非常相似(例如,所有狗),模型会保留最后一个主题并忘记之前的主题。 如果受试者不同(例如,先是猫,然后是狗),模型会同时保留这两个受试者。
  • 我们建议使用较低的学习率并逐渐增加步骤数,直到结果令人满意为止。

训练数据集

微调模型的质量直接受训练图像质量的影响。 因此,您需要收集高质量的图像才能获得良好的效果。 模糊或低分辨率的图像会影响微调模型的质量。 请记住以下附加参数:

  • 训练图像数量 – 您可以在少至四个训练图像上微调模型。 我们对小至 4 幅图像和多达 16 幅图像的训练数据集进行了实验。 在这两种情况下,微调都能使模型适应主题。
  • 数据集格式 – 我们在 .png、.jpg 和 .jpeg 格式的图像上测试了微调算法。 其他格式也可能有效。
  • 图像分辨率 – 训练图像可以是任何分辨率。 微调算法将在开始微调之前调整所有训练图像的大小。 也就是说,如果您想更好地控制训练图像的裁剪和大小调整,我们建议您自己将图像调整为模型的基本分辨率(在本例中为 512×512 像素)。

实验设置

在本文的实验中,微调时我们使用超参数的默认值,除非指定。 此外,我们使用四个数据集之一:

  • 狗1-8 – 狗 1 有 8 张图片
  • 狗1-16 – 狗 1 有 16 张图片
  • 狗2-4 – 狗 2 有四张图片
  • 猫8 – 有 8 张图像的猫

为了减少混乱,我们只在每个部分中显示数据集的一张代表性图像以及数据集名称。 您可以在部分中找到完整的训练集 实验数据集 在这篇文章中。

过度拟合

稳定扩散模型在微调少数图像时往往会过度拟合。 因此,您需要选择参数,例如 epochs, max_epochs,并仔细学习率。 在本节中,我们使用了 Dog1-16 数据集。

为了评估模型的性能,我们评估了四个任务的微调模型:

  • 经过微调的模型能否在与训练时相同的设置中生成对象(多普勒狗)的图像?
    • 观察 - 是的,它可以。 值得注意的是,模型性能随着训练步骤的增加而增加。
  • 经过微调的模型能否在与训练时不同的环境中生成对象的图像? 例如,它能否生成海滩上的多普勒图像?
    • 观察 - 是的,它可以。 值得注意的是,模型性能随着训练步骤数的增加而增加到一定程度。 但是,如果模型训练时间过长,模型性能会随着模型趋于过度拟合而下降。
  • 微调后的模型能否生成训练对象所属类别的图像? 例如,它可以生成普通狗的图像吗?
    • 观察 – 随着我们增加训练步骤的数量,模型开始过度拟合。 结果,它忘记了狗的通用类别,只会生成与主题相关的图像。
  • 微调后的模型能否生成训练数据集中不存在的类别或主题的图像? 例如,它可以生成猫的图像吗?
    • 观察 – 随着我们增加训练步骤的数量,模型开始过度拟合。 因此,它只会生成与主题相关的图像,而不管指定的类。

我们针对不同的步数微调模型(通过设置 max_steps 超参数),对于每个微调模型,我们在以下四个提示中的每一个上生成图像(在以下示例中从左到右显示:

  • “一张多普勒犬的照片”
  • “一张多普勒犬在海滩上的照片”
  • “一张狗的照片”
  • “一张猫的照片”

以下图像来自用 50 个步骤训练的模型。

以下模型经过 100 步训练。

我们用 200 步训练了以下模型。

下图来自经过 400 步训练的模型。

最后,下图是 800 步的结果。

在多个数据集上训练

在微调时,您可能希望对多个主题进行微调,并让微调后的模型能够生成所有主题的图像。 遗憾的是,JumpStart 目前仅限于单一主题的培训。 您不能同时针对多个主题微调模型。 此外,如果受试者相似,则依次对不同受试者的模型进行微调会导致模型忘记第一个受试者。

我们在本节中考虑以下实验:

  1. 微调主题 A 的模型。
  2. 为主题 B 微调步骤 1 中生成的模型。
  3. 使用步骤 2 中的输出模型生成主题 A 和主题 B 的图像。

在以下实验中,我们观察到:

  • 如果 A 是狗 1,B 是狗 2,则步骤 3 中生成的所有图像都类似于狗 2
  • 如果 A 是狗 2,B 是狗 1,则步骤 3 中生成的所有图像都类似于狗 1
  • 如果 A 是狗 1,B 是猫,则使用狗提示生成的图像类似于狗 1,使用猫提示生成的图像类似于猫

在狗 1 上训练,然后在狗 2 上训练

在第 1 步中,我们在狗 200 的八张图像上将模型微调 1 步。在第 2 步中,我们在狗 200 的四张图像上进一步微调模型 2 步。

以下是在第 2 步结束时微调模型针对不同提示生成的图像。

在狗 2 上训练,然后在狗 1 上训练

在第 1 步中,我们对狗 200 的四张图像进行了 2 步微调。在第 2 步中,我们进一步对狗 200 的八张图像进行了 1 步微调。

以下是经过微调的模型在第 2 步结束时根据不同的提示生成的图像。

对狗和猫进行训练

在第 1 步中,我们在八张猫的图像上对模型进行 200 步微调。 然后我们对狗 200 的八张图像进一步微调模型 1 步。

下面是微调模型在第2步结束时生成的图像。带有猫相关提示的图像看起来像微调第1步中的猫,带有狗相关提示的图像看起来像微调中的狗微调的第2步。

事前保存

事先保存是一种使用我们试图训练的同一类的附加图像的技术。 例如,如果训练数据由特定狗的图像组成,并且事先保存,我们会合并普通狗的类别图像。 它试图通过在训练特定狗时显示不同狗的图像来避免过度拟合。 类提示中缺少指示实例提示中存在的特定狗的标签。 例如,实例提示可能是“一张 riobugger 猫的照片”,类提示可能是“一张猫的照片”。 您可以通过设置超参数启用事先保存 with_prior_preservation = True. 如果设置 with_prior_preservation = True, 你必须包括 class_prompt in dataset_info.json 并且可能包括您可用的任何班级图片。 下面是设置时的训练数据集格式 with_prior_preservation = True:

  • 输入 – 包含实例图像的目录, dataset_info.json 和(可选)目录 class_data_dir. 请注意以下事项:
    • 图片可以是 .png、.jpg、.jpeg 格式。
    • dataset_info.json 文件必须是格式 {'instance_prompt':<<instance_prompt>>,'class_prompt':<<class_prompt>>}.
    • class_data_dir 目录必须有类图像。 如果 class_data_dir 不存在或没有足够的图像已经存在 class_data_dir,额外的图像将被采样 class_prompt.

对于猫和狗等数据集,事先保存不会显着影响微调模型的性能,因此可以避免。 但是,在面部训练时,这是必要的。 有关详细信息,请参阅 使用 Dreambooth 使用扩散器训练稳定扩散.

实例类型

微调稳定扩散模型需要由 GPU 支持的实例提供的加速计算。 我们使用 ml.g4dn.2xlarge(16 GB CUDA 内存,1 个 GPU)和 ml.g5.2xlarge(24 GB CUDA 内存,1 个 GPU)实例来试验我们的微调。 生成类图像时内存要求更高。 因此,如果设置 with_prior_preservation=True,使用 ml.g5.2xlarge 实例类型,因为训练遇到 ml.g4dn.2xlarge 实例上的 CUDA 内存不足问题。 JumpStart 微调脚本目前使用单个 GPU,因此,对多 GPU 实例进行微调不会产生性能提升。 有关不同实例类型的更多信息,请参阅 Amazon EC2实例类型.

局限性和偏见

尽管 Stable Diffusion 在生成图像方面具有令人印象深刻的性能,但它也存在一些局限性和偏差。 这些包括但不限于:

  • 该模型可能无法生成准确的面部或四肢,因为训练数据不包含具有这些特征的足够图像
  • 该模型是在 LAION-5B 数据集,其中包含成人内容,未经进一步考虑可能不适合产品使用
  • 该模型可能不适用于非英语语言,因为该模型是针对英语文本进行训练的
  • 该模型无法在图像中生成良好的文本

有关局限性和偏见的更多信息,请参阅 稳定扩散 v2-1-base 模型卡. 预训练模型的这些限制也可以延续到微调模型。

清理

完成运行笔记本后,请务必删除在此过程中创建的所有资源,以确保停止计费。 清理端点的代码在关联的 JumpStart 简介 – 文本到图像 示例笔记本。

JumpStart 中公开可用的微调模型

尽管 Stable Diffusion 模型由 稳定性AI 具有令人印象深刻的性能,它们在所训练的语言或领域方面有局限性。 例如,Stable Diffusion 模型是针对英文文本进行训练的,但您可能需要从非英文文本生成图像。 或者,训练稳定扩散模型以生成逼真的图像,但您可能需要生成动画或艺术图像。

JumpStart 提供了 80 多种具有各种语言和主题的公开可用模型。 这些模型通常是 StabilityAI 发布的稳定扩散模型的微调版本。 如果您的用例与其中一个微调模型匹配,则无需收集自己的数据集并对其进行微调。 您可以通过 Studio UI 或使用易于使用的 JumpStart API 简单地部署其中一个模型。 要在 JumpStart 中部署预训练的稳定扩散模型,请参阅 使用 Amazon SageMaker JumpStart 上的稳定扩散模型从文本生成图像.

以下是 JumpStart 中可用的不同模型生成的一些图像示例。

请注意,这些模型未使用 JumpStart 脚本或 DreamBooth 脚本进行微调。 您可以从以下位置下载带有示例提示的公开可用微调模型的完整列表 此处.

有关这些模型生成的图像的更多示例,请参阅部分 开源微调模型 在附录中。

结论

在这篇博文中,我们展示了如何微调文本到图像的稳定扩散模型,然后使用 JumpStart 部署它。 此外,我们还讨论了在微调模型时应考虑的一些注意事项,以及它如何影响微调模型的性能。 我们还讨论了 JumpStart 中提供的 80 多个随时可用的微调模型。 我们在这篇文章中展示了代码片段——有关此演示中包含所有步骤的完整代码,请参阅 JumpStart 简介 – 文本到图像 示例笔记本。 自己尝试解决方案并将您的意见发送给我们。

要了解有关模型和 DreamBooth 微调的更多信息,请参阅以下资源:

要了解有关 JumpStart 的更多信息,请查看以下博客文章:


作者简介

Vivek Madan 博士 是 Amazon SageMaker JumpStart 团队的一名应用科学家。 他在伊利诺伊大学厄巴纳-香槟分校获得博士学位,并且是乔治亚理工学院的博士后研究员。 他是机器学习和算法设计方面的活跃研究员,并在 EMNLP、ICLR、COLT、FOCS 和 SODA 会议上发表过论文。

海科霍茨 是 AI 和机器学习的高级解决方案架构师,特别关注自然语言处理 (NLP)、大型语言模型 (LLM) 和生成 AI。 在此之前,他是亚马逊欧盟客户服务的数据科学主管。 Heiko 帮助我们的客户在 AWS 上的 AI/ML 之旅中取得成功,并与许多行业的组织合作,包括保险、金融服务、媒体和娱乐、医疗保健、公用事业和制造业。 在业余时间,Heiko 尽可能多地去旅行。


附录:实验数据集

本节包含本文实验中使用的数据集。

狗1-8

狗1-16

狗2-4

狗3-8

附录:开源微调模型

以下是 JumpStart 中可用的不同模型生成的一些图像示例。 每张图片都带有标题 model_id 以前缀开头 huggingface-txt2img- 接下来是用于在下一行中生成图像的提示。

时间戳记:

更多来自 AWS机器学习