近年来,在模型改进以及基于云的基础设施的可扩展性和成本效益的推动下,自然语言理解 (NLU) 越来越发现商业价值。 具体来说, 变压器 深度学习架构,通常以以下形式实现 BERT 模型,已经非常成功,但训练、微调和优化这些模型已被证明是一个具有挑战性的问题。 非常感谢 AWS 和 Hugging Face 合作,现在可以更简单地训练和优化 NLU 模型 亚马逊SageMaker 使用 SageMaker Python SDK,但为这些模型获取标记数据仍然困难且耗时。
一个具有特殊商业兴趣的 NLU 问题是问答任务。 在这篇文章中,我们演示了如何使用 亚马逊SageMaker地面真相 训练 Hugging Face 问答 NLU 模型。
问答挑战
问答需要一个模型自动生成一个查询的答案给定一些可能包含或不包含答案的文本正文。 例如,给定以下问题,“SageMaker Ground Truth 支持哪些工作流程?” 模型应该能够识别以下段落中的“注释合并和审计”部分:
SageMaker Ground Truth 通过注释整合和审计工作流程帮助提高标签质量。 注释整合是从两个或多个数据标签器收集标签输入并将它们组合起来为您的机器学习模型创建单个数据标签的过程。 借助内置的审核和审查工作流程,工作人员可以执行标签验证并进行调整以提高准确性。
这个问题具有挑战性,因为它需要一个模型来理解问题的含义,而不是简单地执行关键字搜索。 该领域的精确模型可以通过为智能聊天机器人提供动力、提供高质量的语音助手产品以及通过个性化产品问答来推动在线商店收入来降低客户支持成本。 该领域的一个大型数据集是 斯坦福问答数据集 (SQuAD),一个多样化的问答数据集,它提供了一个带有短文本段落的模型,并要求模型预测段落中答案文本跨度的位置。 SQuAD 是一个阅读理解数据集,由群众工作者在一组 Wikipedia 文章中提出的问题组成,其中每个问题的答案要么是相应段落中的一段文本,要么被标记为无法回答。
使 SQuAD 适应业务用例的一个挑战是生成特定领域的自定义数据集。 这个创建新问答数据集的过程需要一个专门的用户界面,允许注释者突出显示跨度并向这些跨度添加问题。 它还必须能够支持添加不可能的问题以支持 SQuAD 2.0 格式,其中包括不可回答的问题。 这些不可能的问题帮助模型获得额外的理解,围绕哪些查询无法使用给定的段落来回答。 这 自定义工作人员模板 在 Ground Truth 中,通过为工作人员提供定制的注释体验来创建问答数据集,简化了这些数据集的生成。
解决方案概述
该解决方案创建和管理 Ground Truth 标记作业,以使用自定义注释用户界面标记特定领域的自定义问答数据集。 我们使用 SageMaker 来训练、微调、优化和部署 Hugging Face
使用 PyTorch 在自定义问答数据集上构建的 BERT 模型。
您可以通过部署提供的 AWS CloudFormation 您的 AWS 账户中的模板。 AWS CloudFormation 处理部署 AWS Lambda 支持注释用户界面的预注释和注释合并的功能。 它还创建了一个 亚马逊简单存储服务 (Amazon S3) 存储桶和 AWS身份和访问管理 创建标记作业时要使用的 (IAM) 角色。
这篇文章将引导您完成以下操作:
- 创建您自己的问答数据集,或使用 Ground Truth 扩充现有数据集
- 使用 Hugging Face 数据集组合和标记文本
- 使用 SageMaker 训练根据您的问答数据微调 BERT 模型
- 将您的模型部署到 SageMaker 端点并可视化您的结果
注释用户界面
我们使用新的 自定义工作任务模板 使用 Ground Truth 向现有 SQuAD 数据集添加新注释。 该解决方案提供了一个工作任务模板以及一个预注释 Lambda 函数(处理将数据放入用户界面)和后注释 Lambda 函数(在标记完成后从用户界面中提取结果)。
此自定义工作人员任务模板使您能够在右侧窗格中突出显示文本,然后在左侧窗格中添加与突出显示的文本相关的相应问题。 右侧窗格中突出显示的文本也可以添加到任何先前创建的问题中。 此外,您可以根据以下内容添加不可能的问题 小队 2.0 格式。 不可能的问题允许模型在段落无法回答查询时减少不可靠的误报猜测的数量。
此用户界面使用与 SQuAD 2.0 数据集相同的 JSON 模式,这意味着它可以对多个文章和段落进行操作,使用 上一页 和 下一页 纽扣。 用户界面可以轻松监控和确定每个注释者在任务提交步骤中需要完成的标记工作。
因为注释 UI 包含在单个 液体肥产线 HTML 文件,您可以通过基本的 JavaScript 知识自定义标签体验。 你也可以修改 液体标签 将附加信息传递到标签 UI,您可以修改模板本身以包含更详细的工作人员说明。
估计费用
部署此解决方案可能会产生大约 20 美元的最高成本,这还不包括人工标记成本。 Amazon S3、Lambda、SageMaker 和 Ground Truth 都提供 AWS免费套餐, 额外使用收费。 有关详细信息,请参阅以下定价页面:
- 亚马逊 S3 定价
- AWS Lambda定价
- Amazon SageMaker定价
- Amazon SageMaker 数据标签定价 – 此费用取决于您使用的劳动力类型。 如果您是 Ground Truth 的新用户,我们建议您使用私人劳动力并将您自己作为工作人员来测试您的标签作业配置。
先决条件
要实施此解决方案,您应该具有以下先决条件:
- An AWS账户.
- 熟悉地面实况。 有关详细信息,请参阅 使用 Amazon SageMaker Ground Truth 标记数据.
- 熟悉 AWS CloudFormation。 有关详细信息,请参阅 AWS CloudFormation 用户指南.
- 贤者 劳动力. 对于此演示,我们使用私人劳动力。 您可以在 SageMaker 控制台上创建劳动力。
以下 GIF 演示了如何创建私人劳动力。 有关说明,请参阅 使用标签劳动力页面创建Amazon Cognito劳动力.
启动 CloudFormation 堆栈
现在您已经了解了解决方案的结构,您可以将其部署到您的帐户中,以便您可以运行示例工作流。 与标签管道相关的所有部署步骤均由 AWS CloudFormation 管理。 这意味着 AWS CloudFormation 会创建您的预注释和注释整合 Lambda 函数,以及用于存储输入和输出数据的 S3 存储桶。
您可以在AWS区域中启动堆栈 us-east-1
在 AWS CloudFormation 控制台上使用 启动堆栈 按钮。 要在不同的区域中启动堆栈,请使用 README 中的说明 GitHub存储库.
操作笔记本
将解决方案部署到您的帐户后,一个名为 gt-hf-squad-notebook
在您的帐户中可用。 要开始操作笔记本电脑,请完成以下步骤:
- 在 Amazon SageMaker 控制台上,导航到笔记本实例页面。
- 打开JupyterLab 打开实例。
- 在实例内部,浏览到存储库
hf-gt-custom-qa
并打开笔记本hf_squad_finetuning.ipynb
. -
conda_pytorch_p38
作为你的内核。
现在您已经创建了笔记本实例并打开了笔记本,您可以在笔记本中运行单元格来操作解决方案。 这篇文章的其余部分会在您继续阅读时为笔记本中的每个部分提供更多详细信息。
下载并检查数据
SQuAD 数据集 包含训练数据集以及测试和开发数据集。 notebook 会为您下载 SQuAD2.0 数据集,但您可以通过修改下面的 notebook 单元格来选择使用哪个版本的 SQuAD 下载并检查数据.
SQuAD 由 Pranav Rajpurkar、Jian Zhang、Konstantin Lopyrev 和 Percy Liang 创建。 有关详细信息,请参阅 原始纸 和 数据集. SQuAD 已由作者根据 知识共享署名-相同方式共享 4.0 国际公共许可.
让我们看一个来自 SQuAD 的示例问答对:
段落标题:Immune_system
免疫系统是一个由生物体内许多生物结构和过程组成的系统,可以预防疾病。 为了正常运作,免疫系统必须检测到从病毒到寄生虫的各种病原体,即病原体,并将它们与生物体自身的健康组织区分开来。 在许多物种中,免疫系统可分为子系统,例如先天免疫系统与适应性免疫系统,或体液免疫与细胞介导免疫。 在人类中,血脑屏障、血脑脊液屏障和类似的脑液屏障将外周免疫系统与保护大脑的神经免疫系统分开。
问题:免疫系统保护生物体免受什么侵害?
答案:疾病
加载模型
现在您已经在 SQuAD 中查看了示例问答对,您可以下载一个模型,您可以对问答进行微调。 Hugging Face 允许您轻松下载经过大规模预训练的基础模型,并为不同的下游任务重新初始化它。 在这种情况下,您下载 distilbert-base-uncased
模型并将其重新用于问答,使用 AutoModelForQuestionAnswering
拥抱脸的课程。 您还利用 AutoTokenizer
类来检索模型的预训练标记器。 我们将更深入地研究我们稍后在帖子中使用的模型。
查看 BERT 输入
BERT 要求您将文本数据转换为数字表示,称为 令牌. 有多种标记器可用; 以下标记是由专为 BERT 设计的标记器创建的,您可以使用一组词汇对其进行实例化。 每个标记都映射到词汇表中的一个单词。 让我们看一下您提供 BERT 进行推理的转换后的免疫系统问题和上下文。
模型推断
现在您已经了解了 BERT 将什么作为输入,让我们看看如何从模型中获取推理结果。 以下代码演示了如何使用先前生成的标记化输入并从模型返回推理结果。 与 BERT 不能接受原始文本作为输入类似,它也不会生成原始文本作为输出。 您可以通过识别 BERT 识别为答案的段落中的起点和终点来翻译 BERT 的输出。 然后将该输出映射到我们的标记并返回到英文文本。
翻译结果如下:
问题:免疫系统保护生物体免受什么侵害?
答案:疾病
增强小队
接下来,为了获得额外的标记数据,我们使用 自定义工作任务模板 在地面真相。 我们可以先创建一个 SQuAD 格式的新文章。 笔记本将此文件从存储库复制到 Amazon S3,但在运行之前可以随意进行任何编辑 增强小队 细胞。 SQuAD 的格式如以下代码所示。 每个 SQuAD JSON 文件包含存储在 data
钥匙。 每篇文章都有一个 title
字段和一个或多个段落。 这些段落包含称为 context
和任何相关的问题 qas
列表。 因为我们是从头开始注释的,所以我们可以离开 qas
列表为空,只提供上下文。 用户界面能够在段落和文章之间循环,允许您根据需要将每个工作任务设置为大或小。
在我们生成示例 SQuAD 数据文件后,我们需要创建一个 Ground Truth 扩充清单文件 那是指我们的输入数据。 我们通过生成带有“source
”键对应于我们存储输入 SQuAD 数据的 Amazon S3 中的位置:
访问标签门户
将作业发送到 Ground Truth 后,您可以在 Ground Truth 控制台上查看生成的标记作业。
要执行标记,您需要登录到您在先决条件步骤中创建的工作人员门户帐户。 经过几分钟的预处理后,您的工作将在工作人员门户中可用。 打开任务后,您会看到用于问答注释的自定义工作人员模板。 您可以通过突出显示上下文中的文本部分来添加问题,然后选择 添加问题.
检查标签作业状态
提交后就可以运行了 检查标签作业状态 单元格以查看您的标记工作是否已完成。 等待完成,然后再继续其他单元格。
加载标记数据
标记后,输出清单包含一个带有您的标签属性名称的条目(在这种情况下 squad-1626282229
) 包含可在训练期间使用的 SQuAD 格式数据的 S3 URI。 请参阅以下输出清单内容:
清单中的每一行对应一个工作任务。
Load SQuAD 训练组
拥抱脸有一个 数据集包 这为您提供了下载和预处理 SQuAD 的能力,但是要添加我们的自定义问题和答案,我们需要进行一些处理。 SQuAD 是围绕一系列主题构建的。 每个主题都有各种不同的上下文陈述,每个上下文陈述都有问答对。 因为我们想为训练创建自己的问题,所以我们需要将我们的问题与 SQuAD 结合起来。 幸运的是,我们的注释已经采用 SQuAD 格式,因此我们可以将示例标签作为新主题附加到现有的 SQuAD 数据中。
创建 Hugging Face 数据集对象
要将我们的数据转换为 Hugging Face 的数据集格式,我们有多种选择。 我们可以使用 加载数据集 选项,在这种情况下,我们可以提供作为数据集对象加载的 CSV、JSON 或文本文件。 您也可以提供 load_dataset
使用处理脚本将您的文件转换为所需的格式。 对于这篇文章,我们改为使用 Dataset.from_dict()
方法,它允许我们提供一个内存字典来创建一个数据集对象。 我们还定义了我们的数据集特征。 我们可以通过使用查看功能 Hugging Face 的数据集查看器,如以下屏幕截图所示。
我们的特点如下:
- ID – 文本的 ID
- 标题 – 主题的相关标题
- 上下文 – 模型必须搜索以找到答案的上下文语句
- 题 – 模型被问到的问题
- 回答 – 上下文语句中接受的答案文本和位置
Hugging Face 数据集很容易让我们定义这个模式:
创建数据集对象后,我们必须 令牌化 文本。 因为模型不能接受原始文本作为输入,所以我们需要将我们的文本转换成它可以理解的数字输入,也就是所谓的 符号化. 标记化是特定于模型的,所以让我们了解我们要微调的模型。 我们正在使用一个 distilbert 基无壳 模型。 它看起来与 BERT 非常相似:它使用输入嵌入、多头注意力(有关此操作的更多信息,请参阅 图解变压器) 和前馈层,但具有原始 BERT 基础模型的一半参数。 请参阅以下初始模型层:
让我们分解模型标题的每个组成部分。 名字 distilbert
表示这是 BERT 基础模型的提炼版本,它是通过一个称为 知识升华. 知识蒸馏使我们不仅可以在训练数据上训练一个较小的学生模型,而且还可以对来自一个更大的预训练教师模型的相同训练集的响应进行训练。 base
指模型的大小,在这种情况下,模型是从 BERT 基础模型(与 BERT 大型模型相反)中提炼出来的。 uncased
指的是它被训练的文本。 在这种情况下,文本没有说明大小写; 它训练的所有文本都是小写的。 这 uncased
aspect 直接影响我们标记文本的方式。 值得庆幸的是,除了提供对下载转换器模型的轻松访问之外,Hugging Face 还提供了模型的随附标记器。 我们还为我们的 distilbert-base-uncased model
我们现在用来转换我们的文本:
数据集类的另一个特性是它允许我们与其 map 函数并行运行预处理和标记化。 我们定义一个处理函数,然后将其传递给 map 方法。
对于问答,Hugging Face 需要几个组件(在 词汇表):
- 注意面具 – 向模型指示要注意哪些标记的掩码,主要用于区分实际文本和填充标记
- 开始位置 – 文本中答案的起始位置
- 结束位置 – 文本中答案的结束位置
- 输入ID – 将标记映射到词汇表的标记索引
我们的分词器将对文本进行分词,但我们需要明确捕获答案的开始和结束位置,这就是我们定义自定义预处理函数的原因。 现在我们已经准备好输入,让我们开始训练吧!
启动培训工作
我们可以在 notebook 中运行训练,但是我们需要在合理的时间内训练 Q&A 模型的实例类型,p3 和 p4 实例,是相当强大的。 这些实例对于运行笔记本或持久性来说往往是多余的 亚马逊弹性计算云 (Amazon EC2) 实例。 这就是 SageMaker 培训的用武之地。SageMaker 培训允许您在一个或多个指定实例上启动培训作业,这些实例仅在培训作业期间启动。 这使我们能够在具有 4 个 NVIDIA A24 GPU 的 p8d.100xlarge 等更大的实例上运行,但不必担心如果忘记关闭它会产生巨额账单。 它还使我们能够轻松访问其他 SageMaker 功能,例如 SageMaker实验 用于跟踪您的 ML 训练运行和 SageMaker调试器 用于了解和分析您的培训工作。
本地培训
让我们首先了解如何在 Hugging Face 中训练模型在本地工作,然后回顾一下我们为在 SageMaker 中运行它所做的调整。
Hugging Face 通过使用他们的培训师课程使培训变得容易。 trainer 类允许我们传入我们的模型、我们的训练和验证数据集、我们的超参数,甚至我们的分词器。 因为我们已经有了我们的模型以及我们的训练和验证集,我们只需要定义我们的超参数。 我们可以通过 TrainingArguments
班级。 这允许我们指定学习率、批量大小、时期数以及更深入的参数,如权重衰减或学习率调度策略。 在我们定义我们的 TrainingArguments
,我们可以传入我们的模型、训练集、验证集和参数来实例化我们的训练器类。 然后我们可以简单地调用 trainer.train()
开始训练我们的模型。 以下代码块演示了如何运行本地训练:
发送数据到S3
在 SageMaker 培训中做同样的事情很简单。 第一步是将我们的数据放入 Amazon S3,以便我们的模型可以访问它。 SageMaker 训练允许您指定数据源; 您可以使用 Amazon S3 等资源, 亚马逊弹性文件系统 (亚马逊 EFS),或 适用于Lustre的Amazon FSx 用于高性能数据摄取。 在我们的案例中,我们的增强 SQuAD 数据集并不是特别大,因此 Amazon S3 是一个不错的选择。 我们将训练数据上传到 Amazon S3 中的一个文件夹,当 SageMaker 启动我们的训练实例时,它会从我们指定的位置下载数据。
实例化模型
为了启动我们的训练工作,我们可以使用内置的 Hugging Face 估计器 SageMaker 开发工具包. SageMaker 使用估计器类来定义训练作业的参数以及用于训练的实例的数量和类型。 SageMaker 培训是围绕 Docker 容器的使用而构建的。 您可以使用 SageMaker 中的默认容器或提供您自己的自定义容器进行训练。 对于 Hugging Face 模型,SageMaker 具有内置的 Hugging Face 容器,其中包含运行 Hugging Face 训练作业所需的所有依赖项。 我们需要做的就是定义我们的训练脚本,我们的 Hugging Face 容器将其用作其入口点。
在这个训练脚本中,我们定义了我们的参数,我们以一组超参数的形式传递给我们的入口点,以及我们的训练代码。 我们的训练代码就像我们在本地运行一样; 我们可以简单地使用 TrainingArguments
然后将它们传递给训练器对象。 唯一的区别是我们需要为我们的模型指定输出位置 /opt/ml/model
以便 SageMaker 培训可以获取、打包并将其发送到 Amazon S3。 下面的代码块展示了如何实例化我们的拥抱脸估计器:
微调模型
对于我们的特定训练工作,我们使用由 3.8 个 V4 GPU 组成的 p100xlarge 实例。 trainer 类自动支持在多 GPU 实例上进行训练,因此我们不需要任何额外的设置来解决这个问题。 我们用两个 epoch 训练我们的模型,批量大小为 16,学习率为 4e5。 我们还启用了混合精度训练,它在我们可以在不影响模型精度的情况下降低数值精度的区域使用混合精度。 这增加了我们的可用内存和训练速度。 为了启动训练工作,我们调用 fit
我们的方法 huggingface_estimator
类。
当我们的模型完成训练后,我们可以在本地下载模型并将其加载到我们的笔记本内存中进行测试,这在笔记本中进行了演示。 我们将专注于另一个选项,将其部署为 SageMaker 端点!
部署训练好的模型
除了提供用于训练的实用程序外,SageMaker 还可以让数据科学家和机器学习工程师轻松地为他们训练的模型部署 REST 端点。 您可以部署在 SageMaker 内部或外部训练的模型。 有关详细信息,请参阅 在 Amazon SageMaker 中部署模型.
因为我们的模型是在 SageMaker 中训练的,所以它已经采用正确的格式来部署为端点。 与训练类似,我们定义了一个 SageMaker 模型类,它定义了模型、服务代码以及我们想要部署为端点的实例的数量和类型。 与训练类似,服务基于 Docker 容器,我们可以使用内置的 SageMaker 容器或提供我们自己的容器。 在这篇文章中,我们使用了一个内置的 PyTorch 服务容器,所以我们只需要定义一些东西来让我们的端点启动并运行。 我们的服务代码需要四个函数:
- 模型_fn – 定义端点如何加载模型(它只执行一次,然后将其保存在内存中以供后续预测)
- 输入_fn – 定义如何反序列化和处理输入
- 预测函数 – 定义我们的模型如何对我们的输入进行预测
- 输出_fn – 定义端点如何格式化并将输出数据发送回发出请求的客户端
在我们定义了这些函数之后,我们可以部署我们的端点并将上下文语句和问题传递给它,并返回它的预测答案:
可视化模型结果
因为我们部署了一个允许我们发送上下文语句和接收答案的 SageMaker 端点,所以我们可以返回并在原始 SQuAD 查看器中可视化生成的推理,以更好地可视化我们的模型在段落上下文中发现的内容。 为此,我们将推理结果重新格式化回 SQuAD 格式,然后将工作模板中的 Liquid 标签替换为 SQuAD 格式的 JSON。 然后,我们可以在工作人员模板中对生成的 UI 进行 iframe,以在单个笔记本的上下文中迭代地查看结果,如下面的屏幕截图所示。 可以单击左侧的每个问题以突出显示右侧与查询匹配的文本范围。 如果未选择任何问题,所有文本跨度都会在右侧突出显示,如下所示。
清理
为避免产生将来的费用,请运行 清理 部分删除所有资源,包括 SageMaker 端点、包含原始和已处理数据集的 S3 对象以及 CloudFormation 堆栈。 删除完成后,请确保停止并删除托管当前笔记本脚本的笔记本实例。
结论
在这篇文章中,您学习了如何使用 Ground Truth 创建自己的问答数据集,并将其与 SQuAD 结合使用 SageMaker 训练和部署您自己的问答模型。 完成笔记本后,您已部署 SageMaker 端点,该端点已在您的自定义问答数据集上进行了训练。 此端点已准备好集成到您的生产 NLU 工作流中,因为 SageMaker 端点可通过标准 REST API 获得。 您还有一个 SQuAD 2.0 格式的带注释的自定义数据集,它允许您重新训练现有模型或尝试训练其他问答模型架构。 最后,您可以通过在本地笔记本中加载工作模板来快速可视化推理结果。
试用 笔记本,用您自己的问题对其进行扩充,并为您的 NLU 用例训练和部署您自己的自定义问答模型!
建设愉快!
作者简介
杰里米·费特拉科(Jeremy Feltracco) 是Amazon Web Services的Amazon ML解决方案实验室的软件开发工程师。 他利用其在计算机视觉,机器人技术和机器学习方面的背景知识来帮助AWS客户加速其AI的采用。
维迪亚·萨加尔·拉维帕蒂(Vidya Sagar Ravipati) 是经理 亚马逊机器学习解决方案实验室,他利用在大型分布式系统方面的丰富经验以及对机器学习的热情,帮助跨不同行业的AWS客户加速其AI和云技术的采用。 之前,他是Amazon Connectivity Services的机器学习工程师,曾帮助构建个性化和预测性维护平台。
艾萨克·普里维特拉(Isaac Privitera) 是亚马逊机器学习解决方案实验室的高级数据科学家,在那里他开发定制的机器学习和深度学习解决方案来解决客户的业务问题。 他主要在计算机视觉领域工作,专注于为 AWS 客户提供分布式培训和主动学习。
- "
- &
- 000
- 10
- 100
- 116
- 28
- 39
- 3d
- 7
- 9
- 关于
- 加快
- ACCESS
- 根据
- 账号管理
- 基本会计和财务报表
- 精准的
- 横过
- 要积极。
- 增加
- 额外
- 地址
- 采用
- 中介代理
- AI
- 所有类型
- 允许
- 已经
- Amazon
- 亚马逊网络服务
- 量
- 另一个
- 回答
- APIs
- 架构
- 国家 / 地区
- 参数
- 围绕
- 刊文
- 刊文
- 助理
- 关注我们
- 审计
- 增强
- 作者
- 自动化
- 自动表
- 可使用
- AWS
- 背景
- 屏障
- 障碍
- 开始
- 作为
- 如下。
- 法案
- 位
- 阻止
- 身体
- 边界
- 建立
- 内建的
- 商业
- 呼叫
- 可以得到
- 捕获
- 例
- 挑战
- 挑战
- 收费
- 程
- 云端技术
- 码
- 收藏
- 元件
- 计算
- 一台
- 配置
- 连接方式
- 安慰
- 合并
- 容器
- 集装箱
- 包含
- Contents
- 承包商
- 相应
- 成本
- 创建信息图
- 创建
- 创建
- 创造
- 电流
- 习俗
- 顾客
- 客户支持
- 合作伙伴
- data
- 数据科学家
- 更深
- 交付
- 演示
- 证明
- 依靠
- 部署
- 部署
- 部署
- 部署
- 设计
- 详细
- 详情
- 确定
- 研发支持
- 不同
- 难
- 直接
- 疾病
- 分布
- 码头工人
- 不会
- 向下
- 下载
- 下载
- 驾驶
- ,我们将参加
- 容易
- 使
- 端点
- 工程师
- 工程师
- 英语
- 评估
- 例子
- 现有
- 体验
- 提取物
- 面部彩妆
- 专栏
- 特征
- 终于
- (名字)
- 专注焦点
- 聚焦
- 以下
- 申请
- 格式
- 向前
- 发现
- 自由的
- 功能
- 进一步
- 未来
- 生成
- 发电
- 代
- GitHub上
- 去
- 非常好
- 帮助
- 帮助
- 高品质
- 近期亮点
- 突出
- 高度
- 托管
- 创新中心
- How To
- HTTPS
- 巨大
- 人
- 人类
- 数百
- 鉴定
- 确定
- 身分
- 图片
- 实施
- 实施
- 不可能
- 改善
- 公司
- 包括
- 包括
- 包含
- 日益
- 行业中的应用:
- 信息
- 基础设施
- 输入
- 积分
- 智能化
- 兴趣
- 接口
- 国际
- 直观的
- IT
- 本身
- JavaScript的
- 工作
- 工作机会
- 键
- 知识
- 已知
- 实验室
- 标签
- 标签
- 语言
- 大
- 大
- 发射
- 知道
- 学习
- 离开
- 杠杆
- 行货
- 容易
- Line
- 液体肥产线
- 清单
- 加载
- 装载
- 本地
- 当地
- 圖書分館的位置
- 机
- 机器学习
- 制作
- 制作
- 管理
- 经理
- 地图
- 制图
- 地图
- 营销
- 面膜
- 匹配
- 意
- 手段
- 内存
- 杂
- ML
- 模型
- 模型
- 显示器
- 更多
- 最先进的
- 多
- 自然
- 笔记本
- 数
- 获得
- 提供
- 优惠精选
- 在线
- 打开
- 开放
- 操作
- 操作
- 操作
- 优化
- 追求项目的积极优化
- 附加选项
- 附加选项
- 秩序
- 组织
- 其他名称
- 除此以外
- 己
- 部分
- 特别
- 尤其
- 执行
- 个性化
- 平台
- 点
- 点
- 门户网站
- 位置
- 积极
- 强大
- 预测
- 预测
- 价格
- 私立
- 市场问题
- 问题
- 过程
- 过程
- 处理
- 产品
- 生产
- 核心产品
- 剖析
- 提供
- 提供
- 优
- 国家
- Q&A
- 质量
- 题
- 很快
- 原
- 阅读
- 合理
- 接收
- 减少
- 知识库
- 表示
- 资源
- REST的
- 成果
- 回报
- 收入
- 检讨
- 机器人
- 圆
- 运行
- 运行
- 可扩展性
- 科学家
- 科学家
- SDK
- 搜索
- 保安
- 段
- 分割
- 中模板
- 选
- 特色服务
- 服务
- 集
- 格局
- 短
- 如图
- 类似
- 简易
- 尺寸
- 技能
- 小
- So
- 软件
- 软件开发
- 固体
- 方案,
- 解决方案
- 一些
- 太空
- 特别
- 专门
- 特别是
- 堆
- 标准
- 开始
- 个人陈述
- 声明
- 存储
- 商店
- 策略
- 结构化
- 学生
- 成功
- 供应
- SUPPORT
- 支持
- 系统
- 产品
- 任务
- test
- 通过
- 次
- 耗时的
- 标题
- 象征
- 符号化
- 符号化
- 令牌
- Topics
- 火炬
- 跟踪
- 产品培训
- 改造
- 类型
- ui
- 理解
- 理解
- us
- 使用
- 利用
- 验证
- 折扣值
- 各种
- 厂商
- 企业验证
- 与
- 垂直
- 视频
- 查看
- 病毒
- 愿景
- 音色
- 等待
- 卷筒纸
- Web服务
- 什么是
- 而
- WHO
- 维基百科上的数据
- 中
- 也完全不需要
- 工作
- 工人
- 劳动力
- 合作
- 蠕虫
- 年