Hugging Face Hub Search API 更新

Hugging Face 更新了 huggingface_hub 库,为搜索模型、数据集和 Spaces 提供了一个更直观、程序化的接口。这些更新消除了用户手动导航 Web 界面或猜测 API 查询参数的需求,允许直接在 Python 或 Jupyter 环境中进行复杂的过滤。

使用 ModelSearchArguments 简化搜索

ModelSearchArgumentsDatasetSearchArguments 类充当了人类可读的“速查表”,将用户友好的术语映射到 Hugging Face API 所需的具体格式化字符串。这消除了确定参数应如何编写的试错过程。

可用的搜索属性

ModelSearchArguments 类为以下可搜索属性提供了一个命名空间:

  • author: 按模型的创建者进行过滤。
  • dataset: 按用于训练的数据集进行过滤(例如,model_args.dataset.glue 返回 'dataset:glue')。
  • language: 按模型的语言进行过滤。
  • library: 按框架进行过滤,例如 PyTorch(例如,model_args.library.PyTorch 返回 'pytorch')。
  • license: 按模型许可证进行过滤。
  • model_name: 按特定的模型名称进行过滤。
  • pipeline_tag: 按任务进行过滤,例如文本分类(例如,model_args.pipeline_tag.TextClassification 返回 'text-classification')。

用户可以通过 api.list_models() 方法使用 filter 参数传递这些参数来检索匹配的模型。

使用 ModelFilter 进行高级过滤

对于涉及多个标准或每个标准包含多个值的复杂查询,ModelFilter 类提供了一种协调的方法来进行搜索。ModelFilter 不再使用简单的字符串,而是允许用户为任务、数据集和库定义需求列表。

例如,用户可以同时搜索满足以下所有标准的模型:

  • Tasks: 同时满足 text-classificationzero-shot-classification
  • Datasets: 同时满足 Multi NLI 和 GLUE。
  • Libraries: 同时满足 PyTorch 和 TensorFlow。

技术实现:AttributeDictionary

改进的搜索体验是由一个名为 AttributeDictionary 的工具类驱动的。受 fastcore 库中 AttrDict 类的启发,AttributeDictionary 通过启用键的自动补全功能增强了标准的 Python 字典,这对于探索性编程至关重要。

AttributeDictionary 的关键特性

  • Attribute Access: 键可以作为属性访问(例如,ad.key)而不仅仅是作为字典键(例如,ad['key'])。
  • Nested Exploration: 它支持嵌套字典,允许对 API 响应进行深度探索。
  • Deletion: 可以使用 del ad.keydel ad[key] 来删除键。
  • Constraint: 如果键包含数字或特殊字符,则必须使用标准字典索引(ad['key'])进行访问,因为 Python 语法不允许属性以数字开头或包含特殊字符。

程序化模型信息

除了搜索,huggingface_hub 库还允许用户使用其模型 ID 通过 api.model_info('model_id') 方法检索特定模型的详细信息。

Sources

相关

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch