在选定的任务和数据集上轻松地对机器学习模型进行基准测试-使用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中使用Kotlin值类   在Hadoop中表示大文本块作为键的java   java安卓工作室;布局设计视图;   字典Java确定字符串是否以映射中的键开头   JavaG1:混合gc和完全gc之间有什么区别?   java Camunda升级组织。阿帕奇。平民语言错误   java Scanner类具有NextLine无限循环   安卓 GCM Java服务器:发送带有重音字符的消息   java我正在构建一个兴趣计算应用程序,我的项目构建良好,有1个警告,但它不会在我的设备上打开   java在Tilera TileGX上构建OpenJDK 8   GUI中的java惰性初始化与急切初始化   java JodaTime四舍五入到最近的一刻钟   java如何限制菜单。SpringRoo中的jspx可以避免对其他用户的实体执行CRUD操作   java我应该将缓冲流链接到输入流,还是在将声音库作为嵌入式资源加载时使用URL类?