翻译:deeplearning深度学习平台huggingface开源代码和技术构建训练和部署ml模型(代码片段)

AI架构师易筋 AI架构师易筋     2022-12-03     237

关键词:

1. 什么是Hugging Face🤗

Hugging Face 是一个社区和数据科学平台,提供:

  • 使用户能够基于开源 (OS) 代码和技术构建、训练和部署 ML 模型的工具。
  • 一个广泛的数据科学家、研究人员和 ML 工程师社区可以聚集在一起分享想法、获得支持并为开源项目做出贡献的地方。

2. 🔥 通过社区推进人工智能

随着最近向混合和灵活工作实践的转变,我们开始看到更多地使用和采用使数据科学团队、专家和业余爱好者能够远程协作的工具。

事实上,在人工智能的进步方面,操作系统社区变得越来越重要。没有任何一家公司,甚至“科技巨头”都无法靠自己的力量“解决人工智能”——共享知识和资源以加速和推进是未来的发展方向!

Hugging Face 通过提供一个社区“中心”来满足这一需求。这是一个任何人都可以共享和探索模型和数据集的中心位置。他们希望成为一个拥有最多模型和数据集的地方,目标是让所有人的人工智能民主化。

3. 🚀 入门 -> Git 的托管库

当您注册成为 Hugging Face 的成员时,您将获得一个基于 Git 的托管存储库,您可以在其中存储:模​​型、数据集和空间。我们将在本节的后面部分深入挖掘其中的每一个。

现在让我们开始运行吧!

注册成为社区个人贡献者是免费的。也有一个“专业”计划和单独的付费版

我继续注册了,在这个过程中你还可以链接到主页、Github 和 Twitter 帐户,如下图所示:

图 1:hugging face,社区帐户注册表单

创建帐户后,您将被重定向到您的个人存储库。在此页面中,您可以做很多事情,包括:

  • 查看您的活动源
  • 查看您的个人资料和设置
  • 创建新模型、数据集或空间
  • 查看 Hugging Face 社区当前的流行趋势
  • 查看您所属的组织列表并跳转到各自的领域
  • 利用有用的资源和文档

    图 2:hugging face,用户配置文件/存储库

存储库的核心是您的活动提要,当您开始创建(或喜欢)模型、数据集和空间时,它会被填充。

现在我们已经启动并运行了,让我们进行更深入的研究…

3.1 Model 模型

当您创建一个新的“模型”时,它实际上是一个 Git 存储库,用于存储与您要共享的 ML 模型相关的文件。它具有您期望的所有好处,例如版本控制、分支、可发现性等。

💡 我将在本节中描述的步骤(包括数据集和空间)都可以使用Hub API Endpoints通过命令行以编程方式实现。

单击 Hub 中的“+新建”按钮,然后选择“模型”,您将进入一个对话框,您可以在其中指定名称和操作系统许可证的类型,您将根据这些许可证贡献模型的代码和相关资产。

您还可以控制模型的可见性,即使其公开并使其对 Hugging Face 社区可见或在您的个人存储库或组织中保持私有。

图 3:Hugging Face,创建一个新的模型存储库

创建模型后,您将进入存储库视图,默认选择“模型卡”选项卡:在创建后,您将进入存储库视图,默认选择“模型卡”选项卡:

图 4:hugging face,新模型库,模型卡

对于普通的 Git 用户,“文件和版本”选项卡会很熟悉:

图 5:hugging face新模型存储库、文件和版本

我的模型库目前是空的,但下面的屏幕截图显示了一个完全填充的模型卡对于 Hugging Face 社区模型之一的需求:

图 6:hugging face Bert base model(uncased),模型卡

元素介绍:

  1. 在顶部,我们有模型名称、喜欢和紧跟在与模型关联的标签下方。如框架、模型类型和其他属性。
  2. 模型卡的主体可用于给出模型的概述、如何使用它的代码片段、约束和任何其他相关信息。此项目的内容是通过使用正确的标签填充模型存储库中的 README.md 文件来确定的。
  3. 您可以训练模型以对其进行微调,甚至可以通过指向AWS SageMaker实例或 Hugging Face 自己的Infinity容器化基础设施来部署它。如果您想在自己的代码中使用模型,‘</> Use…’ 将弹出一个代码片段,说明如何根据用于构建模型的框架导入它。另一个非常简洁的功能是托管推理 API,它允许您显示一个小部件,该小部件允许用户将样本值传递给模型以测试其输出。Hosted Inference API 小部件由模型文件中包含的元数据确定。
  4. 最后,您还可以查看有关哪些数据集用于训练模型以及使用该模型的空间的元数据。

💡拥有详细的模型卡很重要,因为它可以帮助用户了解何时以及如何应用您的模型

3.2 Dataset数据集

创建新数据集遵循与创建新模型非常相似的流程。单击 Hub 中的“+ New”按钮,然后选择“Dataset”。您指定名称、许可证类型、公共或私人访问权限。然后您会看到一个存储库视图,其中包含“数据集卡”、“文件和版本”,类似于模型存储库中的内容。

图 7:hugging face,imdb 数据集,数据集卡

再次强调关键要素:

  1. 除了数据集标题、喜欢和标签外,您还可以获得一个目录,以便您可以跳到数据集卡片正文中的相关部分。
  2. 数据集卡的主体可以配置为包含嵌入式数据集预览。这非常方便,因为它显示了特征、数据拆分和子集(如果有)。这些项目和之前项目的内容是通过使用正确的标签填充数据集存储库中的 README.md 文件来确定的。
  3. 最后,您可以快速链接到 GitHub 存储库,以及通过 Hugging Face python 数据集库使用数据集的代码片段。还有其他元数据,例如数据集的来源、大小以及 Hugging Face 社区中的哪些模型已在数据集上进行过训练。

3.3 Spaces空间

Spaces 为您提供了一个以自包含 ML 演示应用程序的形式展示您的工作的地方。如果您正在寻找灵感,有很多社区贡献的空间可供您查看。

图 8:hugging face,社区空间

这是构建项目组合的好方法,可以在演示、与组织中的同事或更广泛的 ML 生态系统协作时使用。

要开始使用,请单击 Hub 中的“+ New”按钮,然后选择“Space”。这会将您带到一个对话框,您可以在其中指定空间的名称和许可证类型。

您还需要选择一个 SDK。在撰写本文时,您可以从两个基于 Python 的框架中进行选择来托管应用程序:GradioStreamlit。或者,您可以只使用自定义 HTML。


图 9:Hugging Face,创建新模型存储库

与创建新模型或数据集时一样,一旦创建,您将被定向到空间存储库。应用卡是您的演示出现的地方。

为方便起见,我只选择了自定义 HTML 选项,并通过“文件和版本”选项卡编辑了 index.html 文件以进行说明。但是您可以在此处嵌入任何内容,包括 iFrame 中的内容。

图 10:hugging face、空间、应用卡

创建空间并返回您的个人资料后,您将看到它出现在您的活动源中并准备与世界分享!返回您的个人资料,您会看到它出现在您的活动提要中,并准备与世界分享!

图 11:hugging face,带有更新空间的用户配置文件/存储库

4. 🏄🏽‍♂️ 探索社区

4.1 社区模式

在您的个人(或组织)存储库之外,您还可以探索由 Hugging Face 社区贡献的所有数以万计的模型、数据集和空间。

您可以从始终显示在网页顶部的顶级导航菜单访问它们。

图 12:hugging face,社区模型

社区存储库中大约 ⅔ 的模型是在 PyTorch 中构建的,但对于 TensorFlow 和其他常见 ML 库中可用的每个主要任务,通常都有替代方案。

每个都将有一个模型卡,如上面的模型部分所示,其中包含作者提供的关键信息以及一个托管的推理 API,用于查看模型的示例输入和输出。在“文件和版本”选项卡中,有一个存储库视图中所有文件的列表以及一个包含先前模型运行和保存以供参考的文件夹。

4.2 Tasks任务

现在,您可能会花费大量时间在众多不同的社区模型中搜寻,试图找到一个可以帮助解决您正在尝试解决的挑战的模型。

相反,Hugging Face 通过提供模型的精选视图为您省去了麻烦,具体取决于您尝试使用 AI 处理的任务。

图 13:hugging face,顶级导航和任务页面

Hugging Face 的大部分社区贡献都属于 NLP(自然语言处理)模型的范畴。但您也可以找到与音频和计算机视觉模型任务相关的模型。

每个任务的文档都以直观和直观的方式进行了解释。除了图表,每个解释都附有一个简短的 youtube 视频以及使用推理 API 的演示链接和社区制作的模型链接。


图 14:hugging face、任务、文本分类文档

还描述了可能的用例和任务变体。许多任务描述页面将包括用于培训的笔记本和脚本,以帮助入门。这些脚本涵盖了从设置和加载数据集到预处理(使用 Tokenizer)、模型比较和微调(使用 Trainer API)的端到端过程。

5. 📔 把所有东西放在一起!

在最后一部分中,我们将了解如何轻松地开始使用 Hugging Face和 Python notebook 一起使用Transformers 、Trainer 和 Inference API 的用例

使用 Hugging Face 工具的主要优势之一是您可以减少从头开始创建和训练模型的训练时间、资源和环境影响。通过微调现有的预训练模型,而不是从头开始训练所有内容,您可以在更短的时间内从数据到预测。

5.1. 同步与认证

Hugging Face 通过将您的笔记本与 Hugging Face Hub 同步,鼓励并轻松地与 Hugging Face 社区的其他人分享您制作或微调的内容。如果您使用可以在用户配置文件的“访问令牌”部分生成的令牌登录,它会将您的模型与网站同步。

图 15:hugging face、notebook、身份验证

🧐 注意——这里我们使用样板Colab环境,但高级选项允许在 Amazon SageMaker 和 AutoNLP 中进行直接培训,以及多种部署方法,包括 Hugging Face 自己的 Infinity。

5.2. 数据准备

如前所述,如果您正在寻找可以测试或微调模型的东西, Hugging Face Github提供了大量的数据集选择

在这里,我们试驾 Hugging Face 自己的模型DistilBERT来微调问答模型。

安装并导入必要的库后,我们可以继续使用 Datasets 库在一行中加载数据集。Hugging Face 数据集通常以 Pyarrow 格式构建,但也可以导入 JSON 或 CSV 文件。

图 16:hugging face,笔记本,加载数据集

接下来我们对训练数据进行预处理。Transformers AutoTokenizer 功能用于简化流程。更好的是,许多 Tokenizer 是 Rust 支持的“快速”Tokenizer,可以实现更高效的处理。

样板 Colab 将引导用户了解如何在标记化时截断长文档并考虑上下文拆分。Hugging face 还提供了工具来帮助通过使用偏移映射将标记映射回原始数据上下文。

数据集有一个 map 方法可以将标记化应用于整个数据集。

图 17:hugging face、笔记本、数据集准备

5.3. 根据您的要求微调模型

准备好数据集后,我们可以微调模型。作为转换器库的一部分,有一个 AutoModelForQuestionAnswering 类,它是从模型检查点预训练的。然后我们需要做的就是为 PyTorch 模型定义训练参数并将其传递给 Trainer API。

图 18:hugging face、笔记本、模型训练参数

可以轻松设置超参数以匹配您想要的结果/环境。

5.4. 训练定制模型

以下代码行是启动模型训练过程所需的全部内容。

图 19:hugging face、笔记本、模型训练

5.5. 模型输出

模型运行后,可以通过 Trainer API 使用一行代码将其同步回 Hub:

trainer.push_to_hub()

样板 Colab 文档还包括一个模板,用于创建预测并将其后处理为有意义的输出。

上传后,您的模型卡将类似于下面的屏幕截图,然后可以通过编辑进一步自定义。

图 20:hugging face,定制模型

然后,您可以使用 Hosted Inference API 在自动生成的模型页面上的 Hugging Face 网站上运行预测,或者将模型检查点加载到 Python 中以开始根据您的微调模型进行预测。

另一个很酷的功能是,如果模型是在 TensorFlow 中创建的,您可以在 Tensorboard 中查看训练指标和模型指标。

至此,我们简要概述了 Hugging Face 是什么、如何开始共享模型和数据集、在社区中导航以及如何为您自己的用例重用现有的社区模型。

6. 📚 进一步阅读和有用的资源

参考

https://towardsdatascience.com/whats-hugging-face-122f4e7eb11a

deeplearning(深度学习)学习笔记整理(二)

...细地讲解了CNN的基础结构与核心思想,欢迎交流。 [1]Deeplearning简介[2]DeepLearning训练过程[3]DeepLearning模型之:CNN卷积神经网络推导和实现[4]DeepLearning模型之:CNN的反向求导及练习[5]DeepLearning模型之:CNN卷积神经网络(一)深度... 查看详情

机器学习(machinelearning)&深度学习(deeplearning)资料

机器学习(MachineLearning)&深度学习(DeepLearning)资料《BriefHistoryofMachineLearning》介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机、神经网络、决策树、SVM、Adaboost到随机森林、DeepLearning.《DeepLearninginNeuralNetworks:AnOverv... 查看详情

《deeplearning》(深度学习)中文版开发下载

  《DeepLearning》(深度学习)中文版开放下载 《DeepLearning》(深度学习)是一本皆在帮助学生和从业人员进入机器学习领域的教科书,以开源的形式免费在网络上提供,这本书是由学界领军人物 IanGoodfellow、YoshuaBe... 查看详情

33万字!深度学习笔记在线版发布!

吴恩达老师的深度学习课程(deeplearning.ai),可以说是深度学习入门的最热门课程,我和志愿者编写了这门课的笔记,并在github开源,为满足手机阅读的需要,我将笔记做成了在线版,可以在手机上打开公众号收藏就能学习。(... 查看详情

deeplearning:学前了解

以前学习硬件方面知识比较多,对深度学习知识有一定的了解。最近开始学习深度学习来提升自己。深度学习    首先要了解深度学习的概念。深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是... 查看详情

《deeplearning》(深度学习)中文版pdf免费下载

《DeepLearning》(深度学习)中文版PDF免费下载“深度学习”经典著作《DeepLearning》中文版pdf免费下载。《DeepLearning》(深度学习)是一本皆在帮助学生和从业人员进入机器学习领域的教科书,以开源的形式免费在网络上提供,这本... 查看详情

深度学习

...征表示4.3、结构性特征表示4.4、需要有多少个特征?五、DeepLearning的基本思想六、浅层学习(ShallowLearning)和深度学习(DeepLearning)七、Deeplearning与NeuralNetwork八、Deeplearning训练过程8.1、传统神经网络的训练方法8.2、 查看详情

deeplearning[花书]参考资料

...考1公开课2中文课程参考1.英文原书官网由MIT出版http://www.deeplearningbook.org2.中文翻译https://github.com/exacity/deeplearningbook-chinese3.朱明超-花书原理推导和代码实现其中包含相关的参考资料https://github.com/MingchaoZhu/DeepLearning4.花书各章笔... 查看详情

deeplearning(深度学习)学习笔记整理系列五

DeepLearning(深度学习)学习笔记整理系列  声明:1)该DeepLearning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。2)本文仅供学术交流... 查看详情

deeplearning(深度学习)学习笔记整理系列七

DeepLearning(深度学习)学习笔记整理系列  声明:1)该DeepLearning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。2)本文仅供学术交流... 查看详情

deeplearning(深度学习)学习笔记整理系列三

DeepLearning(深度学习)学习笔记整理系列 声明:1)该DeepLearning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。2)本文仅供学术交流,非... 查看详情

deeplearning(深度学习)学习笔记整理系列四

DeepLearning(深度学习)学习笔记整理系列 声明:1)该DeepLearning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。2)本文仅供学术交流,非... 查看详情

深度学习deeplearning必备之必背十大网络结构

深度学习网络结构:【深度学习】DeepLearning必备之必背十大网络结构(从公众号转发过来发现图片不能引用,直接点上面链接吧)昨天的文章介绍了在学习DeepLearning过程中必须背熟的十几条知识点【深度学习】Deep... 查看详情

深度学习deeplearning资料大全

转载:http://www.cnblogs.com/charlotte77/p/5485438.html   最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下:FreeOnlineBooksDeepLearning66 byYoshuaBengio,IanGoodfellowandAaronCourvilleNeuralNetworksandDeepLea 查看详情

机器学习(machinelearning)&amp;深度学习(deeplearning)资料

机器学习(MachineLearning)&深度学习(DeepLearning)资料機器學習、深度學習方面不錯的資料,轉載。原作:https://github.com/ty4z2008/Qix/blob/master/dl.md原作作者會不斷更新。本文更新至2014-12-21《BriefHistoryofMachineLearning》介绍:这是一篇介绍... 查看详情

deeplearning(深度学习)学习笔记整理

申明:本文非笔者原创,原文转载自:http://www.sigvc.org/bbs/thread-2187-1-3.html     4.2、初级(浅层)特征表示      既然像素级的特征表示方法没有作用,那怎样的表示才有用呢?   ... 查看详情

快速掌握深度学习(deeplearning)常用概念术语,常用模型

1、什么是深度学习?深度学习的概念:深度学习是机器学习的一个分支,深度学习是使用了深度神经网络的机器学习。所以深度学习=深度神经网络+机器学习。神经网络,也叫作人工神经网络。是一种模拟... 查看详情

机器学习(machinelearning)与深度学习(deeplearning)资料汇总

...;从感知机、神经网络、决策树、SVM、Adaboost到随机森林、DeepLearning.《DeepLearninginNeuralNetworks:AnOverview》介绍:这是瑞士人工智能实验室JurgenSchmidhuber写的最新版本《神经网络与深 查看详情