diff --git a/.devops/nix/package.nix b/.devops/nix/package.nix index 03f576842..911c42ecb 100644 --- a/.devops/nix/package.nix +++ b/.devops/nix/package.nix @@ -90,7 +90,6 @@ let ps.tiktoken ps.torchWithoutCuda ps.transformers - ps.python-frontmatter # server bench ps.matplotlib diff --git a/gguf-py/gguf/metadata.py b/gguf-py/gguf/metadata.py index 0e38bf076..0cfaf80aa 100644 --- a/gguf-py/gguf/metadata.py +++ b/gguf-py/gguf/metadata.py @@ -2,6 +2,7 @@ from __future__ import annotations import re import json +import yaml import logging from pathlib import Path from typing import Any, Optional @@ -116,13 +117,19 @@ class Metadata: if not model_card_path.is_file(): return {} - try: - import frontmatter - with open(model_card_path, "r", encoding="utf-8") as f: - return frontmatter.load(f).to_dict() - except ModuleNotFoundError: - logger.warning("module 'frontmatter' not available. Metadata from README.md will NOT be read.") - return {} + # The model card metadata is assumed to always be in YAML + # ref: https://github.com/huggingface/transformers/blob/a5c642fe7a1f25d3bdcd76991443ba6ff7ee34b2/src/transformers/modelcard.py#L468-L473 + with open(model_card_path, "r", encoding="utf-8") as f: + if f.readline() == "---\n": + raw = f.read().partition("---\n")[0] + data = yaml.safe_load(raw) + if isinstance(data, dict): + return data + else: + logger.error(f"while reading YAML model card frontmatter, data is {type(data)} instead of dict") + return {} + else: + return {} @staticmethod def load_hf_parameters(model_path: Optional[Path] = None) -> dict[str, Any]: diff --git a/gguf-py/pyproject.toml b/gguf-py/pyproject.toml index 62129126b..19f6761e2 100644 --- a/gguf-py/pyproject.toml +++ b/gguf-py/pyproject.toml @@ -22,6 +22,7 @@ classifiers = [ python = ">=3.8" numpy = ">=1.17" tqdm = ">=4.27" +pyyaml = ">=5.1" [tool.poetry.dev-dependencies] pytest = "^5.2" diff --git a/requirements/requirements-convert_legacy_llama.txt b/requirements/requirements-convert_legacy_llama.txt index 493dbe18c..1d07b0952 100644 --- a/requirements/requirements-convert_legacy_llama.txt +++ b/requirements/requirements-convert_legacy_llama.txt @@ -3,4 +3,3 @@ sentencepiece~=0.2.0 transformers>=4.40.1,<5.0.0 gguf>=0.1.0 protobuf>=4.21.0,<5.0.0 -python-frontmatter~=1.0.1