Transformers 4.37 中文文档(十)(2)https://developer.aliyun.com/article/1564903
A100(批量大小:4)
任务/模型 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/ViT | 14.832 | 14.499 |
图像分割/Segformer | 18.838 | 16.476 |
图像分类/BeiT | 13.205 | 13.048 |
目标检测/DETR | 48.657 | 32.418 |
图像分类/ConvNeXT | 22.940 | 21.631 |
图像分类/ResNet | 6.657 | 4.268 |
图像分割/Mask2former | 74.277 | 61.781 |
图像分割/Maskformer | 180.700 | 159.116 |
图像分割/MobileNet | 14.174 | 8.515 |
目标检测/Resnet-101 | 68.101 | 44.998 |
目标检测/Conditional-DETR | 56.470 | 35.552 |
A100(批量大小:16)
任务/模型 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/ViT | 40.944 | 40.010 |
图像分割/Segformer | 37.005 | 31.144 |
图像分类/BeiT | 41.854 | 41.048 |
目标检测/DETR | 164.382 | 161.902 |
图像分类/ConvNeXT | 82.258 | 75.561 |
图像分类/ResNet | 7.018 | 5.024 |
图像分割/Mask2former | 178.945 | 154.814 |
图像分割/Maskformer | 638.570 | 579.826 |
图像分割/MobileNet | 51.693 | 30.310 |
目标检测/Resnet-101 | 232.887 | 155.021 |
目标检测/Conditional-DETR | 180.491 | 124.032 |
V100(批量大小:1)
任务/模型 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/ViT | 10.495 | 6.00 |
图像分割/Segformer | 13.321 | 5.862 |
目标检测/OwlViT | 25.769 | 22.395 |
图像分类/BeiT | 11.347 | 7.234 |
目标检测/DETR | 33.951 | 19.388 |
图像分类/ConvNeXT | 11.623 | 10.412 |
图像分类/ResNet | 6.484 | 3.820 |
图像分割/Mask2former | 64.640 | 49.873 |
图像分割/Maskformer | 95.532 | 72.207 |
图像分割/MobileNet | 9.217 | 4.753 |
目标检测/Resnet-101 | 52.818 | 28.367 |
目标检测/Conditional-DETR | 39.512 | 20.816 |
V100(批量大小:4)
任务/模型 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/ViT | 15.181 | 14.501 |
图像分割/Segformer | 16.787 | 16.188 |
图像分类/BeiT | 15.171 | 14.753 |
目标检测/DETR | 88.529 | 64.195 |
图像分类/ConvNeXT | 29.574 | 27.085 |
图像分类/ResNet | 6.109 | 4.731 |
图像分割/Mask2former | 90.402 | 76.926 |
图像分割/Maskformer | 234.261 | 205.456 |
图像分割/MobileNet | 24.623 | 14.816 |
目标检测/Resnet-101 | 134.672 | 101.304 |
目标检测/Conditional-DETR | 97.464 | 69.739 |
V100(批量大小:16)
任务/模型 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/ViT | 52.209 | 51.633 |
图像分割/Segformer | 61.013 | 55.499 |
图像分类/BeiT | 53.938 | 53.581 |
目标检测/DETR | OOM | OOM |
图像分类/ConvNeXT | 109.682 | 100.771 |
图像分类/ResNet | 14.857 | 12.089 |
图像分割/Mask2former | 249.605 | 222.801 |
图像分割/Maskformer | 831.142 | 743.645 |
图像分割/MobileNet | 93.129 | 55.365 |
目标检测/Resnet-101 | 482.425 | 361.843 |
目标检测/Conditional-DETR | 344.661 | 255.298 |
T4(批量大小:1)
任务/模型 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/ViT | 16.520 | 15.786 |
图像分割/Segformer | 16.116 | 14.205 |
目标检测/OwlViT | 53.634 | 51.105 |
图像分类/BeiT | 16.464 | 15.710 |
目标检测/DETR | 73.100 | 53.99 |
图像分类/ConvNeXT | 32.932 | 30.845 |
图像分类/ResNet | 6.031 | 4.321 |
图像分割/Mask2former | 79.192 | 66.815 |
图像分割/Maskformer | 200.026 | 188.268 |
图像分割/MobileNet | 18.908 | 11.997 |
目标检测/Resnet-101 | 106.622 | 82.566 |
目标检测/Conditional-DETR | 77.594 | 56.984 |
T4(批量大小:4)
任务/模型 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/ViT | 43.653 | 43.626 |
图像分割/Segformer | 45.327 | 42.445 |
图像分类/BeiT | 52.007 | 51.354 |
目标检测/DETR | 277.850 | 268.003 |
图像分类/ConvNeXT | 119.259 | 105.580 |
图像分类/ResNet | 13.039 | 11.388 |
图像分割/Mask2former | 201.540 | 184.670 |
图像分割/Maskformer | 764.052 | 711.280 |
图像分割/MobileNet | 74.289 | 48.677 |
目标检测/Resnet-101 | 421.859 | 357.614 |
目标检测/Conditional-DETR | 289.002 | 226.945 |
T4(批量大小:16)
任务/模型 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/ViT | 163.914 | 160.907 |
图像分割/Segformer | 192.412 | 163.620 |
图像分类/BeiT | 188.978 | 187.976 |
目标检测/DETR | OOM | OOM |
图像分类/ConvNeXT | 422.886 | 388.078 |
图像分类/ResNet | 44.114 | 37.604 |
图像分割/Mask2former | 756.337 | 695.291 |
图像分割/Maskformer | 2842.940 | 2656.88 |
图像分割/MobileNet | 299.003 | 201.942 |
目标检测/Resnet-101 | 1619.505 | 1262.758 |
目标检测/Conditional-DETR | 1137.513 | 897.390 |
PyTorch Nightly
我们还在 PyTorch nightly(2.1.0dev,可以在这里找到)上进行了基准测试,并观察到未编译和编译模型的延迟均有所改善。
A100
任务/模型 | 批量大小 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/BeiT | 未分批 | 12.462 | 6.954 |
图像分类/BeiT | 4 | 14.109 | 12.851 |
图像分类/BeiT | 16 | 42.179 | 42.147 |
目标检测/DETR | 未分批 | 30.484 | 15.221 |
目标检测/DETR | 4 | 46.816 | 30.942 |
目标检测/DETR | 16 | 163.749 | 163.706 |
T4
任务/模型 | 批量大小 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/BeiT | 未分批 | 14.408 | 14.052 |
图像分类/BeiT | 4 | 47.381 | 46.604 |
图像分类/BeiT | 16 | 42.179 | 42.147 |
目标检测/DETR | 未分批 | 68.382 | 53.481 |
目标检测/DETR | 4 | 269.615 | 204.785 |
目标检测/DETR | 16 | OOM | OOM |
V100
任务/模型 | 批量大小 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/BeiT | 未分批 | 13.477 | 7.926 |
图像分类/BeiT | 4 | 15.103 | 14.378 |
图像分类/BeiT | 16 | 52.517 | 51.691 |
目标检测/DETR | 未分批 | 28.706 | 19.077 |
目标检测/DETR | 4 | 88.402 | 62.949 |
目标检测/DETR | 16 | OOM | OOM |
减少开销
我们在夜间对 A100 和 T4 进行了reduce-overhead
编译模式的基准测试。
A100
任务/模型 | 批量大小 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/ConvNeXT | 未分批 | 11.758 | 7.335 |
图像分类/ConvNeXT | 4 | 23.171 | 21.490 |
图像分类/ResNet | 未分批 | 7.435 | 3.801 |
图像分类/ResNet | 4 | 7.261 | 2.187 |
目标检测/条件 DETR | 未批处理 | 32.823 | 11.627 |
目标检测/条件 DETR | 4 | 50.622 | 33.831 |
图像分割/MobileNet | 未批处理 | 9.869 | 4.244 |
图像分割/MobileNet | 4 | 14.385 | 7.946 |
T4
任务/模型 | 批处理大小 | torch 2.0 - 无编译 | torch 2.0 - 编译 |
图像分类/ConvNeXT | 未批处理 | 32.137 | 31.84 |
图像分类/ConvNeXT | 4 | 120.944 | 110.209 |
图像分类/ResNet | 未批处理 | 9.761 | 7.698 |
图像分类/ResNet | 4 | 15.215 | 13.871 |
目标检测/条件 DETR | 未批处理 | 72.150 | 57.660 |
目标检测/条件 DETR | 4 | 301.494 | 247.543 |
图像分割/MobileNet | 未批处理 | 22.266 | 19.339 |
图像分割/MobileNet | 4 | 78.311 | 50.983 |
贡献
贡献给🤗 Transformers
欢迎每个人贡献,我们重视每个人的贡献。代码贡献并不是帮助社区的唯一方式。回答问题,帮助他人,改进文档也是非常有价值的。
如果您帮助传播消息,也会对我们有所帮助!在博客文章中提到这个令人惊叹的项目所可能实现的项目,每次它帮助您时在 Twitter 上大声疾呼,或者简单地⭐️这个存储库以表示感谢。
无论您选择如何贡献,请注意并尊重我们的行为准则。
本指南受到了令人惊叹的scikit-learn 贡献指南的启发。
贡献的方式
有几种方式可以为🤗 Transformers 做出贡献:
- 修复现有代码中的未解决问题。
- 提交与错误或期望的新功能相关的问题。
- 实现新模型。
- 为示例或文档做出贡献。
如果您不知道从哪里开始,有一个特殊的Good First Issue列表。它将为您提供一份友好的初学者的问题列表,并帮助您开始为开源项目做出贡献。只需在您想要处理的问题上发表评论即可。
对于稍微具有挑战性的事情,您还可以查看Good Second Issue列表。总的来说,如果您觉得自己知道在做什么,就去做吧,我们会帮助您实现目标!🚀
所有贡献对社区都同样有价值。🥰
修复未解决的问题
如果您注意到现有代码中存在问题并有解决方案,请随时开始贡献并打开一个拉取请求!
提交与错误相关的问题或功能请求
在提交与错误相关的问题或功能请求时,请尽力遵循这些准则。这将使我们更容易快速回复您并提供良好的反馈。
您发现了一个错误吗?
🤗 Transformers 库之所以强大可靠,要感谢那些报告他们遇到问题的用户。
在报告问题之前,我们真的很感激您确保错误尚未被报告(在 GitHub 的问题下使用搜索栏)。您的问题也应与库本身中的错误有关,而不是您的代码。如果您不确定错误是在您的代码中还是在库中,请先在论坛中询问。这有助于我们更快地回应与库相关的问题,而不是一般问题。
一旦确认错误尚未被报告,请在您的问题中包含以下信息,以便我们能够快速解决:
- 您的操作系统类型和版本以及Python,PyTorch和TensorFlow版本(如果适用)。
- 一个简短的、自包含的代码片段,使我们能够在不到 30 秒内重现错误。
- 完整的异常跟踪信息。
- 附加任何其他可能有助于的信息,如截图。
要自动获取操作系统和软件版本,请运行以下命令:
transformers-cli env
您还可以从存储库的根目录运行相同的命令:
python src/transformers/commands/transformers_cli.py env
您想要一个新功能吗?
如果您希望在🤗 Transformers 中看到一个新功能,请打开一个问题并描述:
- 这个功能背后的动机是什么?它是否与库中的问题或挫折有关?它是否与您需要的项目相关的功能?它是否是您正在开发的东西,您认为它可能有益于社区?
无论是什么,我们都很乐意听到! - 尽可能详细地描述您请求的功能。您能告诉我们的越多,我们就能更好地帮助您。
- 提供一个演示功能使用的代码片段。
- 如果功能与论文相关,请包含链接。
如果您的问题写得很好,那么在您创建问题时我们已经完成了 80%的工作。
我们已经添加了模板来帮助您开始解决问题。
您想要实现一个新模型吗?
新模型不断发布,如果您想实现新模型,请提供以下信息
- 模型的简短描述和论文链接。
- 如果实现是开源的,请提供实现的链接。
- 如果模型权重可用,请提供模型权重的链接。
如果您愿意贡献模型,请告诉我们,这样我们就可以帮助您将其添加到🤗 Transformers 中!
我们已经添加了一个详细指南和模板来帮助您开始添加新模型,我们还有一个更详细的指南,介绍了如何向🤗 Transformers 添加模型。
您想添加文档吗?
我们始终在寻找使文档更清晰和准确的改进。请告诉我们如何改进文档,例如拼写错误和任何缺失、不清晰或不准确的内容。如果您有兴趣,我们将很乐意进行更改或帮助您做出贡献!
有关如何生成、构建和编写文档的更多详细信息,请查看文档README。
创建一个 Pull Request
在编写任何代码之前,我们强烈建议您搜索现有的 PR 或问题,以确保没有人已经在处理相同的事情。如果您不确定,最好打开一个问题以获得一些反馈。
您需要基本的git
熟练技能才能为🤗 Transformers 做出贡献。虽然git
不是最容易使用的工具,但它有最详尽的手册。在 shell 中键入git --help
并享受!如果您更喜欢书籍,Pro Git是一个非常好的参考。
您需要**Python 3.8)**或更高版本才能为🤗 Transformers 做出贡献。请按照以下步骤开始贡献:
git clone git@github.com:<your Github handle>/transformers.git cd transformers git remote add upstream https://github.com/huggingface/transformers.git
- 创建一个新分支来保存您的开发更改:
git checkout -b a-descriptive-name-for-my-changes
- 🚨 不要在
main
分支上工作! - 在虚拟环境中运行以下命令设置开发环境:
pip install -e ".[dev]"
- 如果🤗 Transformers 已经安装在虚拟环境中,请在重新安装时使用
pip uninstall transformers
将其删除,然后使用-e
标志以可编辑模式重新安装。
根据您的操作系统,由于 Transformers 的可选依赖项数量正在增加,您可能会在此命令中遇到失败。如果是这种情况,请确保安装您正在使用的深度学习框架(PyTorch、TensorFlow 和/或 Flax),然后执行:
pip install -e ".[quality]"
- 这对大多数用例来说应该足够了。
- 在您的分支中开发功能。
在编写代码时,您应确保测试套件通过。运行受您更改影响的测试如下:
pytest tests/<TEST_TO_RUN>.py
- 有关测试的更多信息,请查看Testing指南。
🤗 Transformers 依赖于black
和ruff
来一致格式化其源代码。在进行更改后,应用自动样式更正和代码验证,这些更改无法一次性自动完成:
make fixup
- 此目标还经过优化,仅适用于您正在处理的 PR 修改的文件。
如果您更喜欢逐个运行检查,以下命令适用于样式更正:
make style
- 🤗 Transformers 还使用
ruff
和一些自定义脚本来检查编码错误。质量控制由 CI 运行,但您也可以使用相同的检查运行:
make quality
- 最后,我们有很多脚本,以确保在添加新模型时不会忘记更新一些文件。您可以使用以下命令运行这些脚本:
make repo-consistency
- 要了解更多关于这些检查以及如何解决其中任何问题的信息,请查看拉取请求上的检查指南。
如果您修改了docs/source
目录下的文档,请确保文档仍然可以构建。当您打开拉取请求时,此检查也将在 CI 中运行。要运行本地检查,请确保安装文档生成器:
pip install ".[docs]"
- 从存储库的根目录运行以下命令:
doc-builder build transformers docs/source/en --build_dir ~/tmp/test-build
- 这将在
~/tmp/test-build
文件夹中构建文档,您可以使用您喜欢的编辑器检查生成的 Markdown 文件。您还可以在打开拉取请求时在 GitHub 上预览文档。
当您对更改满意时,请使用git add
添加更改的文件,并使用git commit
在本地记录您的更改:
git add modified_file.py git commit
- 请记得写良好的提交消息,以清楚地传达您所做的更改!
为了使您的代码副本与原始存储库保持最新,请在打开拉取请求之前或维护者要求时,在upstream/branch
上对您的分支进行变基:
git fetch upstream git rebase upstream/main
- 将更改推送到您的分支:
git push -u origin a-descriptive-name-for-my-changes
- 如果您已经打开了一个拉取请求,您需要使用
--force
标志进行强制推送。否则,如果拉取请求尚未打开,您可以正常推送您的更改。 - 现在,您可以转到 GitHub 上存储库的分支,并单击拉取请求以打开拉取请求。确保您在下面的检查列表上勾选所有框。当您准备好时,您可以将更改发送给项目维护者进行审查。
- 如果维护者要求更改,那没关系,我们的核心贡献者也会遇到这种情况!这样每个人都可以在拉取请求中看到更改,您可以在本地分支上工作并将更改推送到您的分支。它们将自动出现在拉取请求中。
Transformers 4.37 中文文档(十)(4)https://developer.aliyun.com/article/1564905