在选定的任务和数据集上轻松地对机器学习模型进行基准测试-使用pytorch

torchbench的Python项目详细描述


在选定的任务和数据集上轻松地对pytorch模型进行基准测试。

安装

需要Python3.6+。

pip install torchbench

用法

此库可以与sotabench网站一起使用,也可以单独使用。下面我们将描述sotabench网站的用法。

在Sotabench网站上对模型进行基准测试的步骤:

  1. 在存储库的根目录中创建一个sotabench.py。下面您可以看到一个示例sotabench.py文件被添加到torchvision存储库中,以测试它的一个组成模型:
fromtorchbench.image_classificationimportImageNetfromtorchvision.models.resnetimportresnext101_32x8dimporttorchvision.transformsastransformsimportPIL# Define the transforms need to convert ImageNet data to expected model inputnormalize=transforms.Normalize(mean=[0.485,0.456,0.406],std=[0.229,0.224,0.225])input_transform=transforms.Compose([transforms.Resize(256,PIL.Image.BICUBIC),transforms.CenterCrop(224),transforms.ToTensor(),normalize,])# Run the benchmarkImageNet.benchmark(model=resnext101_32x8d(pretrained=True),paper_model_name='ResNeXt-101-32x8d',paper_arxiv_id='1611.05431',input_transform=input_transform,batch_size=256,num_gpu=1)
  1. 在您的计算机上本地运行它以验证其工作:
python sotabench.py

或者,如果笔记本是您的首选工作流,则可以在笔记本中运行相同的逻辑。

  1. 登录并将存储库连接到sotabench。连接存储库后,网站将在每次提交时重新评估您的模型,以确保模型正常工作并且结果是最新的—包括将其他模型添加到基准文件中。

您也可以使用没有sotabench网站的库,只需省略步骤3。在这种情况下,您也不需要将纸张细节放入benchmark()方法中。

基准

imagenet上的图像分类

imagenet基准上的图像分类是在image_classification.ImageNet类中实现的。

基准管道

  1. 将模型置于评估模式并发送到设备
  2. 使用input_transform
  3. 加载和转换imagenet验证数据集。
  4. 数据集被放入一个dataloader中,其中包含选项batch_sizenum_workers
  5. 模型和数据集与可选的model_output_transform函数一起传递给任务的评估函数,该函数可以在推理后转换输出
  6. 将转换后的输出与预期输出进行比较,计算出前1和前5的精度

预期输入/输出
  • 模型output(在model.forward()之后,也可以是model_output_transform)应该是包含模型输出的2d torch.Tensor;第一个维度应该为每个示例输出(长度batch_size),第二个维度应该为imagenet中的每个类输出(长度1000)。

wikitext-103上的语言建模

wikitext-103基准上的语言建模是在language_modelling.WikiText103类中实现的。

基准管道

  1. 将模型置于评估模式并发送到设备
  2. 已加载WikiText-103文本数据集,并且:
  • 使用encoder编码:这应该是具有encode方法的对象,该方法接受原始文本并生成 令牌列表,即token_list = encoder.encode(rawtext)。这与 在Hugging Face中。

  • 采用上下文长度context_length(默认1024-与gpt-2相同)。

  1. 数据集被放入一个dataloader中,其中包含选项batch_sizenum_workers
  2. 模型和数据集与可选的model_output_transform函数一起传递到任务的计算函数中,该函数可以在推理后转换输出。 预期输出是logits。
  3. LI>将Logit和标签转换为预测语言模型,并计算其困惑度量。

预期输入/输出
  • 模型output(在model.forward()之后,也可以选择model_output_transform)应该是3d torch.Tensor。 包含模型输出;第一个维度应该是每个示例的输出(长度batch_size),第二个维度 应该为每个标记输出维度(length=context_length),为每个vocab输出第三维度 (长度=人声大小)。这与Hugging Face中的接口相同。

即将推出更多基准…

贡献

欢迎各位投稿!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java组织。openqa。硒。遥远的UnreachableBrowserException如何定义EXE路径?   java Camel AdviceWith不使用指定文件替换端点   基于字符串的java图像加载   Java中的启发式算法,计算8个谜题状态的线性冲突   java为什么不支持文件。probeContentType返回null   JPA@EntityListeners、@PrePersist和Spring@RepositoryEventHandler、@HandleBeforeSave之间的java差异   可能前缀的Java字符串到字符串[]   安装rJava | Makefile时发生java错误。全部:38:target’libjri的配方。所以他失败了   Java公共静态void main()   java如何覆盖txt文件中的某些单词   java如何获得循环中生成的字符值之和?   java Log4j创建另一个具有相同属性的appender   java如何在从Axis2 Web服务客户端通过代理服务器调用Web服务时设置代理设置?   在Windows上安装Elasticsearch时发生java错误   java如何向EditText组件添加TextChangedListener?