Hub Python Library documentation
Tham khảo hệ thống bộ nhớ đệm
Tham khảo hệ thống bộ nhớ đệm
Hệ thống bộ nhớ đệm đã được cập nhật trong v0.8.0 để trở thành hệ thống bộ nhớ đệm trung tâm được chia sẻ giữa các thư viện phụ thuộc vào Hub. Đọc hướng dẫn về hệ thống bộ nhớ đệm để có trình bày chi tiết về bộ nhớ đệm trên HF.
Trợ lý
try_to_load_from_cache
huggingface_hub.try_to_load_from_cache
< source >( repo_id: strfilename: strcache_dir: str | pathlib.Path | None = Nonerevision: str | None = Nonerepo_type: str | None = None ) → Optional[str] or _CACHED_NO_EXIST
Tham số
- cache_dir (
strhoặcos.PathLike) — Thư mục chứa các tệp được lưu trong bộ nhớ đệm. - repo_id (
str) — ID của kho trên huggingface.co. - filename (
str) — Tên tệp cần tìm bên trongrepo_id. - revision (
str, tùy chọn) — Phiên bản mô hình cụ thể cần sử dụng. Mặc định sẽ là"main"nếu không được cung cấp và cũng không cócommit_hashnào được cung cấp. - repo_type (
str, tùy chọn) — Loại của kho. Mặc định là"model".
Trả về
Optional[str] hoặc _CACHED_NO_EXIST
Sẽ trả về None nếu tệp không được lưu trong bộ nhớ đệm. Ngược lại:
- Đường dẫn chính xác đến tệp được lưu trong bộ nhớ đệm nếu tệp đó được tìm thấy trong bộ nhớ đệm
- Một giá trị đặc biệt
_CACHED_NO_EXISTnếu tệp không tồn tại tại commit hash được chỉ định và sự thật này đã được lưu vào bộ nhớ đệm.
Khám phá bộ nhớ đệm để trả về tệp được lưu trong bộ nhớ đệm mới nhất cho một phiên bản nhất định nếu tìm thấy.
Hàm này sẽ không gây ra ngoại lệ nào nếu tệp không được lưu trong bộ nhớ đệm.
cached_assets_path
huggingface_hub.cached_assets_path
< source >( library_name: strnamespace: str = 'default'subfolder: str = 'default'assets_dir: str | pathlib.Path | None = None )
Tham số
- library_name (
str) — Tên của thư viện sẽ quản lý thư mục cache. Ví dụ:"dataset". - namespace (
str, optional, mặc định là “default”) — Namespace mà dữ liệu thuộc về. Ví dụ:"SQuAD". - subfolder (
str, tùy chọn, mặc định là “default”) — Thư mục con mà dữ liệu sẽ được lưu trữ. Ví dụ:extracted. - assets_dir (
str,Path, tùy chọn) — Đường dẫn đến thư mục nơi các tài sản được lưu đệm. Thư mục này không được trùng với thư mục lưu đệm các tệp Hub. Mặc định làHF_HOME / "assets"nếu không được cung cấp. Cũng có thể được đặt bằng biến môi trườngHF_ASSETS_CACHE.
Trả về đường dẫn thư mục để lưu trữ các tệp tùy ý.
huggingface_hub cung cấp một đường dẫn thư mục chuẩn để lưu trữ tài sản. Đây là cách tích hợp bộ nhớ đệm được khuyến nghị trong một thư viện hạ nguồn, vì nó sẽ được hưởng lợi từ các công cụ tích hợp sẵn để quét và xóa bộ nhớ đệm một cách chính xác.
Sự phân biệt được thực hiện giữa các tệp được lưu trong bộ nhớ đệm từ Hub và các tài nguyên. Các tệp từ Hub được lưu trong bộ nhớ đệm theo cách nhận biết git và được quản lý hoàn toàn bởi huggingface_hub. Xem tài liệu liên quan.
Tất cả các tệp khác mà một thư viện hạ nguồn lưu trong bộ nhớ đệm được coi là “tài nguyên” (các tệp được tải xuống từ các nguồn bên ngoài, được giải nén từ một tệp .tar, được tiền xử lý cho việc huấn luyện,…).
Một khi đường dẫn thư mục được tạo ra, nó được đảm bảo là tồn tại và là một thư mục.
Đường dẫn dựa trên 3 cấp độ chiều sâu: tên thư viện, một không gian tên và một
thư mục con. Ba cấp độ này mang lại sự linh hoạt trong khi cho phép huggingface_hub
đợi chờ các thư mục khi quét/xóa các phần của bộ nhớ đệm tài sản. Trong một thư viện,
điều được kỳ vọng là tất cả các không gian tên chia sẻ cùng một tập con các tên thư mục con nhưng đây
không phải là một quy tắc bắt buộc. Thư viện hạ nguồn sau đó có toàn quyền kiểm soát cấu trúc tệp
nào để áp dụng trong bộ nhớ đệm của nó. Không gian tên và thư mục con là tùy chọn (sẽ
mặc định là thư mục con "default/") nhưng tên thư viện là bắt buộc vì chúng tôi muốn mỗi
thư viện hạ nguồn tự quản lý bộ nhớ đệm của riêng mình.
Cây dự kiến:
assets/
└── datasets/
│ ├── SQuAD/
│ │ ├── downloaded/
│ │ ├── extracted/
│ │ └── processed/
│ ├── Helsinki-NLP--tatoeba_mt/
│ ├── downloaded/
│ ├── extracted/
│ └── processed/
└── transformers/
├── default/
│ ├── something/
├── bert-base-cased/
│ ├── default/
│ └── training/
hub/
└── models--julien-c--EsperBERTo-small/
├── blobs/
│ ├── (...)
│ ├── (...)
├── refs/
│ └── (...)
└── [ 128] snapshots/
├── 2439f60ef33a0d46d85da5001d52aeda5b00ce9f/
│ ├── (...)
└── bbc77c8132af1cc5cf678da3f1ddf2de43606d48/
└── (...)Ví dụ:
>>> from huggingface_hub import cached_assets_path
>>> cached_assets_path(library_name="datasets", namespace="SQuAD", subfolder="download")
PosixPath('/home/wauplin/.cache/huggingface/extra/datasets/SQuAD/download')
>>> cached_assets_path(library_name="datasets", namespace="SQuAD", subfolder="extracted")
PosixPath('/home/wauplin/.cache/huggingface/extra/datasets/SQuAD/extracted')
>>> cached_assets_path(library_name="datasets", namespace="Helsinki-NLP/tatoeba_mt")
PosixPath('/home/wauplin/.cache/huggingface/extra/datasets/Helsinki-NLP--tatoeba_mt/default')
>>> cached_assets_path(library_name="datasets", assets_dir="/tmp/tmp123456")
PosixPath('/tmp/tmp123456/datasets/default/default')scan_cache_dir
huggingface_hub.scan_cache_dir
< source >( cache_dir: str | pathlib.Path | None = None )
Quét toàn bộ hệ thống cache HF và trả về cấu trúc ~HFCacheInfo.
Sử dụng scan_cache_dir để quét hệ thống cache của bạn một cách lập trình. Cache sẽ được quét theo từng repo. Nếu một repo bị hỏng, một ~CorruptedCacheException sẽ được ném ra bên trong nhưng được bắt và trả về trong cấu trúc ~HFCacheInfo. Chỉ các repo hợp lệ mới nhận được báo cáo đầy đủ.
>>> from huggingface_hub import scan_cache_dir
>>> hf_cache_info = scan_cache_dir()
HFCacheInfo(
size_on_disk=3398085269,
repos=frozenset({
CachedRepoInfo(
repo_id='t5-small',
repo_type='model',
repo_path=PosixPath(...),
size_on_disk=970726914,
nb_files=11,
revisions=frozenset({
CachedRevisionInfo(
commit_hash='d78aea13fa7ecd06c29e3e46195d6341255065d5',
size_on_disk=970726339,
snapshot_path=PosixPath(...),
files=frozenset({
CachedFileInfo(
file_name='config.json',
size_on_disk=1197
file_path=PosixPath(...),
blob_path=PosixPath(...),
),
CachedFileInfo(...),
...
}),
),
CachedRevisionInfo(...),
...
}),
),
CachedRepoInfo(...),
...
}),
warnings=[
CorruptedCacheException("Snapshots dir doesn't exist in cached repo: ..."),
CorruptedCacheException(...),
...
],
)Bạn cũng có thể in báo cáo chi tiết trực tiếp từ dòng lệnh hf bằng cách sử dụng:
> hf cache ls ID SIZE LAST_ACCESSED LAST_MODIFIED REFS --------------------------- -------- ------------- ------------- ----------- dataset/nyu-mll/glue 157.4M 2 days ago 2 days ago main script model/LiquidAI/LFM2-VL-1.6B 3.2G 4 days ago 4 days ago main model/microsoft/UserLM-8b 32.1G 4 days ago 4 days ago main Done in 0.0s. Scanned 6 repo(s) for a total of 3.4G. Got 1 warning(s) while scanning. Use -vvv to print details.
Gây ra:
CacheNotFoundNếu thư mục cache không tồn tại.
ValueErrorNếu thư mục cache là một tệp, thay vì một thư mục.
Trả về: một đối tượng ~HFCacheInfo.
Cấu trúc dữ liệu
Tất cả các cấu trúc đều được xây dựng và trả về bởi scan_cache_dir() và là bất biến.
HFCacheInfo
lớp huggingface_hub.HFCacheInfo
< source >( size_on_disk: intrepos: frozensetincomplete_files: frozensetwarnings: listcache_dir: pathlib.Path | None = None )
Tham số
- size_on_disk (
int) — Kích thước vật lý của hệ thống cache tính bằng byte. Một blob được chia sẻ giữa các repo chỉ được tính một lần, và các blob chia sẻ chỉ trong store không còn được repo nào tham chiếu nữa sẽ được bao gồm. Giá trị này có thể nhỏ hơn tổng kích thước của từng repo. - repos (
frozenset[CachedRepoInfo]) — Tập hợp các ~CachedRepoInfo mô tả tất cả các kho lưu trữ cache hợp lệ được tìm thấy trên hệ thống cache trong quá trình quét. - incomplete_files (
frozenset[CachedIncompleteFileInfo]) — Tập hợp các ~CachedIncompleteFileInfo mô tả các tệp*.incompletebị mồ côi do các lượt tải xuống bị gián đoạn để lại. - warnings (
list[CorruptedCacheException]) — Danh sách các ~CorruptedCacheException xảy ra trong khi quét cache. Các ngoại lệ này được bắt để quá trình quét có thể tiếp tục. Các kho bị hỏng sẽ bị bỏ qua trong quá trình quét. - cache_dir (
PathhoặcNone) — Thư mục cache đã được quét.
Cấu trúc dữ liệu đóng băng chứa thông tin về toàn bộ hệ thống bộ nhớ đệm.
Cấu trúc dữ liệu này được trả về bởi scan_cache_dir() và không thể thay đổi.
size_on_diskchỉ tính đến các blob, và các kho bị hỏng sẽ được bỏ qua. Đây là kích thước vật lý: khác vớiCachedRepoInfo.size_on_disk, vốn gán một blob dùng chung cho mọi kho tham chiếu đến nó, một blob dùng chung ở đây chỉ được tính một lần.
Chuẩn bị chiến lược để xóa các tệp được lưu trong bộ nhớ đệm riêng lẻ.
Chỉ các mục snapshot bị xóa. Một blob chỉ bị xóa nếu không có tệp cache nào khác tham chiếu đến nó, do đó các blob được chia sẻ với các phiên bản khác sẽ được giữ lại. Các refs và thư mục snapshot cũng được giữ lại, ngay cả khi một snapshot trở nên trống. Để xóa toàn bộ các phiên bản hoặc kho, hãy sử dụng delete_revisions().
Ví dụ:
>>> from huggingface_hub import scan_cache_dir
>>> cache_info = scan_cache_dir()
>>> files = [
... file
... for repo in cache_info.repos
... if repo.repo_id == "org/model"
... for revision in repo.revisions
... for file in revision.files
... if file.file_name == "model-Q4_K_M.gguf"
... ]
>>> delete_strategy = cache_info.delete_files(*files)
>>> print(f"Will free {delete_strategy.expected_freed_size_str}.")
Will free 4.9G.
>>> delete_strategy.execute()Chuẩn bị chiến lược để xóa một hoặc nhiều bản sửa đổi đã được lưu cục bộ.
Các revision đầu vào có thể là bất kỳ hash revision nào. Nếu không tìm thấy hash revision trong bộ nhớ đệm cục bộ, một cảnh báo sẽ được phát ra nhưng không có lỗi nào được ném ra. Các revision có thể đến từ các kho đã được đệm khác nhau vì các hash là duy nhất giữa các kho,
Ví dụ:
>>> from huggingface_hub import scan_cache_dir
>>> cache_info = scan_cache_dir()
>>> delete_strategy = cache_info.delete_revisions(
... "81fd1d6e7847c99f5862c9fb81387956d99ec7aa"
... )
>>> print(f"Will free {delete_strategy.expected_freed_size_str}.")
Will free 7.9K.
>>> delete_strategy.execute()>>> from huggingface_hub import scan_cache_dir
>>> scan_cache_dir().delete_revisions(
... "81fd1d6e7847c99f5862c9fb81387956d99ec7aa",
... "e2983b237dccf3ab4937c97fa717319a9ca1a96d",
... "6c0e6080953db56375760c0471a8c5f2929baf11",
... ).execute()
delete_revisionstrả về một đối tượng DeleteCacheStrategy cần được thực thi. DeleteCacheStrategy không được thiết kế để chỉnh sửa nhưng cho phép chạy thử (dry run) trước khi thực sự thực hiện việc xóa.
export_as_table
< source >( verbosity: int = 0 ) → str
Tạo bảng từ đối tượng HFCacheInfo.
Truyền verbosity=0 để nhận bảng có một dòng cho mỗi repo, với các cột
“repo_id”, “repo_type”, “size_on_disk”, “nb_files”, “last_accessed”, “last_modified”, “refs”, “local_path”.
Truyền verbosity=1 để nhận bảng có một hàng cho mỗi repo và revision (do đó có thể xuất hiện nhiều hàng cho một repo duy nhất), với các cột
“repo_id”, “repo_type”, “revision”, “size_on_disk”, “nb_files”, “last_modified”, “refs”, “local_path”.
Ví dụ:
>>> from huggingface_hub.utils import scan_cache_dir
>>> hf_cache_info = scan_cache_dir()
HFCacheInfo(...)
>>> print(hf_cache_info.export_as_table())
REPO ID REPO TYPE SIZE ON DISK NB FILES LAST_ACCESSED LAST_MODIFIED REFS LOCAL PATH
--------------------------------------------------- --------- ------------ -------- ------------- ------------- ---- --------------------------------------------------------------------------------------------------
roberta-base model 2.7M 5 1 day ago 1 week ago main ~/.cache/huggingface/hub/models--roberta-base
suno/bark model 8.8K 1 1 week ago 1 week ago main ~/.cache/huggingface/hub/models--suno--bark
t5-base model 893.8M 4 4 days ago 7 months ago main ~/.cache/huggingface/hub/models--t5-base
t5-large model 3.0G 4 5 weeks ago 5 months ago main ~/.cache/huggingface/hub/models--t5-large
>>> print(hf_cache_info.export_as_table(verbosity=1))
REPO ID REPO TYPE REVISION SIZE ON DISK NB FILES LAST_MODIFIED REFS LOCAL PATH
--------------------------------------------------- --------- ---------------------------------------- ------------ -------- ------------- ---- -----------------------------------------------------------------------------------------------------------------------------------------------------
roberta-base model e2da8e2f811d1448a5b465c236feacd80ffbac7b 2.7M 5 1 week ago main ~/.cache/huggingface/hub/models--roberta-base/snapshots/e2da8e2f811d1448a5b465c236feacd80ffbac7b
suno/bark model 70a8a7d34168586dc5d028fa9666aceade177992 8.8K 1 1 week ago main ~/.cache/huggingface/hub/models--suno--bark/snapshots/70a8a7d34168586dc5d028fa9666aceade177992
t5-base model a9723ea7f1b39c1eae772870f3b547bf6ef7e6c1 893.8M 4 7 months ago main ~/.cache/huggingface/hub/models--t5-base/snapshots/a9723ea7f1b39c1eae772870f3b547bf6ef7e6c1
t5-large model 150ebc2c4b72291e770f58e6057481c8d2ed331a 3.0G 4 5 months ago main ~/.cache/huggingface/hub/models--t5-large/snapshots/150ebc2c4b72291e770f58e6057481c8d2ed331aCachedRepoInfo
lớp huggingface_hub.CachedRepoInfo
< source >( repo_id: strrepo_type: typing.Literal['model', 'dataset', 'space', 'kernel']repo_path: Pathsize_on_disk: intnb_files: intrevisions: frozensetlast_accessed: floatlast_modified: float )
Tham số
- repo_id (
str) — Repo id của repo trên Hub. Ví dụ:"google/fleurs". - repo_type (
Literal["dataset", "model", "space", "kernel"]) — Loại của kho đã được lưu bộ nhớ đệm. - repo_path (
Path) — Đường dẫn cục bộ đến kho đã được lưu đệm. - size_on_disk (
int) — Tổng kích thước các tệp blob trong kho đã được lưu bộ nhớ đệm. - nb_files (
int) — Tổng số tệp blob trong kho đã được lưu bộ nhớ đệm. - revisions (
frozenset[CachedRevisionInfo]) — Tập hợp các ~CachedRevisionInfo mô tả tất cả các phiên bản được lưu trong bộ nhớ đệm của kho. - last_accessed (
float) — Thời điểm (timestamp) lần cuối cùng một tệp blob của kho được truy cập. - last_modified (
float) — Thời điểm (timestamp) lần cuối cùng một tệp blob của kho đã được sửa đổi/tạo.
Cấu trúc dữ liệu đóng băng chứa thông tin về một kho lưu trữ đã được lưu bộ nhớ đệm.
size_on_diskkhông nhất thiết là tổng kích thước của tất cả các phiên bản do có các tệp bị trùng lặp. Ngoài ra, chỉ các blob được tính đến, không tính đến kích thước (không đáng kể) của các thư mục và liên kết mềm.
Độ tin cậy của
last_accessedvàlast_modifiedcó thể phụ thuộc vào hệ điều hành bạn đang sử dụng. Xem tài liệu python để biết thêm chi tiết.
(property) Tổng kích thước các tệp blob dưới dạng chuỗi dễ đọc.
Ví dụ: “42.2K”.
(property) Ánh xạ giữa refs và các cấu trúc dữ liệu phiên bản.
CachedRevisionInfo
lớp huggingface_hub.CachedRevisionInfo
< source >( commit_hash: strsnapshot_path: Pathsize_on_disk: intfiles: frozensetrefs: frozensetlast_modified: float )
Tham số
- commit_hash (
str) — Hash của bản sửa đổi (duy nhất). Ví dụ:"9338f7b671827df886678df2bdd7cc7b4f36dffd". - snapshot_path (
Path) — Đường dẫn đến thư mục phiên bản trong thư mụcsnapshots. Nó chứa cấu trúc cây chính xác như kho trên Hub. - files — (
frozenset[CachedFileInfo]): Tập hợp các ~CachedFileInfo mô tả tất cả các tệp chứa trong bản chụp. - refs (
frozenset[str]) — Tập hợp cácrefstrỏ đến bản sửa đổi này. Nếu bản sửa đổi không córefs, nó được coi là ở trạng thái detached. Ví dụ:{"main", "2.4.0"}hoặc{"refs/pr/1"}. - size_on_disk (
int) — Tổng kích thước các tệp blob được liên kết bằng symlink bởi bản sửa đổi. - last_modified (
float) — Thời điểm (timestamp) lần cuối cùng bản sửa đổi (revision) được tạo/điều chỉnh.
Cấu trúc dữ liệu đóng băng chứa thông tin về một bản sửa đổi.
Một revision tương ứng với một thư mục trong thư mục snapshots và được nạp với cấu trúc cây chính xác như repo trên Hub nhưng chỉ chứa các symlink. Một revision có thể được tham chiếu bởi 1 hoặc nhiều refs hoặc ở trạng thái “detached” (không có refs).
last_accessedkhông thể được xác định chính xác trên một revision đơn lẻ vì các tệp blob được chia sẻ giữa các revision.
size_on_diskkhông nhất thiết là tổng kích thước của tất cả các tệp do có thể tồn tại các tệp trùng lặp. Ngoài ra, chỉ các blob được tính đến, không tính đến kích thước (không đáng kể) của các thư mục và liên kết mềm.
(property) Tổng kích thước các tệp blob dưới dạng chuỗi dễ đọc.
Ví dụ: “42.2K”.
(property) Tổng số tệp trong bản sửa đổi.
CachedFileInfo
lớp huggingface_hub.CachedFileInfo
< source >( file_name: strfile_path: Pathblob_path: Pathsize_on_disk: intblob_last_accessed: floatblob_last_modified: float )
Tham số
- file_name (
str) — Tên của tệp. Ví dụ:config.json. - file_path (
Path) — Đường dẫn của tệp trong thư mụcsnapshots. Đường dẫn tệp là một liên kết mềm (symlink) trỏ đến một blob trong thư mụcblobs. - blob_path (
Path) — Đường dẫn của mục blob cục bộ trong repo được tham chiếu bởifile_path. Mục blob này có thể là một symlink trỏ đến kho blob dùng chung trên toàn bộ cache. - size_on_disk (
int) — Kích thước của tệp blob tính bằng byte. - blob_last_accessed (
float) — Thời điểm (timestamp) lần cuối cùng tệp blob được truy cập (từ bất kỳ phiên bản nào). - blob_last_modified (
float) — Thời điểm (timestamp) lần cuối tệp blob được sửa đổi/tạo.
Cấu trúc dữ liệu bất biến chứa thông tin về một tệp được lưu trong bộ nhớ đệm.
Độ tin cậy của
blob_last_accessedvàblob_last_modifiedcó thể phụ thuộc vào hệ điều hành bạn đang sử dụng. Xem tài liệu python để biết thêm chi tiết.
(property) Kích thước của tệp blob dưới dạng chuỗi dễ đọc.
Ví dụ: “42.2K”.
CachedIncompleteFileInfo
lớp huggingface_hub.CachedIncompleteFileInfo
< source >( file_path: Pathsize_on_disk: int )
Cấu trúc dữ liệu đóng băng chứa thông tin về một lượt tải xuống chưa hoàn tất.
Tải xuống bị gián đoạn sẽ để lại các tệp <cache>/<repo>/blobs/<etag>.incomplete.
Chúng không thuộc bất kỳ bản sửa đổi nào đã được cam kết, do đó được scan_cache_dir() hiển thị riêng biệt.
DeleteCacheStrategy
lớp huggingface_hub.DeleteCacheStrategy
< source >( expected_freed_size: intblobs: frozensetrefs: frozensetrepos: frozensetsnapshots: frozensetfiles: frozenset = frozenset()cache_dir: pathlib.Path | None = None )
Tham số
- expected_freed_size (
float) — Kích thước được giải phóng dự kiến sau khi chiến lược được thực thi. - blobs (
frozenset[Path]) — Tập hợp các đường dẫn tệp blob sẽ bị xóa. - refs (
frozenset[Path]) — Tập hợp các đường dẫn tệp tham chiếu sẽ bị xóa. - repos (
frozenset[Path]) — Tập hợp các đường dẫn repo hoàn chỉnh cần được xóa. - snapshots (
frozenset[Path]) — Tập hợp các snapshot sẽ bị xóa (thư mục chứa các symlink). - files (
frozenset[Path], tùy chọn) — Tập hợp các mục snapshot riêng lẻ cần được xóa. Blob của chúng chỉ bị xóa nếu được liệt kê trongblobs. - cache_dir (
PathhoặcNone) — Thư mục cache mà chiến lược được tính toán từ đó. Được sử dụng để thu thập các blob dùng chung được tham chiếu bởi các symlink cục bộ của repo đã bị xóa bỏ.
Cấu trúc dữ liệu đóng băng chứa chiến lược để xóa các phiên bản hoặc tệp được lưu trong bộ nhớ đệm.
Đối tượng này không được thiết kế để khởi tạo bằng lập trình mà để được trả về bởi delete_revisions() hoặc delete_files(). Xem tài liệu để có ví dụ sử dụng.
(property) Kích thước dự kiến sẽ được giải phóng dưới dạng chuỗi có thể đọc được.
Ví dụ: “42.2K”.
Ngoại lệ
CorruptedCacheException
Ngoại lệ cho bất kỳ cấu trúc nào không mong đợi trong hệ thống cache của Huggingface.