Hub Python 函式庫文件

HF URI

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

HF URI

HF URI 是一種類似 URI 的字串,用於識別 Hugging Face Hub 上的位置。在整個函式庫與 CLI 中,hf://... 字串用於指向:

  • 模型、資料集、空間 (Space) 或核心 (Kernel) 儲存庫(可選定特定修訂版本);
  • 此類儲存庫內的檔案或子資料夾;
  • 一個 儲存區 (bucket) 或儲存區內的子資料夾。

HF 掛載 (HF mount) 將 HF URI 與本機掛載路徑以及選用的 :ro / :rw 旗標包裝在一起,供 SpacesJobs 磁碟區使用。

本頁面記載了 HF URI 和 HF 掛載的規範語法。函式庫中到處使用相同的解析器,因此在一個情境中有效的 URI(例如 HfFileSystem),在另一個情境中的解析方式也是相同的。

HF URI 語法

hf://[<TYPE>/]<ID>[@<REVISION>][/<PATH>]
組件 必要 允許的值
hf:// 字面協定前綴。
<TYPE>/ models/, datasets/, spaces/, kernels/, buckets/(複數)。
<ID> <命名空間>/<名稱>
@<REVISION> 分支、標籤、提交 SHA 或特殊參考 (refs/pr/N, refs/convert/...)。僅限儲存庫。
/<PATH> 儲存庫或儲存區內的路徑。

HF 掛載語法

hf://[<TYPE>/]<ID>[@<REVISION>][/<PATH>]:<MOUNT_PATH>[:ro|:rw]

掛載是 HF URI 後接 :<MOUNT_PATH> 以及選用的 :ro / :rw 旗標。

組件 必要 允許的值
<MOUNT_PATH> 絕對掛載路徑(必須以 / 開頭)。
:ro / :rw 唯讀 / 可讀寫旗標。

什麼是 HF URI

以下皆為有效的 HF URI

# Models (type prefix is optional, but the id is always 'namespace/name')
hf://my-org/my-model                            # implicit type prefix
hf://models/my-org/my-model                     # explicit type prefix
hf://models/my-org/my-model/config.json         # file inside a model repo
hf://models/my-org/my-model@v1.0/config.json    # pinned to a revision

# Datasets, Spaces, Kernels (type prefix is required)
hf://datasets/my-org/my-dataset
hf://datasets/my-org/my-dataset@dev/train.csv
hf://spaces/my-user/my-space
hf://kernels/my-org/my-kernel

# Special revisions (preserved as-is)
hf://datasets/my-org/my-dataset@refs/pr/10/data.csv
hf://datasets/my-org/my-dataset@refs/convert/parquet/data.parquet

# Buckets (always 'namespace/name', no revision)
hf://buckets/my-org/my-bucket
hf://buckets/my-org/my-bucket/sub/folder

以下皆為有效的 HF 掛載(磁碟區規範)

hf://my-org/my-model:/data
hf://datasets/my-org/my-dataset:/mnt:ro
hf://datasets/my-org/my-dataset/train:/mnt:rw    # mount a sub-folder
hf://buckets/my-org/my-bucket:/storage:rw

什麼不是 HF URI

解析器刻意嚴格。以下為拒絕的格式:

無效的 URI 原因
my-org/my-model, huggingface.co/org/m 缺少 hf:// 協定前綴。
hf://dataset/org/m, hf://model/org/m 禁止使用單數類型的形式,請使用複數(datasets/, …)。
hf://datasets, hf://buckets/ 僅類型前綴不是有效的 URI,需要 <ID>
hf://gpt2, hf://datasets/squad 不支援規範儲存庫(沒有命名空間)。
hf://buckets/single-segment 儲存區必須始終為 命名空間/名稱
hf://buckets/org/b@v1 儲存區不支援修訂版本標記。
hf://org/m@, hf://datasets/foo/bar@/x @ 後面沒有修訂版本。
hf://a/b/c@v1 儲存庫 ID 必須為 命名空間/名稱,額外的區段為路徑。
hf://org/m:/ 掛載路徑必須為非空的絕對路徑。

Python 中的解析

解析 URI

parse_hf_uri() 是集中式的 URI 解析器。它是一個純字串解析器(無網路呼叫),並回傳一個凍結的 HfUri 資料類別 (dataclass)。

>>> from huggingface_hub import parse_hf_uri
>>> parse_hf_uri("hf://datasets/my-org/my-dataset@refs/pr/3/train.json")
HfUri(type='dataset', id='my-org/my-dataset', revision='refs/pr/3', path_in_repo='train.json')

HfUri 可透過 HfUri.to_uri() 進行往返轉換,該方法始終輸出規範格式(帶有明確的類型前綴)。

>>> uri = parse_hf_uri("hf://my-org/my-model@v1/config.json")
>>> uri.to_uri()
'hf://models/my-org/my-model@v1/config.json'

請直接使用 typeid 欄位。當需要區分儲存庫 URI 和儲存區 URI 時,請使用布林屬性 is_repois_bucket

解析掛載

parse_hf_mount 會解析掛載規範(一個帶有本機掛載路徑和可選 :ro/:rw 旗標的 HF URI),並回傳一個凍結的 HfMount 資料類別。它在底層使用 parse_hf_uri()

>>> from huggingface_hub import parse_hf_mount
>>> parse_hf_mount("hf://buckets/my-org/my-bucket/sub/dir:/mnt:ro")
HfMount(source=HfUri(type='bucket', id='my-org/my-bucket', revision=None, path_in_repo='sub/dir'), mount_path='/mnt', read_only=True)

HfMount 可透過 HfMount.to_uri 進行往返轉換。

>>> mount = parse_hf_mount("hf://my-org/my-model:/data:ro")
>>> mount.to_uri()
'hf://models/my-org/my-model:/data:ro'

參考

class huggingface_hub.HfUri

< >

( type: typing.Literal['model', 'dataset', 'space', 'kernel', 'bucket'] id: str revision: str | None = None path_in_repo: str = '' _raw: str | None = None )

參數

  • type (str) — 下列其中之一:‘model’、‘dataset’、‘space’、‘kernel’ 或 ‘bucket’。
  • id (str) — 儲存庫 URI 的儲存庫 ID(‘命名空間/名稱’,例如 ‘my-org/my-model’),或儲存區 URI 的儲存區 ID(‘命名空間/名稱’)。
  • revision (str, 選用) — URI 中 ’@’ 後面指定的修訂版本,經過 URL 解碼。若未指定修訂版本,或對於儲存區 URI(從不帶有修訂版本),則為 ‘None’。像 ‘refs/pr/10’ 和 ‘refs/convert/parquet’ 這樣的特殊參考會原樣保留。
  • path_in_repo (str) — 儲存庫或儲存區內的路徑。若 URI 指向根目錄,則為空字串。

Hugging Face Hub URI (‘hf://...’) 的解析表示。

to_uri

< >

( )

將 URI 呈現為規範的 ‘hf://’ 字串。

類型前綴始終明確書寫(例如 ‘hf://models/my-org/my-model’)。

huggingface_hub.parse_hf_uri

( uri: str ) HfUri

參數

  • uri (str) — 要解析的 URI。必須以 ‘hf://’ 開頭。

返回

HfUri

解析後的 URI。

引發

HfUriError

  • HfUriError — 若 URI 格式錯誤(缺少前綴、無效類型、缺少 ID 等)。

解析 Hugging Face Hub URI (‘hf://...’)。

HF URI 是一種識別 Hugging Face Hub 上位置的類 URI 字串。完整文法為

hf://[<TYPE>/]<ID>[@<REVISION>][/<PATH>]

請參閱 ‘docs/source/en/package_reference/hf_uris.md’ 以獲取完整規範。

範例

>>> from huggingface_hub.utils import parse_hf_uri
>>> parse_hf_uri("hf://my-org/my-model")
HfUri(type='model', id='my-org/my-model', revision=None, path_in_repo='')
>>> parse_hf_uri("hf://datasets/my-org/my-dataset@refs/pr/3/train.json")
HfUri(type='dataset', id='my-org/my-dataset', revision='refs/pr/3', path_in_repo='train.json')

class huggingface_hub.utils.HfMount

< >

( source: HfUri mount_path: str read_only: bool | None = None _raw: str | None = None )

參數

  • source (HfUri) — 解析後的 HF URI,識別要掛載的 Hub 資源。
  • mount_path (str) — 本機掛載路徑(始終以 ’/’ 開頭)。
  • read_only (bool, 選用) — 若掛載以 ‘:ro’ 結尾則為 True,若以 ‘:rw’ 結尾則為 False,若未提供旗標則為 ‘None’。

與本機掛載路徑和選用唯讀旗標配對的 HF URI。

供 Spaces 和 Jobs 使用以描述磁碟區掛載。完整語法為

hf://[<TYPE>/]<ID>[@<REVISION>][/<PATH>]:<MOUNT_PATH>[:ro|:rw]

to_uri

< >

( )

將掛載呈現為規範的 ‘hf://’ 字串。

範例:‘hf://models/my-org/my-model:/data:ro’

huggingface_hub.utils.parse_hf_mount

< >

( mount_str: str ) HfMount

參數

  • mount_str (str) — 要解析的掛載字串。必須以 ‘hf://’ 開頭並包含一個 ’:’ 區段。

返回

HfMount

解析後的掛載。

引發

HfUriError

  • HfUriError — 若掛載字串格式錯誤(缺少掛載路徑、無效 URI 等)。

解析 HF 掛載規範 (‘hf://…:<MOUNT_PATH>[:ro|:rw]’)。

掛載規範是一個 HF URI 後接本機掛載路徑和選用的唯讀/可讀寫旗標。

完整文法為

hf://[<TYPE>/]<ID>[@<REVISION>][/<PATH>]:<MOUNT_PATH>[:ro|:rw]

請參閱 ‘docs/source/en/package_reference/hf_uris.md’ 以獲取完整規範。

範例

>>> from huggingface_hub.utils import parse_hf_mount
>>> parse_hf_mount("hf://my-org/my-model:/data:ro")
HfMount(source=HfUri(type='model', id='my-org/my-model', revision=None, path_in_repo=''), mount_path='/data', read_only=True)
>>> parse_hf_mount("hf://buckets/my-org/my-bucket/sub/dir:/mnt:rw")
HfMount(source=HfUri(type='bucket', id='my-org/my-bucket', revision=None, path_in_repo='sub/dir'), mount_path='/mnt', read_only=False)
在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.